More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 2,696 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Vote | 14391091 | 978 days ago | IN | 0 ETH | 0.0007873 | ||||
Vote | 14391084 | 978 days ago | IN | 0 ETH | 0.00077995 | ||||
Vote | 14201288 | 1008 days ago | IN | 0 ETH | 0.00195633 | ||||
Withdraw Winning... | 14183101 | 1011 days ago | IN | 0 ETH | 0.00181077 | ||||
Withdraw Winning... | 14183101 | 1011 days ago | IN | 0 ETH | 0.00181077 | ||||
Withdraw Winning... | 14183101 | 1011 days ago | IN | 0 ETH | 0.00181077 | ||||
Withdraw Winning... | 14183101 | 1011 days ago | IN | 0 ETH | 0.00181077 | ||||
Vote | 14145721 | 1016 days ago | IN | 0 ETH | 0.00173421 | ||||
Vote | 14145374 | 1016 days ago | IN | 0 ETH | 0.00189037 | ||||
Vote | 14145374 | 1016 days ago | IN | 0 ETH | 0.00187856 | ||||
Vote | 14145353 | 1016 days ago | IN | 0 ETH | 0.00192169 | ||||
Update Tournamen... | 14144456 | 1017 days ago | IN | 0 ETH | 0.00387422 | ||||
Vote | 14103732 | 1023 days ago | IN | 0 ETH | 0.0205304 | ||||
Vote | 14103732 | 1023 days ago | IN | 0 ETH | 0.0210374 | ||||
Vote | 14048557 | 1031 days ago | IN | 0 ETH | 0.02782623 | ||||
Withdraw Winning... | 14016565 | 1036 days ago | IN | 0 ETH | 0.00392592 | ||||
Vote | 14016110 | 1036 days ago | IN | 0 ETH | 0.02955342 | ||||
Vote | 14015570 | 1036 days ago | IN | 0 ETH | 0.03528554 | ||||
Vote | 14013178 | 1037 days ago | IN | 0 ETH | 0.02083554 | ||||
Vote | 14013001 | 1037 days ago | IN | 0 ETH | 0.02495302 | ||||
Vote | 14013001 | 1037 days ago | IN | 0 ETH | 0.02155344 | ||||
Vote | 13974275 | 1043 days ago | IN | 0 ETH | 0.02753861 | ||||
Vote | 13974171 | 1043 days ago | IN | 0 ETH | 0.02440215 | ||||
Vote | 13974153 | 1043 days ago | IN | 0 ETH | 0.03056846 | ||||
Vote | 13974135 | 1043 days ago | IN | 0 ETH | 0.03139473 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
Trollbox
Compiler Version
v0.7.4+commit.3f05b770
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: GPL-3.0-only pragma solidity 0.7.4; import "./SafeMathLib.sol"; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom(address from, address to, uint256 tokenId) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 tokenId) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external; } contract Trollbox { using SafeMathLib for uint; /** Votes are a mapping from choices to weights, plus a metadataHash, which references an arbitrary bit of metadata stored on IPFS. The meaning of these choices is not stored on chain, only the index. For example, if the choices are ["BTC", "ETH", "DASH"], and the user wants to put 3 votes on BTC, 5 votes on ETH and 4 on DASH, then this will be recorded as weights[1] = 3; weights[2] = 5; weights[3] = 4; The choices are indexed starting on 1 to prevent confusion caused by empty votes. **/ struct Vote { mapping(uint => uint) weights; bytes32 metadataHash; } /** Rounds occur with some frequency and represent a complete cycle of prediction->resolution. Each round has an id, which represents it's location in a linear sequence of rounds of the same type. It stores a mapping of voter ids to votes and records the winning option when the round is resolved. **/ struct Round { uint roundId; mapping (uint => Vote) votes; mapping (uint => uint) voteTotals; uint winningOption; } /** A tournament is a linear sequence of rounds of the same type. Tournaments are identified by an integer that increases sequentially with each tournament. Tournaments also have hash for storing off-chain metadata about the tournament. A tournament has a set wavelength and phase, called roundLengthSeconds and startDate, respectively. Each tournament also has it's own set of voice credits, which is a mapping from address to balance. The rounds mapping takes a round id and spits out a Round struct. The tokenRoundBonus attribute describes how much IERC20 to be distributed to the voters each round. The tokenListENS stores the ENS address of a token list that forms the choices of the tournament. **/ struct Tournament { uint tournamentId; bytes32 metadataHash; // ipfs hash of more verbose description, possibly multimedia uint startTime; uint roundLengthSeconds; uint tokenRoundBonus; uint minimumRank; uint voiceUBI; // number of voice credits available to spend each round bytes32 tokenListENS; address winnerOracle; // address that sets the winner for a tournament mapping (uint => uint) voiceCredits; mapping (uint => Round) rounds; } /** An identity is purchased with IERC20 and stores the creation time and a mapping of tournament id to the last round id that the identity voted in, which is used for deferred reward computation. **/ struct IdMetadata { mapping (uint => uint) lastRoundVoted; // uint firstTimeVoted; // uint timesVoted; uint cumulativeBonus; uint rank; } address public management; // authoritative key that can make important decisions, can be DAO address later address public rankManager; IERC20 public token; IERC721 public identity; uint public numTournaments = 0; // a counter to know what index to assign to new tournaments bytes32 public siteHash; mapping (uint => Tournament) public tournaments; // mapping from tournament id to tournament struct mapping (uint => IdMetadata) public identities; // mapping from address to identity struct mapping (uint => uint) public tokensWon; // tokensWon[voterId] = fvt-wei owed mapping (uint => mapping (uint => mapping (uint => bool))) public syncMap; // syncMap[voterId][tournamentId][roundId] = true/false // events for consumption by off chain systems event VoteOccurred(uint indexed tournamentId, uint indexed roundId, uint indexed voterId, uint[] choices, uint[] weights, bytes32 metadata); event RoundResolved(uint indexed tournamentId, uint roundId, uint winningChoice); event TournamentCreated(uint tournamentId, bytes32 metadataHash, uint startTime, uint roundLengthSeconds, uint tokenRoundBonus, uint minimumRank, uint voiceUBI, bytes32 tokenListENS, address winnerOracle); event ManagementUpdated(address oldManagement, address newManagement); event SiteHashUpdated(bytes32 oldSiteHash, bytes32 newSiteHash); event RankUpdated(uint voterId, uint oldRank, uint newRank); event RankManagerUpdated(address oldManager, address newManager); event TournamentUpdated(uint tournamentId, bytes32 metadataHash, uint tokenRoundBonus, uint minimumRank, uint voiceUBI, bytes32 tokenListENS, address winnerOracle); event AccountSynced(uint tournamentId, uint voterId); modifier managementOnly() { require (msg.sender == management, 'Only management may call this'); _; } constructor(address mgmt, address rankMgmt, address id) { management = mgmt; rankManager = rankMgmt; identity = IERC721(id); } // this function creates a new tournament type, only management can call it function createTournament( bytes32 hash, uint startTime, uint roundLengthSeconds, uint tokenRoundBonus, bytes32 tokenListENS, address oracle, uint minRank, uint voiceUBI) public managementOnly { numTournaments = numTournaments.plus(1); Tournament storage tournament = tournaments[numTournaments]; tournament.metadataHash = hash; tournament.startTime = startTime == 0 ? block.timestamp : startTime; tournament.tournamentId = numTournaments; tournament.roundLengthSeconds = roundLengthSeconds; tournament.tokenRoundBonus = tokenRoundBonus; tournament.minimumRank = minRank; tournament.voiceUBI = voiceUBI; tournament.tokenListENS = tokenListENS; tournament.winnerOracle = oracle; emit TournamentCreated(numTournaments, hash, startTime, roundLengthSeconds, tokenRoundBonus, minRank, voiceUBI, tokenListENS, oracle); } // this completes the round, and assigns it a winning choice, which enables deferred updates to voice credits function resolveRound(uint tournamentId, uint roundId, uint winningOption) public { Tournament storage tournament = tournaments[tournamentId]; require(msg.sender == tournament.winnerOracle, 'Only winner oracle can call this'); uint currentRoundId = getCurrentRoundId(tournamentId); Round storage round = tournament.rounds[roundId]; require(roundAlreadyResolved(tournamentId, roundId) == false, 'Round already resolved'); require(currentRoundId > roundId + 1, 'Too early to resolve'); round.roundId = roundId; round.winningOption = winningOption; emit RoundResolved(tournamentId, roundId, winningOption); } function voteCheck(uint voterId, uint tournamentId, uint roundId) internal view { require(roundId > 0, 'Tournament not started yet'); require(identity.ownerOf(voterId) == msg.sender, 'Must own identity to vote with it'); require(roundId > identities[voterId].lastRoundVoted[tournamentId], 'Can only vote one time per round'); require(tournaments[tournamentId].minimumRank <= identities[voterId].rank, 'Insufficient rank to participate in this tournament'); } // this is called by an identity that wishes to vote on a given tournament, with the choices and weights function vote( uint voterId, uint tournamentId, uint[] memory choices, uint[] memory weights, bytes32 hash, uint updateRoundId ) public { uint roundId = getCurrentRoundId(tournamentId); Round storage currentRound = tournaments[tournamentId].rounds[roundId]; voteCheck(voterId, tournamentId, roundId); require(choices.length == weights.length, 'Mismatched choices and lengths'); updateAccount(voterId, tournamentId, updateRoundId); identities[voterId].lastRoundVoted[tournamentId] = roundId; Vote storage currentVote = currentRound.votes[voterId]; currentVote.metadataHash = hash; uint balance = getVoiceCredits(tournamentId, voterId); uint sum = 0; for (uint i = 0; i < weights.length; i++) { currentVote.weights[choices[i]] = weights[i]; currentRound.voteTotals[choices[i]] = currentRound.voteTotals[choices[i]].plus(weights[i]); sum = sum.plus(weights[i].times(weights[i])); } require(sum <= balance, 'Must not spend more than your balance'); emit VoteOccurred(tournamentId, roundId, voterId, choices, weights, hash); } function withdrawWinnings(uint voterId) public { uint winnings = tokensWon[voterId]; address owner = identity.ownerOf(voterId); require(winnings > 0, 'Nothing to withdraw'); // doing it this way out of re-entry avoidance habit, not because it's actually possible here tokensWon[voterId] = 0; token.transfer(owner, winnings); } // this actually updates the voice credit balance to include the reward function updateAccount(uint voterId, uint tournamentId, uint roundId) public { IdMetadata storage id = identities[voterId]; Tournament storage tournament = tournaments[tournamentId]; bool roundResolved = roundAlreadyResolved(tournamentId, roundId); bool shouldSync = isSynced(voterId, tournamentId, roundId) == false; if (shouldSync && roundResolved) { // idempotent condition, call twice, update once, since this function is public syncMap[voterId][tournamentId][roundId] = true; // idempotence (uint voiceCreditBonus, uint tokenBonus) = getRoundBonus(voterId, tournamentId, roundId); tournament.voiceCredits[voterId] = getVoiceCredits(tournamentId, voterId).plus(voiceCreditBonus); tokensWon[voterId] = tokensWon[voterId].plus(tokenBonus); id.cumulativeBonus = id.cumulativeBonus.plus(voiceCreditBonus); emit AccountSynced(tournamentId, voterId); } } /** ====================================== GETTERS ========================================================== **/ function getRound(uint tournamentId, uint roundId) public view returns (uint[2] memory) { Round storage round = tournaments[tournamentId].rounds[roundId]; return [round.roundId, round.winningOption]; } // this computes the id of the current round for a given tournament, starting with round 1 on the startTime function getCurrentRoundId(uint tournamentId) public view returns (uint) { Tournament storage tournament = tournaments[tournamentId]; uint startTime = tournament.startTime; uint roundLengthSeconds = tournament.roundLengthSeconds; if (block.timestamp >= startTime) { return 1 + ((block.timestamp - startTime) / roundLengthSeconds); } else { return 0; } } function getVoiceCredits(uint tournamentId, uint voterId) public view returns (uint) { Tournament storage tournament = tournaments[tournamentId]; uint voiceCredits = tournament.voiceCredits[voterId]; if (voiceCredits > 0) { return voiceCredits; } else { return tournament.voiceUBI; } } function getLastRoundVoted(uint tournamentId, uint voterId) public view returns (uint) { return identities[voterId].lastRoundVoted[tournamentId]; } function getVoteTotals(uint tournamentId, uint roundId, uint option) public view returns (uint) { return tournaments[tournamentId].rounds[roundId].voteTotals[option]; } function getVoteMetadata(uint tournamentId, uint roundId, uint voterId) public view returns (bytes32) { return tournaments[tournamentId].rounds[roundId].votes[voterId].metadataHash; } function getVoiceUBI(uint tournamentId) public view returns (uint) { return tournaments[tournamentId].voiceUBI; } function getRoundResults(uint voterId, uint tournamentId, uint roundId) public view returns (uint, uint) { Tournament storage tournament = tournaments[tournamentId]; Round storage round = tournament.rounds[roundId]; Vote storage thisVote = round.votes[voterId]; return (thisVote.weights[round.winningOption], round.voteTotals[round.winningOption]); } // this actually updates the voice credit balance to include the reward function getRoundBonus(uint voterId, uint tournamentId, uint roundId) public view returns (uint, uint) { Tournament storage tournament = tournaments[tournamentId]; (uint voteWeight, uint totalVotes) = getRoundResults(voterId, tournamentId, roundId); uint tokenBonus = 0; // if this is the first round voterId has voted in, totalVotes will be 0 if (totalVotes > 0) { tokenBonus = tournament.tokenRoundBonus.times(voteWeight) / totalVotes; } uint voiceCreditBonus = voteWeight.times(voteWeight); return (voiceCreditBonus, tokenBonus); } function isSynced(uint voterId, uint tournamentId, uint roundId) public view returns (bool) { return syncMap[voterId][tournamentId][roundId]; } function roundAlreadyResolved(uint tournamentId, uint roundId) public view returns (bool) { return tournaments[tournamentId].rounds[roundId].winningOption > 0; } /** ====================================== SETTERS ========================================================== **/ // change the site hash function setSiteHash(bytes32 newHash) public managementOnly { bytes32 oldHash = siteHash; siteHash = newHash; emit SiteHashUpdated(oldHash, newHash); } function setRank(uint voterId, uint newRank) public { require(msg.sender == rankManager, 'Only rankManager may call this'); IdMetadata storage id = identities[voterId]; uint oldRank = id.rank; id.rank = newRank; emit RankUpdated(voterId, oldRank, newRank); } function setToken(address tokenAddr) public managementOnly { token = IERC20(tokenAddr); } function updateTournament(uint tournamentId, bytes32 newMetadata, uint newBonus, uint newMinRank, uint newUBI, bytes32 newTokenList, address newOracle) public managementOnly { Tournament storage tournament = tournaments[tournamentId]; tournament.metadataHash = newMetadata; // no changing round length tournament.tokenRoundBonus = newBonus; tournament.minimumRank = newMinRank; tournament.voiceUBI = newUBI; tournament.tokenListENS = newTokenList; tournament.winnerOracle = newOracle; emit TournamentUpdated(tournamentId, newMetadata, newBonus, newMinRank, newUBI, newTokenList, newOracle); } function setRankManager(address newManager) public managementOnly { address oldManager = rankManager; rankManager = newManager; emit RankManagerUpdated(oldManager, newManager); } // change the management key function setManagement(address newMgmt) public managementOnly { address oldMgmt = management; management = newMgmt; emit ManagementUpdated(oldMgmt, newMgmt); } }
// SPDX-License-Identifier: GPL-3.0-only pragma solidity 0.7.4; library SafeMathLib { function times(uint a, uint b) public pure returns (uint) { uint c = a * b; require(a == 0 || c / a == b, 'Overflow detected'); return c; } function minus(uint a, uint b) public pure returns (uint) { require(b <= a, 'Underflow detected'); return a - b; } function plus(uint a, uint b) public pure returns (uint) { uint c = a + b; require(c>=a && c>=b, 'Overflow detected'); return c; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"mgmt","type":"address"},{"internalType":"address","name":"rankMgmt","type":"address"},{"internalType":"address","name":"id","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tournamentId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"voterId","type":"uint256"}],"name":"AccountSynced","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldManagement","type":"address"},{"indexed":false,"internalType":"address","name":"newManagement","type":"address"}],"name":"ManagementUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldManager","type":"address"},{"indexed":false,"internalType":"address","name":"newManager","type":"address"}],"name":"RankManagerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"voterId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oldRank","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newRank","type":"uint256"}],"name":"RankUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tournamentId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"roundId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"winningChoice","type":"uint256"}],"name":"RoundResolved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"oldSiteHash","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"newSiteHash","type":"bytes32"}],"name":"SiteHashUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tournamentId","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"startTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"roundLengthSeconds","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokenRoundBonus","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"minimumRank","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"voiceUBI","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"tokenListENS","type":"bytes32"},{"indexed":false,"internalType":"address","name":"winnerOracle","type":"address"}],"name":"TournamentCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tournamentId","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"tokenRoundBonus","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"minimumRank","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"voiceUBI","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"tokenListENS","type":"bytes32"},{"indexed":false,"internalType":"address","name":"winnerOracle","type":"address"}],"name":"TournamentUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tournamentId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"roundId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"voterId","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"choices","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"weights","type":"uint256[]"},{"indexed":false,"internalType":"bytes32","name":"metadata","type":"bytes32"}],"name":"VoteOccurred","type":"event"},{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"roundLengthSeconds","type":"uint256"},{"internalType":"uint256","name":"tokenRoundBonus","type":"uint256"},{"internalType":"bytes32","name":"tokenListENS","type":"bytes32"},{"internalType":"address","name":"oracle","type":"address"},{"internalType":"uint256","name":"minRank","type":"uint256"},{"internalType":"uint256","name":"voiceUBI","type":"uint256"}],"name":"createTournament","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tournamentId","type":"uint256"}],"name":"getCurrentRoundId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tournamentId","type":"uint256"},{"internalType":"uint256","name":"voterId","type":"uint256"}],"name":"getLastRoundVoted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tournamentId","type":"uint256"},{"internalType":"uint256","name":"roundId","type":"uint256"}],"name":"getRound","outputs":[{"internalType":"uint256[2]","name":"","type":"uint256[2]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"voterId","type":"uint256"},{"internalType":"uint256","name":"tournamentId","type":"uint256"},{"internalType":"uint256","name":"roundId","type":"uint256"}],"name":"getRoundBonus","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"voterId","type":"uint256"},{"internalType":"uint256","name":"tournamentId","type":"uint256"},{"internalType":"uint256","name":"roundId","type":"uint256"}],"name":"getRoundResults","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tournamentId","type":"uint256"},{"internalType":"uint256","name":"voterId","type":"uint256"}],"name":"getVoiceCredits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tournamentId","type":"uint256"}],"name":"getVoiceUBI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tournamentId","type":"uint256"},{"internalType":"uint256","name":"roundId","type":"uint256"},{"internalType":"uint256","name":"voterId","type":"uint256"}],"name":"getVoteMetadata","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tournamentId","type":"uint256"},{"internalType":"uint256","name":"roundId","type":"uint256"},{"internalType":"uint256","name":"option","type":"uint256"}],"name":"getVoteTotals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"identities","outputs":[{"internalType":"uint256","name":"cumulativeBonus","type":"uint256"},{"internalType":"uint256","name":"rank","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"identity","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"voterId","type":"uint256"},{"internalType":"uint256","name":"tournamentId","type":"uint256"},{"internalType":"uint256","name":"roundId","type":"uint256"}],"name":"isSynced","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"management","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numTournaments","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rankManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tournamentId","type":"uint256"},{"internalType":"uint256","name":"roundId","type":"uint256"},{"internalType":"uint256","name":"winningOption","type":"uint256"}],"name":"resolveRound","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tournamentId","type":"uint256"},{"internalType":"uint256","name":"roundId","type":"uint256"}],"name":"roundAlreadyResolved","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newMgmt","type":"address"}],"name":"setManagement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"voterId","type":"uint256"},{"internalType":"uint256","name":"newRank","type":"uint256"}],"name":"setRank","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newManager","type":"address"}],"name":"setRankManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"newHash","type":"bytes32"}],"name":"setSiteHash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddr","type":"address"}],"name":"setToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"siteHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"syncMap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokensWon","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tournaments","outputs":[{"internalType":"uint256","name":"tournamentId","type":"uint256"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"roundLengthSeconds","type":"uint256"},{"internalType":"uint256","name":"tokenRoundBonus","type":"uint256"},{"internalType":"uint256","name":"minimumRank","type":"uint256"},{"internalType":"uint256","name":"voiceUBI","type":"uint256"},{"internalType":"bytes32","name":"tokenListENS","type":"bytes32"},{"internalType":"address","name":"winnerOracle","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"voterId","type":"uint256"},{"internalType":"uint256","name":"tournamentId","type":"uint256"},{"internalType":"uint256","name":"roundId","type":"uint256"}],"name":"updateAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tournamentId","type":"uint256"},{"internalType":"bytes32","name":"newMetadata","type":"bytes32"},{"internalType":"uint256","name":"newBonus","type":"uint256"},{"internalType":"uint256","name":"newMinRank","type":"uint256"},{"internalType":"uint256","name":"newUBI","type":"uint256"},{"internalType":"bytes32","name":"newTokenList","type":"bytes32"},{"internalType":"address","name":"newOracle","type":"address"}],"name":"updateTournament","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"voterId","type":"uint256"},{"internalType":"uint256","name":"tournamentId","type":"uint256"},{"internalType":"uint256[]","name":"choices","type":"uint256[]"},{"internalType":"uint256[]","name":"weights","type":"uint256[]"},{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"uint256","name":"updateRoundId","type":"uint256"}],"name":"vote","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"voterId","type":"uint256"}],"name":"withdrawWinnings","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052600060045534801561001557600080fd5b50604051612ee0380380612ee08339818101604052606081101561003857600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050612daf806101316000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80639bea8e541161010f578063cb22b4b4116100a2578063d624ac3411610071578063d624ac3414610b3c578063d76627a114610b99578063eaaf77e614610bf6578063fc0c546a14610c3f576101f0565b8063cb22b4b4146109fe578063cc834f5a14610a4a578063d2fad7df14610aa2578063d4a22bde14610af8576101f0565b8063b303f325116100de578063b303f325146108e4578063b78bb75514610932578063b9bc74f814610966578063c3243ff1146109a8576101f0565b80639bea8e54146108125780639f79727314610830578063a511cf5914610874578063abc56eee146108b6576101f0565b80632c159a1a116101875780637503e1b7116101565780637503e1b7146106ee578063855628161461077e57806388a8d6021461079c578063928b7c99146107d0576101f0565b80632c159a1a1461057957806339ec68a3146105ad5780633b3c3456146106215780636f60088e146106ac576101f0565b80631afb9068116101c35780631afb9068146102eb578063209380361461045f57806321e3b795146104a1578063274a52b5146104f9576101f0565b80630c2f2be7146101f5578063125bc2881461022d578063144fa6d71461027957806314794702146102bd575b600080fd5b61022b6004803603604081101561020b57600080fd5b810190808035906020019092919080359060200190929190505050610c73565b005b6102636004803603604081101561024357600080fd5b810190808035906020019092919080359060200190929190505050610dac565b6040518082815260200191505060405180910390f35b6102bb6004803603602081101561028f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610dde565b005b6102e9600480360360208110156102d357600080fd5b8101908080359060200190929190505050610ee3565b005b61045d600480360360c081101561030157600080fd5b8101908080359060200190929190803590602001909291908035906020019064010000000081111561033257600080fd5b82018360208201111561034457600080fd5b8035906020019184602083028401116401000000008311171561036657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156103c657600080fd5b8201836020820111156103d857600080fd5b803590602001918460208302840111640100000000831117156103fa57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019092919080359060200190929190505050611110565b005b61048b6004803603602081101561047557600080fd5b8101908080359060200190929190505050611608565b6040518082815260200191505060405180910390f35b6104e1600480360360608110156104b757600080fd5b8101908080359060200190929190803590602001909291908035906020019092919050505061165f565b60405180821515815260200191505060405180910390f35b610577600480360360e081101561050f57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116ad565b005b61058161187c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105e3600480360360408110156105c357600080fd5b8101908080359060200190929190803590602001909291905050506118a2565b6040518082600260200280838360005b8381101561060e5780820151818401526020810190506105f3565b5050505090500191505060405180910390f35b6106aa600480360361010081101561063857600080fd5b810190808035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291905050506118fb565b005b6106ec600480360360608110156106c257600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050611ba8565b005b61071a6004803603602081101561070457600080fd5b8101908080359060200190929190505050611ec7565b604051808a81526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff168152602001995050505050505050505060405180910390f35b610786611f35565b6040518082815260200191505060405180910390f35b6107a4611f3b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610810600480360360608110156107e657600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050611f5f565b005b61081a6121b6565b6040518082815260200191505060405180910390f35b6108726004803603602081101561084657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121bc565b005b6108a06004803603602081101561088a57600080fd5b8101908080359060200190929190505050612354565b6040518082815260200191505060405180910390f35b6108e2600480360360208110156108cc57600080fd5b810190808035906020019092919050505061236c565b005b61091a600480360360408110156108fa57600080fd5b81019080803590602001909291908035906020019092919050505061247e565b60405180821515815260200191505060405180910390f35b61093a6124b5565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109926004803603602081101561097c57600080fd5b81019080803590602001909291905050506124db565b6040518082815260200191505060405180910390f35b6109e8600480360360608110156109be57600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506124fb565b6040518082815260200191505060405180910390f35b610a3460048036036040811015610a1457600080fd5b810190808035906020019092919080359060200190929190505050612542565b6040518082815260200191505060405180910390f35b610a8a60048036036060811015610a6057600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050612597565b60405180821515815260200191505060405180910390f35b610ae260048036036060811015610ab857600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506125d3565b6040518082815260200191505060405180910390f35b610b3a60048036036020811015610b0e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061261d565b005b610b7c60048036036060811015610b5257600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506127b3565b604051808381526020018281526020019250505060405180910390f35b610bd960048036036060811015610baf57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050612842565b604051808381526020018281526020019250505060405180910390f35b610c2260048036036020811015610c0c57600080fd5b81019080803590602001909291905050506129c7565b604051808381526020018281526020019250505060405180910390f35b610c476129eb565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4f6e6c792072616e6b4d616e61676572206d61792063616c6c2074686973000081525060200191505060405180910390fd5b60006007600084815260200190815260200160002090506000816002015490508282600201819055507fae1829c1f5482a3b7cb166b061e12c7e866353ce0de02a15be4b2cedd844a4c384828560405180848152602001838152602001828152602001935050505060405180910390a150505050565b600060076000838152602001908152602001600020600001600084815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f6e6c79206d616e6167656d656e74206d61792063616c6c207468697300000081525060200191505060405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600860008381526020019081526020016000205490506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610f7057600080fd5b505afa158015610f84573d6000803e3d6000fd5b505050506040513d6020811015610f9a57600080fd5b8101908080519060200190929190505050905060008211611023576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4e6f7468696e6720746f2077697468647261770000000000000000000000000081525060200191505060405180910390fd5b60006008600085815260200190815260200160002081905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156110cf57600080fd5b505af11580156110e3573d6000803e3d6000fd5b505050506040513d60208110156110f957600080fd5b810190808051906020019092919050505050505050565b600061111b86611608565b9050600060066000888152602001908152602001600020600a0160008381526020019081526020016000209050611153888884612a11565b84518651146111ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4d69736d6174636865642063686f6963657320616e64206c656e67746873000081525060200191505060405180910390fd5b6111d5888885611ba8565b81600760008a815260200190815260200160002060000160008981526020019081526020016000208190555060008160010160008a81526020019081526020016000209050848160010181905550600061122f898b612542565b90506000805b88518110156114d55788818151811061124a57fe5b60200260200101518460000160008c848151811061126457fe5b60200260200101518152602001908152602001600020819055508460020160008b838151811061129057fe5b60200260200101518152602001908152602001600020547382d7630c5eb722557de6d76575c9a7b8de7185006366098d4f90918b84815181106112cf57fe5b60200260200101516040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b15801561131257600080fd5b505af4158015611326573d6000803e3d6000fd5b505050506040513d602081101561133c57600080fd5b81019080805190602001909291905050508560020160008c848151811061135f57fe5b6020026020010151815260200190815260200160002081905550817382d7630c5eb722557de6d76575c9a7b8de7185006366098d4f90918b84815181106113a257fe5b60200260200101517382d7630c5eb722557de6d76575c9a7b8de718500631d3b9edf90918e87815181106113d257fe5b60200260200101516040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b15801561141557600080fd5b505af4158015611429573d6000803e3d6000fd5b505050506040513d602081101561143f57600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b15801561148b57600080fd5b505af415801561149f573d6000803e3d6000fd5b505050506040513d60208110156114b557600080fd5b810190808051906020019092919050505091508080600101915050611235565b508181111561152f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612d556025913960400191505060405180910390fd5b8a858b7f04edc800316107e1cb2f3cd225f3a0272dc47c108869bfc56c57d00c58030d008c8c8c604051808060200180602001848152602001838103835286818151815260200191508051906020019060200280838360005b838110156115a3578082015181840152602081019050611588565b50505050905001838103825285818151815260200191508051906020019060200280838360005b838110156115e55780820151818401526020810190506115ca565b505050509050019550505050505060405180910390a45050505050505050505050565b60008060066000848152602001908152602001600020905060008160020154905060008260030154905081421061165257808242038161164457fe5b04600101935050505061165a565b600093505050505b919050565b6000600960008581526020019081526020016000206000848152602001908152602001600020600083815260200190815260200160002060009054906101000a900460ff1690509392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461176e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f6e6c79206d616e6167656d656e74206d61792063616c6c207468697300000081525060200191505060405180910390fd5b6000600660008981526020019081526020016000209050868160010181905550858160040181905550848160050181905550838160060181905550828160070181905550818160080160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fb00ffa191a389d361ca0f453d132d9db5309d1c7bfa83c0a43585302e602bb7788888888888888604051808881526020018781526020018681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff16815260200197505050505050505060405180910390a15050505050505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6118aa612cde565b600060066000858152602001908152602001600020600a0160008481526020019081526020016000209050604051806040016040528082600001548152602001826003015481525091505092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f6e6c79206d616e6167656d656e74206d61792063616c6c207468697300000081525060200191505060405180910390fd5b6004547382d7630c5eb722557de6d76575c9a7b8de7185006366098d4f909160016040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b158015611a1857600080fd5b505af4158015611a2c573d6000803e3d6000fd5b505050506040513d6020811015611a4257600080fd5b81019080805190602001909291905050506004819055506000600660006004548152602001908152602001600020905088816001018190555060008814611a895787611a8b565b425b81600201819055506004548160000181905550868160030181905550858160040181905550828160050181905550818160060181905550848160070181905550838160080160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f6613ef55521872654a1dbad4d7f48162875bd3240bebc9d32f27072192991d166004548a8a8a8a88888c8c604051808a81526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff168152602001995050505050505050505060405180910390a1505050505050505050565b600060076000858152602001908152602001600020905060006006600085815260200190815260200160002090506000611be2858561247e565b90506000801515611bf488888861165f565b1515149050808015611c035750815b15611ebe576001600960008981526020019081526020016000206000888152602001908152602001600020600087815260200190815260200160002060006101000a81548160ff021916908315150217905550600080611c64898989612842565b91509150611c72888a612542565b7382d7630c5eb722557de6d76575c9a7b8de7185006366098d4f9091846040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b158015611cca57600080fd5b505af4158015611cde573d6000803e3d6000fd5b505050506040513d6020811015611cf457600080fd5b81019080805190602001909291905050508560090160008b815260200190815260200160002081905550600860008a8152602001908152602001600020547382d7630c5eb722557de6d76575c9a7b8de7185006366098d4f9091836040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b158015611d8a57600080fd5b505af4158015611d9e573d6000803e3d6000fd5b505050506040513d6020811015611db457600080fd5b8101908080519060200190929190505050600860008b81526020019081526020016000208190555085600101547382d7630c5eb722557de6d76575c9a7b8de7185006366098d4f9091846040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b158015611e3957600080fd5b505af4158015611e4d573d6000803e3d6000fd5b505050506040513d6020811015611e6357600080fd5b810190808051906020019092919050505086600101819055507f7d102bc7499f7a615efb0ba95eb8d125e85f54153c7287930a2c8ac506582a14888a604051808381526020018281526020019250505060405180910390a150505b50505050505050565b60066020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050154908060060154908060070154908060080160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905089565b60045481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006006600085815260200190815260200160002090508060080160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461203b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f6e6c792077696e6e6572206f7261636c652063616e2063616c6c207468697381525060200191505060405180910390fd5b600061204685611608565b9050600082600a01600086815260200190815260200160002090506000151561206f878761247e565b1515146120e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f526f756e6420616c7265616479207265736f6c7665640000000000000000000081525060200191505060405180910390fd5b60018501821161215c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f546f6f206561726c7920746f207265736f6c766500000000000000000000000081525060200191505060405180910390fd5b848160000181905550838160030181905550857fdf07e825493e51009f1886bb919580bbd00b0ddc6a433f3f40655cb158beae118686604051808381526020018281526020019250505060405180910390a2505050505050565b60055481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461227d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f6e6c79206d616e6167656d656e74206d61792063616c6c207468697300000081525060200191505060405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f89778a3930aa8dd052d29a0290ba6f0a1549a0ef85e4099794ff6475297bd4668183604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b60086020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461242d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f6e6c79206d616e6167656d656e74206d61792063616c6c207468697300000081525060200191505060405180910390fd5b60006005549050816005819055507f8d5040d17999087d5b86309eb9b1a1b50b2cba80a53645702ee70195eb0109278183604051808381526020018281526020019250505060405180910390a15050565b60008060066000858152602001908152602001600020600a0160008481526020019081526020016000206003015411905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060066000838152602001908152602001600020600601549050919050565b600060066000858152602001908152602001600020600a01600084815260200190815260200160002060020160008381526020019081526020016000205490509392505050565b60008060066000858152602001908152602001600020905060008160090160008581526020019081526020016000205490506000811115612587578092505050612591565b8160060154925050505b92915050565b6009602052826000526040600020602052816000526040600020602052806000526040600020600092509250509054906101000a900460ff1681565b600060066000858152602001908152602001600020600a01600084815260200190815260200160002060010160008381526020019081526020016000206001015490509392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146126de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f6e6c79206d616e6167656d656e74206d61792063616c6c207468697300000081525060200191505060405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f8caf0a9df2e1da9becb3ebfb8a56e83121a5b3f6c5622f715a939ec29c54dfdf8183604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b6000806000600660008681526020019081526020016000209050600081600a0160008681526020019081526020016000209050600081600101600089815260200190815260200160002090508060000160008360030154815260200190815260200160002054826002016000846003015481526020019081526020016000205494509450505050935093915050565b600080600060066000868152602001908152602001600020905060008061286a8888886127b3565b9150915060008082111561291c578184600401547382d7630c5eb722557de6d76575c9a7b8de718500631d3b9edf9091866040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b1580156128d657600080fd5b505af41580156128ea573d6000803e3d6000fd5b505050506040513d602081101561290057600080fd5b81019080805190602001909291905050508161291857fe5b0490505b6000837382d7630c5eb722557de6d76575c9a7b8de718500631d3b9edf9091866040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b15801561297757600080fd5b505af415801561298b573d6000803e3d6000fd5b505050506040513d60208110156129a157600080fd5b810190808051906020019092919050505090508082965096505050505050935093915050565b60076020528060005260406000206000915090508060010154908060020154905082565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008111612a87576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f546f75726e616d656e74206e6f7420737461727465642079657400000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612b1157600080fd5b505afa158015612b25573d6000803e3d6000fd5b505050506040513d6020811015612b3b57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614612bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612d016021913960400191505060405180910390fd5b600760008481526020019081526020016000206000016000838152602001908152602001600020548111612c54576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f43616e206f6e6c7920766f7465206f6e652074696d652070657220726f756e6481525060200191505060405180910390fd5b600760008481526020019081526020016000206002015460066000848152602001908152602001600020600501541115612cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526033815260200180612d226033913960400191505060405180910390fd5b505050565b604051806040016040528060029060208202803683378082019150509050509056fe4d757374206f776e206964656e7469747920746f20766f74652077697468206974496e73756666696369656e742072616e6b20746f20706172746963697061746520696e207468697320746f75726e616d656e744d757374206e6f74207370656e64206d6f7265207468616e20796f75722062616c616e6365a264697066735822122042f74405702980323afab94db50beadc8fc4f8208ecf1f53657b1c124acf015664736f6c63430007040033000000000000000000000000288fe43139741f91a8cbb6f4add83811c794851b000000000000000000000000288fe43139741f91a8cbb6f4add83811c794851b000000000000000000000000f779cae120093807985d5f2e7dbb21d69be6b963
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101f05760003560e01c80639bea8e541161010f578063cb22b4b4116100a2578063d624ac3411610071578063d624ac3414610b3c578063d76627a114610b99578063eaaf77e614610bf6578063fc0c546a14610c3f576101f0565b8063cb22b4b4146109fe578063cc834f5a14610a4a578063d2fad7df14610aa2578063d4a22bde14610af8576101f0565b8063b303f325116100de578063b303f325146108e4578063b78bb75514610932578063b9bc74f814610966578063c3243ff1146109a8576101f0565b80639bea8e54146108125780639f79727314610830578063a511cf5914610874578063abc56eee146108b6576101f0565b80632c159a1a116101875780637503e1b7116101565780637503e1b7146106ee578063855628161461077e57806388a8d6021461079c578063928b7c99146107d0576101f0565b80632c159a1a1461057957806339ec68a3146105ad5780633b3c3456146106215780636f60088e146106ac576101f0565b80631afb9068116101c35780631afb9068146102eb578063209380361461045f57806321e3b795146104a1578063274a52b5146104f9576101f0565b80630c2f2be7146101f5578063125bc2881461022d578063144fa6d71461027957806314794702146102bd575b600080fd5b61022b6004803603604081101561020b57600080fd5b810190808035906020019092919080359060200190929190505050610c73565b005b6102636004803603604081101561024357600080fd5b810190808035906020019092919080359060200190929190505050610dac565b6040518082815260200191505060405180910390f35b6102bb6004803603602081101561028f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610dde565b005b6102e9600480360360208110156102d357600080fd5b8101908080359060200190929190505050610ee3565b005b61045d600480360360c081101561030157600080fd5b8101908080359060200190929190803590602001909291908035906020019064010000000081111561033257600080fd5b82018360208201111561034457600080fd5b8035906020019184602083028401116401000000008311171561036657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156103c657600080fd5b8201836020820111156103d857600080fd5b803590602001918460208302840111640100000000831117156103fa57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019092919080359060200190929190505050611110565b005b61048b6004803603602081101561047557600080fd5b8101908080359060200190929190505050611608565b6040518082815260200191505060405180910390f35b6104e1600480360360608110156104b757600080fd5b8101908080359060200190929190803590602001909291908035906020019092919050505061165f565b60405180821515815260200191505060405180910390f35b610577600480360360e081101561050f57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116ad565b005b61058161187c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105e3600480360360408110156105c357600080fd5b8101908080359060200190929190803590602001909291905050506118a2565b6040518082600260200280838360005b8381101561060e5780820151818401526020810190506105f3565b5050505090500191505060405180910390f35b6106aa600480360361010081101561063857600080fd5b810190808035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291905050506118fb565b005b6106ec600480360360608110156106c257600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050611ba8565b005b61071a6004803603602081101561070457600080fd5b8101908080359060200190929190505050611ec7565b604051808a81526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff168152602001995050505050505050505060405180910390f35b610786611f35565b6040518082815260200191505060405180910390f35b6107a4611f3b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610810600480360360608110156107e657600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050611f5f565b005b61081a6121b6565b6040518082815260200191505060405180910390f35b6108726004803603602081101561084657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121bc565b005b6108a06004803603602081101561088a57600080fd5b8101908080359060200190929190505050612354565b6040518082815260200191505060405180910390f35b6108e2600480360360208110156108cc57600080fd5b810190808035906020019092919050505061236c565b005b61091a600480360360408110156108fa57600080fd5b81019080803590602001909291908035906020019092919050505061247e565b60405180821515815260200191505060405180910390f35b61093a6124b5565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109926004803603602081101561097c57600080fd5b81019080803590602001909291905050506124db565b6040518082815260200191505060405180910390f35b6109e8600480360360608110156109be57600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506124fb565b6040518082815260200191505060405180910390f35b610a3460048036036040811015610a1457600080fd5b810190808035906020019092919080359060200190929190505050612542565b6040518082815260200191505060405180910390f35b610a8a60048036036060811015610a6057600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050612597565b60405180821515815260200191505060405180910390f35b610ae260048036036060811015610ab857600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506125d3565b6040518082815260200191505060405180910390f35b610b3a60048036036020811015610b0e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061261d565b005b610b7c60048036036060811015610b5257600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506127b3565b604051808381526020018281526020019250505060405180910390f35b610bd960048036036060811015610baf57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050612842565b604051808381526020018281526020019250505060405180910390f35b610c2260048036036020811015610c0c57600080fd5b81019080803590602001909291905050506129c7565b604051808381526020018281526020019250505060405180910390f35b610c476129eb565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4f6e6c792072616e6b4d616e61676572206d61792063616c6c2074686973000081525060200191505060405180910390fd5b60006007600084815260200190815260200160002090506000816002015490508282600201819055507fae1829c1f5482a3b7cb166b061e12c7e866353ce0de02a15be4b2cedd844a4c384828560405180848152602001838152602001828152602001935050505060405180910390a150505050565b600060076000838152602001908152602001600020600001600084815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f6e6c79206d616e6167656d656e74206d61792063616c6c207468697300000081525060200191505060405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600860008381526020019081526020016000205490506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610f7057600080fd5b505afa158015610f84573d6000803e3d6000fd5b505050506040513d6020811015610f9a57600080fd5b8101908080519060200190929190505050905060008211611023576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4e6f7468696e6720746f2077697468647261770000000000000000000000000081525060200191505060405180910390fd5b60006008600085815260200190815260200160002081905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156110cf57600080fd5b505af11580156110e3573d6000803e3d6000fd5b505050506040513d60208110156110f957600080fd5b810190808051906020019092919050505050505050565b600061111b86611608565b9050600060066000888152602001908152602001600020600a0160008381526020019081526020016000209050611153888884612a11565b84518651146111ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4d69736d6174636865642063686f6963657320616e64206c656e67746873000081525060200191505060405180910390fd5b6111d5888885611ba8565b81600760008a815260200190815260200160002060000160008981526020019081526020016000208190555060008160010160008a81526020019081526020016000209050848160010181905550600061122f898b612542565b90506000805b88518110156114d55788818151811061124a57fe5b60200260200101518460000160008c848151811061126457fe5b60200260200101518152602001908152602001600020819055508460020160008b838151811061129057fe5b60200260200101518152602001908152602001600020547382d7630c5eb722557de6d76575c9a7b8de7185006366098d4f90918b84815181106112cf57fe5b60200260200101516040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b15801561131257600080fd5b505af4158015611326573d6000803e3d6000fd5b505050506040513d602081101561133c57600080fd5b81019080805190602001909291905050508560020160008c848151811061135f57fe5b6020026020010151815260200190815260200160002081905550817382d7630c5eb722557de6d76575c9a7b8de7185006366098d4f90918b84815181106113a257fe5b60200260200101517382d7630c5eb722557de6d76575c9a7b8de718500631d3b9edf90918e87815181106113d257fe5b60200260200101516040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b15801561141557600080fd5b505af4158015611429573d6000803e3d6000fd5b505050506040513d602081101561143f57600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b15801561148b57600080fd5b505af415801561149f573d6000803e3d6000fd5b505050506040513d60208110156114b557600080fd5b810190808051906020019092919050505091508080600101915050611235565b508181111561152f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612d556025913960400191505060405180910390fd5b8a858b7f04edc800316107e1cb2f3cd225f3a0272dc47c108869bfc56c57d00c58030d008c8c8c604051808060200180602001848152602001838103835286818151815260200191508051906020019060200280838360005b838110156115a3578082015181840152602081019050611588565b50505050905001838103825285818151815260200191508051906020019060200280838360005b838110156115e55780820151818401526020810190506115ca565b505050509050019550505050505060405180910390a45050505050505050505050565b60008060066000848152602001908152602001600020905060008160020154905060008260030154905081421061165257808242038161164457fe5b04600101935050505061165a565b600093505050505b919050565b6000600960008581526020019081526020016000206000848152602001908152602001600020600083815260200190815260200160002060009054906101000a900460ff1690509392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461176e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f6e6c79206d616e6167656d656e74206d61792063616c6c207468697300000081525060200191505060405180910390fd5b6000600660008981526020019081526020016000209050868160010181905550858160040181905550848160050181905550838160060181905550828160070181905550818160080160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fb00ffa191a389d361ca0f453d132d9db5309d1c7bfa83c0a43585302e602bb7788888888888888604051808881526020018781526020018681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff16815260200197505050505050505060405180910390a15050505050505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6118aa612cde565b600060066000858152602001908152602001600020600a0160008481526020019081526020016000209050604051806040016040528082600001548152602001826003015481525091505092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f6e6c79206d616e6167656d656e74206d61792063616c6c207468697300000081525060200191505060405180910390fd5b6004547382d7630c5eb722557de6d76575c9a7b8de7185006366098d4f909160016040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b158015611a1857600080fd5b505af4158015611a2c573d6000803e3d6000fd5b505050506040513d6020811015611a4257600080fd5b81019080805190602001909291905050506004819055506000600660006004548152602001908152602001600020905088816001018190555060008814611a895787611a8b565b425b81600201819055506004548160000181905550868160030181905550858160040181905550828160050181905550818160060181905550848160070181905550838160080160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f6613ef55521872654a1dbad4d7f48162875bd3240bebc9d32f27072192991d166004548a8a8a8a88888c8c604051808a81526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff168152602001995050505050505050505060405180910390a1505050505050505050565b600060076000858152602001908152602001600020905060006006600085815260200190815260200160002090506000611be2858561247e565b90506000801515611bf488888861165f565b1515149050808015611c035750815b15611ebe576001600960008981526020019081526020016000206000888152602001908152602001600020600087815260200190815260200160002060006101000a81548160ff021916908315150217905550600080611c64898989612842565b91509150611c72888a612542565b7382d7630c5eb722557de6d76575c9a7b8de7185006366098d4f9091846040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b158015611cca57600080fd5b505af4158015611cde573d6000803e3d6000fd5b505050506040513d6020811015611cf457600080fd5b81019080805190602001909291905050508560090160008b815260200190815260200160002081905550600860008a8152602001908152602001600020547382d7630c5eb722557de6d76575c9a7b8de7185006366098d4f9091836040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b158015611d8a57600080fd5b505af4158015611d9e573d6000803e3d6000fd5b505050506040513d6020811015611db457600080fd5b8101908080519060200190929190505050600860008b81526020019081526020016000208190555085600101547382d7630c5eb722557de6d76575c9a7b8de7185006366098d4f9091846040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b158015611e3957600080fd5b505af4158015611e4d573d6000803e3d6000fd5b505050506040513d6020811015611e6357600080fd5b810190808051906020019092919050505086600101819055507f7d102bc7499f7a615efb0ba95eb8d125e85f54153c7287930a2c8ac506582a14888a604051808381526020018281526020019250505060405180910390a150505b50505050505050565b60066020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050154908060060154908060070154908060080160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905089565b60045481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006006600085815260200190815260200160002090508060080160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461203b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f6e6c792077696e6e6572206f7261636c652063616e2063616c6c207468697381525060200191505060405180910390fd5b600061204685611608565b9050600082600a01600086815260200190815260200160002090506000151561206f878761247e565b1515146120e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f526f756e6420616c7265616479207265736f6c7665640000000000000000000081525060200191505060405180910390fd5b60018501821161215c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f546f6f206561726c7920746f207265736f6c766500000000000000000000000081525060200191505060405180910390fd5b848160000181905550838160030181905550857fdf07e825493e51009f1886bb919580bbd00b0ddc6a433f3f40655cb158beae118686604051808381526020018281526020019250505060405180910390a2505050505050565b60055481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461227d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f6e6c79206d616e6167656d656e74206d61792063616c6c207468697300000081525060200191505060405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f89778a3930aa8dd052d29a0290ba6f0a1549a0ef85e4099794ff6475297bd4668183604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b60086020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461242d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f6e6c79206d616e6167656d656e74206d61792063616c6c207468697300000081525060200191505060405180910390fd5b60006005549050816005819055507f8d5040d17999087d5b86309eb9b1a1b50b2cba80a53645702ee70195eb0109278183604051808381526020018281526020019250505060405180910390a15050565b60008060066000858152602001908152602001600020600a0160008481526020019081526020016000206003015411905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060066000838152602001908152602001600020600601549050919050565b600060066000858152602001908152602001600020600a01600084815260200190815260200160002060020160008381526020019081526020016000205490509392505050565b60008060066000858152602001908152602001600020905060008160090160008581526020019081526020016000205490506000811115612587578092505050612591565b8160060154925050505b92915050565b6009602052826000526040600020602052816000526040600020602052806000526040600020600092509250509054906101000a900460ff1681565b600060066000858152602001908152602001600020600a01600084815260200190815260200160002060010160008381526020019081526020016000206001015490509392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146126de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f6e6c79206d616e6167656d656e74206d61792063616c6c207468697300000081525060200191505060405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f8caf0a9df2e1da9becb3ebfb8a56e83121a5b3f6c5622f715a939ec29c54dfdf8183604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b6000806000600660008681526020019081526020016000209050600081600a0160008681526020019081526020016000209050600081600101600089815260200190815260200160002090508060000160008360030154815260200190815260200160002054826002016000846003015481526020019081526020016000205494509450505050935093915050565b600080600060066000868152602001908152602001600020905060008061286a8888886127b3565b9150915060008082111561291c578184600401547382d7630c5eb722557de6d76575c9a7b8de718500631d3b9edf9091866040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b1580156128d657600080fd5b505af41580156128ea573d6000803e3d6000fd5b505050506040513d602081101561290057600080fd5b81019080805190602001909291905050508161291857fe5b0490505b6000837382d7630c5eb722557de6d76575c9a7b8de718500631d3b9edf9091866040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b15801561297757600080fd5b505af415801561298b573d6000803e3d6000fd5b505050506040513d60208110156129a157600080fd5b810190808051906020019092919050505090508082965096505050505050935093915050565b60076020528060005260406000206000915090508060010154908060020154905082565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008111612a87576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f546f75726e616d656e74206e6f7420737461727465642079657400000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612b1157600080fd5b505afa158015612b25573d6000803e3d6000fd5b505050506040513d6020811015612b3b57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614612bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612d016021913960400191505060405180910390fd5b600760008481526020019081526020016000206000016000838152602001908152602001600020548111612c54576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f43616e206f6e6c7920766f7465206f6e652074696d652070657220726f756e6481525060200191505060405180910390fd5b600760008481526020019081526020016000206002015460066000848152602001908152602001600020600501541115612cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526033815260200180612d226033913960400191505060405180910390fd5b505050565b604051806040016040528060029060208202803683378082019150509050509056fe4d757374206f776e206964656e7469747920746f20766f74652077697468206974496e73756666696369656e742072616e6b20746f20706172746963697061746520696e207468697320746f75726e616d656e744d757374206e6f74207370656e64206d6f7265207468616e20796f75722062616c616e6365a264697066735822122042f74405702980323afab94db50beadc8fc4f8208ecf1f53657b1c124acf015664736f6c63430007040033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000288fe43139741f91a8cbb6f4add83811c794851b000000000000000000000000288fe43139741f91a8cbb6f4add83811c794851b000000000000000000000000f779cae120093807985d5f2e7dbb21d69be6b963
-----Decoded View---------------
Arg [0] : mgmt (address): 0x288fE43139741F91a8Cbb6F4adD83811c794851b
Arg [1] : rankMgmt (address): 0x288fE43139741F91a8Cbb6F4adD83811c794851b
Arg [2] : id (address): 0xf779cae120093807985d5F2e7DBB21d69be6b963
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000288fe43139741f91a8cbb6f4add83811c794851b
Arg [1] : 000000000000000000000000288fe43139741f91a8cbb6f4add83811c794851b
Arg [2] : 000000000000000000000000f779cae120093807985d5f2e7dbb21d69be6b963
Deployed Bytecode Sourcemap
7207:15322:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21002:302;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18561:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21310:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15857:378;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14620:1231;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17767:429;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20334:155;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21417:669;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10284:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17428:221;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12224:978;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16317:990;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10441:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10314:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10115:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13324:681;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10411:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22092:206;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10640:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20817:179;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20495:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10227:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19113:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18726:180;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18202:353;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10722:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18912:195;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22337:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19246:386;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;19714:614;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;10545:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;10259:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21002:302;21086:11;;;;;;;;;;;21072:25;;:10;:25;;;21064:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21142:21;21166:10;:19;21177:7;21166:19;;;;;;;;;;;21142:43;;21195:12;21210:2;:7;;;21195:22;;21237:7;21227:2;:7;;:17;;;;21259:38;21271:7;21280;21289;21259:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21002:302;;;;:::o;18561:159::-;18642:4;18665:10;:19;18676:7;18665:19;;;;;;;;;;;:34;;:48;18700:12;18665:48;;;;;;;;;;;;18658:55;;18561:159;;;;:::o;21310:101::-;11916:10;;;;;;;;;;11902:24;;:10;:24;;;11893:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21394:9:::1;21379:5;;:25;;;;;;;;;;;;;;;;;;21310:101:::0;:::o;15857:378::-;15914:13;15930:9;:18;15940:7;15930:18;;;;;;;;;;;;15914:34;;15958:13;15974:8;;;;;;;;;;;:16;;;15991:7;15974:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15958:41;;16028:1;16017:8;:12;16009:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16186:1;16165:9;:18;16175:7;16165:18;;;;;;;;;;;:22;;;;16197:5;;;;;;;;;;;:14;;;16212:5;16219:8;16197:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15857:378;;;:::o;14620:1231::-;14818:12;14833:31;14851:12;14833:17;:31::i;:::-;14818:46;;14874:26;14903:11;:25;14915:12;14903:25;;;;;;;;;;;:32;;:41;14936:7;14903:41;;;;;;;;;;;14874:70;;14955:41;14965:7;14974:12;14988:7;14955:9;:41::i;:::-;15032:7;:14;15014:7;:14;:32;15006:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15092:51;15106:7;15115:12;15129:13;15092;:51::i;:::-;15205:7;15154:10;:19;15165:7;15154:19;;;;;;;;;;;:34;;:48;15189:12;15154:48;;;;;;;;;;;:58;;;;15223:24;15250:12;:18;;:27;15269:7;15250:27;;;;;;;;;;;15223:54;;15314:4;15287:11;:24;;:31;;;;15328:12;15343:38;15359:12;15373:7;15343:15;:38::i;:::-;15328:53;;15391:8;15419:6;15414:273;15435:7;:14;15431:1;:18;15414:273;;;15504:7;15512:1;15504:10;;;;;;;;;;;;;;15470:11;:19;;:31;15490:7;15498:1;15490:10;;;;;;;;;;;;;;15470:31;;;;;;;;;;;:44;;;;15566:12;:23;;:35;15590:7;15598:1;15590:10;;;;;;;;;;;;;;15566:35;;;;;;;;;;;;:40;;;;15607:7;15615:1;15607:10;;;;;;;;;;;;;;15566:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15528:12;:23;;:35;15552:7;15560:1;15552:10;;;;;;;;;;;;;;15528:35;;;;;;;;;;;:90;;;;15638:3;:8;;;;15647:7;15655:1;15647:10;;;;;;;;;;;;;;:16;;;;15664:7;15672:1;15664:10;;;;;;;;;;;;;;15647:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15638:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15632:44;;15451:3;;;;;;;15414:273;;;;15711:7;15704:3;:14;;15696:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15812:7;15803;15789:12;15776:68;15821:7;15830;15839:4;15776:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14620:1231;;;;;;;;;;;:::o;17767:429::-;17834:4;17850:29;17882:11;:25;17894:12;17882:25;;;;;;;;;;;17850:57;;17917:14;17934:10;:20;;;17917:37;;17964:23;17990:10;:29;;;17964:55;;18052:9;18033:15;:28;18029:161;;18121:18;18108:9;18090:15;:27;18089:50;;;;;;18084:1;:56;18077:63;;;;;;;18029:161;18178:1;18171:8;;;;;17767:429;;;;:::o;20334:155::-;20420:4;20443:7;:16;20451:7;20443:16;;;;;;;;;;;:30;20460:12;20443:30;;;;;;;;;;;:39;20474:7;20443:39;;;;;;;;;;;;;;;;;;;;;20436:46;;20334:155;;;;;:::o;21417:669::-;11916:10;;;;;;;;;;11902:24;;:10;:24;;;11893:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21602:29:::1;21634:11;:25;21646:12;21634:25;;;;;;;;;;;21602:57;;21695:11;21669:10;:23;;:37;;;;21781:8;21752:10;:26;;:37;;;;21824:10;21799;:22;;:35;;;;21866:6;21844:10;:19;;:28;;;;21908:12;21882:10;:23;;:38;;;;21956:9;21930:10;:23;;;:35;;;;;;;;;;;;;;;;;;21980:99;21998:12;22012:11;22025:8;22035:10;22047:6;22055:12;22069:9;21980:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11970:1;21417:669:::0;;;;;;;:::o;10284:23::-;;;;;;;;;;;;;:::o;17428:221::-;17500:14;;:::i;:::-;17526:19;17548:11;:25;17560:12;17548:25;;;;;;;;;;;:32;;:41;17581:7;17548:41;;;;;;;;;;;17526:63;;17599:43;;;;;;;;17607:5;:13;;;17599:43;;;;17622:5;:19;;;17599:43;;;;;;17428:221;;;;:::o;12224:978::-;11916:10;;;;;;;;;;11902:24;;:10;:24;;;11893:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12508:14:::1;;:19;;;;12528:1;12508:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;12491:14;:39;;;;12540:29;12572:11;:27;12584:14;;12572:27;;;;;;;;;;;12540:59;;12635:4;12609:10;:23;;:30;;;;12685:1;12672:9;:14;:44;;12707:9;12672:44;;;12689:15;12672:44;12649:10;:20;;:67;;;;12752:14;;12726:10;:23;;:40;;;;12808:18;12776:10;:29;;:50;;;;12865:15;12836:10;:26;;:44;;;;12915:7;12890:10;:22;;:32;;;;12954:8;12932:10;:19;;:30;;;;12998:12;12972:10;:23;;:38;;;;13046:6;13020:10;:23;;;:32;;;;;;;;;;;;;;;;;;13067:128;13085:14;;13101:4;13107:9;13118:18;13138:15;13155:7;13164:8;13174:12;13188:6;13067:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11970:1;12224:978:::0;;;;;;;;:::o;16317:990::-;16404:21;16428:10;:19;16439:7;16428:19;;;;;;;;;;;16404:43;;16457:29;16489:11;:25;16501:12;16489:25;;;;;;;;;;;16457:57;;16524:18;16545:43;16566:12;16580:7;16545:20;:43::i;:::-;16524:64;;16598:15;16660:5;16616:49;;:40;16625:7;16634:12;16648:7;16616:8;:40::i;:::-;:49;;;16598:67;;16680:10;:27;;;;;16694:13;16680:27;16676:625;;;16857:4;16815:7;:16;16823:7;16815:16;;;;;;;;;;;:30;16832:12;16815:30;;;;;;;;;;;:39;16846:7;16815:39;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;16892:21;16915:15;16934:45;16948:7;16957:12;16971:7;16934:13;:45::i;:::-;16891:88;;;;17028:38;17044:12;17058:7;17028:15;:38::i;:::-;:43;;;;17072:16;17028:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16993:10;:23;;:32;17017:7;16993:32;;;;;;;;;;;:96;;;;17124:9;:18;17134:7;17124:18;;;;;;;;;;;;:23;;;;17148:10;17124:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17103:9;:18;17113:7;17103:18;;;;;;;;;;;:56;;;;17194:2;:18;;;:23;;;;17218:16;17194:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17173:2;:18;;:62;;;;17254:36;17268:12;17282:7;17254:36;;;;;;;;;;;;;;;;;;;;;;;;16676:625;;;16317:990;;;;;;;:::o;10441:47::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10314:30::-;;;;:::o;10115:25::-;;;;;;;;;;;;:::o;13324:681::-;13416:29;13448:11;:25;13460:12;13448:25;;;;;;;;;;;13416:57;;13505:10;:23;;;;;;;;;;;;13491:37;;:10;:37;;;13483:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13575:19;13597:31;13615:12;13597:17;:31::i;:::-;13575:53;;13638:19;13660:10;:17;;:26;13678:7;13660:26;;;;;;;;;;;13638:48;;13751:5;13704:52;;:43;13725:12;13739:7;13704:20;:43::i;:::-;:52;;;13696:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13828:1;13818:7;:11;13801:14;:28;13793:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13880:7;13864:5;:13;;:23;;;;13919:13;13897:5;:19;;:35;;;;13961:12;13947:51;13975:7;13984:13;13947:51;;;;;;;;;;;;;;;;;;;;;;;;13324:681;;;;;;:::o;10411:23::-;;;;:::o;22092:206::-;11916:10;;;;;;;;;;11902:24;;:10;:24;;;11893:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22168:18:::1;22189:11;;;;;;;;;;;22168:32;;22224:10;22210:11;;:24;;;;;;;;;;;;;;;;;;22249:42;22268:10;22280;22249:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;11970:1;22092:206:::0;:::o;10640:39::-;;;;;;;;;;;;;;;;;:::o;20817:179::-;11916:10;;;;;;;;;;11902:24;;:10;:24;;;11893:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20887:15:::1;20905:8;;20887:26;;20934:7;20923:8;:18;;;;20956:33;20972:7;20981;20956:33;;;;;;;;;;;;;;;;;;;;;;;;11970:1;20817:179:::0;:::o;20495:173::-;20579:4;20660:1;20602:11;:25;20614:12;20602:25;;;;;;;;;;;:32;;:41;20635:7;20602:41;;;;;;;;;;;:55;;;:59;20595:66;;20495:173;;;;:::o;10227:26::-;;;;;;;;;;;;;:::o;19113:127::-;19175:4;19199:11;:25;19211:12;19199:25;;;;;;;;;;;:34;;;19192:41;;19113:127;;;:::o;18726:180::-;18816:4;18839:11;:25;18851:12;18839:25;;;;;;;;;;;:32;;:41;18872:7;18839:41;;;;;;;;;;;:52;;:60;18892:6;18839:60;;;;;;;;;;;;18832:67;;18726:180;;;;;:::o;18202:353::-;18281:4;18297:29;18329:11;:25;18341:12;18329:25;;;;;;;;;;;18297:57;;18364:17;18384:10;:23;;:32;18408:7;18384:32;;;;;;;;;;;;18364:52;;18445:1;18430:12;:16;18426:123;;;18469:12;18462:19;;;;;;18426:123;18519:10;:19;;;18512:26;;;;18202:353;;;;;:::o;10722:73::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;18912:195::-;19005:7;19031:11;:25;19043:12;19031:25;;;;;;;;;;;:32;;:41;19064:7;19031:41;;;;;;;;;;;:47;;:56;19079:7;19031:56;;;;;;;;;;;:69;;;19024:76;;18912:195;;;;;:::o;22337:188::-;11916:10;;;;;;;;;;11902:24;;:10;:24;;;11893:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22409:15:::1;22428:10:::0;::::1;;;;;;;;;;22409:29;;22461:7;22448:10;::::0;:20:::1;;;;;;;;;;;;;;;;;;22483:35;22501:7;22510;22483:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;11970:1;22337:188:::0;:::o;19246:386::-;19339:4;19345;19361:29;19393:11;:25;19405:12;19393:25;;;;;;;;;;;19361:57;;19428:19;19450:10;:17;;:26;19468:7;19450:26;;;;;;;;;;;19428:48;;19486:21;19510:5;:11;;:20;19522:7;19510:20;;;;;;;;;;;19486:44;;19548:8;:16;;:37;19565:5;:19;;;19548:37;;;;;;;;;;;;19587:5;:16;;:37;19604:5;:19;;;19587:37;;;;;;;;;;;;19540:85;;;;;;;19246:386;;;;;;:::o;19714:614::-;19805:4;19811;19827:29;19859:11;:25;19871:12;19859:25;;;;;;;;;;;19827:57;;19895:15;19912;19931:47;19947:7;19956:12;19970:7;19931:15;:47::i;:::-;19894:84;;;;19988:15;20115:1;20102:10;:14;20098:115;;;20192:10;20145;:26;;;:32;;;;20178:10;20145:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;;;20132:70;;20098:115;20222:21;20246:10;:16;;;;20263:10;20246:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20222:52;;20292:16;20310:10;20284:37;;;;;;;;;19714:614;;;;;;:::o;10545:46::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10259:19::-;;;;;;;;;;;;;:::o;14011:494::-;14119:1;14109:7;:11;14101:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14198:10;14169:39;;:8;;;;;;;;;;;:16;;;14186:7;14169:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:39;;;14161:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14274:10;:19;14285:7;14274:19;;;;;;;;;;;:34;;:48;14309:12;14274:48;;;;;;;;;;;;14264:7;:58;14256:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14418:10;:19;14429:7;14418:19;;;;;;;;;;;:24;;;14377:11;:25;14389:12;14377:25;;;;;;;;;;;:37;;;:65;;14369:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14011:494;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o
Swarm Source
ipfs://42f74405702980323afab94db50beadc8fc4f8208ecf1f53657b1c124acf0156
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $0.000675 | 641,446.9774 | $433.25 |
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.