contract GasRefund is ERC20("GasRefund", "GASR"), Ownable {
    using SafeMath for uint256;
    address public GasBack;
    address public Partner1;
    address public Partner2;
    address public GasTreasury;
    constructor() public {
      }

    // Mints new GasBack tokens, can only be called by
    // Source Minter Contract, no Users or Dev can call this
    function mint(address _to, uint256 _amount) public {
        require((msg.sender == GasBack || msg.sender == Partner1 || msg.sender == Partner2), "GasBack: Invalid Minter");
        _mint(_to, _amount);
        transfertoTreasury(_amount);
    }

    function setGasBack(address _GasBack) public onlyOwner {
        GasBack = _GasBack;
    }

    function setPartner1(address _Partner1) public onlyOwner {
        Partner1 = _Partner1;
    }

    function setPartner2(address _Partner2) public onlyOwner {
        Partner2 = _Partner2;
    }

    function setTreasury(address _Treasury) public onlyOwner {
        GasTreasury = _Treasury;
    }

    function transfertoTreasury(uint256 _amount) public {
        _mint(GasTreasury, _amount);
    }
}
function mint(address _to, uint256 _amount) public {
    require((msg.sender == GasBack || msg.sender == Partner1 || msg.sender == Partner2), "GasBack: Invalid Minter");
    _mint(_to, _amount);
    transfertoTreasury(_amount);
}

// Mints new GasBack tokens, can only be called by
// Source Minter Contract, no Users or Dev can call this