// File: contracts/RateRaceCoin.sol



// SPDX-License-Identifier: Unlicense
pragma solidity 0.8.12;

/*
It's literally called Rug Race. What did you expect?
*/

contract RugRace {
    string public constant name = "RUG RACE";
    string public constant symbol = "RUG";
    
    uint256 public totalSupply;
    mapping(address => uint256) public balanceOf;
    mapping(address => mapping(address => uint256)) public allowance;    
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);

    constructor(address rugRaceDex) {   

        uint256 rugRaceBalance = 792450000000 * 10 ** 18;
        uint256 rugRaceDexBalance = 544550000000 * 10 ** 18;

        balanceOf[msg.sender] = rugRaceBalance;
        emit Transfer(address(0), msg.sender, rugRaceBalance);
        balanceOf[rugRaceDex] = rugRaceDexBalance;
        emit Transfer(address(0), rugRaceDex, rugRaceDexBalance);
        totalSupply =  1337000000000 * 10 ** 18;     
    }

    function approve(address spender, uint256 value) external returns (bool) {
        allowance[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);
        return true;
    }

    function transfer(address to, uint256 value) external returns (bool) {
        balanceOf[msg.sender] -= value;
        unchecked {
            balanceOf[to] += value;
        }
        emit Transfer(msg.sender, to, value);
        return true;
    }

    function transferFrom(address from, address to, uint256 value) external returns (bool) {
        if (allowance[from][msg.sender] != type(uint256).max) {
            allowance[from][msg.sender] -= value;
        }
        balanceOf[from] -= value;
        unchecked {
            balanceOf[to] += value;
        }
        emit Transfer(from, to, value);
        return true;
    }

}

/*
**Meow**
*/