15 txs
66 calls
constructor
constructor(address tokenContractAddress, address defaultAdmin, address _presaleWallet)
functions
checkAvailableTokens
viewfunction checkAvailableTokens() view returns (uint256)
checkReferrer
viewfunction checkReferrer(address referrer, address newBuyer) view returns (bool)
DATA_UPDATE_ROLE
viewfunction DATA_UPDATE_ROLE() view returns (bytes32)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
getBothToken
viewfunction getBothToken() view returns (tuple)
getBuyerToken
viewfunction getBuyerToken(address buyerAddress) view returns (bytes)
getCurrentStage
viewfunction getCurrentStage() view returns (uint256)
getLockedTokens
viewfunction getLockedTokens() view returns (uint256)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getStageTokenLeft
viewfunction getStageTokenLeft() view returns (uint256)
getStageTokenLimit
viewfunction getStageTokenLimit() view returns (uint256)
getStageTokenPrice
viewfunction getStageTokenPrice() view returns (uint256)
getStageTokenSold
viewfunction getStageTokenSold() view returns (uint256)
getTotalRewards
viewfunction getTotalRewards() view returns (uint256)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
paused
viewfunction paused() view returns (bool)
PAYMENT_GATEWAY_ROLE
viewfunction PAYMENT_GATEWAY_ROLE() view returns (bytes32)
PRESALE_ROLE
viewfunction PRESALE_ROLE() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
totalPresaleToken
viewfunction totalPresaleToken() view returns (uint256)
totalTokenSold
viewfunction totalTokenSold() view returns (uint256)
claimStuckTokens
nonpayablefunction claimStuckTokens(address coin)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
pause
nonpayablefunction pause()
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setLockedTokens
nonpayablefunction setLockedTokens(uint256 lockedTokens)
unpause
nonpayablefunction unpause()
updateClaimContractAddress
nonpayablefunction updateClaimContractAddress(address _hyphaClaimContractAddress)
updateCoreData
nonpayablefunction updateCoreData(address buyer, address referrerAddress, uint256 hyphaTokenAmount, bytes hash, uint8 source) returns (bool)
updatePresaleWallet
nonpayablefunction updatePresaleWallet(address _presaleWallet)
events
Paused
event Paused(address account)
Received
event Received(address, uint256)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
TransferToVesting
event TransferToVesting(address indexed buyer, uint256 amount)
Unpaused
event Unpaused(address account)
UpdateBuyData
event UpdateBuyData(address indexed buyer, address indexed referrer, uint256 amount, bytes hash, uint8 source)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
EnforcedPause
error EnforcedPause()
ExpectedPause
error ExpectedPause()
FailedInnerCall
error FailedInnerCall()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x608060405260405180610120016040528061a41062ffffff16815260200161f55062ffffff168152602001620132a462ffffff16815260200162017f3462ffffff1681526020016201baf862ffffff1681526020016201f78462ffffff1681526020016202434c62ffffff1681526020016202904062ffffff1681526020015f62ffffff16815250600b90600961009792919061038f565b506100b6670de0b6b3a7640000622625a06101f060201b90919060201c565b600c556100d9670de0b6b3a76400006409502f90006101f060201b90919060201c565b600d556100fc670de0b6b3a764000064012a05f2006101f060201b90919060201c565b600e5534801561010a575f80fd5b50604051613787380380613787833981810160405281019061012c919061045a565b5f60015f6101000a81548160ff021916908315150217905550600160028190555061015f5f801b8361023060201b60201c565b508260035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60088190555080600960086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505061057e565b5f808303610200575f905061022a565b5f828461020d91906104e0565b905082848261021c919061054e565b14610225575f80fd5b809150505b92915050565b5f610241838361032560201b60201c565b61031b5760015f808581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506102b861038860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001905061031f565b5f90505b92915050565b5f805f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f33905090565b828054828255905f5260205f209081019282156103d0579160200282015b828111156103cf578251829062ffffff169055916020019190600101906103ad565b5b5090506103dd91906103e1565b5090565b5b808211156103f8575f815f9055506001016103e2565b5090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61042982610400565b9050919050565b6104398161041f565b8114610443575f80fd5b50565b5f8151905061045481610430565b92915050565b5f805f60608486031215610471576104706103fc565b5b5f61047e86828701610446565b935050602061048f86828701610446565b92505060406104a086828701610446565b9150509250925092565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6104ea826104aa565b91506104f5836104aa565b9250828202610503816104aa565b9150828204841483151761051a576105196104b3565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610558826104aa565b9150610563836104aa565b92508261057357610572610521565b5b828204905092915050565b6131fc8061058b5f395ff3fe6080604052600436106101db575f3560e01c80638456cb5911610101578063c8f0710911610094578063e627f2db11610063578063e627f2db146106c5578063ecb499e0146106ef578063eedbe31d14610719578063f9d0831a146107435761021b565b8063c8f071091461060d578063cf3b726a14610637578063d547741f14610673578063de1ea8661461069b5761021b565b8063a217fddf116100d0578063a217fddf14610553578063a646b9091461057d578063b3a5d295146105a7578063b5f7f636146105e35761021b565b80638456cb59146104af5780638e17c017146104c557806391d14854146104ed5780639326197a146105295761021b565b80633317bbcc1161017957806355440fc11161014857806355440fc11461040b57806356d3aa341461043557806359ab34e21461045d5780635c975abb146104855761021b565b80633317bbcc1461036757806336568abe146103915780633b0f7eb6146103b95780633f4ba83a146103f55761021b565b8063248a9ca3116101b5578063248a9ca3146102af57806325361355146102eb578063263d0dce146103155780632f2ff15d1461033f5761021b565b806301ffc9a71461021f57806307c52d831461025b57806313e9924c146102855761021b565b3661021b577f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f885258743334604051610211929190612497565b60405180910390a1005b5f80fd5b34801561022a575f80fd5b506102456004803603810190610240919061251b565b61076b565b6040516102529190612560565b60405180910390f35b348015610266575f80fd5b5061026f6107e4565b60405161027c9190612579565b60405180910390f35b348015610290575f80fd5b50610299610809565b6040516102a69190612579565b60405180910390f35b3480156102ba575f80fd5b506102d560048036038101906102d091906125c5565b61088c565b6040516102e291906125ff565b60405180910390f35b3480156102f6575f80fd5b506102ff6108a8565b60405161030c9190612579565b60405180910390f35b348015610320575f80fd5b506103296108de565b60405161033691906125ff565b60405180910390f35b34801561034a575f80fd5b5061036560048036038101906103609190612642565b610902565b005b348015610372575f80fd5b5061037b610924565b6040516103889190612579565b60405180910390f35b34801561039c575f80fd5b506103b760048036038101906103b29190612642565b61092d565b005b3480156103c4575f80fd5b506103df60048036038101906103da9190612680565b6109a8565b6040516103ec919061271b565b60405180910390f35b348015610400575f80fd5b50610409610b40565b005b348015610416575f80fd5b5061041f610b5f565b60405161042c9190612777565b60405180910390f35b348015610440575f80fd5b5061045b60048036038101906104569190612680565b610c67565b005b348015610468575f80fd5b50610483600480360381019061047e91906127ba565b610cb7565b005b348015610490575f80fd5b50610499610ce8565b6040516104a69190612560565b60405180910390f35b3480156104ba575f80fd5b506104c3610cfd565b005b3480156104d0575f80fd5b506104eb60048036038101906104e69190612680565b610d1c565b005b3480156104f8575f80fd5b50610513600480360381019061050e9190612642565b610d6d565b6040516105209190612560565b60405180910390f35b348015610534575f80fd5b5061053d610dd0565b60405161054a91906125ff565b60405180910390f35b34801561055e575f80fd5b50610567610df4565b60405161057491906125ff565b60405180910390f35b348015610588575f80fd5b50610591610dfa565b60405161059e9190612579565b60405180910390f35b3480156105b2575f80fd5b506105cd60048036038101906105c8919061287c565b610e1d565b6040516105da9190612560565b60405180910390f35b3480156105ee575f80fd5b506105f761122f565b6040516106049190612579565b60405180910390f35b348015610618575f80fd5b50610621611252565b60405161062e91906125ff565b60405180910390f35b348015610642575f80fd5b5061065d60048036038101906106589190612912565b611276565b60405161066a9190612560565b60405180910390f35b34801561067e575f80fd5b5061069960048036038101906106949190612642565b61147b565b005b3480156106a6575f80fd5b506106af61149d565b6040516106bc9190612579565b60405180910390f35b3480156106d0575f80fd5b506106d96114c0565b6040516106e69190612579565b60405180910390f35b3480156106fa575f80fd5b506107036114d6565b6040516107109190612579565b60405180910390f35b348015610724575f80fd5b5061072d6114f9565b60405161073a9190612579565b60405180910390f35b34801561074e575f80fd5b5061076960048036038101906107649190612680565b611502565b005b5f7f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107dd57506107dc8261171e565b5b9050919050565b5f600b600854815481106107fb576107fa612950565b5b905f5260205f200154905090565b5f600e546006541115610851576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610848906129fd565b60405180910390fd5b5f610869600654600e5461178790919063ffffffff16565b9050610886670de0b6b3a7640000826117ad90919063ffffffff16565b91505090565b5f805f8381526020019081526020015f20600101549050919050565b5f806108d56108c4600654600c546117d290919063ffffffff16565b600e5461178790919063ffffffff16565b90508091505090565b7f8260340ed2f88c3be691a9c5763ac9ff1cfd609b567d9d805802a5e0e0f78bf381565b61090b8261088c565b610914816117f8565b61091e838361180c565b50505050565b5f600c54905090565b6109356118f5565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610999576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109a382826118fc565b505050565b60607f6a4b509b5f306a69ec99e97ff6b166daad9c0a3dfce739a6d67ad1c57143a6b26109d4816117f8565b5f600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208054905011610a56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4d90612a65565b60405180910390fd5b5f600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f81548110610aa657610aa5612950565b5b905f5260205f2090600202015f0154600f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f81548110610b0457610b03612950565b5b905f5260205f20906002020160010154604051602001610b25929190612a83565b60405160208183030381529060405290508092505050919050565b610b486119e5565b5f801b610b54816117f8565b610b5c611a25565b50565b610b67612428565b5f600f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208054905011610be9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be090612a65565b60405180910390fd5b600f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f81548110610c3857610c37612950565b5b905f5260205f2090600202016040518060400160405290815f8201548152602001600182015481525050905090565b5f801b610c73816117f8565b8160045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b5f801b610cc3816117f8565b610cde670de0b6b3a764000083611a8690919063ffffffff16565b600c819055505050565b5f60015f9054906101000a900460ff16905090565b610d05611ac6565b5f801b610d11816117f8565b610d19611b07565b50565b5f801b610d28816117f8565b81600960086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b5f805f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b7f6a4b509b5f306a69ec99e97ff6b166daad9c0a3dfce739a6d67ad1c57143a6b281565b5f801b81565b5f610e18670de0b6b3a7640000600e546117ad90919063ffffffff16565b905090565b5f610e26611b68565b6008805410610e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6190612af4565b60405180910390fd5b7f8260340ed2f88c3be691a9c5763ac9ff1cfd609b567d9d805802a5e0e0f78bf3610e94816117f8565b5f73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614610f1157610ed18789611276565b610f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0790612b5c565b60405180910390fd5b5b5f600e54610f44610f33670de0b6b3a76400008a611a8690919063ffffffff16565b6006546117d290919063ffffffff16565b1115610f9057610f8d600e54610f7f610f6e670de0b6b3a76400008b611a8690919063ffffffff16565b6006546117d290919063ffffffff16565b61178790919063ffffffff16565b90505b5f610f9c8a8a8a611bac565b905080610fde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd590612bea565b60405180910390fd5b5f82111561115d57600d54611018611007670de0b6b3a76400008b611a8690919063ffffffff16565b6005546117d290919063ffffffff16565b1115611059576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105090612c52565b60405180910390fd5b5f61108783611079670de0b6b3a76400008c611a8690919063ffffffff16565b61178790919063ffffffff16565b90505f6110ad6110a8670de0b6b3a7640000846117ad90919063ffffffff16565b612067565b9050806110ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e690612cba565b60405180910390fd5b5f61111361110e670de0b6b3a7640000876117ad90919063ffffffff16565b612067565b905080611155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114c90612cba565b60405180910390fd5b5050506111ab565b5f61116789612067565b9050806111a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a090612cba565b60405180910390fd5b505b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167f12db0cbfee90153519b288a9b0c35aee827445bc69deaf06afb7ece57e4671778a8a8a8a60405161120e9493929190612d21565b60405180910390a36001935050505061122561210a565b9695505050505050565b5f61124d670de0b6b3a76400006005546117ad90919063ffffffff16565b905090565b7fc48556de71c0f73e8524a5d68cd20d7a4c9ca6279c843fc18720937bba83be1c81565b5f7f8260340ed2f88c3be691a9c5763ac9ff1cfd609b567d9d805802a5e0e0f78bf36112a1816117f8565b5f600f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208054905011611323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131a90612dcf565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e490612e5d565b60405180910390fd5b6001600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208054905010611470576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146790612ec5565b60405180910390fd5b600191505092915050565b6114848261088c565b61148d816117f8565b61149783836118fc565b50505050565b5f6114bb670de0b6b3a76400006006546117ad90919063ffffffff16565b905090565b5f805f1b6114cd816117f8565b60075491505090565b5f6114f4670de0b6b3a7640000600d546117ad90919063ffffffff16565b905090565b5f600854905090565b61150a611b68565b5f801b611516816117f8565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159c90612f53565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361164357600960089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f1935050505015801561163d573d5f803e3d5ffd5b50611712565b5f8290505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016116819190612f71565b602060405180830381865afa15801561169c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116c09190612f9e565b905061170f600960089054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff166121149092919063ffffffff16565b50505b5061171b61210a565b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f82821115611794575f80fd5b5f82846117a19190612ff6565b90508091505092915050565b5f8082116117b9575f80fd5b5f82846117c69190613056565b90508091505092915050565b5f8082846117e09190613086565b9050838110156117ee575f80fd5b8091505092915050565b611809816118046118f5565b612193565b50565b5f6118178383610d6d565b6118eb5760015f808581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506118886118f5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600190506118ef565b5f90505b92915050565b5f33905090565b5f6119078383610d6d565b156119db575f805f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506119786118f5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a4600190506119df565b5f90505b92915050565b6119ed610ce8565b611a23576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b611a2d6119e5565b5f60015f6101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611a6f6118f5565b604051611a7c9190612f71565b60405180910390a1565b5f808303611a96575f9050611ac0565b5f8284611aa391906130b9565b9050828482611ab29190613056565b14611abb575f80fd5b809150505b92915050565b611ace610ce8565b15611b05576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b611b0f611ac6565b6001805f6101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611b516118f5565b604051611b5e9190612f71565b60405180910390a1565b6002805403611ba3576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028081905550565b5f805f90505f600f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805490501115611ce957611c83611c17670de0b6b3a764000085611a8690919063ffffffff16565b600f5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f81548110611c6657611c65612950565b5b905f5260205f2090600202015f01546117d290919063ffffffff16565b600f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f81548110611cd257611cd1612950565b5b905f5260205f2090600202015f0181905550611d95565b5f6040518060400160405280611d10670de0b6b3a764000087611a8690919063ffffffff16565b8152602001838152509050600f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081908060018154018082558091505060019003905f5260205f2090600202015f909190919091505f820151815f0155602082015181600101555050505b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461205b57611e096064611dfb600a611ded670de0b6b3a764000088611a8690919063ffffffff16565b611a8690919063ffffffff16565b6117ad90919063ffffffff16565b90508360105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611ef781600f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f81548110611ed957611ed8612950565b5b905f5260205f209060020201600101546117d290919063ffffffff16565b600f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f81548110611f4657611f45612950565b5b905f5260205f20906002020160010181905550611fca81600f5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f81548110611fac57611fab612950565b5b905f5260205f209060020201600101546117d290919063ffffffff16565b600f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8154811061201957612018612950565b5b905f5260205f20906002020160010181905550612054612043600283611a8690919063ffffffff16565b6007546117d290919063ffffffff16565b6007819055505b60019150509392505050565b5f612097612086670de0b6b3a764000084611a8690919063ffffffff16565b6005546117d290919063ffffffff16565b6005819055506120cc6120bb670de0b6b3a764000084611a8690919063ffffffff16565b6006546117d290919063ffffffff16565b600681905550600e5460065403612101576120f360016008546117d290919063ffffffff16565b6008819055505f6006819055505b60019050919050565b6001600281905550565b61218e838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401612147929190612497565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506121e4565b505050565b61219d8282610d6d565b6121e05780826040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526004016121d79291906130fa565b60405180910390fd5b5050565b5f61220e828473ffffffffffffffffffffffffffffffffffffffff1661227990919063ffffffff16565b90505f815114158015612232575080806020019051810190612230919061314b565b155b1561227457826040517f5274afe700000000000000000000000000000000000000000000000000000000815260040161226b9190612f71565b60405180910390fd5b505050565b606061228683835f61228e565b905092915050565b6060814710156122d557306040517fcd7860590000000000000000000000000000000000000000000000000000000081526004016122cc9190612f71565b60405180910390fd5b5f808573ffffffffffffffffffffffffffffffffffffffff1684866040516122fd91906131b0565b5f6040518083038185875af1925050503d805f8114612337576040519150601f19603f3d011682016040523d82523d5f602084013e61233c565b606091505b509150915061234c868383612357565b925050509392505050565b60608261236c57612367826123e4565b6123dc565b5f825114801561239257505f8473ffffffffffffffffffffffffffffffffffffffff163b145b156123d457836040517f9996b3150000000000000000000000000000000000000000000000000000000081526004016123cb9190612f71565b60405180910390fd5b8190506123dd565b5b9392505050565b5f815111156123f65780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180604001604052805f81526020015f81525090565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61246982612440565b9050919050565b6124798161245f565b82525050565b5f819050919050565b6124918161247f565b82525050565b5f6040820190506124aa5f830185612470565b6124b76020830184612488565b9392505050565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6124fa816124c6565b8114612504575f80fd5b50565b5f81359050612515816124f1565b92915050565b5f602082840312156125305761252f6124be565b5b5f61253d84828501612507565b91505092915050565b5f8115159050919050565b61255a81612546565b82525050565b5f6020820190506125735f830184612551565b92915050565b5f60208201905061258c5f830184612488565b92915050565b5f819050919050565b6125a481612592565b81146125ae575f80fd5b50565b5f813590506125bf8161259b565b92915050565b5f602082840312156125da576125d96124be565b5b5f6125e7848285016125b1565b91505092915050565b6125f981612592565b82525050565b5f6020820190506126125f8301846125f0565b92915050565b6126218161245f565b811461262b575f80fd5b50565b5f8135905061263c81612618565b92915050565b5f8060408385031215612658576126576124be565b5b5f612665858286016125b1565b92505060206126768582860161262e565b9150509250929050565b5f60208284031215612695576126946124be565b5b5f6126a28482850161262e565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6126ed826126ab565b6126f781856126b5565b93506127078185602086016126c5565b612710816126d3565b840191505092915050565b5f6020820190508181035f83015261273381846126e3565b905092915050565b6127448161247f565b82525050565b604082015f82015161275e5f85018261273b565b506020820151612771602085018261273b565b50505050565b5f60408201905061278a5f83018461274a565b92915050565b6127998161247f565b81146127a3575f80fd5b50565b5f813590506127b481612790565b92915050565b5f602082840312156127cf576127ce6124be565b5b5f6127dc848285016127a6565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612806576128056127e5565b5b8235905067ffffffffffffffff811115612823576128226127e9565b5b60208301915083600182028301111561283f5761283e6127ed565b5b9250929050565b5f60ff82169050919050565b61285b81612846565b8114612865575f80fd5b50565b5f8135905061287681612852565b92915050565b5f805f805f8060a08789031215612896576128956124be565b5b5f6128a389828a0161262e565b96505060206128b489828a0161262e565b95505060406128c589828a016127a6565b945050606087013567ffffffffffffffff8111156128e6576128e56124c2565b5b6128f289828a016127f1565b9350935050608061290589828a01612868565b9150509295509295509295565b5f8060408385031215612928576129276124be565b5b5f6129358582860161262e565b92505060206129468582860161262e565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82825260208201905092915050565b7f48595048413a207374616765546f6b656e536f6c6420657863656564732073745f8201527f616765546f6b656e4c696d697400000000000000000000000000000000000000602082015250565b5f6129e7602d8361297d565b91506129f28261298d565b604082019050919050565b5f6020820190508181035f830152612a14816129db565b9050919050565b7f48797068613a204e6f20746f6b656e20617661696c61626c65000000000000005f82015250565b5f612a4f60198361297d565b9150612a5a82612a1b565b602082019050919050565b5f6020820190508181035f830152612a7c81612a43565b9050919050565b5f604082019050612a965f830185612488565b612aa36020830184612488565b9392505050565b7f48595048413a2050726573616c652068617320656e64656400000000000000005f82015250565b5f612ade60188361297d565b9150612ae982612aaa565b602082019050919050565b5f6020820190508181035f830152612b0b81612ad2565b9050919050565b7f48595048413a20696e76616c69642072656665727265720000000000000000005f82015250565b5f612b4660178361297d565b9150612b5182612b12565b602082019050919050565b5f6020820190508181035f830152612b7381612b3a565b9050919050565b7f48595048413a20546f6b656e20636f756c64206e6f7420626520616c6c6f63615f8201527f7465640000000000000000000000000000000000000000000000000000000000602082015250565b5f612bd460238361297d565b9150612bdf82612b7a565b604082019050919050565b5f6020820190508181035f830152612c0181612bc8565b9050919050565b7f48595048413a204e6f7420656e6f7567687420746f6b656e73206c65667400005f82015250565b5f612c3c601e8361297d565b9150612c4782612c08565b602082019050919050565b5f6020820190508181035f830152612c6981612c30565b9050919050565b7f48595048413a204275792064617461206e6f74207570646174656400000000005f82015250565b5f612ca4601b8361297d565b9150612caf82612c70565b602082019050919050565b5f6020820190508181035f830152612cd181612c98565b9050919050565b828183375f83830152505050565b5f612cf183856126b5565b9350612cfe838584612cd8565b612d07836126d3565b840190509392505050565b612d1b81612846565b82525050565b5f606082019050612d345f830187612488565b8181036020830152612d47818587612ce6565b9050612d566040830184612d12565b95945050505050565b7f48595048413a205265666572726572206973206e6f7420746f6b656e20686f6c5f8201527f6465720000000000000000000000000000000000000000000000000000000000602082015250565b5f612db960238361297d565b9150612dc482612d5f565b604082019050919050565b5f6020820190508181035f830152612de681612dad565b9050919050565b7f48595048413a204e657720627579657220616c726561647920726566657272655f8201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b5f612e4760218361297d565b9150612e5282612ded565b604082019050919050565b5f6020820190508181035f830152612e7481612e3b565b9050919050565b7f48595048413a204e657720627579657220697320746f6b656e20686f6c6465725f82015250565b5f612eaf60208361297d565b9150612eba82612e7b565b602082019050919050565b5f6020820190508181035f830152612edc81612ea3565b9050919050565b7f48595048413a204f776e65722063616e6e6f7420636c61696d206e61746976655f8201527f20746f6b656e7300000000000000000000000000000000000000000000000000602082015250565b5f612f3d60278361297d565b9150612f4882612ee3565b604082019050919050565b5f6020820190508181035f830152612f6a81612f31565b9050919050565b5f602082019050612f845f830184612470565b92915050565b5f81519050612f9881612790565b92915050565b5f60208284031215612fb357612fb26124be565b5b5f612fc084828501612f8a565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6130008261247f565b915061300b8361247f565b925082820390508181111561302357613022612fc9565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6130608261247f565b915061306b8361247f565b92508261307b5761307a613029565b5b828204905092915050565b5f6130908261247f565b915061309b8361247f565b92508282019050808211156130b3576130b2612fc9565b5b92915050565b5f6130c38261247f565b91506130ce8361247f565b92508282026130dc8161247f565b915082820484148315176130f3576130f2612fc9565b5b5092915050565b5f60408201905061310d5f830185612470565b61311a60208301846125f0565b9392505050565b61312a81612546565b8114613134575f80fd5b50565b5f8151905061314581613121565b92915050565b5f602082840312156131605761315f6124be565b5b5f61316d84828501613137565b91505092915050565b5f81905092915050565b5f61318a826126ab565b6131948185613176565b93506131a48185602086016126c5565b80840191505092915050565b5f6131bb8284613180565b91508190509291505056fea26469706673582212208b40b540802eb42b8f56a93280f8374485209fad7a06b3b241b028ac0bff3f7b64736f6c634300081a00330000000000000000000000001d18168701347464b6f19977e282a703cc6ba127000000000000000000000000e35f88a6fce6ec2a1dc8e7ac146246d6944ae3140000000000000000000000002c23ce6340b5244050a87e31451561f7873d6d58