contract BuyToken is BurnableToken {
    string public constant name = "BUY";
    string public constant symbol = "BUY";
    uint8 public constant decimals = 18;

    constructor(address _initialAccount, uint256 _initialSupply)
    public
    {
        mint(_initialAccount, _initialSupply);
    }

    /**
    * @dev Allows the owner to take out wrongly sent tokens to this contract by mistake.
    * @param _token The contract address of the token that is getting pulled out.
    * @param _amount The amount to pull out.
    */
    function pullOut(ERC20 _token, uint256 _amount) external onlyOwner {
        _token.transfer(owner, _amount);
    }

    /**
    * @dev 'tokenFallback' function in accordance to the ERC223 standard. Rejects all incoming ERC223 token transfers.
    */

    function tokenFallback(
        address _from,
        uint256 _value,
        bytes _data
    )
    external
    pure
    {
        _from;
        _value;
        _data;
        revert();
    }

    function() external payable {
        revert("This contract does not accept Ethereum!");
    }

}
/**
 * @title BUYToken
 */
function pullOut(ERC20 _token, uint256 _amount) external onlyOwner {
    _token.transfer(owner, _amount);
}

/**
 * @dev Allows the owner to take out wrongly sent tokens to this contract by mistake.
 * @param _token The contract address of the token that is getting pulled out.
 * @param _amount The amount to pull out.
 */