1 tx
2 calls
constructor
constructor(address _dev1, address _dev2, address _dev3, address _dev4, address _rootRef)
functions
canManualReinvestAt
viewfunction canManualReinvestAt(address user, uint8 planId, uint16 posIndex) view returns (bool ok, uint256 needMoreDepositsWei, uint256 secondsUntilNext)
DEPOSIT_FEE_TOTAL_BPS
viewfunction DEPOSIT_FEE_TOTAL_BPS() view returns (uint16)
depositDevBps
viewfunction depositDevBps(uint256) view returns (uint16)
dev1
viewfunction dev1() view returns (address)
dev2
viewfunction dev2() view returns (address)
dev3
viewfunction dev3() view returns (address)
dev4
viewfunction dev4() view returns (address)
EMERGENCY_DEV_TOTAL_BPS
viewfunction EMERGENCY_DEV_TOTAL_BPS() view returns (uint16)
EMERGENCY_TO_TVL_BPS
viewfunction EMERGENCY_TO_TVL_BPS() view returns (uint16)
emergencyDevOnCapitalBps
viewfunction emergencyDevOnCapitalBps(uint256) view returns (uint16)
getDepositFeeConfig
viewfunction getDepositFeeConfig() view returns (uint16, uint16, uint16, uint16, uint16)
getDevWallets
viewfunction getDevWallets() view returns (address, address, address, address)
getDirectReferrals
viewfunction getDirectReferrals(address user) view returns (address[])
getEmergencyConfig
viewfunction getEmergencyConfig() view returns (uint16, uint16, uint16, uint16, uint16)
getGemProfile
viewfunction getGemProfile(address user) view returns (uint256, uint256, uint256, uint256, address)
getGlobalStats
viewfunction getGlobalStats() view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256)
getGrossTVL
viewfunction getGrossTVL() view returns (uint256)
getMinerGrossAt
viewfunction getMinerGrossAt(address user, uint8 planId, uint16 posIndex) view returns (uint256)
getMinerStatsBaseAt
viewfunction getMinerStatsBaseAt(address user, uint8 planId, uint16 posIndex) view returns (uint256, uint64, uint64, uint64, uint256)
getMinerStatsComputed2At
viewfunction getMinerStatsComputed2At(address user, uint8 planId, uint16 posIndex) view returns (uint256, bool)
getMinerStatsComputedAt
viewfunction getMinerStatsComputedAt(address user, uint8 planId, uint16 posIndex) view returns (uint256 pendingNow, bool canWithdraw)
getPlanCount
viewfunction getPlanCount(address user, uint8 planId) view returns (uint256)
getPlanParams
viewfunction getPlanParams(uint8 planId) view returns (uint16, uint16)
getQualifiedLevels
viewfunction getQualifiedLevels(address user) view returns (bool[20] qualified)
getReferralConfigLevel
viewfunction getReferralConfigLevel(uint8 level) view returns (uint16, uint256)
getReferralCountLevels
viewfunction getReferralCountLevels(address user) view returns (uint256[20] counts)
getReinvestFeeConfig
viewfunction getReinvestFeeConfig() view returns (uint16, uint16, uint16, uint16, uint16, uint16)
getRootRef
viewfunction getRootRef() view returns (address)
getTeamVolumeLevels
viewfunction getTeamVolumeLevels(address user) view returns (uint256[20] v)
getUserGrossActive
viewfunction getUserGrossActive(address user) view returns (uint256)
getUserTotals
viewfunction getUserTotals(address user) view returns (uint256, uint256, uint256, uint256, uint256, address)
hasClaimedMilestone
viewfunction hasClaimedMilestone(address user, uint8 idx) view returns (bool)
isOwnershipRenounced
viewfunction isOwnershipRenounced() view returns (bool)
MILESTONE_COUNT
viewfunction MILESTONE_COUNT() view returns (uint8)
owner
viewfunction owner() view returns (address)
pendingTotalOfAt
viewfunction pendingTotalOfAt(address user, uint8 planId, uint16 posIndex) view returns (uint256)
PLAN_COUNT
viewfunction PLAN_COUNT() view returns (uint8)
planDailyBps
viewfunction planDailyBps(uint256) view returns (uint16)
planLockDays
viewfunction planLockDays(uint256) view returns (uint16)
referralCountByLevel
viewfunction referralCountByLevel(address, uint8) view returns (uint256)
referrerOf
viewfunction referrerOf(address) view returns (address)
refLevelBps
viewfunction refLevelBps(uint256) view returns (uint16)
refLevelThresholdWei
viewfunction refLevelThresholdWei(uint256) view returns (uint256)
REINVEST_FEE_BPS
viewfunction REINVEST_FEE_BPS() view returns (uint16)
REINVEST_WEIGHT_SUM
viewfunction REINVEST_WEIGHT_SUM() view returns (uint16)
reinvestWeights
viewfunction reinvestWeights(uint256) view returns (uint16)
reservePool
viewfunction reservePool() view returns (uint256)
rootRef
viewfunction rootRef() view returns (address)
secondsUntilUnlockAt
viewfunction secondsUntilUnlockAt(address user, uint8 planId, uint16 posIndex) view returns (uint256)
totalDepositedAll
viewfunction totalDepositedAll() view returns (uint256)
totalReinvestedAll
viewfunction totalReinvestedAll() view returns (uint256)
totalRewardsPaidAll
viewfunction totalRewardsPaidAll() view returns (uint256)
totalUsers
viewfunction totalUsers() view returns (uint256)
totalWithdrawnAll
viewfunction totalWithdrawnAll() view returns (uint256)
tvlPrincipal
viewfunction tvlPrincipal() view returns (uint256)
tvlPrincipalGross
viewfunction tvlPrincipalGross() view returns (uint256)
claimMilestone
nonpayablefunction claimMilestone(uint8 idx)
collectGems
nonpayablefunction collectGems(uint8 planId)
collectGemsAt
nonpayablefunction collectGemsAt(uint8 planId, uint16 posIndex)
collectGemsSplit8020
nonpayablefunction collectGemsSplit8020(uint8 planId)
collectGemsSplit8020At
nonpayablefunction collectGemsSplit8020At(uint8 planId, uint16 posIndex)
collectGemsTo
nonpayablefunction collectGemsTo(uint8 planId, address to)
collectGemsToAt
nonpayablefunction collectGemsToAt(uint8 planId, uint16 posIndex, address to)
emergencyWithdrawAt
nonpayablefunction emergencyWithdrawAt(uint8 planId, uint16 posIndex)
manualReinvestAt
nonpayablefunction manualReinvestAt(uint8 planId, uint16 posIndex)
miningGems
payablefunction miningGems(uint8 planId, address ref) payable
renounceOwnership
nonpayablefunction renounceOwnership()
retrieveGemChest
nonpayablefunction retrieveGemChest(uint8 planId, uint8 mode)
retrieveGemChestAt
nonpayablefunction retrieveGemChestAt(uint8 planId, uint16 posIndex, uint8 mode)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
AutoReinvest8020
event AutoReinvest8020(address indexed user, uint8 indexed planId, uint256 grossReinvest, uint256 fee, uint256 netReinvest)
AutoReinvest8020At
event AutoReinvest8020At(address indexed user, uint8 indexed planId, uint16 indexed posIndex, uint256 grossReinvest, uint256 fee, uint256 netReinvest)
CapitalWithdrawn
event CapitalWithdrawn(address indexed user, uint8 indexed planId, uint256 amountToWallet, uint256 rewardPartPaid)
CapitalWithdrawnAt
event CapitalWithdrawnAt(address indexed user, uint8 indexed planId, uint16 indexed posIndex, uint256 amountToWallet, uint256 rewardPartPaid)
EmergencyWithdraw
event EmergencyWithdraw(address indexed user, uint8 indexed planId, uint256 toUser, uint256 toReserve, uint256 devPaid)
EmergencyWithdrawAt
event EmergencyWithdrawAt(address indexed user, uint8 indexed planId, uint16 indexed posIndex, uint256 toUser, uint256 toReserve, uint256 devPaid)
ManualReinvest
event ManualReinvest(address indexed user, uint8 indexed planId, uint256 amountIn, uint256 fee, uint256 netAdded)
ManualReinvestAt
event ManualReinvestAt(address indexed user, uint8 indexed planId, uint16 indexed posIndex, uint256 amountIn, uint256 fee, uint256 netAdded)
MilestoneReached
event MilestoneReached(address indexed upline, uint8 indexed milestoneIndex, uint256 reward)
NewInvestment
event NewInvestment(address indexed user, uint8 indexed planId, uint256 amountNet, address indexed referrer, uint256 feeDevTotal)
NewInvestmentAt
event NewInvestmentAt(address indexed user, uint8 indexed planId, uint16 indexed posIndex, uint256 amountNet, address referrer, uint256 feeDevTotal)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
ReferralLinked
event ReferralLinked(address indexed user, address indexed referrer)
ReferralPaid
event ReferralPaid(address indexed upline, address indexed fromUser, uint8 level, uint256 amount)
RewardsClaimed
event RewardsClaimed(address indexed user, uint8 indexed planId, uint256 amount)
RewardsClaimedAt
event RewardsClaimedAt(address indexed user, uint8 indexed planId, uint16 indexed posIndex, uint256 amount)
errors
No errors.
creation bytecode
0x600180556101a0604052605060a0908152606460c052607860e052608c6101005261012081905260b46101405260c86101605260dc6101805261004690600290600861062a565b50604080516101008101825260078152600e6020820152601e91810191909152603c6060820152605a6080820152607860a0820152609660c082015260b460e082015261009790600390600861062a565b506040805160808101825260fa81526032602082015261019091810182905260608101919091526100cb90600490816106be565b506040805160808101825260198152600560208201819052602892820183905260608201929092526100ff9190600461062a565b506040805160808101825261012c815260c860208201526101f491810182905260608101919091526101359060069060046106be565b5060408051610280810182526107d081526103e860208201526101f4918101829052606081018290526080810182905260a0810182905260c081019190915261012c60e08201819052610100820181905261012082015260646101408201819052610160820181905261018082018190526101a082018190526101c082018190526101e082018190526102008201819052610220820181905261024082018190526102608201526101ea906007906014610713565b50604080516102808101825266470de4df8200008152668e1bc9bf040000602082015266d529ae9e8600009181019190915267011c37937e080000606082015267016345785d8a000060808201526701aa535d3d0c000060a08201526701f161421c8e000060c08201526702386f26fc10000060e082015267027f7d0bdb9200006101008201526702c68af0bb140000610120820152670429d069189e000061014082015267063eb89da4ed0000610160820152670853a0d2313c0000610180820152670a688906bd8b00006101a0820152670c7d713b49da00006101c0820152670f43fc2c04ee00006101e082015267120a871cc00200006102008201526714d1120d7b1600006102208201526718493fba64ef0000610240820152671bc16d674ec80000610260820152610324906009906014610767565b506040805161014081018252600281526004602082015260069181019190915260086060820152600a60808201819052600c60a0830152600e60c0830152601060e083015260126101008301526014610120830152610385916027916107a0565b50604080516101408101825260148152602860208201819052603292820192909252603c606082015260466080820152605060a0820152605a60c0820152606460e0820152607861010082015260966101208201526103e69190600a61062a565b506040805161014081018252665543df729c0000815266aa87bee5380000602082015267011c37937e080000918101919091526701aa535d3d0c00006060820152670254db1c22440000608082015267031bced02db0000060a082015267032a04cac0ca000060c08201526704fefa17b724000060e082015267061b31ab352c00006101008201526707c585087238000061012082015261048b90602990600a61081e565b50348015610497575f5ffd5b506040516158233803806158238339810160408190526104b691610881565b6104bf336105db565b6001600160a01b038516158015906104df57506001600160a01b03841615155b80156104f357506001600160a01b03831615155b801561050757506001600160a01b03821615155b6105435760405162461bcd60e51b8152602060048201526008602482015267646576207a65726f60c01b60448201526064015b60405180910390fd5b6001600160a01b0381166105855760405162461bcd60e51b8152602060048201526009602482015268726f6f74207a65726f60b81b604482015260640161053a565b601d80546001600160a01b03199081166001600160a01b0397881617909155601e8054821695871695909517909455601f80548516938616939093179092556020805490931690841617909155166080526108f2565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001830191839082156106ae579160200282015f5b8382111561067e57835183826101000a81548161ffff021916908360ff160217905550926020019260020160208160010104928301926001030261063f565b80156106ac5782816101000a81549061ffff021916905560020160208160010104928301926001030261067e565b505b506106ba929150610856565b5090565b6001830191839082156106ae579160200282015f5b8382111561067e57835183826101000a81548161ffff021916908361ffff16021790555092602001926002016020816001010492830192600103026106d3565b6002830191839082156106ae579160200282015f8382111561067e57835183826101000a81548161ffff021916908361ffff16021790555092602001926002016020816001010492830192600103026106d3565b82601481019282156106ae579160200282015b828111156106ae57825182906001600160401b031690559160200191906001019061077a565b6001830191839082156106ae579160200282015f5b838211156107f257835183826101000a81548160ff021916908360ff16021790555092602001926001016020815f010492830192600103026107b5565b80156106ac5782816101000a81549060ff02191690556001016020815f010492830192600103026107f2565b82600a81019282156106ae57916020028201828111156106ae57825182906001600160401b031690559160200191906001019061077a565b5b808211156106ba575f8155600101610857565b6001600160a01b038116811461087e575f5ffd5b50565b5f5f5f5f5f60a08688031215610895575f5ffd5b85516108a08161086a565b60208701519095506108b18161086a565b60408701519094506108c28161086a565b60608701519093506108d38161086a565b60808701519092506108e48161086a565b809150509295509295909350565b608051614f0461091f5f395f81816105d901528181610a2b015281816145b201526145ef0152614f045ff3fe6080604052600436106103f8575f3560e01c80638b16b6f21161020a578063c50726191161011e578063dd05b5a1116100a8578063f2fde38b11610078578063f2fde38b14610e6b578063f326170d14610e8a578063f720488014610ea9578063fd55244f14610ebe578063fed0ba9b14610ed2575f5ffd5b8063dd05b5a114610de1578063df2c638214610df6578063e8927a9e14610e15578063ed7aad2914610e34575f5ffd5b8063cf58c693116100ee578063cf58c69314610d2f578063d21cacdf14610d4e578063d2c8e0e514610d82578063d4958e5414610dae578063dbe1b2ed14610dc2575f5ffd5b8063c507261914610c91578063c69663e314610cb0578063c7d7711614610ce4578063cd994bb114610d1a575f5ffd5b8063a34adf281161019f578063aeec34701161016f578063aeec347014610c14578063b4d3311814610c29578063b9b6aae414610c48578063bcb3afbc14610c67578063bff1f9e114610c7c575f5ffd5b8063a34adf2814610b2b578063a8a267c414610bb7578063aa62f04314610bd6578063ac8b618b14610bf5575f5ffd5b806397bd028d116101da57806397bd028d14610a1d57806399044f7c14610a4f5780639f023eb614610ae8578063a327c45d14610b0c575f5ffd5b80638b16b6f2146109775780638da5cb5b1461098c5780638dd2a6b5146109a85780639788d07b14610a09575f5ffd5b8063564511de1161030c5780636bb47db511610296578063819e512011610266578063819e5120146108bc57806381e7a665146108db578063821921c3146108fa578063850aa4781461090f57806388059a301461092e575f5ffd5b80636bb47db51461084b578063715018a61461086a578063782fab911461087e5780638013f3a71461089d575f5ffd5b806363a535cb116102dc57806363a535cb14610785578063675dec7d1461079857806367aabe2d146107b757806367e21c90146107d65780636b4169c3146107f5575f5ffd5b8063564511de146106bf5780635b4af5e3146106de5780635b66b4271461071a5780635f6609e314610739575f5ffd5b806326b66c911161038d578063394f48d11161035d578063394f48d1146106105780634aff2a41146106365780634c9f3236146106555780634f66de40146106745780634fbbb2fa14610693575f5ffd5b806326b66c911461056e5780632b0df331146105a75780632b96be3c146105c85780632e9af017146105fb575f5ffd5b80631472c208116103c85780631472c208146104a25780631704930a146104ce5780632362ce8914610523578063240c874c1461055a575f5ffd5b80630266f0441461040357806307a559f41461042b57806308836be1146104535780630f096bec1461048d575f5ffd5b366103ff57005b5f5ffd5b34801561040e575f5ffd5b5061041860375481565b6040519081526020015b60405180910390f35b348015610436575f5ffd5b506104406109c481565b60405161ffff9091168152602001610422565b34801561045e575f5ffd5b5061047261046d366004614a0e565b610ef1565b6040805161ffff938416815292909116602083015201610422565b348015610498575f5ffd5b50610418603a5481565b3480156104ad575f5ffd5b506104c16104bc366004614a3b565b610f88565b6040516104229190614a56565b3480156104d9575f5ffd5b506104ed6104e8366004614a98565b610fdb565b604080519586526001600160401b039485166020870152928416928501929092529091166060830152608082015260a001610422565b34801561052e575f5ffd5b50601f54610542906001600160a01b031681565b6040516001600160a01b039091168152602001610422565b348015610565575f5ffd5b50603654610418565b348015610579575f5ffd5b5061058d610588366004614a0e565b6110d3565b6040805161ffff9093168352602083019190915201610422565b3480156105b2575f5ffd5b506105c66105c1366004614ae8565b61118e565b005b3480156105d3575f5ffd5b506105427f000000000000000000000000000000000000000000000000000000000000000081565b348015610606575f5ffd5b5061041860385481565b34801561061b575f5ffd5b50610624600881565b60405160ff9091168152602001610422565b348015610641575f5ffd5b506105c6610650366004614a0e565b6111e6565b348015610660575f5ffd5b5061044061066f366004614b19565b61140b565b34801561067f575f5ffd5b506105c661068e366004614b30565b611438565b34801561069e575f5ffd5b506106b26106ad366004614a3b565b61166c565b6040516104229190614b58565b3480156106ca575f5ffd5b506104406106d9366004614b19565b6116e6565b3480156106e9575f5ffd5b506106fd6106f8366004614a98565b6116f5565b604080519315158452602084019290925290820152606001610422565b348015610725575f5ffd5b50610440610734366004614b19565b61199b565b348015610744575f5ffd5b50601d54601e54601f5460208054604080516001600160a01b0396871681529486169285019290925291841690830152919091166060820152608001610422565b6105c6610793366004614b82565b6119aa565b3480156107a3575f5ffd5b506105c66107b2366004614b30565b611dbb565b3480156107c2575f5ffd5b50602054610542906001600160a01b031681565b3480156107e1575f5ffd5b506104406107f0366004614b19565b612284565b348015610800575f5ffd5b50603454603554603754603854603954603a54603b54604080519788526020880196909652948601939093526060850191909152608084015260a083015260c082015260e001610422565b348015610856575f5ffd5b50610440610865366004614b19565b612293565b348015610875575f5ffd5b506105c66122a2565b348015610889575f5ffd5b506105c6610898366004614b30565b612306565b3480156108a8575f5ffd5b50601e54610542906001600160a01b031681565b3480156108c7575f5ffd5b506104186108d6366004614a98565b6126b1565b3480156108e6575f5ffd5b506104406108f5366004614b19565b61288a565b348015610905575f5ffd5b5061041860395481565b34801561091a575f5ffd5b50610418610929366004614a98565b612899565b348015610939575f5ffd5b506109426129aa565b6040805161ffff968716815294861660208601529285169284019290925283166060830152909116608082015260a001610422565b348015610982575f5ffd5b5061041860355481565b348015610997575f5ffd5b505f546001600160a01b0316610542565b3480156109b3575f5ffd5b50600554604080516103e8815261ffff80841660208301526201000084048116928201929092526401000000008304821660608201526601000000000000909204166080820152606e60a082015260c001610422565b348015610a14575f5ffd5b50610440606e81565b348015610a28575f5ffd5b507f0000000000000000000000000000000000000000000000000000000000000000610542565b348015610a5a575f5ffd5b50610ab2610a69366004614a3b565b6001600160a01b039081165f9081526022602090815260408083208054600182015460028301546003840154600490940154602390965293909520549096949592949193921690565b60408051968752602087019590955293850192909252606084015260808301526001600160a01b031660a082015260c001610422565b348015610af3575f5ffd5b50610afc612a06565b6040519015158152602001610422565b348015610b17575f5ffd5b50601d54610542906001600160a01b031681565b348015610b36575f5ffd5b50610b86610b45366004614a3b565b6001600160a01b039081165f908152602260209081526040808320600481015481546001830154600290930154602390955292909420549395919490931690565b6040805195865260208601949094529284019190915260608301526001600160a01b0316608082015260a001610422565b348015610bc2575f5ffd5b506105c6610bd1366004614b82565b612a28565b348015610be1575f5ffd5b50610afc610bf0366004614bb7565b612a63565b348015610c00575f5ffd5b506105c6610c0f366004614be1565b612acb565b348015610c1f575f5ffd5b506104406105dc81565b348015610c34575f5ffd5b50610418610c43366004614bb7565b612d42565b348015610c53575f5ffd5b50610418610c62366004614b19565b612d93565b348015610c72575f5ffd5b5061044061044c81565b348015610c87575f5ffd5b5061041860345481565b348015610c9c575f5ffd5b506105c6610cab366004614c25565b612da9565b348015610cbb575f5ffd5b50610ccf610cca366004614a98565b61369c565b60408051928352901515602083015201610422565b348015610cef575f5ffd5b50610418610cfe366004614bb7565b602560209081525f928352604080842090915290825290205481565b348015610d25575f5ffd5b506104406103e881565b348015610d3a575f5ffd5b50610ccf610d49366004614a98565b61388f565b348015610d59575f5ffd5b50610542610d68366004614a3b565b60236020525f90815260409020546001600160a01b031681565b348015610d8d575f5ffd5b50610da1610d9c366004614a3b565b61395f565b6040516104229190614c5c565b348015610db9575f5ffd5b50610624600a81565b348015610dcd575f5ffd5b50610418610ddc366004614a98565b6139d1565b348015610dec575f5ffd5b50610418603b5481565b348015610e01575f5ffd5b506105c6610e10366004614b30565b613a91565b348015610e20575f5ffd5b506105c6610e2f366004614a0e565b613e7f565b348015610e3f575f5ffd5b50610418610e4e366004614a3b565b6001600160a01b03165f9081526022602052604090206005015490565b348015610e76575f5ffd5b506105c6610e85366004614a3b565b613ed7565b348015610e95575f5ffd5b506105c6610ea4366004614a0e565b613f82565b348015610eb4575f5ffd5b5061041860365481565b348015610ec9575f5ffd5b50610942613fae565b348015610edd575f5ffd5b506104c1610eec366004614a3b565b613fe3565b5f80600860ff841610610f1f5760405162461bcd60e51b8152600401610f1690614ca7565b60405180910390fd5b60028360ff1660088110610f3557610f35614cc9565b601091828204019190066002029054906101000a900461ffff1660038460ff1660088110610f6557610f65614cc9565b601091828204019190066002029054906101000a900461ffff1691509150915091565b610f906149da565b6001600160a01b0382165f908152602660205260409081902081516102808101928390529160149082845b815481526020019060010190808311610fbb575b50505050509050919050565b5f80808080600860ff8816106110035760405162461bcd60e51b8152600401610f1690614ca7565b6001600160a01b0388165f90815260216020908152604080832060ff8b16845290915290205461ffff87161061104b5760405162461bcd60e51b8152600401610f1690614cdd565b6001600160a01b0388165f90815260216020908152604080832060ff8b1684529091528120805461ffff891690811061108657611086614cc9565b5f918252602090912060059091020180546001820154600290920154909b6001600160401b038084169c50600160401b840481169b50600160801b90930490921698509650945050505050565b5f5f60018360ff16101580156110ed575060148360ff1611155b6111275760405162461bcd60e51b815260206004820152600b60248201526a06c6576656c20312e2e32360ac1b6044820152606401610f16565b6007611134600185614d14565b60ff166014811061114757611147614cc9565b601091828204019190066002029054906101000a900461ffff1660096001856111709190614d14565b60ff166014811061118357611183614cc9565b015491509150915091565b60405163c507261960e01b8152309063c5072619906111b59085905f908690600401614d41565b5f604051808303815f87803b1580156111cc575f5ffd5b505af11580156111de573d5f5f3e3d5ffd5b505050505050565b6002600154036112085760405162461bcd60e51b8152600401610f1690614d7f565b6002600155600a60ff8216106112495760405162461bcd60e51b8152602060048201526006602482015265626164206d7360d01b6044820152606401610f16565b6112533382612a63565b1561128a5760405162461bcd60e51b8152602060048201526007602482015266616c726561647960c81b6044820152606401610f16565b5f60278260ff16600a81106112a1576112a1614cc9565b602091828204019190069054906101000a900460ff1690505f60288360ff16600a81106112d0576112d0614cc9565b601091828204019190066002029054906101000a900461ffff1690505f60298460ff16600a811061130357611303614cc9565b01549050611311338461405b565b6113535760405162461bcd60e51b81526020600482015260136024820152721b195d995b1cc81b9bdd081d5b9b1bd8dad959606a1b6044820152606401610f16565b61135e3384846140d6565b6113a35760405162461bcd60e51b8152602060048201526016602482015275191bdddb9b1a5b995cc81a5b9cdd59999a58da595b9d60521b6044820152606401610f16565b335f8181526033602052604090208054600160ff88161b1790556113c79082614133565b60405181815260ff85169033907f23aa4baa98949220e569a8bca06b47c365560b6ca2ca46b9bb87b82e2605a1c79060200160405180910390a35050600180555050565b6003816008811061141a575f80fd5b60109182820401919006600202915054906101000a900461ffff1681565b60026001540361145a5760405162461bcd60e51b8152600401610f1690614d7f565b6002600155600860ff8316106114825760405162461bcd60e51b8152600401610f1690614ca7565b335f90815260216020908152604080832060ff8616845290915290205461ffff8216106114c15760405162461bcd60e51b8152600401610f1690614cdd565b335f90815260216020908152604080832060ff861684529091528120805461ffff84169081106114f3576114f3614cc9565b905f5260205f20906005020190505f815f0154116115235760405162461bcd60e51b8152600401610f1690614da8565b61152e3384846141ce565b6002810154806115505760405162461bcd60e51b8152600401610f1690614dcb565b5f826002018190555080826003015f82825461156c9190614df5565b9091555061157c90503382614133565b335f908152602260205260408120600201805483929061159d908490614df5565b9091555050335f90815260226020526040812060010180548392906115c3908490614df5565b9250508190555080603a5f8282546115db9190614df5565b925050819055508060395f8282546115f39190614df5565b909155505060405181815260ff85169033905f516020614eaf5f395f51905f529060200160405180910390a38261ffff168460ff16336001600160a01b03165f516020614e8f5f395f51905f528460405161165091815260200190565b60405180910390a46116623382614375565b5050600180555050565b6116746149da565b6001600160a01b0382165f90815260226020526040812060050154905b60148160ff1610156116df5760098160ff16601481106116b3576116b3614cc9565b0154821015838260ff16601481106116cd576116cd614cc9565b91151560209092020152600101611691565b5050919050565b6006816004811061141a575f80fd5b5f8080600860ff86161061171b5760405162461bcd60e51b8152600401610f1690614ca7565b6001600160a01b0386165f90815260216020908152604080832060ff8916845290915290205461ffff8516106117635760405162461bcd60e51b8152600401610f1690614cdd565b6001600160a01b0386165f9081526022602090815260408083206021835281842060ff8a1685529092528220805491929161ffff88169081106117a8576117a8614cc9565b5f91825260208220845460016005909302909101918201549193506608e1bc9bf04000111591906117ee9062015180906001600160401b03600160c01b90910416614df5565b6001840154429182101592506001600160401b03600160401b9091048116908216111561182c57506001830154600160401b90046001600160401b03165b60018401545f906001600160401b03600160801b90910481169083161180156118555750845415155b156118f65760018501545f9061187b90600160801b90046001600160401b031684614e08565b6001600160401b031690505f61271060028e60ff16600881106118a0576118a0614cc9565b601091828204019190066002029054906101000a900461ffff1661ffff1688600401546118cd9190614e27565b6118d79190614e3e565b9050620151806118e78383614e27565b6118f19190614e3e565b925050505b5f8186600201546119079190614df5565b8654909150158015906119175750845b80156119205750835b801561192b57505f81115b99508461194a578654611945906608e1bc9bf04000614e5d565b61194c565b5f5b9850836119875760018601544290611978906201518090600160c01b90046001600160401b0316614df5565b6119829190614e5d565b611989565b5f5b97505050505050505093509350939050565b6005816004811061141a575f80fd5b6002600154036119cc5760405162461bcd60e51b8152600401610f1690614d7f565b6002600155600860ff8316106119f45760405162461bcd60e51b8152600401610f1690614ca7565b66038d7ea4c68000341015611a3a5760405162461bcd60e51b815260206004820152600c60248201526b36b4b710181718189021272160a11b6044820152606401610f16565b611a4433826144ed565b5f612710611a5461044c34614e27565b611a5e9190614e3e565b90505f611a6b8234614e5d565b604080516080810191829052919250611ace9184916004908190815f855b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411611a89579050505050505061044c61476e565b425f62015180600360ff881660088110611aea57611aea614cc9565b601081049190910154611b0d9291600f166002026101000a900461ffff16614e27565b611b20906001600160401b038416614df5565b335f81815260216020908152604080832060ff8c16845280835281842080549184528251610100810184528a81526001600160401b03808b16828701818152828b1684880190815260608501928352608085018a815260a086018b815260c087018c81523460e089018181526001808d018c559a8f528d8f20995160058d02909a01998a55955199890180549551975194518916600160c01b026001600160c01b03958a16600160801b02959095166fffffffffffffffffffffffffffffffff988a16600160401b026fffffffffffffffffffffffffffffffff199097169b9099169a909a179490941795909516959095171790955591516002840155516003830155516004909101559484526022909252822080549495509093909190611c49908490614df5565b9091555050335f9081526022602052604081206004018054869290611c6f908490614df5565b9091555050335f9081526022602052604081206005018054349290611c95908490614df5565b925050819055503460385f828254611cad9190614df5565b925050819055508360355f828254611cc59190614df5565b925050819055503460365f828254611cdd9190614df5565b9091555050335f818152602360209081526040918290205482518881529182018990526001600160a01b03169260ff8b169290917f33385d599c9aec6b19ecbcaa44d02912b7e8534a1e71c93f23c77626832792ca910160405180910390a4335f818152602360209081526040918290205482518881526001600160a01b039091169181019190915290810187905261ffff83169160ff8a16917ffdbf7119ae6574937da9d7182e595223a9c3a8f55fb11294268592c1df3fadd39060600160405180910390a4611dae3385614874565b5050600180555050505050565b600260015403611ddd5760405162461bcd60e51b8152600401610f1690614d7f565b6002600155600860ff831610611e055760405162461bcd60e51b8152600401610f1690614ca7565b335f90815260216020908152604080832060ff8616845290915290205461ffff821610611e445760405162461bcd60e51b8152600401610f1690614cdd565b335f908152602260205260409020546608e1bc9bf040001115611ea25760405162461bcd60e51b815260206004820152601660248201527506e65656420322e3520424e4220666f722038302f32360541b6044820152606401610f16565b335f90815260216020908152604080832060ff861684529091528120805461ffff8416908110611ed457611ed4614cc9565b905f5260205f20906005020190505f815f015411611f045760405162461bcd60e51b8152600401610f1690614da8565b611f0f3384846141ce565b600281015480611f315760405162461bcd60e51b8152600401610f1690614dcb565b5f612710611f4183611f40614e27565b611f4b9190614e3e565b90505f611f588284614e5d565b90505f612710611f6a6103e884614e27565b611f749190614e3e565b90505f611f818284614e5d565b604080516080810191829052919250611fe4918491600590600490825f855b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411611fa05790505050505050606e61476e565b80865f015f828254611ff69190614df5565b90915550505f60028701819055600387018054869290612017908490614df5565b925050819055508060355f82825461202f9190614df5565b9091555050335f9081526022602052604081206004018054839290612055908490614df5565b9091555050335f908152602260205260408120600301805483929061207b908490614df5565b9250508190555080603b5f8282546120939190614df5565b9250508190555082866004015f8282546120ad9190614df5565b925050819055508260365f8282546120c59190614df5565b9091555050335f90815260226020526040812060050180548592906120eb908490614df5565b909155506120fb90503385614133565b335f908152602260205260408120600201805486929061211c908490614df5565b9091555050335f9081526022602052604081206001018054869290612142908490614df5565b9250508190555083603a5f82825461215a9190614df5565b925050819055508360395f8282546121729190614df5565b909155505060405184815260ff89169033905f516020614eaf5f395f51905f529060200160405180910390a38661ffff168860ff16336001600160a01b03165f516020614e8f5f395f51905f52876040516121cf91815260200190565b60405180910390a4604080518481526020810184905290810182905260ff89169033907e6604bf837fcbb8feccb2eabd0a08c86bfc38db448636f7c82e4998206cf7989060600160405180910390a3604080518481526020810184905290810182905261ffff88169060ff8a169033907f880fdc57a7cb2da35a4859c5967df458f5750373ee81460576016d3db3c50f359060600160405180910390a46122763385614375565b505060018055505050505050565b6004816004811061141a575f80fd5b6002816008811061141a575f80fd5b5f546001600160a01b031633146122fb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610f16565b6123045f614937565b565b6002600154036123285760405162461bcd60e51b8152600401610f1690614d7f565b6002600155600860ff8316106123505760405162461bcd60e51b8152600401610f1690614ca7565b335f90815260216020908152604080832060ff8616845290915290205461ffff82161061238f5760405162461bcd60e51b8152600401610f1690614cdd565b335f90815260216020908152604080832060ff861684529091528120805461ffff84169081106123c1576123c1614cc9565b905f5260205f20906005020190505f815f0154116123f15760405162461bcd60e51b8152600401610f1690614da8565b6001810154600160401b90046001600160401b0316421061244a5760405162461bcd60e51b8152602060048201526013602482015272757365206e6f726d616c20776974686472617760681b6044820152606401610f16565b805460048201545f61271061246184611770614e27565b61246b9190614e3e565b90505f61271061247d6109c486614e27565b6124879190614e3e565b90508060375f82825461249a9190614df5565b909155505f90506127106124b06105dc87614e27565b6124ba9190614e3e565b60408051608081019182905291925061251e918391600690600490825f855b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116124d957905050505050506105dc61476e565b5f80875560048701819055600287018190556003870180548290612543908290614df5565b925050819055508460355f82825461255b9190614e5d565b925050819055508360365f8282546125739190614e5d565b9091555050335f9081526022602052604081206004018054879290612599908490614e5d565b9091555050335f90815260226020526040812060050180548692906125bf908490614e5d565b9091555050335f90815260226020526040812060010180548592906125e5908490614df5565b925050819055508260395f8282546125fd9190614df5565b9091555061260d90503384614133565b604080518481526020810184905290810182905260ff89169033907f898bebede7bfb74a20daf9a28cf455e495659ecc95bf5b22b7b3b191e3f7c50c9060600160405180910390a3604080518481526020810184905290810182905261ffff88169060ff8a169033907f8d61e9b503887862f83b3c48f0340655e3d319d71caeb90c3c01f538581434e09060600160405180910390a4505060018055505050505050565b5f600860ff8416106126d55760405162461bcd60e51b8152600401610f1690614ca7565b6001600160a01b0384165f90815260216020908152604080832060ff8716845290915290205461ffff83161061271d5760405162461bcd60e51b8152600401610f1690614cdd565b6001600160a01b0384165f90815260216020908152604080832060ff871684529091528120805461ffff851690811061275857612758614cc9565b5f918252602090912060059091020160018101549091504290600160401b90046001600160401b0390811690821611156127a357506001810154600160401b90046001600160401b03165b60018201545f906001600160401b03600160801b90910481169083161180156127cc5750825415155b1561286d5760018301545f906127f290600160801b90046001600160401b031684614e08565b6001600160401b031690505f61271060028960ff166008811061281757612817614cc9565b601091828204019190066002029054906101000a900461ffff1661ffff1686600401546128449190614e27565b61284e9190614e3e565b90506201518061285e8383614e27565b6128689190614e3e565b925050505b80836002015461287d9190614df5565b93505050505b9392505050565b6007816014811061141a575f80fd5b5f600860ff8416106128bd5760405162461bcd60e51b8152600401610f1690614ca7565b6001600160a01b0384165f90815260216020908152604080832060ff8716845290915290205461ffff8316106129055760405162461bcd60e51b8152600401610f1690614cdd565b6001600160a01b0384165f90815260216020908152604080832060ff871684529091528120805461ffff851690811061294057612940614cc9565b905f5260205f2090600502019050805f01545f148061297357506001810154600160401b90046001600160401b03164210155b15612981575f915050612883565b60018101546129a1904290600160401b90046001600160401b0316614e5d565b95945050505050565b600480545f91829182918291829161044c9161ffff8082169262010000830482169264010000000090049091169060035b601091828204019190066002029054906101000a900461ffff16945094509450945094509091929394565b5f80612a195f546001600160a01b031690565b6001600160a01b031614905090565b60405163ac8b618b60e01b815260ff831660048201525f60248201526001600160a01b0382166044820152309063ac8b618b906064016111b5565b5f600a60ff831610612aa05760405162461bcd60e51b8152602060048201526006602482015265626164206d7360d01b6044820152606401610f16565b506001600160a01b0382165f9081526033602052604090205460ff82161c6001908116145b92915050565b600260015403612aed5760405162461bcd60e51b8152600401610f1690614d7f565b60026001556001600160a01b038116612b345760405162461bcd60e51b81526020600482015260096024820152683d32b9379030b2323960b91b6044820152606401610f16565b600860ff841610612b575760405162461bcd60e51b8152600401610f1690614ca7565b335f90815260216020908152604080832060ff8716845290915290205461ffff831610612b965760405162461bcd60e51b8152600401610f1690614cdd565b335f90815260216020908152604080832060ff871684529091528120805461ffff8516908110612bc857612bc8614cc9565b905f5260205f20906005020190505f815f015411612bf85760405162461bcd60e51b8152600401610f1690614da8565b612c033385856141ce565b600281015480612c255760405162461bcd60e51b8152600401610f1690614dcb565b5f826002018190555080826003015f828254612c419190614df5565b90915550612c5190508382614133565b335f9081526022602052604081206002018054839290612c72908490614df5565b9091555050335f9081526022602052604081206001018054839290612c98908490614df5565b9250508190555080603a5f828254612cb09190614df5565b925050819055508060395f828254612cc89190614df5565b909155505060405181815260ff86169033905f516020614eaf5f395f51905f529060200160405180910390a38361ffff168560ff16336001600160a01b03165f516020614e8f5f395f51905f5284604051612d2591815260200190565b60405180910390a4612d373382614375565b505060018055505050565b5f600860ff831610612d665760405162461bcd60e51b8152600401610f1690614ca7565b506001600160a01b0382165f90815260216020908152604080832060ff8516845290915290205492915050565b60098160148110612da2575f80fd5b0154905081565b600260015403612dcb5760405162461bcd60e51b8152600401610f1690614d7f565b6002600155600860ff841610612df35760405162461bcd60e51b8152600401610f1690614ca7565b335f90815260216020908152604080832060ff8716845290915290205461ffff831610612e325760405162461bcd60e51b8152600401610f1690614cdd565b335f90815260216020908152604080832060ff871684529091528120805461ffff8516908110612e6457612e64614cc9565b905f5260205f20906005020190505f815f015411612e945760405162461bcd60e51b8152600401610f1690614da8565b6001810154600160401b90046001600160401b0316421015612ee15760405162461bcd60e51b81526020600482015260066024820152651b1bd8dad95960d21b6044820152606401610f16565b612eec3385856141ce565b8054600482015460028301545f856001811115612f0b57612f0b614d2d565b0361314a575f612f1b8285614df5565b5f80875560048701819055600287018190556003870180549293508492909190612f46908490614df5565b925050819055508360355f828254612f5e9190614e5d565b925050819055508260365f828254612f769190614e5d565b9091555050335f9081526022602052604081206004018054869290612f9c908490614e5d565b9091555050335f9081526022602052604081206005018054859290612fc2908490614e5d565b9091555050335f9081526022602052604081206002018054849290612fe8908490614df5565b9091555050335f908152602260205260408120600101805483929061300e908490614df5565b9250508190555081603a5f8282546130269190614df5565b925050819055508060395f82825461303e9190614df5565b9091555061304e90503382614133565b604080518281526020810184905260ff8a169133917f85be6bc026a0acb7fb8920be4c086609bc5b2829c1aaba6bab5dbfb9f4c0fa6d910160405180910390a3604080518281526020810184905261ffff89169160ff8b169133917f8c0014c396cdd8037362b01ea754cc0e98de47ec220e6d73cc918b4ffea70041910160405180910390a481156131445760405182815260ff89169033905f516020614eaf5f395f51905f529060200160405180910390a38661ffff168860ff16336001600160a01b03165f516020614e8f5f395f51905f528560405161313291815260200190565b60405180910390a46131443383614375565b50611dae565b335f908152602260205260409020546608e1bc9bf0400011156131a85760405162461bcd60e51b815260206004820152601660248201527506e65656420322e3520424e4220666f722038302f32360541b6044820152606401610f16565b5f6131b38285614df5565b90505f6127106131c583611f40614e27565b6131cf9190614e3e565b90505f6131dc8284614e5d565b90505f6127106131ee86611f40614e27565b6131f89190614e3e565b90505f61271061320a6103e885614e27565b6132149190614e3e565b90505f6132218285614e5d565b6040805160808101918290526005805461ffff16825292935061325f92859260049082600260208601808411611fa05790505050505050606e61476e565b808a5f01819055505f429050808b6001015f6101000a8154816001600160401b0302191690836001600160401b031602179055506201518060038f60ff16600881106132ad576132ad614cc9565b6010810491909101546132d09291600f166002026101000a900461ffff16614e27565b6132e3906001600160401b038316614df5565b60018c01805477ffffffffffffffffffffffffffffffff00000000000000001916600160401b6001600160401b039384160267ffffffffffffffff60801b191617600160801b928416929092029190911790555f60028c0181905560038c018054869290613352908490614df5565b90915550506035548290613367908c90614e5d565b6133719190614df5565b603555335f908152602260205260409020600401548290613393908c90614e5d565b61339d9190614df5565b335f9081526022602052604081206004810192909255600290910180548692906133c8908490614df5565b9091555050335f90815260226020526040812060010180548892906133ee908490614df5565b9091555050335f9081526022602052604081206003018054849290613414908490614df5565b9250508190555083603a5f82825461342c9190614df5565b925050819055508560395f8282546134449190614df5565b9250508190555081603b5f82825461345c9190614df5565b90915550506036548590613471908b90614e5d565b61347b9190614df5565b603655335f90815260226020526040902060050154859061349d908b90614e5d565b6134a79190614df5565b335f8181526022602052604090206005019190915560048c018690556134cd9087614133565b8d60ff16336001600160a01b03167f85be6bc026a0acb7fb8920be4c086609bc5b2829c1aaba6bab5dbfb9f4c0fa6d8887604051613515929190918252602082015260400190565b60405180910390a38c61ffff168e60ff16336001600160a01b03167f8c0014c396cdd8037362b01ea754cc0e98de47ec220e6d73cc918b4ffea70041898860405161356a929190918252602082015260400190565b60405180910390a4604080518681526020810185905290810183905260ff8f169033907e6604bf837fcbb8feccb2eabd0a08c86bfc38db448636f7c82e4998206cf7989060600160405180910390a38c61ffff168e60ff16336001600160a01b03167f880fdc57a7cb2da35a4859c5967df458f5750373ee81460576016d3db3c50f35888787604051613610939291909283526020830191909152604082015260600190565b60405180910390a483156136885760405184815260ff8f169033905f516020614eaf5f395f51905f529060200160405180910390a38c61ffff168e60ff16336001600160a01b03165f516020614e8f5f395f51905f528760405161367691815260200190565b60405180910390a46136883385614375565b505050505050505050600180555050505050565b5f80600860ff8516106136c15760405162461bcd60e51b8152600401610f1690614ca7565b6001600160a01b0385165f90815260216020908152604080832060ff8816845290915290205461ffff8416106137095760405162461bcd60e51b8152600401610f1690614cdd565b6001600160a01b0385165f90815260216020908152604080832060ff881684529091528120805461ffff861690811061374457613744614cc9565b5f918252602090912060059091020160018101549091504290600160401b90046001600160401b03908116908216111561378f57506001810154600160401b90046001600160401b03165b60018201546001600160401b03600160801b90910481169082161180156137b65750815415155b1561385b5760018201545f906137dc90600160801b90046001600160401b031683614e08565b6001600160401b031690505f61271060028960ff166008811061380157613801614cc9565b601091828204019190066002029054906101000a900461ffff1661ffff16856004015461382e9190614e27565b6138389190614e3e565b9050620151806138488383614e27565b6138529190614e3e565b9550505061385f565b5f93505b81541580159061388357506001820154600160401b90046001600160401b03164210155b92505050935093915050565b5f5f5f61389d8686866126b1565b90505f600860ff87161080156138db57506001600160a01b0387165f90815260216020908152604080832060ff8a16845290915290205461ffff8616105b15613953576001600160a01b0387165f90815260216020908152604080832060ff8a1684529091528120805461ffff881690811061391b5761391b614cc9565b905f5260205f20906005020190505f815f015411801561394f57506001810154600160401b90046001600160401b03164210155b9150505b90969095509350505050565b6001600160a01b0381165f90815260246020908152604091829020805483518184028101840190945280845260609392830182828015610fcf57602002820191905f5260205f20905b81546001600160a01b031681526001909101906020018083116139a85750505050509050919050565b5f600860ff8416106139f55760405162461bcd60e51b8152600401610f1690614ca7565b6001600160a01b0384165f90815260216020908152604080832060ff8716845290915290205461ffff831610613a3d5760405162461bcd60e51b8152600401610f1690614cdd565b6001600160a01b0384165f90815260216020908152604080832060ff871684529091529020805461ffff8416908110613a7857613a78614cc9565b905f5260205f2090600502016004015490509392505050565b600260015403613ab35760405162461bcd60e51b8152600401610f1690614d7f565b6002600155600860ff831610613adb5760405162461bcd60e51b8152600401610f1690614ca7565b335f90815260216020908152604080832060ff8616845290915290205461ffff821610613b1a5760405162461bcd60e51b8152600401610f1690614cdd565b335f9081526022602090815260408083206021835281842060ff871685529092528220805491929161ffff8516908110613b5657613b56614cc9565b905f5260205f20906005020190505f815f015411613b865760405162461bcd60e51b8152600401610f1690614da8565b81546608e1bc9bf040001115613bd35760405162461bcd60e51b81526020600482015260126024820152716e656564206d6f7265206465706f7369747360701b6044820152606401610f16565b6001810154613bf6906201518090600160c01b90046001600160401b0316614df5565b421015613c345760405162461bcd60e51b815260206004820152600c60248201526b6f6e6365207065722064617960a01b6044820152606401610f16565b613c3f3385856141ce565b600281015480613c875760405162461bcd60e51b81526020600482015260136024820152721b9bdd1a1a5b99c81d1bc81c995a5b9d995cdd606a1b6044820152606401610f16565b5f612710613c976103e884614e27565b613ca19190614e3e565b90505f613cae8284614e5d565b6040805160808101918290526005805461ffff168252929350613cec92859260049082600260208601808411611fa05790505050505050606e61476e565b80845f015f828254613cfe9190614df5565b90915550505f600285018190556001850180546001600160c01b0316600160c01b426001600160401b03160217905560358054839290613d3f908490614df5565b9250508190555080856004015f828254613d599190614df5565b9250508190555080856003015f828254613d739190614df5565b9250508190555080603b5f828254613d8b9190614df5565b9250508190555082846004015f828254613da59190614df5565b925050819055508260365f828254613dbd9190614df5565b9250508190555082856005015f828254613dd79190614df5565b9091555050604080518481526020810184905290810182905260ff88169033907f0bbc7d108c8d6f145c8d90521be8ed9731c3afbfcfbc74a8b0901ef34a6ebf5d9060600160405180910390a3604080518481526020810184905290810182905261ffff87169060ff89169033907f25270560e2161888a00ff19e24d4830f645e71377e6ac01401b634a7e46d24ca9060600160405180910390a45050600180555050505050565b60405163013d9b7960e61b815260ff821660048201525f60248201523090634f66de40906044015b5f604051808303815f87803b158015613ebe575f5ffd5b505af1158015613ed0573d5f5f3e3d5ffd5b5050505050565b5f546001600160a01b03163314613f305760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610f16565b6001600160a01b038116613f765760405162461bcd60e51b815260206004820152600d60248201526c4f776e61626c653a207a65726f60981b6044820152606401610f16565b613f7f81614937565b50565b60405163675dec7d60e01b815260ff821660048201525f6024820152309063675dec7d90604401613ea7565b600680545f9182918291829182916109c49161ffff8082169262010000830482169264010000000090049091169060036129db565b613feb6149da565b60015b60148160ff1611614055576001600160a01b0383165f90815260256020908152604080832060ff851684529091529020548261402b600184614d14565b60ff166014811061403e5761403e614cc9565b60200201528061404d81614e70565b915050613fee565b50919050565b6001600160a01b0382165f9081526022602052604081206005015460015b8360ff168160ff16116140cb576009614093600183614d14565b60ff16601481106140a6576140a6614cc9565b01548210156140b9575f92505050612ac5565b806140c381614e70565b915050614079565b506001949350505050565b5f60015b8360ff168160ff16116140cb576001600160a01b0385165f90815260256020908152604080832060ff8516845290915290205461ffff84161115614121575f915050612883565b8061412b81614e70565b9150506140da565b805f0361413e575050565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114614187576040519150601f19603f3d011682016040523d82523d5f602084013e61418c565b606091505b50509050806141c95760405162461bcd60e51b81526020600482015260096024820152681cd95b990819985a5b60ba1b6044820152606401610f16565b505050565b6001600160a01b0383165f90815260216020908152604080832060ff861684529091528120805461ffff841690811061420957614209614cc9565b905f5260205f2090600502019050805f01545f036142275750505050565b600181015442906001600160401b03600160401b9091048116908216111561426057506001810154600160401b90046001600160401b03165b60018201546001600160401b03600160801b909104811690821611614286575050505050565b60018201545f906142a790600160801b90046001600160401b031683614e08565b6001600160401b031690505f61271060028760ff16600881106142cc576142cc614cc9565b601091828204019190066002029054906101000a900461ffff1661ffff1685600401546142f99190614e27565b6143039190614e3e565b90505f620151806143148484614e27565b61431e9190614e3e565b9050801561433f5780856002015f8282546143399190614df5565b90915550505b505050600190910180546001600160401b03909216600160801b0267ffffffffffffffff60801b19909216919091179055505050565b805f03614380575050565b6001600160a01b038083165f908152602360205260409020541660015b60148160ff16111580156143b957506001600160a01b03821615155b156144e75760096143cb600183614d14565b60ff16601481106143de576143de614cc9565b01546001600160a01b0383165f90815260226020526040902060050154106144b8575f6127106007614411600185614d14565b60ff166014811061442457614424614cc9565b601091828204019190066002029054906101000a900461ffff1661ffff168561444d9190614e27565b6144579190614e3e565b905080156144b6576144698382614986565b6040805160ff84168152602081018390526001600160a01b0380881692908616917f53aa79cc77a3d2e16f0f104bce3b3da868f1ec7596a2cc49a09f8103982da834910160405180910390a35b505b6001600160a01b039182165f9081526023602052604090205490911690806144df81614e70565b91505061439d565b50505050565b6001600160a01b0382165f9081526022602052604090206006015460ff16614555576001600160a01b0382165f908152602260205260408120600601805460ff19166001908117909155603480549192909161454a908490614df5565b909155506145599050565b5050565b805f6001600160a01b038216158015906145855750836001600160a01b0316826001600160a01b031614155b80156145e657506001600160a01b0382165f9081526022602052604090206006015460ff16806145e657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b905080614611577f000000000000000000000000000000000000000000000000000000000000000091505b6001600160a01b038481165f908152602360205260409020541615801561464057506001600160a01b03821615155b801561465e5750836001600160a01b0316826001600160a01b031614155b156144e7576001600160a01b038085165f81815260236020908152604080832080549588166001600160a01b031996871681179091558084526024835281842080546001810182559085529284209092018054909516841790945592517f817ae04f92799377adbf2ef0bd14067ab8426099966ae80c038b5cad85746f549190a38160015b60148160ff16111580156146ff57506001600160a01b03821615155b156111de576001600160a01b0382165f90815260256020908152604080832060ff85168452909152812080546001929061473a908490614df5565b90915550506001600160a01b039182165f90815260236020526040902054909116908061476681614e70565b9150506146e3565b825f0361477a57505050565b81515f9061ffff83811691614790911686614e27565b61479a9190614e3e565b90505f61ffff831684600160200201516147b89061ffff1687614e27565b6147c29190614e3e565b90505f61ffff841685600260200201516147e09061ffff1688614e27565b6147ea9190614e3e565b90505f816147f88486614df5565b6148029190614df5565b90505f61480f8289614e5d565b601d54909150614828906001600160a01b031686614986565b601e5461483e906001600160a01b031685614986565b601f54614854906001600160a01b031684614986565b60205461486a906001600160a01b031682614986565b5050505050505050565b805f0361487f575050565b6001600160a01b038083165f908152602360205260409020541660015b60148160ff16111580156148b857506001600160a01b03821615155b156144e7576001600160a01b0382165f90815260266020526040902083906148e1600184614d14565b60ff16601481106148f4576148f4614cc9565b015f8282546149039190614df5565b90915550506001600160a01b039182165f90815260236020526040902054909116908061492f81614e70565b91505061489c565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b805f03614991575050565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146111de576040519150601f19603f3d011682016040523d82523d5f602084013e6111de565b6040518061028001604052806014906020820280368337509192915050565b803560ff81168114614a09575f5ffd5b919050565b5f60208284031215614a1e575f5ffd5b612883826149f9565b6001600160a01b0381168114613f7f575f5ffd5b5f60208284031215614a4b575f5ffd5b813561288381614a27565b610280810181835f5b6014811015614a7e578151835260209283019290910190600101614a5f565b50505092915050565b803561ffff81168114614a09575f5ffd5b5f5f5f60608486031215614aaa575f5ffd5b8335614ab581614a27565b9250614ac3602085016149f9565b9150614ad160408501614a87565b90509250925092565b803560028110614a09575f5ffd5b5f5f60408385031215614af9575f5ffd5b614b02836149f9565b9150614b1060208401614ada565b90509250929050565b5f60208284031215614b29575f5ffd5b5035919050565b5f5f60408385031215614b41575f5ffd5b614b4a836149f9565b9150614b1060208401614a87565b610280810181835f5b6014811015614a7e5781511515835260209283019290910190600101614b61565b5f5f60408385031215614b93575f5ffd5b614b9c836149f9565b91506020830135614bac81614a27565b809150509250929050565b5f5f60408385031215614bc8575f5ffd5b8235614bd381614a27565b9150614b10602084016149f9565b5f5f5f60608486031215614bf3575f5ffd5b614bfc846149f9565b9250614c0a60208501614a87565b91506040840135614c1a81614a27565b809150509250925092565b5f5f5f60608486031215614c37575f5ffd5b614c40846149f9565b9250614c4e60208501614a87565b9150614ad160408501614ada565b602080825282518282018190525f918401906040840190835b81811015614c9c5783516001600160a01b0316835260209384019390920191600101614c75565b509095945050505050565b6020808252600890820152673130b210383630b760c11b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b6020808252600990820152680c4c2c840d2dcc8caf60bb1b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b60ff8281168282160390811115612ac557612ac5614d00565b634e487b7160e01b5f52602160045260245ffd5b60ff8416815261ffff831660208201526060810160028310614d7157634e487b7160e01b5f52602160045260245ffd5b826040830152949350505050565b6020808252600f908201526e1499595b9d1c985b98de51dd585c99608a1b604082015260600190565b6020808252600990820152686e6f2061637469766560b81b604082015260600190565b60208082526010908201526f6e6f7468696e6720746f20636c61696d60801b604082015260600190565b80820180821115612ac557612ac5614d00565b6001600160401b038281168282160390811115612ac557612ac5614d00565b8082028115828204841417612ac557612ac5614d00565b5f82614e5857634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115612ac557612ac5614d00565b5f60ff821660ff8103614e8557614e85614d00565b6001019291505056febbc1ee06e80b02af9ec36b155de6fca6a2caf1474c23c5d4f5cfa7b7e3e7edcfdb1b2f66e1b9bd60d7756c7b006401cdd2526e0aa7a6ea41c1c2692b544cf652a2646970667358221220bd0745b9701adffe1c9deb5a2b2a4efc999beb9b99d2b42d399f22c7724cb1ee64736f6c634300081e0033000000000000000000000000c625954ba808568af5d3e2150b24218ed60732a6000000000000000000000000587e17bb6a9c09161058c285bcd59d03bb44d7d60000000000000000000000004c5edcf09a0cc62376e8ffb198e5c24064a0c6a30000000000000000000000006b8ac7109f5c83e329d8fac4ab07a8312b7fed50000000000000000000000000c625954ba808568af5d3e2150b24218ed60732a6