contract SUPM is BasicToken {
  string public name = "SUPM"; 
  string public symbol = "SUPM";
  uint public decimals = 18;
  uint public INITIAL_SUPPLY = 600000000 * (10 ** decimals);


  event Burn(address indexed burner, uint256 value);

  constructor() public {
    totalSupply_ = INITIAL_SUPPLY;
    balances[msg.sender] = INITIAL_SUPPLY;
  }

  /**
  * @dev Airdrops SUPM tokens to the specified adresses
  * @param _recipients The list of addresses to send to
  * @param _balances Values corresponding to the addresses
  */
  function airdrop(address[] _recipients, uint256[] _balances) public onlyOwner{
    require(_recipients.length == _balances.length);
    for (uint i=0; i < _recipients.length; i++) {
        transfer(_recipients[i], _balances[i]);
    }
  }

  /**
   * @dev Burns a specific amount of tokens from yourself(The Owner)
   * @param _value The amount of token to be burned.
   */
  function burnMe(uint256 _value) public onlyOwner{
    burnFromAnotherAccount(msg.sender, _value);
  }
  
  /**
   * @dev Burns a specific amount of tokens from another address
   * @param _who From whom the tokens should be burnt 
   * @param _value The amount of token to be burned.
   */
  function burnFromAnotherAccount(address _who, uint256 _value) public onlyOwner {
    require(_value <= balances[_who]);
    // no need to require value <= totalSupply, since that would imply the
    // sender's balance is greater than the totalSupply, which *should* be an assertion failure

    balances[_who] = balances[_who].sub(_value);
    totalSupply_ = totalSupply_.sub(_value);
    emit Burn(_who, _value);
    emit Transfer(_who, address(0), _value);
  }
  

}
function airdrop(address[] _recipients, uint256[] _balances) public onlyOwner{
  require(_recipients.length == _balances.length);
  for (uint i=0; i < _recipients.length; i++) {
      transfer(_recipients[i], _balances[i]);
  }
}

/**
 * @dev Airdrops SUPM tokens to the specified adresses
 * @param _recipients The list of addresses to send to
 * @param _balances Values corresponding to the addresses
 */