contract BurnableToken is StandardToken {
    /**
     * @dev Event fired when tokens are burned.
     *
     * @param _from The address from which tokens will be removed.
     * @param _value The number of tokens to be destroyed.
     */
    event Burn(address indexed _from, uint256 _value);

    /**
     * @dev Burnes `_value` number of tokens.
     *
     * @param _value The number of tokens that will be burned.
     */
    function burn(uint256 _value) public {
        require(_value != 0);

        address burner = msg.sender;
        require(_value <= balances[burner]);

        balances[burner] = balances[burner].minus(_value);
        totalSupply = totalSupply.minus(_value);

        emit Burn(burner, _value);
        emit Transfer(burner, address(0), _value);
    }
}
/**
 * @title Burnable Token
 *
 * @dev Allows tokens to be destroyed.
 */
function burn(uint256 _value) public {
    require(_value != 0);

    address burner = msg.sender;
    require(_value <= balances[burner]);

    balances[burner] = balances[burner].minus(_value);
    totalSupply = totalSupply.minus(_value);

    emit Burn(burner, _value);
    emit Transfer(burner, address(0), _value);
}

/**
 * @dev Burnes `_value` number of tokens.
 *
 * @param _value The number of tokens that will be burned.
 */