```\n// File: D3Proxy.sol\n    function sellTokens(\n        address pool,\n        address to,\n        address fromToken,\n        address toToken,\n        uint256 fromAmount,\n        uint256 minReceiveAmount,\n        bytes calldata data,\n        uint256 deadLine\n    ) public payable judgeExpired(deadLine) returns (uint256 receiveToAmount) {\n        if (fromToken == _ETH_ADDRESS_) {\n            require(msg.value == fromAmount, "D3PROXY_VALUE_INVALID");\n            receiveToAmount = ID3MM(pool).sellToken(to, _WETH_, toToken, fromAmount, minReceiveAmount, data);\n        } else if (toToken == _ETH_ADDRESS_) {\n            receiveToAmount =\n                ID3MM(pool).sellToken(address(this), fromToken, _WETH_, fromAmount, minReceiveAmount, data);\n            _withdrawWETH(to, receiveToAmount);\n            // multicall withdraw weth to user\n        } else {\n            receiveToAmount = ID3MM(pool).sellToken(to, fromToken, toToken, fromAmount, minReceiveAmount, data);\n        }\n    }\n```\n