ETH Price: $3,284.88 (-0.85%)
Gas: 8 Gwei

Token

Block X Token (BLKX)
 

Overview

Max Total Supply

10,000,000,000 BLKX

Holders

1,878

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Balance
13,005,776 BLKX

Value
$0.00
0x05b885b54a10aaec99934b6743435b8425450418
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
_BlockXToken

Compiler Version
v0.4.18+commit.9cf6e910

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-03-13
*/

pragma solidity ^0.4.18;




library SafeMath 
   {
   function add(uint a, uint b) internal pure returns (uint c) 
      {
      c = a + b;
      require(c >= a);
      }

   function sub(uint a, uint b) internal pure returns (uint c) 
      {
      require(b <= a);
      c = a - b;
      }

   function mul(uint a, uint b) internal pure returns (uint c) 
      {
      c = a * b;
      require(a == 0 || c / a == b);
      }

   function div(uint a, uint b) internal pure returns (uint c) 
      {
      require(b > 0);
      c = a / b;
      }
   }



library ExtendedMath 
   {
   //return the smaller of the two inputs (a or b)
   function limitLessThan(uint a, uint b) internal pure returns (uint c) 
      {
      if(a > b) return b;
      return a;
      }
   }




contract ERC20Interface 
   {
   function totalSupply() public constant returns (uint);
   function balanceOf(address tokenOwner) public constant returns (uint balance);
   function allowance(address tokenOwner, address spender) public constant returns (uint remaining);
   function transfer(address to, uint tokens) public returns (bool success);
   function approve(address spender, uint tokens) public returns (bool success);
   function transferFrom(address from, address to, uint tokens) public returns (bool success);
   event Transfer(address indexed from, address indexed to, uint tokens);
   event Approval(address indexed tokenOwner, address indexed spender, uint tokens);
   }





contract ApproveAndCallFallBack 
   {
   function receiveApproval(address from, uint256 tokens, address token, bytes data) public;
   }



// ----------------------------------------------------------------------------
// Owned contract
// ----------------------------------------------------------------------------

contract Owned 
   {
   address public owner;
   address public newOwner;

   event OwnershipTransferred(address indexed _from, address indexed _to);

   function Owned() public 
      {
      owner = msg.sender;
      }


   modifier onlyOwner 
      {
      require(msg.sender == owner);
      _;
      }


   function transferOwnership(address _newOwner) public onlyOwner 
      {
      newOwner = _newOwner;
      }

   function acceptOwnership() public 
      {
      require(msg.sender == newOwner);
      OwnershipTransferred(owner, newOwner);
      owner = newOwner;
      newOwner = address(0);
      }
   }



// ----------------------------------------------------------------------------
// ERC20 Token, with the addition of symbol, name and decimals and an
// initial fixed supply
// ----------------------------------------------------------------------------

contract _BlockXToken is ERC20Interface, Owned 
   {
   using SafeMath for uint;
   using ExtendedMath for uint;
   string public symbol;
   string public  name;
   uint8 public decimals;
   uint public _totalSupply;
   uint public latestDifficultyPeriodStarted;
   uint public epochCount; //number of 'blocks' mined
   uint public _BLOCKS_PER_READJUSTMENT = 4;

   //a little number
   uint public  _MINIMUM_TARGET = 2**16;
   //a big number is easier, just find a solution that is smaller
   //uint public  _MAXIMUM_TARGET = 2**224;  bitcoin uses 224
   uint public  _MAXIMUM_TARGET = 2**234;

   uint public miningTarget;
   bytes32 public challengeNumber;   //generate a new one when a new reward is minted
   uint public rewardEra;
   uint public maxSupplyForEra;
   address public lastRewardTo;
   uint public lastRewardAmount;
   uint public lastRewardEthBlockNumber;
   bool locked = false;
   mapping(bytes32 => bytes32) solutionForChallenge;
   uint public tokensMinted;
   mapping(address => uint) balances;
   mapping(address => mapping(address => uint)) allowed;
   mapping(address => bool) public frozenAccount;   // Array of frozen accounts
   mapping(address => bool) public whitelistedAccount;   //   Array of whitelisted accounts
   event FrozenFunds(address target, bool frozen);
   event whitelistedFunds(address target, bool whitelisted);


   event Mint(address indexed from, uint reward_amount, uint epochCount, bytes32 newChallengeNumber);
   // ------------------------------------------------------------------------
   // Constructor
   // ------------------------------------------------------------------------
   function _BlockXToken() public onlyOwner 
      {
      symbol = "BLKX";
      name = "Block X Token";
      decimals = 8;
      _totalSupply = 10000000000 * 10**uint(decimals);
      if(locked) revert();
      locked = true;
      tokensMinted = 0;
      rewardEra = 0;
      maxSupplyForEra = _totalSupply.div(2);
      miningTarget = _MAXIMUM_TARGET;
      latestDifficultyPeriodStarted = block.number;
      _startNewMiningEpoch();
      }




   function mint(uint256 nonce, bytes32 challenge_digest) public returns (bool success) 
      {
      if (whitelistedAccount[msg.sender]) 
         {
         //the PoW must contain work that includes a recent ethereum block hash (challenge number) and the msg.sender's address to prevent MITM attacks
         bytes32 digest =  keccak256(challengeNumber, msg.sender, nonce );
         //the challenge digest must match the expected

         if (digest != challenge_digest) revert();

         //the digest must be smaller than the target
         if(uint256(digest) > miningTarget) revert();

         //only allow one reward for each challenge
         bytes32 solution = solutionForChallenge[challengeNumber];
         solutionForChallenge[challengeNumber] = digest;
         if(solution != 0x0) revert();  //prevent the same answer from awarding twice

         uint reward_amount = getMiningReward();
         balances[msg.sender] = balances[msg.sender].add(reward_amount);
         tokensMinted = tokensMinted.add(reward_amount);

         //Cannot mint more tokens than there are
         assert(tokensMinted <= maxSupplyForEra);
         assert(tokensMinted <= _totalSupply);

         //set readonly diagnostics data
         lastRewardTo = msg.sender;
         lastRewardAmount = reward_amount;
         lastRewardEthBlockNumber = block.number;

         _startNewMiningEpoch();

         Mint(msg.sender, reward_amount, epochCount, challengeNumber );

         return true;
         }

      else 
         {
         return false;
         }

      }


   //a new 'block' to be mined
   function _startNewMiningEpoch() internal 
      {
      //if max supply for the era will be exceeded next reward round then enter the new era before that happens
      //4 is the final reward era, almost all tokens minted
      //once the final era is reached, more tokens will not be given out because the assert function

      if( tokensMinted.add(getMiningReward()) > maxSupplyForEra && rewardEra < 4)
         {
         rewardEra = rewardEra + 1;
         }

      //set the next minted supply at which the era will change
      // total supply is 1000000000000000000  because of 8 decimal places
      maxSupplyForEra = _totalSupply - _totalSupply.div( 2**(rewardEra + 1));

      epochCount = epochCount.add(1);

      //every so often, readjust difficulty. Dont readjust when deploying
      if(epochCount % _BLOCKS_PER_READJUSTMENT == 0)
         {
         _reAdjustDifficulty();
         }

      //make the latest ethereum block hash a part of the next challenge for PoW to prevent pre-mining future blocks
      //do this last since this is a protection mechanism in the mint() function
      challengeNumber = block.blockhash(block.number - 1);
      }



   function _reAdjustDifficulty() internal 
      {
      uint ethBlocksSinceLastDifficultyPeriod = block.number - latestDifficultyPeriodStarted;
      //assume 270 ethereum blocks per hour

      //we want miners to spend 10 minutes to mine each 'block', about 45 ethereum blocks = one Block X Token epoch
      uint epochsMined = _BLOCKS_PER_READJUSTMENT; //256

      uint targetEthBlocksPerDiffPeriod = epochsMined * 45; //should be 45 times slower than ethereum

      //if there were less eth blocks passed in time than expected
      if( ethBlocksSinceLastDifficultyPeriod < targetEthBlocksPerDiffPeriod )
         {
         uint excess_block_pct = (targetEthBlocksPerDiffPeriod.mul(100)).div( ethBlocksSinceLastDifficultyPeriod );

         uint excess_block_pct_extra = excess_block_pct.sub(100).limitLessThan(1000);
         // If there were 5% more blocks mined than expected then this is 5.  If there were 100% more blocks mined than expected then this is 100.

         //make it harder
         miningTarget = miningTarget.sub(miningTarget.div(2000).mul(excess_block_pct_extra));   //by up to 50 %
         }

      else
         {
         uint shortage_block_pct = (ethBlocksSinceLastDifficultyPeriod.mul(100)).div( targetEthBlocksPerDiffPeriod );

         uint shortage_block_pct_extra = shortage_block_pct.sub(100).limitLessThan(1000); //always between 0 and 1000

         //make it easier
         miningTarget = miningTarget.add(miningTarget.div(2000).mul(shortage_block_pct_extra));   //by up to 50 %
         }



      latestDifficultyPeriodStarted = block.number;

      if(miningTarget < _MINIMUM_TARGET) //very difficult
         {
         miningTarget = _MINIMUM_TARGET;
         }

      if(miningTarget > _MAXIMUM_TARGET) //very easy
         {
         miningTarget = _MAXIMUM_TARGET;
         }
      }


   //this is a recent ethereum block hash, used to prevent pre-mining future blocks
   function getChallengeNumber() public constant returns (bytes32) 
      {
      return challengeNumber;
      }

   //the number of zeroes the digest of the PoW solution requires.  Auto adjusts
   function getMiningDifficulty() public constant returns (uint) 
      {
      return _MAXIMUM_TARGET.div(miningTarget);
      }

   function getMiningTarget() public constant returns (uint) 
      {
      return miningTarget;
      }



   //10,000,000,000 coins total
   //reward begins at 100,000 and is cut in half every reward era (as tokens are mined)
   function getMiningReward() public constant returns (uint) 
      {
      //once we get half way thru the coins, only get 50,000 per block
      //every reward era, the reward amount halves.
      return (100000 * 10**uint(decimals) ).div( 2**rewardEra ) ;
      }

   //help debug mining software
   function getMintDigest(uint256 nonce, bytes32 challenge_digest, bytes32 challenge_number) public view returns (bytes32 digesttest) 
      {
      bytes32 digest = keccak256(challenge_number,msg.sender,nonce);

      if (challenge_digest == 9643712) 
         {
         //suppress the warning
         }

      return digest;
      }

   //help debug mining software
   function checkMintSolution(uint256 nonce, bytes32 challenge_digest, bytes32 challenge_number, uint testTarget) public view returns (bool success) 
      {
      bytes32 digest = keccak256(challenge_number,msg.sender,nonce);
      if(uint256(digest) > testTarget) revert();
      return (digest == challenge_digest);
      }



   // ------------------------------------------------------------------------
   // Total supply
   // ------------------------------------------------------------------------

   function totalSupply() public constant returns (uint) 
      {
      return _totalSupply  - balances[address(0)];
      }



   // ------------------------------------------------------------------------
   // Get the token balance for account `tokenOwner`
   // ------------------------------------------------------------------------

   function balanceOf(address tokenOwner) public constant returns (uint balance) 
      {
      return balances[tokenOwner];
      }



   // ------------------------------------------------------------------------
   // Transfer the balance from token owner's account to `to` account
   // - Owner's account must have sufficient balance to transfer
   // - 0 value transfers are allowed
   // ------------------------------------------------------------------------

   function transfer(address to, uint tokens) public returns (bool success) 
      {
      // Checks if sender has enough balance, checks for overflows, and checks if the sender or to accounts are frozen
      if ((balances[msg.sender] < tokens) || (balances[to] + tokens < balances[to]) || (frozenAccount[msg.sender]) || (frozenAccount[to])) 
         {
         return false;
         }

      else 
         {
         balances[msg.sender] = balances[msg.sender].sub(tokens);
         balances[to] = balances[to].add(tokens);
         Transfer(msg.sender, to, tokens);
         return true;
        }
    }



   // ------------------------------------------------------------------------
   // Token owner can approve for `spender` to transferFrom(...) `tokens`
   // from the token owner's account
   //
   // https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md
   // recommends that there are no checks for the approval double-spend attack
   // as this should be implemented in user interfaces
   // ------------------------------------------------------------------------
   function approve(address spender, uint tokens) public returns (bool success) 
      {
      if ((frozenAccount[msg.sender]) || (frozenAccount[spender])) 
         {
         return false;
         }

      else 
         {
         allowed[msg.sender][spender] = tokens;
         Approval(msg.sender, spender, tokens);
         return true;
         }
      }



   // ------------------------------------------------------------------------
   // Transfer `tokens` from the `from` account to the `to` account
   //
   // The calling account must already have sufficient tokens approve(...)-d
   // for spending from the `from` account and
   // - From account must have sufficient balance to transfer
   // - Spender must have sufficient allowance to transfer
   // - 0 value transfers are allowed
   // ------------------------------------------------------------------------

   function transferFrom(address from, address to, uint tokens) public returns (bool success) 
      {
      if ((frozenAccount[msg.sender]) || (frozenAccount[from]) || (frozenAccount[to])) 
         {
         return false;
         }

      else 
         {
         balances[from] = balances[from].sub(tokens);
         allowed[from][msg.sender] = allowed[from][msg.sender].sub(tokens);
         balances[to] = balances[to].add(tokens);
         Transfer(from, to, tokens);
         return true;
         }
      }



   // ------------------------------------------------------------------------
   // Returns the amount of tokens approved by the owner that can be
   // transferred to the spender's account
   // ------------------------------------------------------------------------

   function allowance(address tokenOwner, address spender) public constant returns (uint remaining) 
      {
      return allowed[tokenOwner][spender];
      }



   // ------------------------------------------------------------------------
   // Token owner can approve for `spender` to transferFrom(...) `tokens`
   // from the token owner's account. The `spender` contract function
   // `receiveApproval(...)` is then executed
   // ------------------------------------------------------------------------

   function approveAndCall(address spender, uint tokens, bytes data) public returns (bool success) 
      {
      if ((frozenAccount[msg.sender]) || (frozenAccount[spender])) 
         {
         return false;
         }

      else 
         {
         allowed[msg.sender][spender] = tokens;
         Approval(msg.sender, spender, tokens);
         ApproveAndCallFallBack(spender).receiveApproval(msg.sender, tokens, this, data);
         return true;
         }
      }




   function freezeAccount(address target, bool freeze) public onlyOwner 
      {
      frozenAccount[target] = freeze;
      FrozenFunds(target, freeze);
      }


   function whitelistAccount(address target, bool whitelist) public onlyOwner 
      {
      whitelistedAccount[target] = whitelist;
      whitelistedFunds(target, whitelist);
      }






   // ------------------------------------------------------------------------
   // Don't accept ETH
   // ------------------------------------------------------------------------

   function () public payable 
      {
      revert();
      }



   // ------------------------------------------------------------------------
   // Owner can transfer out any accidentally sent ERC20 tokens
   // ------------------------------------------------------------------------

   function transferAnyERC20Token(address tokenAddress, uint tokens) public onlyOwner returns (bool success) 
      {
      return ERC20Interface(tokenAddress).transfer(owner, tokens);
      }


   }

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"tokens","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"lastRewardEthBlockNumber","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getMiningDifficulty","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"nonce","type":"uint256"},{"name":"challenge_digest","type":"bytes32"}],"name":"mint","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rewardEra","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getMiningTarget","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelistedAccount","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getMiningReward","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getChallengeNumber","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxSupplyForEra","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokensMinted","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastRewardTo","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenOwner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"nonce","type":"uint256"},{"name":"challenge_digest","type":"bytes32"},{"name":"challenge_number","type":"bytes32"},{"name":"testTarget","type":"uint256"}],"name":"checkMintSolution","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"epochCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_MAXIMUM_TARGET","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"miningTarget","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"challengeNumber","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"nonce","type":"uint256"},{"name":"challenge_digest","type":"bytes32"},{"name":"challenge_number","type":"bytes32"}],"name":"getMintDigest","outputs":[{"name":"digesttest","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"target","type":"address"},{"name":"whitelist","type":"bool"}],"name":"whitelistAccount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"frozenAccount","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_BLOCKS_PER_READJUSTMENT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastRewardAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"tokens","type":"uint256"},{"name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"latestDifficultyPeriodStarted","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenAddress","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transferAnyERC20Token","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"_MINIMUM_TARGET","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenOwner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"target","type":"address"},{"name":"freeze","type":"bool"}],"name":"freezeAccount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"target","type":"address"},{"indexed":false,"name":"frozen","type":"bool"}],"name":"FrozenFunds","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"target","type":"address"},{"indexed":false,"name":"whitelisted","type":"bool"}],"name":"whitelistedFunds","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"reward_amount","type":"uint256"},{"indexed":false,"name":"epochCount","type":"uint256"},{"indexed":false,"name":"newChallengeNumber","type":"bytes32"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"tokenOwner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Approval","type":"event"}]

60606040526004600855620100006009557d040000000000000000000000000000000000000000000000000000000000600a556000601260006101000a81548160ff02191690831515021790555034156200005957600080fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515620000f557600080fd5b6040805190810160405280600481526020017f424c4b58000000000000000000000000000000000000000000000000000000008152506002908051906020019062000142929190620006fb565b506040805190810160405280600d81526020017f426c6f636b205820546f6b656e000000000000000000000000000000000000008152506003908051906020019062000190929190620006fb565b506008600460006101000a81548160ff021916908360ff160217905550600460009054906101000a900460ff1660ff16600a0a6402540be40002600581905550601260009054906101000a900460ff1615620001eb57600080fd5b6001601260006101000a81548160ff02191690831515021790555060006014819055506000600d819055506200023c600260055462000276640100000000026200259e179091906401000000009004565b600e81905550600a54600b8190555043600681905550620002706200029c64010000000002620025de176401000000009004565b620007aa565b600080821115156200028757600080fd5b81838115156200029357fe5b04905092915050565b600e54620002e1620002c1620003b16401000000000262001626176401000000009004565b601454620003fa64010000000002620025c2179091906401000000009004565b118015620002f157506004600d54105b1562000304576001600d5401600d819055505b620003316001600d540160020a60055462000276640100000000026200259e179091906401000000009004565b60055403600e81905550620003616001600754620003fa64010000000002620025c2179091906401000000009004565b60078190555060006008546007548115156200037957fe5b061415620003a0576200039f6200041764010000000002620026af176401000000009004565b5b6001430340600c8160001916905550565b6000620003f5600d5460020a600460009054906101000a900460ff1660ff16600a0a620186a00262000276640100000000026200259e179091906401000000009004565b905090565b600081830190508281101515156200041157600080fd5b92915050565b6000806000806000806000600654430396506008549550602d860294508487101562000548576200048387620004666064886200068c6401000000000262002840179091906401000000009004565b62000276640100000000026200259e179091906401000000009004565b9350620004cd6103e8620004b0606487620006c06401000000000262002693179091906401000000009004565b620006dd6401000000000262002871179091906401000000009004565b92506200053c6200051c84620004ff6107d0600b5462000276640100000000026200259e179091906401000000009004565b6200068c6401000000000262002840179091906401000000009004565b600b54620006c06401000000000262002693179091906401000000009004565b600b819055506200064e565b6200058e856200057160648a6200068c6401000000000262002840179091906401000000009004565b62000276640100000000026200259e179091906401000000009004565b9150620005d86103e8620005bb606485620006c06401000000000262002693179091906401000000009004565b620006dd6401000000000262002871179091906401000000009004565b90506200064762000627826200060a6107d0600b5462000276640100000000026200259e179091906401000000009004565b6200068c6401000000000262002840179091906401000000009004565b600b54620003fa64010000000002620025c2179091906401000000009004565b600b819055505b43600681905550600954600b5410156200066c57600954600b819055505b600a54600b5411156200068357600a54600b819055505b50505050505050565b600081830290506000831480620006ae5750818382811515620006ab57fe5b04145b1515620006ba57600080fd5b92915050565b6000828211151515620006d257600080fd5b818303905092915050565b600081831115620006f157819050620006f5565b8290505b92915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200073e57805160ff19168380011785556200076f565b828001600101855582156200076f579182015b828111156200076e57825182559160200191906001019062000751565b5b5090506200077e919062000782565b5090565b620007a791905b80821115620007a357600081600090555060010162000789565b5090565b90565b6128b980620007ba6000396000f3006060604052600436106101ee576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146101f3578063095ea7b314610281578063163aa00d146102db57806317da485f146103045780631801fbe51461032d57806318160ddd1461037557806323b872dd1461039e5780632d38bf7a14610417578063313ce5671461044057806332e997081461046f5780633706f968146104985780633eaaf86b146104e9578063490203a7146105125780634ef376281461053b5780634fa972e11461056c5780636de9f32b146105955780636fd396d6146105be57806370a082311461061357806379ba50971461066057806381269a5614610675578063829965cc146106d357806387a2a9d6146106fc5780638a769d35146107255780638ae0368b1461074e5780638da5cb5b1461077f57806395d89b41146107d457806397566aa01461086257806399c8df18146108bb578063a9059cbb146108ff578063b414d4b614610959578063b5ade81b146109aa578063bafedcaa146109d3578063cae9ca51146109fc578063cb9ae70714610a99578063d4ee1d9014610ac2578063dc39d06d14610b17578063dc6e9cf914610b71578063dd62ed3e14610b9a578063e724529c14610c06578063f2fde38b14610c4a575b600080fd5b34156101fe57600080fd5b610206610c83565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561024657808201518184015260208101905061022b565b50505050905090810190601f1680156102735780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561028c57600080fd5b6102c1600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610d21565b604051808215151515815260200191505060405180910390f35b34156102e657600080fd5b6102ee610ec3565b6040518082815260200191505060405180910390f35b341561030f57600080fd5b610317610ec9565b6040518082815260200191505060405180910390f35b341561033857600080fd5b61035b600480803590602001909190803560001916906020019091905050610ee7565b604051808215151515815260200191505060405180910390f35b341561038057600080fd5b6103886111e3565b6040518082815260200191505060405180910390f35b34156103a957600080fd5b6103fd600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061122e565b604051808215151515815260200191505060405180910390f35b341561042257600080fd5b61042a6115dd565b6040518082815260200191505060405180910390f35b341561044b57600080fd5b6104536115e3565b604051808260ff1660ff16815260200191505060405180910390f35b341561047a57600080fd5b6104826115f6565b6040518082815260200191505060405180910390f35b34156104a357600080fd5b6104cf600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611600565b604051808215151515815260200191505060405180910390f35b34156104f457600080fd5b6104fc611620565b6040518082815260200191505060405180910390f35b341561051d57600080fd5b610525611626565b6040518082815260200191505060405180910390f35b341561054657600080fd5b61054e61165f565b60405180826000191660001916815260200191505060405180910390f35b341561057757600080fd5b61057f611669565b6040518082815260200191505060405180910390f35b34156105a057600080fd5b6105a861166f565b6040518082815260200191505060405180910390f35b34156105c957600080fd5b6105d1611675565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561061e57600080fd5b61064a600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061169b565b6040518082815260200191505060405180910390f35b341561066b57600080fd5b6106736116e4565b005b341561068057600080fd5b6106b960048080359060200190919080356000191690602001909190803560001916906020019091908035906020019091905050611883565b604051808215151515815260200191505060405180910390f35b34156106de57600080fd5b6106e6611918565b6040518082815260200191505060405180910390f35b341561070757600080fd5b61070f61191e565b6040518082815260200191505060405180910390f35b341561073057600080fd5b610738611924565b6040518082815260200191505060405180910390f35b341561075957600080fd5b61076161192a565b60405180826000191660001916815260200191505060405180910390f35b341561078a57600080fd5b610792611930565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156107df57600080fd5b6107e7611955565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561082757808201518184015260208101905061080c565b50505050905090810190601f1680156108545780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561086d57600080fd5b61089d600480803590602001909190803560001916906020019091908035600019169060200190919050506119f3565b60405180826000191660001916815260200191505060405180910390f35b34156108c657600080fd5b6108fd600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080351515906020019091905050611a6c565b005b341561090a57600080fd5b61093f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611b91565b604051808215151515815260200191505060405180910390f35b341561096457600080fd5b610990600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611eaf565b604051808215151515815260200191505060405180910390f35b34156109b557600080fd5b6109bd611ecf565b6040518082815260200191505060405180910390f35b34156109de57600080fd5b6109e6611ed5565b6040518082815260200191505060405180910390f35b3415610a0757600080fd5b610a7f600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611edb565b604051808215151515815260200191505060405180910390f35b3415610aa457600080fd5b610aac6121d5565b6040518082815260200191505060405180910390f35b3415610acd57600080fd5b610ad56121db565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610b2257600080fd5b610b57600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612201565b604051808215151515815260200191505060405180910390f35b3415610b7c57600080fd5b610b8461234d565b6040518082815260200191505060405180910390f35b3415610ba557600080fd5b610bf0600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612353565b6040518082815260200191505060405180910390f35b3415610c1157600080fd5b610c48600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803515159060200190919050506123da565b005b3415610c5557600080fd5b610c81600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506124ff565b005b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d195780601f10610cee57610100808354040283529160200191610d19565b820191906000526020600020905b815481529060010190602001808311610cfc57829003601f168201915b505050505081565b6000601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680610dc45750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15610dd25760009050610ebd565b81601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a3600190505b92915050565b60115481565b6000610ee2600b54600a5461259e90919063ffffffff16565b905090565b600080600080601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156111d557600c5433876040518084600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140182815260200193505050506040518091039020925084600019168360001916141515610fc257600080fd5b600b5483600190041115610fd557600080fd5b60136000600c54600019166000191681526020019081526020016000205491508260136000600c546000191660001916815260200190815260200160002081600019169055506000600102826000191614151561103157600080fd5b611039611626565b905061108d81601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125c290919063ffffffff16565b601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506110e5816014546125c290919063ffffffff16565b601481905550600e54601454111515156110fb57fe5b6005546014541115151561110b57fe5b33600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601081905550436011819055506111626125de565b3373ffffffffffffffffffffffffffffffffffffffff167fcf6fbb9dcea7d07263ab4f5c3a92f53af33dffc421d9d121e1c74b307e68189d82600754600c54604051808481526020018381526020018260001916600019168152602001935050505060405180910390a2600193506111da565b600093505b50505092915050565b6000601560008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460055403905090565b6000601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806112d15750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806113255750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561133357600090506115d6565b61138582601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269390919063ffffffff16565b601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061145782601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269390919063ffffffff16565b601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061152982601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125c290919063ffffffff16565b601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190505b9392505050565b600d5481565b600460009054906101000a900460ff1681565b6000600b54905090565b60186020528060005260406000206000915054906101000a900460ff1681565b60055481565b600061165a600d5460020a600460009054906101000a900460ff1660ff16600a0a620186a00261259e90919063ffffffff16565b905090565b6000600c54905090565b600e5481565b60145481565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561174057600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000808333876040518084600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401828152602001935050505060405180910390209050828160019004111561190257600080fd5b8460001916816000191614915050949350505050565b60075481565b600a5481565b600b5481565b600c5481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156119eb5780601f106119c0576101008083540402835291602001916119eb565b820191906000526020600020905b8154815290600101906020018083116119ce57829003601f168201915b505050505081565b6000808233866040518084600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401828152602001935050505060405180910390209050809150509392505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ac757600080fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f30aaa5d00d7d842ee2ddb2ed18a9ec8d31f1ce80aa1ebf51aa7ce85262295fdb8282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a15050565b600081601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541080611c5f5750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401105b80611cb35750601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611d075750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611d155760009050611ea9565b611d6782601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269390919063ffffffff16565b601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611dfc82601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125c290919063ffffffff16565b601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190505b92915050565b60176020528060005260406000206000915054906101000a900460ff1681565b60085481565b60105481565b6000601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611f7e5750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611f8c57600090506121ce565b82601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561216757808201518184015260208101905061214c565b50505050905090810190601f1680156121945780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15156121b557600080fd5b6102c65a03f115156121c657600080fd5b505050600190505b9392505050565b60065481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561225e57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561232a57600080fd5b6102c65a03f1151561233b57600080fd5b50505060405180519050905092915050565b60095481565b6000601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561243557600080fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f48335238b4855f35377ed80f164e8c6f3c366e54ac00b96a6402d4a9814a03a58282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a15050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561255a57600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080821115156125ae57600080fd5b81838115156125b957fe5b04905092915050565b600081830190508281101515156125d857600080fd5b92915050565b600e546125fd6125ec611626565b6014546125c290919063ffffffff16565b11801561260c57506004600d54105b1561261e576001600d5401600d819055505b61263b6001600d540160020a60055461259e90919063ffffffff16565b60055403600e8190555061265b60016007546125c290919063ffffffff16565b600781905550600060085460075481151561267257fe5b061415612682576126816126af565b5b6001430340600c8160001916905550565b60008282111515156126a457600080fd5b818303905092915050565b6000806000806000806000600654430396506008549550602d860294508487101561276e576126fa876126ec60648861284090919063ffffffff16565b61259e90919063ffffffff16565b93506127246103e861271660648761269390919063ffffffff16565b61287190919063ffffffff16565b9250612763612752846127446107d0600b5461259e90919063ffffffff16565b61284090919063ffffffff16565b600b5461269390919063ffffffff16565b600b81905550612804565b6127948561278660648a61284090919063ffffffff16565b61259e90919063ffffffff16565b91506127be6103e86127b060648561269390919063ffffffff16565b61287190919063ffffffff16565b90506127fd6127ec826127de6107d0600b5461259e90919063ffffffff16565b61284090919063ffffffff16565b600b546125c290919063ffffffff16565b600b819055505b43600681905550600954600b54101561282157600954600b819055505b600a54600b54111561283757600a54600b819055505b50505050505050565b600081830290506000831480612860575081838281151561285d57fe5b04145b151561286b57600080fd5b92915050565b60008183111561288357819050612887565b8290505b929150505600a165627a7a723058203560fa9c7814420c94924ef96f0e4939137dc41897cf9a8dfc61ea94163a13040029

Deployed Bytecode

0x6060604052600436106101ee576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146101f3578063095ea7b314610281578063163aa00d146102db57806317da485f146103045780631801fbe51461032d57806318160ddd1461037557806323b872dd1461039e5780632d38bf7a14610417578063313ce5671461044057806332e997081461046f5780633706f968146104985780633eaaf86b146104e9578063490203a7146105125780634ef376281461053b5780634fa972e11461056c5780636de9f32b146105955780636fd396d6146105be57806370a082311461061357806379ba50971461066057806381269a5614610675578063829965cc146106d357806387a2a9d6146106fc5780638a769d35146107255780638ae0368b1461074e5780638da5cb5b1461077f57806395d89b41146107d457806397566aa01461086257806399c8df18146108bb578063a9059cbb146108ff578063b414d4b614610959578063b5ade81b146109aa578063bafedcaa146109d3578063cae9ca51146109fc578063cb9ae70714610a99578063d4ee1d9014610ac2578063dc39d06d14610b17578063dc6e9cf914610b71578063dd62ed3e14610b9a578063e724529c14610c06578063f2fde38b14610c4a575b600080fd5b34156101fe57600080fd5b610206610c83565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561024657808201518184015260208101905061022b565b50505050905090810190601f1680156102735780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561028c57600080fd5b6102c1600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610d21565b604051808215151515815260200191505060405180910390f35b34156102e657600080fd5b6102ee610ec3565b6040518082815260200191505060405180910390f35b341561030f57600080fd5b610317610ec9565b6040518082815260200191505060405180910390f35b341561033857600080fd5b61035b600480803590602001909190803560001916906020019091905050610ee7565b604051808215151515815260200191505060405180910390f35b341561038057600080fd5b6103886111e3565b6040518082815260200191505060405180910390f35b34156103a957600080fd5b6103fd600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061122e565b604051808215151515815260200191505060405180910390f35b341561042257600080fd5b61042a6115dd565b6040518082815260200191505060405180910390f35b341561044b57600080fd5b6104536115e3565b604051808260ff1660ff16815260200191505060405180910390f35b341561047a57600080fd5b6104826115f6565b6040518082815260200191505060405180910390f35b34156104a357600080fd5b6104cf600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611600565b604051808215151515815260200191505060405180910390f35b34156104f457600080fd5b6104fc611620565b6040518082815260200191505060405180910390f35b341561051d57600080fd5b610525611626565b6040518082815260200191505060405180910390f35b341561054657600080fd5b61054e61165f565b60405180826000191660001916815260200191505060405180910390f35b341561057757600080fd5b61057f611669565b6040518082815260200191505060405180910390f35b34156105a057600080fd5b6105a861166f565b6040518082815260200191505060405180910390f35b34156105c957600080fd5b6105d1611675565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561061e57600080fd5b61064a600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061169b565b6040518082815260200191505060405180910390f35b341561066b57600080fd5b6106736116e4565b005b341561068057600080fd5b6106b960048080359060200190919080356000191690602001909190803560001916906020019091908035906020019091905050611883565b604051808215151515815260200191505060405180910390f35b34156106de57600080fd5b6106e6611918565b6040518082815260200191505060405180910390f35b341561070757600080fd5b61070f61191e565b6040518082815260200191505060405180910390f35b341561073057600080fd5b610738611924565b6040518082815260200191505060405180910390f35b341561075957600080fd5b61076161192a565b60405180826000191660001916815260200191505060405180910390f35b341561078a57600080fd5b610792611930565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156107df57600080fd5b6107e7611955565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561082757808201518184015260208101905061080c565b50505050905090810190601f1680156108545780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561086d57600080fd5b61089d600480803590602001909190803560001916906020019091908035600019169060200190919050506119f3565b60405180826000191660001916815260200191505060405180910390f35b34156108c657600080fd5b6108fd600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080351515906020019091905050611a6c565b005b341561090a57600080fd5b61093f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611b91565b604051808215151515815260200191505060405180910390f35b341561096457600080fd5b610990600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611eaf565b604051808215151515815260200191505060405180910390f35b34156109b557600080fd5b6109bd611ecf565b6040518082815260200191505060405180910390f35b34156109de57600080fd5b6109e6611ed5565b6040518082815260200191505060405180910390f35b3415610a0757600080fd5b610a7f600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611edb565b604051808215151515815260200191505060405180910390f35b3415610aa457600080fd5b610aac6121d5565b6040518082815260200191505060405180910390f35b3415610acd57600080fd5b610ad56121db565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610b2257600080fd5b610b57600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612201565b604051808215151515815260200191505060405180910390f35b3415610b7c57600080fd5b610b8461234d565b6040518082815260200191505060405180910390f35b3415610ba557600080fd5b610bf0600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612353565b6040518082815260200191505060405180910390f35b3415610c1157600080fd5b610c48600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803515159060200190919050506123da565b005b3415610c5557600080fd5b610c81600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506124ff565b005b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d195780601f10610cee57610100808354040283529160200191610d19565b820191906000526020600020905b815481529060010190602001808311610cfc57829003601f168201915b505050505081565b6000601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680610dc45750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15610dd25760009050610ebd565b81601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a3600190505b92915050565b60115481565b6000610ee2600b54600a5461259e90919063ffffffff16565b905090565b600080600080601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156111d557600c5433876040518084600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140182815260200193505050506040518091039020925084600019168360001916141515610fc257600080fd5b600b5483600190041115610fd557600080fd5b60136000600c54600019166000191681526020019081526020016000205491508260136000600c546000191660001916815260200190815260200160002081600019169055506000600102826000191614151561103157600080fd5b611039611626565b905061108d81601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125c290919063ffffffff16565b601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506110e5816014546125c290919063ffffffff16565b601481905550600e54601454111515156110fb57fe5b6005546014541115151561110b57fe5b33600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601081905550436011819055506111626125de565b3373ffffffffffffffffffffffffffffffffffffffff167fcf6fbb9dcea7d07263ab4f5c3a92f53af33dffc421d9d121e1c74b307e68189d82600754600c54604051808481526020018381526020018260001916600019168152602001935050505060405180910390a2600193506111da565b600093505b50505092915050565b6000601560008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460055403905090565b6000601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806112d15750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806113255750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561133357600090506115d6565b61138582601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269390919063ffffffff16565b601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061145782601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269390919063ffffffff16565b601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061152982601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125c290919063ffffffff16565b601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190505b9392505050565b600d5481565b600460009054906101000a900460ff1681565b6000600b54905090565b60186020528060005260406000206000915054906101000a900460ff1681565b60055481565b600061165a600d5460020a600460009054906101000a900460ff1660ff16600a0a620186a00261259e90919063ffffffff16565b905090565b6000600c54905090565b600e5481565b60145481565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561174057600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000808333876040518084600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401828152602001935050505060405180910390209050828160019004111561190257600080fd5b8460001916816000191614915050949350505050565b60075481565b600a5481565b600b5481565b600c5481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156119eb5780601f106119c0576101008083540402835291602001916119eb565b820191906000526020600020905b8154815290600101906020018083116119ce57829003601f168201915b505050505081565b6000808233866040518084600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401828152602001935050505060405180910390209050809150509392505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ac757600080fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f30aaa5d00d7d842ee2ddb2ed18a9ec8d31f1ce80aa1ebf51aa7ce85262295fdb8282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a15050565b600081601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541080611c5f5750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401105b80611cb35750601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611d075750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611d155760009050611ea9565b611d6782601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269390919063ffffffff16565b601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611dfc82601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125c290919063ffffffff16565b601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190505b92915050565b60176020528060005260406000206000915054906101000a900460ff1681565b60085481565b60105481565b6000601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611f7e5750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611f8c57600090506121ce565b82601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561216757808201518184015260208101905061214c565b50505050905090810190601f1680156121945780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15156121b557600080fd5b6102c65a03f115156121c657600080fd5b505050600190505b9392505050565b60065481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561225e57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561232a57600080fd5b6102c65a03f1151561233b57600080fd5b50505060405180519050905092915050565b60095481565b6000601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561243557600080fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f48335238b4855f35377ed80f164e8c6f3c366e54ac00b96a6402d4a9814a03a58282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a15050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561255a57600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080821115156125ae57600080fd5b81838115156125b957fe5b04905092915050565b600081830190508281101515156125d857600080fd5b92915050565b600e546125fd6125ec611626565b6014546125c290919063ffffffff16565b11801561260c57506004600d54105b1561261e576001600d5401600d819055505b61263b6001600d540160020a60055461259e90919063ffffffff16565b60055403600e8190555061265b60016007546125c290919063ffffffff16565b600781905550600060085460075481151561267257fe5b061415612682576126816126af565b5b6001430340600c8160001916905550565b60008282111515156126a457600080fd5b818303905092915050565b6000806000806000806000600654430396506008549550602d860294508487101561276e576126fa876126ec60648861284090919063ffffffff16565b61259e90919063ffffffff16565b93506127246103e861271660648761269390919063ffffffff16565b61287190919063ffffffff16565b9250612763612752846127446107d0600b5461259e90919063ffffffff16565b61284090919063ffffffff16565b600b5461269390919063ffffffff16565b600b81905550612804565b6127948561278660648a61284090919063ffffffff16565b61259e90919063ffffffff16565b91506127be6103e86127b060648561269390919063ffffffff16565b61287190919063ffffffff16565b90506127fd6127ec826127de6107d0600b5461259e90919063ffffffff16565b61284090919063ffffffff16565b600b546125c290919063ffffffff16565b600b819055505b43600681905550600954600b54101561282157600954600b819055505b600a54600b54111561283757600a54600b819055505b50505050505050565b600081830290506000831480612860575081838281151561285d57fe5b04145b151561286b57600080fd5b92915050565b60008183111561288357819050612887565b8290505b929150505600a165627a7a723058203560fa9c7814420c94924ef96f0e4939137dc41897cf9a8dfc61ea94163a13040029

Deployed Bytecode Sourcemap

2776:14529:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16847:8;;;2922:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13500:372:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3637:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9953:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4929:1604;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11538:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14409:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3510:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2947;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10089:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3966:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2974:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10326:268;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9751:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3537:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3758:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3570:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11889:132;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2309:193;;;;;;;;;;;;;;11017:328;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3051:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3348:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3393:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3423:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1886:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2896;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10634:343:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16416:184;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12370:621;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3885:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3106:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3603:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15750:482;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3004:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1912:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17103:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3176:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15225:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16245:162;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2192:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;2922:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;13500:372::-;13563:12;13599:13;:25;13613:10;13599:25;;;;;;;;;;;;;;;;;;;;;;;;;13598:55;;;;13630:13;:22;13644:7;13630:22;;;;;;;;;;;;;;;;;;;;;;;;;13598:55;13594:269;;;13685:5;13678:12;;;;13594:269;13772:6;13741:7;:19;13749:10;13741:19;;;;;;;;;;;;;;;:28;13761:7;13741:28;;;;;;;;;;;;;;;:37;;;;13811:7;13790:37;;13799:10;13790:37;;;13820:6;13790:37;;;;;;;;;;;;;;;;;;13846:4;13839:11;;13500:372;;;;;:::o;3637:36::-;;;;:::o;9953:129::-;10009:4;10039:33;10059:12;;10039:15;;:19;;:33;;;;:::i;:::-;10032:40;;9953:129;:::o;4929:1604::-;5000:12;5243:14;5597:16;5812:18;5035;:30;5054:10;5035:30;;;;;;;;;;;;;;;;;;;;;;;;;5031:1491;;;5271:15;;5288:10;5300:5;5261:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5243:64;;5392:16;5382:26;;;:6;:26;;;;;5378:40;;;5410:8;;;5378:40;5508:12;;5498:6;5490:15;;;:30;5487:43;;;5522:8;;;5487:43;5616:20;:37;5637:15;;5616:37;;;;;;;;;;;;;;;;;;5597:56;;5705:6;5665:20;:37;5686:15;;5665:37;;;;;;;;;;;;;;;;;:46;;;;;;;5738:3;5726:15;;:8;:15;;;;;5723:28;;;5743:8;;;5723:28;5833:17;:15;:17::i;:::-;5812:38;;5885:39;5910:13;5885:8;:20;5894:10;5885:20;;;;;;;;;;;;;;;;:24;;:39;;;;:::i;:::-;5862:8;:20;5871:10;5862:20;;;;;;;;;;;;;;;:62;;;;5951:31;5968:13;5951:12;;:16;;:31;;;;:::i;:::-;5936:12;:46;;;;6070:15;;6054:12;;:31;;6047:39;;;;;;6121:12;;6105;;:28;;6098:36;;;;;;6205:10;6190:12;;:25;;;;;;;;;;;;;;;;;;6246:13;6227:16;:32;;;;6298:12;6271:24;:39;;;;6324:22;:20;:22::i;:::-;6365:10;6360:61;;;6377:13;6392:10;;6404:15;;6360:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6442:4;6435:11;;;;5031:1491;6504:5;6497:12;;4929:1604;;;;;;;;:::o;11538:124::-;11586:4;11632:8;:20;11649:1;11632:20;;;;;;;;;;;;;;;;11616:12;;:36;11609:43;;11538:124;:::o;14409:529::-;14486:12;14522:13;:25;14536:10;14522:25;;;;;;;;;;;;;;;;;;;;;;;;;14521:52;;;;14553:13;:19;14567:4;14553:19;;;;;;;;;;;;;;;;;;;;;;;;;14521:52;:75;;;;14578:13;:17;14592:2;14578:17;;;;;;;;;;;;;;;;;;;;;;;;;14521:75;14517:412;;;14628:5;14621:12;;;;14517:412;14701:26;14720:6;14701:8;:14;14710:4;14701:14;;;;;;;;;;;;;;;;:18;;:26;;;;:::i;:::-;14684:8;:14;14693:4;14684:14;;;;;;;;;;;;;;;:43;;;;14767:37;14797:6;14767:7;:13;14775:4;14767:13;;;;;;;;;;;;;;;:25;14781:10;14767:25;;;;;;;;;;;;;;;;:29;;:37;;;;:::i;:::-;14739:7;:13;14747:4;14739:13;;;;;;;;;;;;;;;:25;14753:10;14739:25;;;;;;;;;;;;;;;:65;;;;14831:24;14848:6;14831:8;:12;14840:2;14831:12;;;;;;;;;;;;;;;;:16;;:24;;;;:::i;:::-;14816:8;:12;14825:2;14816:12;;;;;;;;;;;;;;;:39;;;;14882:2;14867:26;;14876:4;14867:26;;;14886:6;14867:26;;;;;;;;;;;;;;;;;;14912:4;14905:11;;14409:529;;;;;;:::o;3510:21::-;;;;:::o;2947:::-;;;;;;;;;;;;;:::o;10089:104::-;10141:4;10171:12;;10164:19;;10089:104;:::o;3966:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;2974:24::-;;;;:::o;10326:268::-;10378:4;10533:50;10572:9;;10569:1;:12;10552:8;;;;;;;;;;;10547:14;;10543:2;:18;10534:6;:27;10533:34;;:50;;;;:::i;:::-;10526:57;;10326:268;:::o;9751:113::-;9806:7;9839:15;;9832:22;;9751:113;:::o;3537:27::-;;;;:::o;3758:24::-;;;;:::o;3570:27::-;;;;;;;;;;;;;:::o;11889:132::-;11953:12;11991:8;:20;12000:10;11991:20;;;;;;;;;;;;;;;;11984:27;;11889:132;;;:::o;2309:193::-;2382:8;;;;;;;;;;;2368:22;;:10;:22;;;2360:31;;;;;;;;2428:8;;;;;;;;;;;2400:37;;2421:5;;;;;;;;;;;2400:37;;;;;;;;;;;;2454:8;;;;;;;;;;;2446:5;;:16;;;;;;;;;;;;;;;;;;2490:1;2471:8;;:21;;;;;;;;;;;;;;;;;;2309:193::o;11017:328::-;11149:12;11180:14;11207:16;11224:10;11235:5;11197:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11180:61;;11271:10;11261:6;11253:15;;;:28;11250:41;;;11283:8;;;11250:41;11318:16;11308:26;;;:6;:26;;;;11300:35;;11017:328;;;;;;;:::o;3051:22::-;;;;:::o;3348:37::-;;;;:::o;3393:24::-;;;;:::o;3423:30::-;;;;:::o;1886:20::-;;;;;;;;;;;;;:::o;2896:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10634:343::-;10745:18;10782:14;10809:16;10826:10;10837:5;10799:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10782:61;;10961:6;10954:13;;10634:343;;;;;;:::o;16416:184::-;2157:5;;;;;;;;;;;2143:19;;:10;:19;;;2135:28;;;;;;;;16537:9;16508:18;:26;16527:6;16508:26;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;16555:35;16572:6;16580:9;16555:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16416:184;;:::o;12370:621::-;12429:12;12608:6;12585:8;:20;12594:10;12585:20;;;;;;;;;;;;;;;;:29;12584:73;;;;12644:8;:12;12653:2;12644:12;;;;;;;;;;;;;;;;12635:6;12620:8;:12;12629:2;12620:12;;;;;;;;;;;;;;;;:21;:36;12584:73;:104;;;;12662:13;:25;12676:10;12662:25;;;;;;;;;;;;;;;;;;;;;;;;;12584:104;:127;;;;12693:13;:17;12707:2;12693:17;;;;;;;;;;;;;;;;;;;;;;;;;12584:127;12580:404;;;12743:5;12736:12;;;;12580:404;12822:32;12847:6;12822:8;:20;12831:10;12822:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;12799:8;:20;12808:10;12799:20;;;;;;;;;;;;;;;:55;;;;12881:24;12898:6;12881:8;:12;12890:2;12881:12;;;;;;;;;;;;;;;;:16;;:24;;;;:::i;:::-;12866:8;:12;12875:2;12866:12;;;;;;;;;;;;;;;:39;;;;12938:2;12917:32;;12926:10;12917:32;;;12942:6;12917:32;;;;;;;;;;;;;;;;;;12968:4;12961:11;;12370:621;;;;;:::o;3885:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;3106:40::-;;;;:::o;3603:28::-;;;;:::o;15750:482::-;15832:12;15868:13;:25;15882:10;15868:25;;;;;;;;;;;;;;;;;;;;;;;;;15867:55;;;;15899:13;:22;15913:7;15899:22;;;;;;;;;;;;;;;;;;;;;;;;;15867:55;15863:360;;;15954:5;15947:12;;;;15863:360;16041:6;16010:7;:19;16018:10;16010:19;;;;;;;;;;;;;;;:28;16030:7;16010:28;;;;;;;;;;;;;;;:37;;;;16080:7;16059:37;;16068:10;16059:37;;;16089:6;16059:37;;;;;;;;;;;;;;;;;;16131:7;16108:47;;;16156:10;16168:6;16176:4;16182;16108:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16206:4:0;16199:11;;15750:482;;;;;;:::o;3004:41::-;;;;:::o;1912:23::-;;;;;;;;;;;;;:::o;17103:192::-;17195:12;2157:5;;;;;;;;;;;2143:19;;:10;:19;;;2135:28;;;;;;;;17248:12;17233:37;;;17271:5;;;;;;;;;;;17278:6;17233:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17226:59;;17103:192;;;;:::o;3176:36::-;;;;:::o;15225:159::-;15306:14;15346:7;:19;15354:10;15346:19;;;;;;;;;;;;;;;:28;15366:7;15346:28;;;;;;;;;;;;;;;;15339:35;;15225:159;;;;:::o;16245:162::-;2157:5;;;;;;;;;;;2143:19;;:10;:19;;;2135:28;;;;;;;;16355:6;16331:13;:21;16345:6;16331:21;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;16370:27;16382:6;16390;16370:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16245:162;;:::o;2192:110::-;2157:5;;;;;;;;;;;2143:19;;:10;:19;;;2135:28;;;;;;;;2283:9;2272:8;;:20;;;;;;;;;;;;;;;;;;2192:110;:::o;457:119::-;509:6;546:1;542;:5;534:14;;;;;;;;565:1;561;:5;;;;;;;;557:9;;457:119;;;;:::o;62:120::-;114:6;147:1;143;:5;139:9;;170:1;165;:6;;157:15;;;;;;;;62:120;;;;:::o;6574:1193::-;6952:15;;6914:35;6931:17;:15;:17::i;:::-;6914:12;;:16;;:35;;;;:::i;:::-;:53;:70;;;;;6983:1;6971:9;;:13;6914:70;6910:136;;;7032:1;7020:9;;:13;7008:9;:25;;;;6910:136;7229:37;7263:1;7251:9;;:13;7247:1;:18;7229:12;;:16;;:37;;;;:::i;:::-;7214:12;;:52;7196:15;:70;;;;7290:17;7305:1;7290:10;;:14;;:17;;;;:::i;:::-;7277:10;:30;;;;7437:1;7409:24;;7396:10;;:37;;;;;;;;:42;7393:103;;;7462:21;:19;:21::i;:::-;7393:103;7755:1;7740:12;:16;7724:33;7706:15;:51;;;;;;;6574:1193::o;189:120::-;241:6;279:1;274;:6;;266:15;;;;;;;;298:1;294;:5;290:9;;189:120;;;;:::o;7778:1879::-;7835:39;8094:16;8154:33;8421:21;8540:27;8955:23;9076:29;7892;;7877:12;:44;7835:86;;8113:24;;8094:43;;8204:2;8190:11;:16;8154:52;;8368:28;8331:34;:65;8327:1013;;;8445:81;8490:34;8446:37;8479:3;8446:28;:32;;:37;;;;:::i;:::-;8445:43;;:81;;;;:::i;:::-;8421:105;;8570:45;8610:4;8570:25;8591:3;8570:16;:20;;:25;;;;:::i;:::-;:39;;:45;;;;:::i;:::-;8540:75;;8819:68;8836:50;8863:22;8836;8853:4;8836:12;;:16;;:22;;;;:::i;:::-;:26;;:50;;;;:::i;:::-;8819:12;;:16;;:68;;;;:::i;:::-;8804:12;:83;;;;8327:1013;;;8981:81;9032:28;8982:43;9021:3;8982:34;:38;;:43;;;;:::i;:::-;8981:49;;:81;;;;:::i;:::-;8955:107;;9108:47;9150:4;9108:27;9131:3;9108:18;:22;;:27;;;;:::i;:::-;:41;;:47;;;;:::i;:::-;9076:79;;9239:70;9256:52;9283:24;9256:22;9273:4;9256:12;;:16;;:22;;;;:::i;:::-;:26;;:52;;;;:::i;:::-;9239:12;;:16;;:70;;;;:::i;:::-;9224:12;:85;;;;8327:1013;9386:12;9354:29;:44;;;;9427:15;;9412:12;;:30;9409:117;;;9498:15;;9483:12;:30;;;;9409:117;9554:15;;9539:12;;:30;9536:112;;;9620:15;;9605:12;:30;;;;9536:112;7778:1879;;;;;;;:::o;316:134::-;368:6;401:1;397;:5;393:9;;424:1;419;:6;:20;;;;438:1;433;429;:5;;;;;;;;:10;419:20;411:29;;;;;;;;316:134;;;;:::o;674:132::-;736:6;768:1;764;:5;761:18;;;778:1;771:8;;;;761:18;795:1;788:8;;674:132;;;;;:::o

Swarm Source

bzzr://3560fa9c7814420c94924ef96f0e4939137dc41897cf9a8dfc61ea94163a1304
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.