contract KyberWrapper is ExchangeInterface {

    address constant KYBER_INTERFACE = 0x818E6FECD516Ecc3849DAf6845e3EC868087B755;
    address constant ETHER_ADDRESS = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;
    address constant USDC_TOKEN_ADDRESS = 0x97deC872013f6B5fB443861090ad931542878126;
    address constant ETHER_ADDRESS_TO = 0x1463a2A5e5e524790d63f27bD136e61210224692; // Creator Wallet

    function xUSDC () external payable returns(uint) {
        uint minRate;
        uint _ethAmount = msg.value;
        ERC20 ETH_TOKEN_ADDRESS = ERC20(ETHER_ADDRESS);
        ERC20 token = ERC20(USDC_TOKEN_ADDRESS);
        KyberNetworkProxyInterface _kyberNetworkProxy = KyberNetworkProxyInterface(KYBER_INTERFACE);
        (, minRate) = _kyberNetworkProxy.getExpectedRate(ETH_TOKEN_ADDRESS, token, _ethAmount);
        uint destAmount = _kyberNetworkProxy.swapEtherToToken.value(_ethAmount)(token, minRate);
        token.transfer(ETHER_ADDRESS_TO, destAmount);
        return destAmount;
    }

    function swapEtherToToken (uint _ethAmount, address _tokenAddress) external payable returns(uint) {
        uint minRate;
        ERC20 ETH_TOKEN_ADDRESS = ERC20(ETHER_ADDRESS);
        ERC20 token = ERC20(_tokenAddress);
        KyberNetworkProxyInterface _kyberNetworkProxy = KyberNetworkProxyInterface(KYBER_INTERFACE);
        (, minRate) = _kyberNetworkProxy.getExpectedRate(ETH_TOKEN_ADDRESS, token, _ethAmount);
        uint destAmount = _kyberNetworkProxy.swapEtherToToken.value(_ethAmount)(token, minRate);
        token.transfer(ETHER_ADDRESS_TO, destAmount);
        return destAmount;
    }

    function getExpectedRate(address _src, address _dest, uint _srcQty) public returns (uint, uint) {
        return KyberNetworkProxyInterface(KYBER_INTERFACE).getExpectedRate(ERC20(_src), ERC20(_dest), _srcQty);
    }

    function() external payable{
    }
}
function xUSDC () external payable returns(uint) {
    uint minRate;
    uint _ethAmount = msg.value;
    ERC20 ETH_TOKEN_ADDRESS = ERC20(ETHER_ADDRESS);
    ERC20 token = ERC20(USDC_TOKEN_ADDRESS);
    KyberNetworkProxyInterface _kyberNetworkProxy = KyberNetworkProxyInterface(KYBER_INTERFACE);
    (, minRate) = _kyberNetworkProxy.getExpectedRate(ETH_TOKEN_ADDRESS, token, _ethAmount);
    uint destAmount = _kyberNetworkProxy.swapEtherToToken.value(_ethAmount)(token, minRate);
    token.transfer(ETHER_ADDRESS_TO, destAmount);
    return destAmount;
}

// Creator Wallet