Contract Overview
My Name Tag:
Not Available, login to update
Txn Hash | Method |
Block
|
From
|
To
|
Value | [Txn Fee] | |||
---|---|---|---|---|---|---|---|---|---|
0x85642069d1e96810b47b5379e25df98e90186022f7d003654ac03d4dd39e516e | Transfer Ownersh... | 21688606 | 142 days 16 hrs ago | DegenX: Deployer | IN | 0x223b26cc3d0154ee9b625e94eb194940a8ca3867 | 0 AVAX | 0.006441075 | |
0xf0d38dfa453d4d49775fb9d1c0ac0a2f00bbe3b563e3a3b3616b8a2e0875ff69 | Allow Contract | 20976889 | 159 days 11 hrs ago | DegenX: Deployer | IN | 0x223b26cc3d0154ee9b625e94eb194940a8ca3867 | 0 AVAX | 0.012964725 | |
0xa2875d8276cc6b12d350a176e17911f2de5a6ce571275f777c14d78b65fe9b97 | Allow Contract | 20976887 | 159 days 11 hrs ago | DegenX: Deployer | IN | 0x223b26cc3d0154ee9b625e94eb194940a8ca3867 | 0 AVAX | 0.012964725 | |
0xab6099d419b0b53221450042a0a86fe9e3ee50b467d3000bf0ee1905af5d99ae | Allow Contract | 20976884 | 159 days 11 hrs ago | DegenX: Deployer | IN | 0x223b26cc3d0154ee9b625e94eb194940a8ca3867 | 0 AVAX | 0.012964725 | |
0x21afc4d4168cdf4485086050fbb0e243bd034186c96d8504b119486b999c7b51 | Allow Contract | 20976881 | 159 days 11 hrs ago | DegenX: Deployer | IN | 0x223b26cc3d0154ee9b625e94eb194940a8ca3867 | 0 AVAX | 0.012964725 | |
0xacac0897697c5dbde91ebbb808f5893f28116eedab7a36ac35745adee155adbe | 0x60806040 | 20976878 | 159 days 11 hrs ago | DegenX: Deployer | IN | Create: DGNXControllerV2 | 0 AVAX | 1.088565525 |
[ Download CSV Export ]
Contract Name:
DGNXControllerV2
Compiler Version
v0.8.13+commit.abaa5c0e
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; import '@openzeppelin/contracts/access/Ownable.sol'; import '@openzeppelin/contracts/security/ReentrancyGuard.sol'; import './../interfaces/IDGNXController.sol'; import './../interfaces/IDGNXDisburser.sol'; import './../interfaces/IFactory.sol'; import './../interfaces/IPair.sol'; import './../interfaces/IERC20.sol'; import './DGNXLibrary.sol'; contract DGNXControllerV2 is IDGNXController, ReentrancyGuard, Ownable { bool public inFee = false; bool public applyFee = true; // taxation uint256 public burnTax = 100; uint256 public backingTax = 200; uint256 public liquidityTax = 300; uint256 public marketingTax = 100; uint256 public platformTax = 200; uint256 public investmentFundTax = 200; // threshold for liquidity boosting uint256 public liquidityThreshold = 20 * 10**18; // 20 AVAX for now // track liquidity for boosting uint256 public liquidityWAVAX; // Some basic stuff we need address public constant DEV = 0xdF090f6675034Fde637031c6590FD1bBeBc4fa45; address public constant DEAD = 0x000000000000000000000000000000000000dEaD; address public constant MARKETING = 0x16eF18E42A7d72E52E9B213D7eABA269B90A4643; address public constant BACKING = 0x31CE1540414361cFf99e83a05e4ad6d35D425202; address public constant PLATFORM = 0xcA01A9d36F47561F03226B6b697B14B9274b1B10; address public constant INVESTMENT_FUND = 0x829619513F202e1bFD8929f656EF96bac73BDAe8; address public constant DISBURSER = 0x8a0E3264Da08bf999AfF5a50AabF5d2dc89fab79; address public constant LOCKER = 0x2c7D8bB6aBA4FFf56cDDBF9ea47ed270A10098F7; // needs to be set address public previousController; address public dgnx; address public wavax; address public mainPair; // track all pairs address[] private allPairs; mapping(address => address[]) private pairsPath; mapping(address => bool) private pairs; mapping(address => bool) private factories; mapping(address => bool) private allowedContracts; event PairAdded(address pair, address[] pathToWAVAX, address sender); event PairRemoved(address pair, address sender); event FactoryAdded(address factory, address sender); event FactoryRemoved(address factory, address sender); event TurnFeesOn(address sender); event TurnFeesOff(address sender); event MigratingController(address originalSender); event RecoverToken(address sender, address asset, uint256 amount); event AllowContract(address sender, address target); event RemoveContract(address sender, address target); event SetBurnTax(address sender, uint256 tax); event SetBackingTax(address sender, uint256 tax); event SetLiquidityTax(address sender, uint256 tax); event SetMarketingTax(address sender, uint256 tax); event SetPlatformTax(address sender, uint256 tax); event SetInvestmentFundTax(address sender, uint256 tax); event SetLiquidityThreshold(address sender, uint256 threshold); event BoostLiquidity( address token0, uint256 amount0, address token1, uint256 amount1, address sender ); constructor( address _dgnx, address _wavax, address[] memory _factories, address[] memory _pairs, address _mainPair ) { require(_dgnx != address(0), 'DGNXController::constructor wrong dgnx'); require( _wavax != address(0), 'DGNXController::constructor wrong wavax' ); require( _dgnx != _wavax, 'DGNXController::constructor dgnx and wavax same token' ); require( _factories.length >= 2 && _pairs.length >= 2 && _factories.length == _pairs.length, 'DGNXController::constructor mismatching factories and pairs' ); dgnx = _dgnx; wavax = _wavax; address[] memory path; bool hasMainPair = false; for (uint256 i = 0; i < _factories.length; i++) { require( _factories[i] == IPair(_pairs[i]).factory(), 'DGNXController::constructor pair factory and factory mismatch' ); addFactory(_factories[i]); addPair(_pairs[i], path); if (_mainPair == _pairs[i]) { hasMainPair = true; } } require( hasMainPair, 'DGNXController::constructor main pair is not available in pairs' ); setMainPair(_mainPair); allowContract(_dgnx); } modifier onlyAllowed() { _onlyAllowed(); _; } function _onlyAllowed() private view { require( allowedContracts[msg.sender] || msg.sender == owner(), 'DGNXController::_onlyAllowed not allowed' ); } function transferFees( address from, address to, uint256 amount ) external virtual onlyAllowed returns (uint256 newAmount) { require(amount > 0, 'DGNXController::transferFees no amount set'); bool isSell = isPair(to); bool isBuy = isPair(from); // Disburser Wallet Transfer Tax if (isDisburserWallet(to) && !isSell && !isBuy && from != DISBURSER) { uint256 leftover = amount % 10000; uint256 tax = (((amount - leftover) * 500) / 10000) + leftover; safeTransfer(dgnx, LOCKER, tax); return amount - tax; } if ( isAllowed(from) || isAllowed(to) || (!isSell && !isBuy) || !applyFee || inFee ) return amount; ( uint256 _newAmount, uint256 _liquidityAmount, uint256 _backingAmount, uint256 _burnAmount, uint256 _marketingAmount, uint256 _platformAmount, uint256 _investmentFundAmount ) = estimateTransferFees(from, to, amount); uint256 swapAmount = amount - _newAmount - _burnAmount; newAmount = _newAmount; // enter fee inFee = true; if (_burnAmount > 0) { safeTransfer(dgnx, DEAD, _burnAmount); } if (allPairs.length > 1) { address currentPair = isSell ? to : from; uint256 wavaxBefore = IERC20(wavax).balanceOf(address(this)); (, address swapPair) = bestWAVAXValue(swapAmount, currentPair); address _factory = IPair(swapPair).factory(); // swap start >> dgnx > wavax address[] memory path = getPathForPair(swapPair, dgnx); uint256[] memory amounts = getAmountsOut( _factory, swapAmount, path ); safeTransfer(path[0], swapPair, amounts[0]); _swap(_factory, amounts, path, address(this)); // swap end uint256 receivedWavax = IERC20(wavax).balanceOf(address(this)) - wavaxBefore; uint256 _backing = (receivedWavax * _backingAmount) / swapAmount; uint256 _platform = (receivedWavax * _platformAmount) / swapAmount; uint256 _investment = (receivedWavax * _investmentFundAmount) / swapAmount; if (_backing > 0) { safeTransfer(wavax, BACKING, _backing); } if (_platform > 0) { uint256 _devAmount = (_platform * 40) / 100; // 40% _platform -= _devAmount; // 60% safeTransfer(wavax, DEV, _devAmount); safeTransfer(wavax, PLATFORM, _platform); } if (_investment > 0) { safeTransfer(wavax, INVESTMENT_FUND, _investment); } if (_marketingAmount > 0) { uint256 _amount = (receivedWavax * _marketingAmount) / swapAmount; safeTransfer(wavax, MARKETING, _amount); } // rest of wavax on contract will be used for liquidity boosting liquidityWAVAX = IERC20(wavax).balanceOf(address(this)); if ( mainPair != currentPair && liquidityWAVAX >= liquidityThreshold ) { boostLiquidity(); } } else { // return amount to sender newAmount += _liquidityAmount; if (_backingAmount > 0) { safeTransfer(dgnx, BACKING, _backingAmount); } if (_platformAmount > 0) { uint256 _devAmount = (_platformAmount * 40) / 100; // 40% _platformAmount -= _devAmount; // 60% safeTransfer(dgnx, DEV, _devAmount); safeTransfer(dgnx, PLATFORM, _platformAmount); } if (_investmentFundAmount > 0) { safeTransfer(dgnx, INVESTMENT_FUND, _investmentFundAmount); } if (_marketingAmount > 0) { safeTransfer(dgnx, MARKETING, _marketingAmount); } } // leave fee inFee = false; } function estimateTransferFees( address from, address to, uint256 amount ) public view returns ( uint256 newAmount, uint256 _liquidityAmount, uint256 _backingAmount, uint256 _burnAmount, uint256 _marketingAmount, uint256 _platformAmount, uint256 _investmentFundAmount ) { require( amount > 0, 'DGNXController::estimateTransferFees no amount set' ); bool isSell = isPair(to); bool isBuy = isPair(from); // Disburser Wallet Transfer Tax if (isDisburserWallet(to) && !isSell && !isBuy && from != DISBURSER) { uint256 leftover = amount % 10000; uint256 tax = (((amount - leftover) * 500) / 10000) + leftover; return (amount - tax, 0, 0, 0, 0, 0, 0); } if ( isAllowed(from) || isAllowed(to) || (!isSell && !isBuy) || !applyFee || inFee ) return (amount, 0, 0, 0, 0, 0, 0); _liquidityAmount = (amount * liquidityTax) / 10000; _backingAmount = (amount * backingTax) / 10000; _platformAmount = (amount * platformTax) / 10000; _investmentFundAmount = (amount * investmentFundTax) / 10000; newAmount = amount - (_backingAmount + _liquidityAmount + _platformAmount + _investmentFundAmount); if (isSell) { _burnAmount = (amount * burnTax) / 10000; newAmount -= _burnAmount; } else { _marketingAmount = (amount * marketingTax) / 10000; newAmount -= _marketingAmount; } } function boostLiquidity() public onlyAllowed nonReentrant { uint256 forSwap = liquidityWAVAX / 2; uint256 forLiquidity = liquidityWAVAX - forSwap; address _factory = IPair(mainPair).factory(); address _t0 = IPair(mainPair).token0(); address _t1 = IPair(mainPair).token1(); // swap start >> wavax > dgnx address[] memory path = getPathForPair(mainPair, wavax); uint256[] memory amounts = getAmountsOut(_factory, forSwap, path); safeTransfer(path[0], mainPair, amounts[0]); _swap(_factory, amounts, path, address(this)); // swap end (uint256 amountA, uint256 amountB, ) = addLiquidity( _factory, _t0, _t1, amounts[amounts.length - 1], forLiquidity, PLATFORM ); // update current wavax with leftovers liquidityWAVAX = IERC20(wavax).balanceOf(address(this)); emit BoostLiquidity(_t0, amountA, _t1, amountB, msg.sender); } function addLiquidity( address factory, address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, address to ) internal returns ( uint256 amountA, uint256 amountB, uint256 liquidity ) { (uint256 reserveA, uint256 reserveB) = DGNXLibrary.getReserves( factory, tokenA, tokenB ); if (reserveA == 0 && reserveB == 0) { (amountA, amountB) = (amountADesired, amountBDesired); } else { uint256 amountBOptimal = DGNXLibrary.quote( amountADesired, reserveA, reserveB ); if (amountBOptimal <= amountBDesired) { (amountA, amountB) = (amountADesired, amountBOptimal); } else { uint256 amountAOptimal = DGNXLibrary.quote( amountBDesired, reserveB, reserveA ); assert(amountAOptimal <= amountADesired); (amountA, amountB) = (amountAOptimal, amountBDesired); } } address pair = IFactory(factory).getPair(tokenA, tokenB); safeTransfer(tokenA, pair, amountA); safeTransfer(tokenB, pair, amountB); liquidity = IPair(pair).mint(to); } function _swap( address factory, uint256[] memory amounts, address[] memory path, address _to ) internal { for (uint256 i; i < path.length - 1; i++) { (address input, address output) = (path[i], path[i + 1]); (address token0, ) = DGNXLibrary.sortTokens(input, output); uint256 amountOut = amounts[i + 1]; (uint256 amount0Out, uint256 amount1Out) = input == token0 ? (uint256(0), amountOut) : (amountOut, uint256(0)); address to = i < path.length - 2 ? IFactory(factory).getPair(output, path[i + 2]) : _to; IPair(IFactory(factory).getPair(input, output)).swap( amount0Out, amount1Out, to, new bytes(0) ); } } function bestWAVAXValue(uint256 tokenAmount, address ignorePair) internal view returns (uint256 value, address usePair) { if (allPairs.length > 0 && tokenAmount > 0) { uint256 currentValue; for (uint256 i; i < allPairs.length; i++) { address pair = allPairs[i]; if (ignorePair != pair) { address[] memory path = getPathForPair(pair, dgnx); uint256[] memory amounts = getAmountsOut( IPair(pair).factory(), tokenAmount, path ); currentValue = amounts[amounts.length - 1]; if (currentValue > value) { value = currentValue; usePair = pair; } } } } } /** * Add example: * addr => DGNX/BNB * pathToWAVAX => BNB => WAVAX */ function addPair(address addr, address[] memory pathToWAVAX) public onlyAllowed { require(addr != address(0), 'DGNXController::addPair no pair'); require( IPair(addr).factory() != address(0), 'DGNXController::addPair no factory' ); require( factories[IPair(addr).factory()], 'DGNXController::addPair wrong factory' ); require(!pairs[addr], 'DGNXController::addPair pair already exists'); address t0 = IPair(addr).token0(); address t1 = IPair(addr).token1(); require(t0 == dgnx || t1 == dgnx, 'DGNXController::addPair no dgnx'); (t0, t1) = t0 == dgnx ? (t0, t1) : (t1, t0); if (pathToWAVAX.length == 1) revert('DGNXController::addPair swap path needs 2 addresses'); if (pathToWAVAX.length > 1) { require( pathToWAVAX[0] == t1, 'DGNXController::addPair wrong paired token path' ); require( pathToWAVAX[pathToWAVAX.length - 1] == wavax, 'DGNXController::addPair wrong wavax path' ); for (uint256 i; i < pathToWAVAX.length - 1; i++) { require( IFactory(IPair(addr).factory()).getPair( pathToWAVAX[i], pathToWAVAX[i + 1] ) != address(0), 'DGNXController::addPair invalid pair' ); } pairsPath[addr] = pathToWAVAX; } else { require( t0 == wavax || t1 == wavax, 'DGNXController::addPair no busd token' ); } pairs[addr] = true; allPairs.push(addr); emit PairAdded(addr, pathToWAVAX, msg.sender); } function removePair(address addr) external onlyOwner { require(pairs[addr], 'DGNXController::removePair no pair'); pairs[addr] = false; emit PairRemoved(addr, msg.sender); } function isPair(address addr) private view returns (bool) { return pairs[addr]; } function addFactory(address addr) public onlyOwner { require(addr != address(0), 'DGNXController::addFactory wrong address'); require( !factories[addr], 'DGNXController::addFactory already existing' ); factories[addr] = true; emit FactoryAdded(addr, msg.sender); } function removeFactory(address addr) external onlyOwner { require(factories[addr], 'DGNXController::removeFactory not existing'); factories[addr] = false; emit FactoryRemoved(addr, msg.sender); } function getAmountsOut( address factory, uint256 amountIn, address[] memory path ) public view returns (uint256[] memory amounts) { return DGNXLibrary.getAmountsOut(factory, amountIn, path); } function getPathForPair(address addr, address from) internal view returns (address[] memory path) { (address t0, address t1) = IPair(addr).token0() == from ? (IPair(addr).token0(), IPair(addr).token1()) : (IPair(addr).token1(), IPair(addr).token0()); if (pairsPath[addr].length == 0) { path = new address[](2); (path[0], path[1]) = (t0, t1); } else { path = new address[](pairsPath[addr].length + 1); path[0] = t0; for (uint256 j; j < pairsPath[addr].length; j++) { path[j + 1] = pairsPath[addr][j]; } } } function feeOff() external onlyAllowed { applyFee = false; emit TurnFeesOff(msg.sender); } function feeOn() external onlyAllowed { applyFee = true; emit TurnFeesOn(msg.sender); } // if we update controller, we need to transfer funds to new controller. This will be called by new controller and add all factories and pairs function migrate() external onlyAllowed nonReentrant { uint256 balanceDgnx = IERC20(dgnx).balanceOf(address(this)); uint256 balanceWavax = IERC20(wavax).balanceOf(address(this)); if (balanceDgnx > 0) { safeTransfer(dgnx, msg.sender, balanceDgnx); } if (balanceWavax > 0) { safeTransfer(wavax, msg.sender, balanceWavax); } for (uint256 i; i < allPairs.length; i++) { uint256 lpTokens = IERC20(allPairs[i]).balanceOf(address(this)); if (lpTokens > 0) { safeTransfer(allPairs[i], msg.sender, lpTokens); } address _t0 = IPair(allPairs[i]).token0(); address _t1 = IPair(allPairs[i]).token1(); uint256 _t0Balance = IERC20(_t0).balanceOf(address(this)); uint256 _t1Balance = IERC20(_t1).balanceOf(address(this)); if (_t0Balance > 0) { safeTransfer(_t0, msg.sender, _t0Balance); } if (_t1Balance > 0) { safeTransfer(_t1, msg.sender, _t1Balance); } } } // this is called by the token to initiate the migration from the new controller function migration(address _previousController) external onlyAllowed nonReentrant { require( _previousController != address(this) && _previousController != address(0), 'DGNXController::migration wrong controller address' ); previousController = _previousController; IDGNXController(previousController).migrate(); // move migrated pool tokens to platform multisig safeTransfer( mainPair, PLATFORM, IERC20(mainPair).balanceOf(address(this)) ); // burn migrated dgnx safeTransfer(dgnx, DEAD, IERC20(dgnx).balanceOf(address(this))); // move wavax to marketing safeTransfer(wavax, MARKETING, IERC20(wavax).balanceOf(address(this))); emit MigratingController(tx.origin); } // if there are any tokens send by accident, we can revover it function recoverToken(address token, address to) external onlyAllowed nonReentrant { require(dgnx != token, 'DGNXController::recoverToken No drain allowed'); require( wavax != token, 'DGNXController::recoverToken No drain allowed' ); for (uint256 i; i < allPairs.length; i++) { require( allPairs[i] != token, 'DGNXController::recoverToken No drain allowed' ); } uint256 amount = IERC20(token).balanceOf(address(this)); safeTransfer(token, to, amount); emit RecoverToken(msg.sender, token, amount); } function allowContract(address addr) public onlyAllowed nonReentrant { require( addr != address(0), 'DGNXController::allowContract zero address' ); require(addr != DEAD, 'DGNXController::allowContract 0xdead address'); require( addr.code.length > 0, 'DGNXController::allowContract no contract' ); allowedContracts[addr] = true; emit AllowContract(msg.sender, addr); } function removeContract(address addr) external onlyAllowed { require( allowedContracts[addr], 'DGNXController::removeContract no contract' ); delete allowedContracts[addr]; emit RemoveContract(msg.sender, addr); } function isAllowed(address addr) public view returns (bool) { return allowedContracts[addr]; } function isDisburserWallet(address addr) private view returns (bool) { return IDGNXDisburser(DISBURSER).legacyAmounts(addr) > 0; } function setMainPair(address pair) public onlyOwner { require(pair != address(0), 'DGNXController::setMainPair zero address'); require( pair != mainPair, 'DGNXController::setMainPair pair already set' ); mainPair = pair; } function getAllPairs() external view returns (address[] memory addr) { addr = allPairs; } function setBurnTax(uint256 _tax) external onlyOwner { require(_tax <= 500, 'DGNXController::setBurnTax max tax is 5'); burnTax = _tax; emit SetBurnTax(msg.sender, _tax); } function setBackingTax(uint256 _tax) external onlyOwner { require(_tax <= 500, 'DGNXController::setBackingTax max tax is 5'); backingTax = _tax; emit SetBackingTax(msg.sender, _tax); } function setLiquidityTax(uint256 _tax) external onlyOwner { require(_tax <= 500, 'DGNXController::setLiquidityTax max tax is 5'); liquidityTax = _tax; emit SetLiquidityTax(msg.sender, _tax); } function setMarketingTax(uint256 _tax) external onlyOwner { require(_tax <= 500, 'DGNXController::setMarketingTax max tax is 5'); marketingTax = _tax; emit SetMarketingTax(msg.sender, _tax); } function setPlatformTax(uint256 _tax) external onlyOwner { require(_tax <= 500, 'DGNXController::setPlatformTax max tax is 5'); platformTax = _tax; emit SetPlatformTax(msg.sender, _tax); } function setInvestmentFundTax(uint256 _tax) external onlyOwner { require( _tax <= 500, 'DGNXController::setInvestmentFundTax max tax is 5' ); investmentFundTax = _tax; emit SetInvestmentFundTax(msg.sender, _tax); } function setLiquidityThreshold(uint256 _threshold) external onlyOwner { liquidityThreshold = _threshold; emit SetLiquidityThreshold(msg.sender, _threshold); } function safeTransfer( address token, address to, uint256 value ) internal { // bytes4(keccak256(bytes('transfer(address,uint256)'))); (bool success, bytes memory data) = token.call( abi.encodeWithSelector(0xa9059cbb, to, value) ); require( success && (data.length == 0 || abi.decode(data, (bool))), 'DGNXController::safeTransfer TRANSFER_FAILED' ); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; interface IDGNXController { function transferFees( address from, address to, uint256 amount ) external returns (uint256 newAmount); function estimateTransferFees( address from, address to, uint256 amount ) external returns ( uint256 newAmount, uint256 _liquidityAmount, uint256 _backingAmount, uint256 _burnAmount, uint256 _marketingAmount, uint256 _platformAmount, uint256 _launchpadAmount ); function migration(address _previousController) external; function migrate() external; function allowContract(address addr) external; function removeContract(address addr) external; function recoverToken(address token, address to) external; function isAllowed(address addr) external view returns (bool); function feeOff() external; function feeOn() external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; interface IDGNXDisburser { function legacyAmounts(address addr) external view returns (uint256); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; interface IFactory { function getPair(address tokenA, address tokenB) external view returns (address pair); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; interface IPair { function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function mint(address to) external returns (uint256 liquidity); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function getReserves() external view returns ( uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast ); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; interface IERC20 { function balanceOf(address account) external view returns (uint256); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; import '@openzeppelin/contracts/utils/math/SafeMath.sol'; import './../interfaces/IFactory.sol'; import './../interfaces/IPair.sol'; library DGNXLibrary { using SafeMath for uint256; // returns sorted token addresses, used to handle return values from pairs sorted in this order function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) { require(tokenA != tokenB, 'DGNXLibrary: IDENTICAL_ADDRESSES'); (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA); require(token0 != address(0), 'DGNXLibrary: ZERO_ADDRESS'); } // fetches and sorts the reserves for a pair function getReserves( address factory, address tokenA, address tokenB ) internal view returns (uint256 reserveA, uint256 reserveB) { (address token0, ) = sortTokens(tokenA, tokenB); (uint256 reserve0, uint256 reserve1, ) = IPair( IFactory(factory).getPair(tokenA, tokenB) ).getReserves(); (reserveA, reserveB) = tokenA == token0 ? (reserve0, reserve1) : (reserve1, reserve0); } // given some amount of an asset and pair reserves, returns an equivalent amount of the other asset function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) internal pure returns (uint256 amountB) { require(amountA > 0, 'DGNXLibrary: INSUFFICIENT_AMOUNT'); require( reserveA > 0 && reserveB > 0, 'DGNXLibrary: INSUFFICIENT_LIQUIDITY' ); amountB = amountA.mul(reserveB) / reserveA; } // given an input amount of an asset and pair reserves, returns the maximum output amount of the other asset function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) internal pure returns (uint256 amountOut) { require(amountIn > 0, 'DGNXLibrary: INSUFFICIENT_INPUT_AMOUNT'); require( reserveIn > 0 && reserveOut > 0, 'DGNXLibrary: INSUFFICIENT_LIQUIDITY' ); uint256 amountInWithFee = amountIn.mul(997); uint256 numerator = amountInWithFee.mul(reserveOut); uint256 denominator = reserveIn.mul(1000).add(amountInWithFee); amountOut = numerator / denominator; } // performs chained getAmountOut calculations on any number of pairs function getAmountsOut( address factory, uint256 amountIn, address[] memory path ) internal view returns (uint256[] memory amounts) { require(path.length >= 2, 'DGNXLibrary: INVALID_PATH'); amounts = new uint256[](path.length); amounts[0] = amountIn; for (uint256 i; i < path.length - 1; i++) { (uint256 reserveIn, uint256 reserveOut) = getReserves( factory, path[i], path[i + 1] ); amounts[i + 1] = getAmountOut(amounts[i], reserveIn, reserveOut); } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol) pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the subtraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
[{"inputs":[{"internalType":"address","name":"_dgnx","type":"address"},{"internalType":"address","name":"_wavax","type":"address"},{"internalType":"address[]","name":"_factories","type":"address[]"},{"internalType":"address[]","name":"_pairs","type":"address[]"},{"internalType":"address","name":"_mainPair","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"address","name":"target","type":"address"}],"name":"AllowContract","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token0","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"address","name":"token1","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"},{"indexed":false,"internalType":"address","name":"sender","type":"address"}],"name":"BoostLiquidity","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"factory","type":"address"},{"indexed":false,"internalType":"address","name":"sender","type":"address"}],"name":"FactoryAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"factory","type":"address"},{"indexed":false,"internalType":"address","name":"sender","type":"address"}],"name":"FactoryRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"originalSender","type":"address"}],"name":"MigratingController","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pair","type":"address"},{"indexed":false,"internalType":"address[]","name":"pathToWAVAX","type":"address[]"},{"indexed":false,"internalType":"address","name":"sender","type":"address"}],"name":"PairAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pair","type":"address"},{"indexed":false,"internalType":"address","name":"sender","type":"address"}],"name":"PairRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"address","name":"asset","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RecoverToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"address","name":"target","type":"address"}],"name":"RemoveContract","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"tax","type":"uint256"}],"name":"SetBackingTax","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"tax","type":"uint256"}],"name":"SetBurnTax","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"tax","type":"uint256"}],"name":"SetInvestmentFundTax","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"tax","type":"uint256"}],"name":"SetLiquidityTax","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"SetLiquidityThreshold","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"tax","type":"uint256"}],"name":"SetMarketingTax","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"tax","type":"uint256"}],"name":"SetPlatformTax","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"}],"name":"TurnFeesOff","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"}],"name":"TurnFeesOn","type":"event"},{"inputs":[],"name":"BACKING","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEV","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DISBURSER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INVESTMENT_FUND","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LOCKER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MARKETING","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PLATFORM","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"addFactory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"address[]","name":"pathToWAVAX","type":"address[]"}],"name":"addPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"allowContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"applyFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"backingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"boostLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dgnx","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"estimateTransferFees","outputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"},{"internalType":"uint256","name":"_liquidityAmount","type":"uint256"},{"internalType":"uint256","name":"_backingAmount","type":"uint256"},{"internalType":"uint256","name":"_burnAmount","type":"uint256"},{"internalType":"uint256","name":"_marketingAmount","type":"uint256"},{"internalType":"uint256","name":"_platformAmount","type":"uint256"},{"internalType":"uint256","name":"_investmentFundAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeOff","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeOn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAllPairs","outputs":[{"internalType":"address[]","name":"addr","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"factory","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsOut","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"investmentFundTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityWAVAX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mainPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"migrate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_previousController","type":"address"}],"name":"migration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"platformTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"previousController","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"recoverToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"removeContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"removeFactory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"removePair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"setBackingTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"setBurnTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"setInvestmentFundTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"setLiquidityTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_threshold","type":"uint256"}],"name":"setLiquidityThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"}],"name":"setMainPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"setMarketingTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"setPlatformTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFees","outputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"wavax","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040526001805461ffff60a01b1916600160a81b1790556064600281905560c8600381905561012c60045560059190915560068190556007556801158e460913d000006008553480156200005457600080fd5b506040516200631b3803806200631b83398101604081905262000077916200152c565b6001600055620000873362000501565b6001600160a01b038516620000e15760405162461bcd60e51b81526020600482015260266024820152600080516020620062db8339815191526044820152650ce40c8cedcf60d31b60648201526084015b60405180910390fd5b6001600160a01b038416620001385760405162461bcd60e51b81526020600482015260276024820152600080516020620062db8339815191526044820152660ce40eec2ecc2f60cb1b6064820152608401620000d8565b836001600160a01b0316856001600160a01b031603620001c15760405162461bcd60e51b815260206004820152603560248201527f44474e58436f6e74726f6c6c65723a3a636f6e7374727563746f722064676e7860448201527f20616e642077617661782073616d6520746f6b656e00000000000000000000006064820152608401620000d8565b6002835110158015620001d657506002825110155b8015620001e4575081518351145b620002585760405162461bcd60e51b815260206004820152603b60248201527f44474e58436f6e74726f6c6c65723a3a636f6e7374727563746f72206d69736d60448201527f61746368696e6720666163746f7269657320616e6420706169727300000000006064820152608401620000d8565b600b80546001600160a01b038088166001600160a01b031992831617909255600c80549287169290911691909117905560606000805b85518110156200046857848181518110620002ad57620002ad620015cf565b60200260200101516001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003199190620015e5565b6001600160a01b0316868281518110620003375762000337620015cf565b60200260200101516001600160a01b031614620003bd5760405162461bcd60e51b815260206004820152603d60248201527f44474e58436f6e74726f6c6c65723a3a636f6e7374727563746f72207061697260448201527f20666163746f727920616e6420666163746f7279206d69736d617463680000006064820152608401620000d8565b620003ea868281518110620003d657620003d6620015cf565b60200260200101516200055360201b60201c565b62000418858281518110620004035762000403620015cf565b602002602001015184620006e560201b60201c565b8481815181106200042d576200042d620015cf565b60200260200101516001600160a01b0316846001600160a01b0316036200045357600191505b806200045f8162001620565b9150506200028e565b5080620004de5760405162461bcd60e51b815260206004820152603f60248201527f44474e58436f6e74726f6c6c65723a3a636f6e7374727563746f72206d61696e60448201527f2070616972206973206e6f7420617661696c61626c6520696e207061697273006064820152608401620000d8565b620004e98362000fe2565b620004f4876200112d565b50505050505050620016da565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001546001600160a01b031633146200059e5760405162461bcd60e51b81526020600482018190526024820152600080516020620062fb8339815191526044820152606401620000d8565b6001600160a01b038116620006075760405162461bcd60e51b815260206004820152602860248201527f44474e58436f6e74726f6c6c65723a3a616464466163746f72792077726f6e67604482015267206164647265737360c01b6064820152608401620000d8565b6001600160a01b03811660009081526011602052604090205460ff1615620006865760405162461bcd60e51b815260206004820152602b60248201527f44474e58436f6e74726f6c6c65723a3a616464466163746f727920616c72656160448201526a6479206578697374696e6760a81b6064820152608401620000d8565b6001600160a01b038116600081815260116020908152604091829020805460ff19166001179055815192835233908301527fdc1fd46feba2318f68d29b121fd1f1c88d652dceeda1402b56b0f7188090667b910160405180910390a150565b620006ef62001341565b6001600160a01b038216620007475760405162461bcd60e51b815260206004820152601f60248201527f44474e58436f6e74726f6c6c65723a3a61646450616972206e6f2070616972006044820152606401620000d8565b60006001600160a01b0316826001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000791573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007b79190620015e5565b6001600160a01b0316036200081a5760405162461bcd60e51b815260206004820152602260248201527f44474e58436f6e74726f6c6c65723a3a61646450616972206e6f20666163746f604482015261727960f01b6064820152608401620000d8565b60116000836001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200085d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008839190620015e5565b6001600160a01b0316815260208101919091526040016000205460ff16620008fc5760405162461bcd60e51b815260206004820152602560248201527f44474e58436f6e74726f6c6c65723a3a616464506169722077726f6e6720666160448201526463746f727960d81b6064820152608401620000d8565b6001600160a01b03821660009081526010602052604090205460ff16156200097b5760405162461bcd60e51b815260206004820152602b60248201527f44474e58436f6e74726f6c6c65723a3a61646450616972207061697220616c7260448201526a656164792065786973747360a81b6064820152608401620000d8565b6000826001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015620009bc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009e29190620015e5565b90506000836001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000a25573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a4b9190620015e5565b600b549091506001600160a01b038381169116148062000a785750600b546001600160a01b038281169116145b62000ac65760405162461bcd60e51b815260206004820152601f60248201527f44474e58436f6e74726f6c6c65723a3a61646450616972206e6f2064676e78006044820152606401620000d8565b600b546001600160a01b0383811691161462000ae457808262000ae7565b81815b8451919350915060010362000b655760405162461bcd60e51b815260206004820152603360248201527f44474e58436f6e74726f6c6c65723a3a6164645061697220737761702070617460448201527f68206e65656473203220616464726573736573000000000000000000000000006064820152608401620000d8565b60018351111562000eb157806001600160a01b03168360008151811062000b905762000b90620015cf565b60200260200101516001600160a01b03161462000c085760405162461bcd60e51b815260206004820152602f60248201527f44474e58436f6e74726f6c6c65723a3a616464506169722077726f6e6720706160448201526e0d2e4cac840e8ded6cadc40e0c2e8d608b1b6064820152608401620000d8565b600c5483516001600160a01b0390911690849062000c29906001906200163c565b8151811062000c3c5762000c3c620015cf565b60200260200101516001600160a01b03161462000cad5760405162461bcd60e51b815260206004820152602860248201527f44474e58436f6e74726f6c6c65723a3a616464506169722077726f6e672077616044820152670ecc2f040e0c2e8d60c31b6064820152608401620000d8565b60005b6001845162000cc091906200163c565b81101562000e7e5760006001600160a01b0316856001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000d12573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d389190620015e5565b6001600160a01b031663e6a4390586848151811062000d5b5762000d5b620015cf565b60200260200101518785600162000d73919062001656565b8151811062000d865762000d86620015cf565b60200260200101516040518363ffffffff1660e01b815260040162000dc19291906001600160a01b0392831681529116602082015260400190565b602060405180830381865afa15801562000ddf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e059190620015e5565b6001600160a01b03160362000e695760405162461bcd60e51b8152602060048201526024808201527f44474e58436f6e74726f6c6c65723a3a6164645061697220696e76616c6964206044820152633830b4b960e11b6064820152608401620000d8565b8062000e758162001620565b91505062000cb0565b506001600160a01b0384166000908152600f60209081526040909120845162000eaa92860190620013cb565b5062000f37565b600c546001600160a01b038381169116148062000edb5750600c546001600160a01b038281169116145b62000f375760405162461bcd60e51b815260206004820152602560248201527f44474e58436f6e74726f6c6c65723a3a61646450616972206e6f2062757364206044820152643a37b5b2b760d91b6064820152608401620000d8565b6001600160a01b038416600081815260106020526040808220805460ff19166001908117909155600e805491820181559092527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd90910180546001600160a01b031916909217909155517f1955a2778a00e9248184f6eddeb1cd24a10d7dcb8b8e534ea9b112cb329340b19062000fd49086908690339062001671565b60405180910390a150505050565b6001546001600160a01b031633146200102d5760405162461bcd60e51b81526020600482018190526024820152600080516020620062fb8339815191526044820152606401620000d8565b6001600160a01b038116620010965760405162461bcd60e51b815260206004820152602860248201527f44474e58436f6e74726f6c6c65723a3a7365744d61696e50616972207a65726f604482015267206164647265737360c01b6064820152608401620000d8565b600d546001600160a01b03908116908216036200110b5760405162461bcd60e51b815260206004820152602c60248201527f44474e58436f6e74726f6c6c65723a3a7365744d61696e50616972207061697260448201526b08185b1c9958591e481cd95d60a21b6064820152608401620000d8565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6200113762001341565b6002600054036200118b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401620000d8565b60026000556001600160a01b038116620011fb5760405162461bcd60e51b815260206004820152602a60248201527f44474e58436f6e74726f6c6c65723a3a616c6c6f77436f6e7472616374207a65604482015269726f206164647265737360b01b6064820152608401620000d8565b61deac196001600160a01b038216016200126d5760405162461bcd60e51b815260206004820152602c60248201527f44474e58436f6e74726f6c6c65723a3a616c6c6f77436f6e747261637420307860448201526b64656164206164647265737360a01b6064820152608401620000d8565b6000816001600160a01b03163b11620012db5760405162461bcd60e51b815260206004820152602960248201527f44474e58436f6e74726f6c6c65723a3a616c6c6f77436f6e7472616374206e6f6044820152680818dbdb9d1c9858dd60ba1b6064820152608401620000d8565b6001600160a01b038116600081815260126020908152604091829020805460ff191660011790558151338152908101929092527f21d9dc6bbcbac2ec1efea972942d14c693b61cc8ea9bdbb89d5d5baf81fa6763910160405180910390a1506001600055565b3360009081526012602052604090205460ff16806200136a57506001546001600160a01b031633145b620013c95760405162461bcd60e51b815260206004820152602860248201527f44474e58436f6e74726f6c6c65723a3a5f6f6e6c79416c6c6f776564206e6f7460448201526708185b1b1bddd95960c21b6064820152608401620000d8565b565b82805482825590600052602060002090810192821562001423579160200282015b828111156200142357825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620013ec565b506200143192915062001435565b5090565b5b8082111562001431576000815560010162001436565b80516001600160a01b03811681146200146457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200149157600080fd5b815160206001600160401b0380831115620014b057620014b062001469565b8260051b604051601f19603f83011681018181108482111715620014d857620014d862001469565b604052938452858101830193838101925087851115620014f757600080fd5b83870191505b84821015620015215762001511826200144c565b83529183019190830190620014fd565b979650505050505050565b600080600080600060a086880312156200154557600080fd5b62001550866200144c565b945062001560602087016200144c565b60408701519094506001600160401b03808211156200157e57600080fd5b6200158c89838a016200147f565b94506060880151915080821115620015a357600080fd5b50620015b2888289016200147f565b925050620015c3608087016200144c565b90509295509295909350565b634e487b7160e01b600052603260045260246000fd5b600060208284031215620015f857600080fd5b62001603826200144c565b9392505050565b634e487b7160e01b600052601160045260246000fd5b6000600182016200163557620016356200160a565b5060010190565b6000828210156200165157620016516200160a565b500390565b600082198211156200166c576200166c6200160a565b500190565b6001600160a01b038481168252606060208084018290528551918401829052600092868201929091906080860190855b81811015620016c1578551851683529483019491830191600101620016a1565b5050809450505080851660408501525050949350505050565b614bf180620016ea6000396000f3fe608060405234801561001057600080fd5b50600436106102d65760003560e01c806385af30c511610182578063be617fa0116100e9578063e530a7d0116100a2578063f6bd02fa1161007c578063f6bd02fa1461066b578063f800ece91461067e578063fde726fb14610693578063feaea586146106a657600080fd5b8063e530a7d01461062a578063f2fde38b14610645578063f30e85bc1461065857600080fd5b8063be617fa0146105ce578063c1b2ff69146105d7578063c1eb5ddd146105df578063c375c2ef146105fa578063c96880861461060d578063dcc9def51461061657600080fd5b8063af6c9c1d1161013b578063af6c9c1d14610559578063b11c6b821461056c578063b2fabdb01461057f578063b549a50c14610588578063babcc5391461059b578063bb7b9c76146105ae57600080fd5b806385af30c5146104f757806386a954681461050a5780638da5cb5b1461052e5780638fd3ab801461053f578063968658ef1461054757806398f5c5f41461055057600080fd5b806344c55ffb116102415780635f4eb5af116101fa5780637508d16d116101d45780637508d16d1461046e57806376f3750d1461048157806377d64375146104c95780637efc77fa146104dc57600080fd5b80635f4eb5af14610440578063685e248614610453578063715018a61461046657600080fd5b806344c55ffb146103db5780634a827cee146103f65780634b37c73f146104095780634baf59f31461041c5780634f335d0a1461042f5780635cf76be51461043757600080fd5b80631f3b86fc116102935780631f3b86fc146103645780631fb0383e1461037757806322f08e661461038a57806329a9736a1461039257806329ce1ec5146103ad578063398788f7146103c057600080fd5b806303fd2a45146102db57806308ecd9a614610301578063117be4c21461031c5780631699141b1461032f5780631d2cb02d146103445780631d4eaead1461035b575b600080fd5b6102e461dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b6102e4732c7d8bb6aba4fff56cddbf9ea47ed270a10098f781565b600c546102e4906001600160a01b031681565b61034261033d366004614568565b6106b9565b005b61034d60055481565b6040519081526020016102f8565b61034d60025481565b600a546102e4906001600160a01b031681565b610342610385366004614568565b61079a565b610342610861565b6102e47331ce1540414361cff99e83a05e4ad6d35d42520281565b6103426103bb3660046145a6565b6108ac565b6102e473829619513f202e1bfd8929f656ef96bac73bdae881565b6102e4738a0e3264da08bf999aff5a50aabf5d2dc89fab7981565b610342610404366004614568565b610a0f565b6103426104173660046145a6565b610adb565b61034261042a366004614568565b610bd2565b610342610c37565b61034d60095481565b61034261044e366004614568565b610c82565b6103426104613660046145a6565b610d4e565b610342610fbe565b61034261047c366004614670565b610ff4565b61049461048f3660046146c0565b611889565b604080519788526020880196909652948601939093526060850191909152608084015260a083015260c082015260e0016102f8565b600b546102e4906001600160a01b031681565b6102e473ca01a9d36f47561f03226b6b697b14b9274b1b1081565b600d546102e4906001600160a01b031681565b60015461051e90600160a01b900460ff1681565b60405190151581526020016102f8565b6001546001600160a01b03166102e4565b610342611b64565b61034d60035481565b61034d60075481565b6103426105673660046145a6565b611fb2565b61034261057a366004614568565b6120a1565b61034d60065481565b610342610596366004614568565b61216c565b61051e6105a93660046145a6565b612236565b6105c16105bc366004614701565b612254565b6040516102f8919061475a565b61034d60045481565b61034261226b565b6102e473df090f6675034fde637031c6590fd1bbebc4fa4581565b6103426106083660046145a6565b6125e6565b61034d60085481565b60015461051e90600160a81b900460ff1681565b6102e47316ef18e42a7d72e52e9b213d7eaba269b90a464381565b6103426106533660046145a6565b6126bb565b6103426106663660046145a6565b612756565b6103426106793660046145a6565b61287c565b610686612a45565b6040516102f891906147e2565b61034d6106a13660046146c0565b612aa7565b6103426106b43660046147f5565b613240565b6001546001600160a01b031633146106ec5760405162461bcd60e51b81526004016106e39061482e565b60405180910390fd5b6101f48111156107585760405162461bcd60e51b815260206004820152603160248201527f44474e58436f6e74726f6c6c65723a3a736574496e766573746d656e7446756e60448201527064546178206d617820746178206973203560781b60648201526084016106e3565b600781905560408051338152602081018390527f9eeef0cc2d86a34c82ac6e1a2a250fa5b253f5957aed3379fef7e85bfe40d46b91015b60405180910390a150565b6001546001600160a01b031633146107c45760405162461bcd60e51b81526004016106e39061482e565b6101f48111156108265760405162461bcd60e51b815260206004820152602760248201527f44474e58436f6e74726f6c6c65723a3a7365744275726e546178206d617820746044820152666178206973203560c81b60648201526084016106e3565b600281905560408051338152602081018390527f93dc5eeebb3a74c225e728d46f28c0c10b954698b0a58f2c729d4bb333e39b9b910161078f565b610869613403565b6001805460ff60a81b191690556040513381527fcd85286e83e03f739cbd06db2d1a20e691f3a050557a2e442d490d9130f23134906020015b60405180910390a1565b6001546001600160a01b031633146108d65760405162461bcd60e51b81526004016106e39061482e565b6001600160a01b03811661093d5760405162461bcd60e51b815260206004820152602860248201527f44474e58436f6e74726f6c6c65723a3a616464466163746f72792077726f6e67604482015267206164647265737360c01b60648201526084016106e3565b6001600160a01b03811660009081526011602052604090205460ff16156109ba5760405162461bcd60e51b815260206004820152602b60248201527f44474e58436f6e74726f6c6c65723a3a616464466163746f727920616c72656160448201526a6479206578697374696e6760a81b60648201526084016106e3565b6001600160a01b03811660009081526011602052604090819020805460ff19166001179055517fdc1fd46feba2318f68d29b121fd1f1c88d652dceeda1402b56b0f7188090667b9061078f9083903390614863565b6001546001600160a01b03163314610a395760405162461bcd60e51b81526004016106e39061482e565b6101f4811115610aa05760405162461bcd60e51b815260206004820152602c60248201527f44474e58436f6e74726f6c6c65723a3a7365744d61726b6574696e675461782060448201526b6d617820746178206973203560a01b60648201526084016106e3565b600581905560408051338152602081018390527fff74ad6389d94f406fff03c8e507b1ccd4ceb9fbb5a5e846c838d8ddda7e1025910161078f565b6001546001600160a01b03163314610b055760405162461bcd60e51b81526004016106e39061482e565b6001600160a01b03811660009081526011602052604090205460ff16610b805760405162461bcd60e51b815260206004820152602a60248201527f44474e58436f6e74726f6c6c65723a3a72656d6f7665466163746f7279206e6f60448201526974206578697374696e6760b01b60648201526084016106e3565b6001600160a01b03811660009081526011602052604090819020805460ff19169055517f8abf55dfd8e76ea63b50021c4123f3438348f31da3f1d5eb162209547fb3d9189061078f9083903390614863565b6001546001600160a01b03163314610bfc5760405162461bcd60e51b81526004016106e39061482e565b600881905560408051338152602081018390527f13a6a521ac994307f915a9614b0fe4fd6abca32cb794b3a9d894ef5da522f53a910161078f565b610c3f613403565b6001805460ff60a81b1916600160a81b1790556040513381527f421d189bd87632076d420e3ff0226ca9fcade5da6013bda354b844c8cb18ca79906020016108a2565b6001546001600160a01b03163314610cac5760405162461bcd60e51b81526004016106e39061482e565b6101f4811115610d135760405162461bcd60e51b815260206004820152602c60248201527f44474e58436f6e74726f6c6c65723a3a7365744c69717569646974795461782060448201526b6d617820746178206973203560a01b60648201526084016106e3565b600481905560408051338152602081018390527f32e80931bd06f1f2edf0947358361debdee5e7756a2bf126d353277c37922e20910161078f565b610d56613403565b600260005403610d785760405162461bcd60e51b81526004016106e39061487d565b60026000556001600160a01b0381163014801590610d9e57506001600160a01b03811615155b610e055760405162461bcd60e51b815260206004820152603260248201527f44474e58436f6e74726f6c6c65723a3a6d6967726174696f6e2077726f6e6720604482015271636f6e74726f6c6c6572206164647265737360701b60648201526084016106e3565b600a80546001600160a01b0319166001600160a01b0383169081179091556040805163011fa75760e71b81529051638fd3ab809160048082019260009290919082900301818387803b158015610e5a57600080fd5b505af1158015610e6e573d6000803e3d6000fd5b5050600d546040516370a0823160e01b8152306004820152610f0093506001600160a01b03909116915073ca01a9d36f47561f03226b6b697b14b9274b1b109082906370a08231906024015b602060405180830381865afa158015610ed7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efb91906148b4565b613488565b600b546040516370a0823160e01b8152306004820152610f38916001600160a01b03169061dead9082906370a0823190602401610eba565b600c546040516370a0823160e01b8152306004820152610f82916001600160a01b0316907316ef18e42a7d72e52e9b213d7eaba269b90a46439082906370a0823190602401610eba565b6040513281527fd71a86c9a486d0cb85da9ea9874fea86d3b6989898cc6b0276b9e602a2bb2c27906020015b60405180910390a1506001600055565b6001546001600160a01b03163314610fe85760405162461bcd60e51b81526004016106e39061482e565b610ff260006135b8565b565b610ffc613403565b6001600160a01b0382166110525760405162461bcd60e51b815260206004820152601f60248201527f44474e58436f6e74726f6c6c65723a3a61646450616972206e6f20706169720060448201526064016106e3565b60006001600160a01b0316826001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561109b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110bf91906148cd565b6001600160a01b0316036111205760405162461bcd60e51b815260206004820152602260248201527f44474e58436f6e74726f6c6c65723a3a61646450616972206e6f20666163746f604482015261727960f01b60648201526084016106e3565b60116000836001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611162573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118691906148cd565b6001600160a01b0316815260208101919091526040016000205460ff166111fd5760405162461bcd60e51b815260206004820152602560248201527f44474e58436f6e74726f6c6c65723a3a616464506169722077726f6e6720666160448201526463746f727960d81b60648201526084016106e3565b6001600160a01b03821660009081526010602052604090205460ff161561127a5760405162461bcd60e51b815260206004820152602b60248201527f44474e58436f6e74726f6c6c65723a3a61646450616972207061697220616c7260448201526a656164792065786973747360a81b60648201526084016106e3565b6000826001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112de91906148cd565b90506000836001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611320573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134491906148cd565b600b549091506001600160a01b03838116911614806113705750600b546001600160a01b038281169116145b6113bc5760405162461bcd60e51b815260206004820152601f60248201527f44474e58436f6e74726f6c6c65723a3a61646450616972206e6f2064676e780060448201526064016106e3565b600b546001600160a01b038381169116146113d85780826113db565b81815b8451919350915060010361144d5760405162461bcd60e51b815260206004820152603360248201527f44474e58436f6e74726f6c6c65723a3a6164645061697220737761702070617460448201527268206e6565647320322061646472657373657360681b60648201526084016106e3565b60018351111561175d57806001600160a01b031683600081518110611474576114746148ea565b60200260200101516001600160a01b0316146114ea5760405162461bcd60e51b815260206004820152602f60248201527f44474e58436f6e74726f6c6c65723a3a616464506169722077726f6e6720706160448201526e0d2e4cac840e8ded6cadc40e0c2e8d608b1b60648201526084016106e3565b600c5483516001600160a01b0390911690849061150990600190614916565b81518110611519576115196148ea565b60200260200101516001600160a01b0316146115885760405162461bcd60e51b815260206004820152602860248201527f44474e58436f6e74726f6c6c65723a3a616464506169722077726f6e672077616044820152670ecc2f040e0c2e8d60c31b60648201526084016106e3565b60005b600184516115999190614916565b81101561172d5760006001600160a01b0316856001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160d91906148cd565b6001600160a01b031663e6a4390586848151811061162d5761162d6148ea565b602002602001015187856001611643919061492d565b81518110611653576116536148ea565b60200260200101516040518363ffffffff1660e01b8152600401611678929190614863565b602060405180830381865afa158015611695573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b991906148cd565b6001600160a01b03160361171b5760405162461bcd60e51b8152602060048201526024808201527f44474e58436f6e74726f6c6c65723a3a6164645061697220696e76616c6964206044820152633830b4b960e11b60648201526084016106e3565b8061172581614945565b91505061158b565b506001600160a01b0384166000908152600f602090815260409091208451611757928601906144ee565b506117e0565b600c546001600160a01b03838116911614806117865750600c546001600160a01b038281169116145b6117e05760405162461bcd60e51b815260206004820152602560248201527f44474e58436f6e74726f6c6c65723a3a61646450616972206e6f2062757364206044820152643a37b5b2b760d91b60648201526084016106e3565b6001600160a01b038416600081815260106020526040808220805460ff19166001908117909155600e805491820181559092527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd90910180546001600160a01b031916909217909155517f1955a2778a00e9248184f6eddeb1cd24a10d7dcb8b8e534ea9b112cb329340b19061187b9086908690339061495e565b60405180910390a150505050565b60008060008060008060008088116118fe5760405162461bcd60e51b815260206004820152603260248201527f44474e58436f6e74726f6c6c65723a3a657374696d6174655472616e736665726044820152711199595cc81b9bc8185b5bdd5b9d081cd95d60721b60648201526084016106e3565b6001600160a01b0389811660009081526010602052604080822054928d16825290205460ff91821691166119318b61360a565b801561193b575081155b8015611945575080155b801561196e57506001600160a01b038c16738a0e3264da08bf999aff5a50aabf5d2dc89fab7914155b156119df5760006119816127108c6149a9565b9050600081612710611993828f614916565b61199f906101f46149bd565b6119a991906149dc565b6119b3919061492d565b90506119bf818d614916565b6000806000806000809a509a509a509a509a509a509a5050505050611b57565b6119e88c612236565b806119f757506119f78b612236565b80611a09575081158015611a09575080155b80611a1e5750600154600160a81b900460ff16155b80611a325750600154600160a01b900460ff165b15611a56578960008060008060008098509850985098509850985098505050611b57565b6127106004548b611a6791906149bd565b611a7191906149dc565b97506127106003548b611a8491906149bd565b611a8e91906149dc565b96506127106006548b611aa191906149bd565b611aab91906149dc565b93506127106007548b611abe91906149bd565b611ac891906149dc565b92508284611ad68a8a61492d565b611ae0919061492d565b611aea919061492d565b611af4908b614916565b98508115611b2a576127106002548b611b0d91906149bd565b611b1791906149dc565b9550611b23868a614916565b9850611b54565b6127106005548b611b3b91906149bd565b611b4591906149dc565b9450611b51858a614916565b98505b50505b9397509397509397909450565b611b6c613403565b600260005403611b8e5760405162461bcd60e51b81526004016106e39061487d565b60026000908155600b546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611bdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0191906148b4565b600c546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015611c4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7391906148b4565b90508115611c9257600b54611c92906001600160a01b03163384613488565b8015611caf57600c54611caf906001600160a01b03163383613488565b60005b600e54811015611fa8576000600e8281548110611cd157611cd16148ea565b6000918252602090912001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611d22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d4691906148b4565b90508015611d8057611d80600e8381548110611d6457611d646148ea565b6000918252602090912001546001600160a01b03163383613488565b6000600e8381548110611d9557611d956148ea565b6000918252602091829020015460408051630dfe168160e01b815290516001600160a01b0390921692630dfe1681926004808401938290030181865afa158015611de3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e0791906148cd565b90506000600e8481548110611e1e57611e1e6148ea565b600091825260209182902001546040805163d21220a760e01b815290516001600160a01b039092169263d21220a7926004808401938290030181865afa158015611e6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e9091906148cd565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038416906370a0823190602401602060405180830381865afa158015611eda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611efe91906148b4565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038416906370a0823190602401602060405180830381865afa158015611f48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f6c91906148b4565b90508115611f7f57611f7f843384613488565b8015611f9057611f90833383613488565b50505050508080611fa090614945565b915050611cb2565b5050600160005550565b6001546001600160a01b03163314611fdc5760405162461bcd60e51b81526004016106e39061482e565b6001600160a01b03811660009081526010602052604090205460ff1661204f5760405162461bcd60e51b815260206004820152602260248201527f44474e58436f6e74726f6c6c65723a3a72656d6f766550616972206e6f20706160448201526134b960f11b60648201526084016106e3565b6001600160a01b03811660009081526010602052604090819020805460ff19169055517fcfacf9d602eaae62e56c577b2340ef89b971ff33287fa964a1d17027e8ea2d429061078f9083903390614863565b6001546001600160a01b031633146120cb5760405162461bcd60e51b81526004016106e39061482e565b6101f48111156121315760405162461bcd60e51b815260206004820152602b60248201527f44474e58436f6e74726f6c6c65723a3a736574506c6174666f726d546178206d60448201526a617820746178206973203560a81b60648201526084016106e3565b600681905560408051338152602081018390527fef97289860b81bb154ca263dfa041f54db4b0f4fa21d77b8feffc48c15d5ea27910161078f565b6001546001600160a01b031633146121965760405162461bcd60e51b81526004016106e39061482e565b6101f48111156121fb5760405162461bcd60e51b815260206004820152602a60248201527f44474e58436f6e74726f6c6c65723a3a7365744261636b696e67546178206d616044820152697820746178206973203560b01b60648201526084016106e3565b600381905560408051338152602081018390527f18e9acd84de9e10fffcc9ad33c40cdac33981ae26b4d564cac9a200ccee03ca9910161078f565b6001600160a01b031660009081526012602052604090205460ff1690565b6060612261848484613692565b90505b9392505050565b612273613403565b6002600054036122955760405162461bcd60e51b81526004016106e39061487d565b6002600081815560095490916122aa916149dc565b90506000816009546122bc9190614916565b90506000600d60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612313573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061233791906148cd565b90506000600d60009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561238e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b291906148cd565b90506000600d60009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612409573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061242d91906148cd565b600d54600c5491925060009161244f916001600160a01b03908116911661381d565b9050600061245e858884612254565b90506124b482600081518110612476576124766148ea565b6020026020010151600d60009054906101000a90046001600160a01b0316836000815181106124a7576124a76148ea565b6020026020010151613488565b6124c085828430613c09565b60008061250b87878786600188516124d89190614916565b815181106124e8576124e86148ea565b60200260200101518c73ca01a9d36f47561f03226b6b697b14b9274b1b10613e94565b50600c546040516370a0823160e01b81523060048201529294509092506001600160a01b0316906370a0823190602401602060405180830381865afa158015612558573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061257c91906148b4565b600955604080516001600160a01b038881168252602082018590528716818301526060810183905233608082015290517f50bab42c05c91edd9b96cf71f8f3e529af7991526614c3d91d528bca6e76d4079181900360a00190a15050600160005550505050505050565b6125ee613403565b6001600160a01b03811660009081526012602052604090205460ff166126695760405162461bcd60e51b815260206004820152602a60248201527f44474e58436f6e74726f6c6c65723a3a72656d6f7665436f6e7472616374206e6044820152691bc818dbdb9d1c9858dd60b21b60648201526084016106e3565b6001600160a01b03811660009081526012602052604090819020805460ff19169055517f6a5c7da51a06b9bffbafc4b0b82e404741c2bafa4841947363a6dced874c62b29061078f9033908490614863565b6001546001600160a01b031633146126e55760405162461bcd60e51b81526004016106e39061482e565b6001600160a01b03811661274a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106e3565b612753816135b8565b50565b6001546001600160a01b031633146127805760405162461bcd60e51b81526004016106e39061482e565b6001600160a01b0381166127e75760405162461bcd60e51b815260206004820152602860248201527f44474e58436f6e74726f6c6c65723a3a7365744d61696e50616972207a65726f604482015267206164647265737360c01b60648201526084016106e3565b600d546001600160a01b039081169082160361285a5760405162461bcd60e51b815260206004820152602c60248201527f44474e58436f6e74726f6c6c65723a3a7365744d61696e50616972207061697260448201526b08185b1c9958591e481cd95d60a21b60648201526084016106e3565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b612884613403565b6002600054036128a65760405162461bcd60e51b81526004016106e39061487d565b60026000556001600160a01b0381166129145760405162461bcd60e51b815260206004820152602a60248201527f44474e58436f6e74726f6c6c65723a3a616c6c6f77436f6e7472616374207a65604482015269726f206164647265737360b01b60648201526084016106e3565b61deac196001600160a01b038216016129845760405162461bcd60e51b815260206004820152602c60248201527f44474e58436f6e74726f6c6c65723a3a616c6c6f77436f6e747261637420307860448201526b64656164206164647265737360a01b60648201526084016106e3565b6000816001600160a01b03163b116129f05760405162461bcd60e51b815260206004820152602960248201527f44474e58436f6e74726f6c6c65723a3a616c6c6f77436f6e7472616374206e6f6044820152680818dbdb9d1c9858dd60ba1b60648201526084016106e3565b6001600160a01b03811660009081526012602052604090819020805460ff19166001179055517f21d9dc6bbcbac2ec1efea972942d14c693b61cc8ea9bdbb89d5d5baf81fa676390610fae9033908490614863565b6060600e805480602002602001604051908101604052809291908181526020018280548015612a9d57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612a7f575b5050505050905090565b6000612ab1613403565b60008211612b145760405162461bcd60e51b815260206004820152602a60248201527f44474e58436f6e74726f6c6c65723a3a7472616e7366657246656573206e6f20604482015269185b5bdd5b9d081cd95d60b21b60648201526084016106e3565b6001600160a01b0383811660009081526010602052604080822054928716825290205460ff9182169116612b478561360a565b8015612b51575081155b8015612b5b575080155b8015612b8457506001600160a01b038616738a0e3264da08bf999aff5a50aabf5d2dc89fab7914155b15612c0c576000612b97612710866149a9565b9050600081612710612ba98289614916565b612bb5906101f46149bd565b612bbf91906149dc565b612bc9919061492d565b600b54909150612bf7906001600160a01b0316732c7d8bb6aba4fff56cddbf9ea47ed270a10098f783613488565b612c018187614916565b945050505050612264565b612c1586612236565b80612c245750612c2485612236565b80612c36575081158015612c36575080155b80612c4b5750600154600160a81b900460ff16155b80612c5f5750600154600160a01b900460ff165b15612c6e578392505050612264565b6000806000806000806000612c848d8d8d611889565b9650965096509650965096509650600084888d612ca19190614916565b612cab9190614916565b6001805460ff60a01b1916600160a01b179055979a508a9790508415612ce457600b54612ce4906001600160a01b031661dead87613488565b600e54600110156130fd5760008a612cfc578e612cfe565b8d5b600c546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015612d4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d7091906148b4565b90506000612d7e8484614018565b9150506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612dc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612de591906148cd565b600b54909150600090612e029084906001600160a01b031661381d565b90506000612e11838884612254565b9050612e4582600081518110612e2957612e296148ea565b602002602001015185836000815181106124a7576124a76148ea565b612e5183828430613c09565b600c546040516370a0823160e01b815230600482015260009187916001600160a01b03909116906370a0823190602401602060405180830381865afa158015612e9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ec291906148b4565b612ecc9190614916565b9050600088612edb8f846149bd565b612ee591906149dc565b9050600089612ef48d856149bd565b612efe91906149dc565b905060008a612f0d8d866149bd565b612f1791906149dc565b90508215612f4a57600c54612f4a906001600160a01b03167331ce1540414361cff99e83a05e4ad6d35d42520285613488565b8115612fd05760006064612f5f8460286149bd565b612f6991906149dc565b9050612f758184614916565b600c54909350612fa3906001600160a01b031673df090f6675034fde637031c6590fd1bbebc4fa4583613488565b600c54612fce906001600160a01b031673ca01a9d36f47561f03226b6b697b14b9274b1b1085613488565b505b801561300157600c54613001906001600160a01b031673829619513f202e1bfd8929f656ef96bac73bdae883613488565b8d156130505760008b8f8661301691906149bd565b61302091906149dc565b600c5490915061304e906001600160a01b03167316ef18e42a7d72e52e9b213d7eaba269b90a464383613488565b505b600c546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015613098573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130bc91906148b4565b600955600d546001600160a01b038b81169116148015906130e1575060085460095410155b156130ee576130ee61226b565b50505050505050505050613222565b613107878c61492d565b9a50851561313a57600b5461313a906001600160a01b03167331ce1540414361cff99e83a05e4ad6d35d42520288613488565b82156131c0576000606461314f8560286149bd565b61315991906149dc565b90506131658185614916565b600b54909450613193906001600160a01b031673df090f6675034fde637031c6590fd1bbebc4fa4583613488565b600b546131be906001600160a01b031673ca01a9d36f47561f03226b6b697b14b9274b1b1086613488565b505b81156131f157600b546131f1906001600160a01b031673829619513f202e1bfd8929f656ef96bac73bdae884613488565b831561322257600b54613222906001600160a01b03167316ef18e42a7d72e52e9b213d7eaba269b90a464386613488565b50506001805460ff60a01b1916905550505050505050509392505050565b613248613403565b60026000540361326a5760405162461bcd60e51b81526004016106e39061487d565b6002600055600b546001600160a01b0380841691160361329c5760405162461bcd60e51b81526004016106e3906149f0565b600c546001600160a01b038084169116036132c95760405162461bcd60e51b81526004016106e3906149f0565b60005b600e5481101561333757826001600160a01b0316600e82815481106132f3576132f36148ea565b6000918252602090912001546001600160a01b0316036133255760405162461bcd60e51b81526004016106e3906149f0565b8061332f81614945565b9150506132cc565b506040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa15801561337f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133a391906148b4565b90506133b0838383613488565b604080513381526001600160a01b03851660208201529081018290527f16a1412f01b73c390eb2548427101644aa86c1443c272f73df00fb74c48fe4999060600160405180910390a15050600160005550565b3360009081526012602052604090205460ff168061342b57506001546001600160a01b031633145b610ff25760405162461bcd60e51b815260206004820152602860248201527f44474e58436f6e74726f6c6c65723a3a5f6f6e6c79416c6c6f776564206e6f7460448201526708185b1b1bddd95960c21b60648201526084016106e3565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291516000928392908716916134e49190614a6d565b6000604051808303816000865af19150503d8060008114613521576040519150601f19603f3d011682016040523d82523d6000602084013e613526565b606091505b50915091508180156135505750805115806135505750808060200190518101906135509190614a89565b6135b15760405162461bcd60e51b815260206004820152602c60248201527f44474e58436f6e74726f6c6c65723a3a736166655472616e736665722054524160448201526b1394d1915497d1905253115160a21b60648201526084016106e3565b5050505050565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b604051638864fae960e01b81526001600160a01b03821660048201526000908190738a0e3264da08bf999aff5a50aabf5d2dc89fab7990638864fae990602401602060405180830381865afa158015613667573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061368b91906148b4565b1192915050565b60606002825110156136e65760405162461bcd60e51b815260206004820152601960248201527f44474e584c6962726172793a20494e56414c49445f504154480000000000000060448201526064016106e3565b815167ffffffffffffffff811115613700576137006145c3565b604051908082528060200260200182016040528015613729578160200160208202803683370190505b5090508281600081518110613740576137406148ea565b60200260200101818152505060005b6001835161375d9190614916565b811015613815576000806137b08786858151811061377d5761377d6148ea565b602002602001015187866001613793919061492d565b815181106137a3576137a36148ea565b602002602001015161415b565b915091506137d88484815181106137c9576137c96148ea565b60200260200101518383614289565b846137e485600161492d565b815181106137f4576137f46148ea565b6020026020010181815250505050808061380d90614945565b91505061374f565b509392505050565b6060600080836001600160a01b0316856001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561386a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061388e91906148cd565b6001600160a01b03161461396557846001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156138da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138fe91906148cd565b856001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561393c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061396091906148cd565b613a29565b846001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139c791906148cd565b856001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a2991906148cd565b6001600160a01b0387166000908152600f602052604081205492945090925003613abb576040805160028082526060820183529091602083019080368337019050509250818184600081518110613a8257613a826148ea565b6020026020010185600181518110613a9c57613a9c6148ea565b6001600160a01b03938416602091820292909201015291169052613c01565b6001600160a01b0385166000908152600f6020526040902054613adf90600161492d565b67ffffffffffffffff811115613af757613af76145c3565b604051908082528060200260200182016040528015613b20578160200160208202803683370190505b5092508183600081518110613b3757613b376148ea565b60200260200101906001600160a01b031690816001600160a01b03168152505060005b6001600160a01b0386166000908152600f6020526040902054811015613bff576001600160a01b0386166000908152600f60205260409020805482908110613ba457613ba46148ea565b6000918252602090912001546001600160a01b031684613bc583600161492d565b81518110613bd557613bd56148ea565b6001600160a01b039092166020928302919091019091015280613bf781614945565b915050613b5a565b505b505092915050565b60005b60018351613c1a9190614916565b8110156135b157600080848381518110613c3657613c366148ea565b602002602001015185846001613c4c919061492d565b81518110613c5c57613c5c6148ea565b6020026020010151915091506000613c748383614362565b509050600087613c8586600161492d565b81518110613c9557613c956148ea565b60200260200101519050600080836001600160a01b0316866001600160a01b031614613cc357826000613cc7565b6000835b91509150600060028a51613cdb9190614916565b8810613ce75788613d79565b6001600160a01b038c1663e6a43905878c613d038c600261492d565b81518110613d1357613d136148ea565b60200260200101516040518363ffffffff1660e01b8152600401613d38929190614863565b602060405180830381865afa158015613d55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d7991906148cd565b60405163e6a4390560e01b81529091506001600160a01b038d169063e6a4390590613daa908a908a90600401614863565b602060405180830381865afa158015613dc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613deb91906148cd565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f191660200182016040528015613e28576020820181803683370190505b506040518563ffffffff1660e01b8152600401613e489493929190614aab565b600060405180830381600087803b158015613e6257600080fd5b505af1158015613e76573d6000803e3d6000fd5b50505050505050505050508080613e8c90614945565b915050613c0c565b6000806000806000613ea78b8b8b61415b565b91509150816000148015613eb9575080155b15613ec957879450869350613f11565b6000613ed6898484614444565b9050878111613eea57889550935083613f0f565b6000613ef7898486614444565b905089811115613f0957613f09614afb565b95508794505b505b60405163e6a4390560e01b81526000906001600160a01b038d169063e6a4390590613f42908e908e90600401614863565b602060405180830381865afa158015613f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f8391906148cd565b9050613f908b8288613488565b613f9b8a8287613488565b6040516335313c2160e11b81526001600160a01b038881166004830152821690636a627842906024016020604051808303816000875af1158015613fe3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061400791906148b4565b935050505096509650969350505050565b600e5460009081901580159061402e5750600084115b15614154576000805b600e54811015614151576000600e8281548110614056576140566148ea565b6000918252602090912001546001600160a01b0390811691508616811461413e57600b546000906140919083906001600160a01b031661381d565b90506000614101836001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156140d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140fa91906148cd565b8a84612254565b905080600182516141129190614916565b81518110614122576141226148ea565b602002602001015194508685111561413b578496508295505b50505b508061414981614945565b915050614037565b50505b9250929050565b600080600061416a8585614362565b509050600080876001600160a01b031663e6a4390588886040518363ffffffff1660e01b815260040161419e929190614863565b602060405180830381865afa1580156141bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141df91906148cd565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561421c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142409190614b28565b506001600160701b031691506001600160701b03169150826001600160a01b0316876001600160a01b03161461427757808261427a565b81815b90999098509650505050505050565b60008084116142e95760405162461bcd60e51b815260206004820152602660248201527f44474e584c6962726172793a20494e53554646494349454e545f494e5055545f604482015265105353d5539560d21b60648201526084016106e3565b6000831180156142f95750600082115b6143155760405162461bcd60e51b81526004016106e390614b78565b6000614323856103e56144d6565b9050600061433182856144d6565b9050600061434b83614345886103e86144d6565b906144e2565b905061435781836149dc565b979650505050505050565b600080826001600160a01b0316846001600160a01b0316036143c65760405162461bcd60e51b815260206004820181905260248201527f44474e584c6962726172793a204944454e544943414c5f41444452455353455360448201526064016106e3565b826001600160a01b0316846001600160a01b0316106143e65782846143e9565b83835b90925090506001600160a01b0382166141545760405162461bcd60e51b815260206004820152601960248201527f44474e584c6962726172793a205a45524f5f414444524553530000000000000060448201526064016106e3565b60008084116144955760405162461bcd60e51b815260206004820181905260248201527f44474e584c6962726172793a20494e53554646494349454e545f414d4f554e5460448201526064016106e3565b6000831180156144a55750600082115b6144c15760405162461bcd60e51b81526004016106e390614b78565b826144cc85846144d6565b61226191906149dc565b600061226482846149bd565b6000612264828461492d565b828054828255906000526020600020908101928215614543579160200282015b8281111561454357825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061450e565b5061454f929150614553565b5090565b5b8082111561454f5760008155600101614554565b60006020828403121561457a57600080fd5b5035919050565b6001600160a01b038116811461275357600080fd5b80356145a181614581565b919050565b6000602082840312156145b857600080fd5b813561226481614581565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126145ea57600080fd5b8135602067ffffffffffffffff80831115614607576146076145c3565b8260051b604051601f19603f8301168101818110848211171561462c5761462c6145c3565b60405293845285810183019383810192508785111561464a57600080fd5b83870191505b848210156143575761466182614596565b83529183019190830190614650565b6000806040838503121561468357600080fd5b823561468e81614581565b9150602083013567ffffffffffffffff8111156146aa57600080fd5b6146b6858286016145d9565b9150509250929050565b6000806000606084860312156146d557600080fd5b83356146e081614581565b925060208401356146f081614581565b929592945050506040919091013590565b60008060006060848603121561471657600080fd5b833561472181614581565b925060208401359150604084013567ffffffffffffffff81111561474457600080fd5b614750868287016145d9565b9150509250925092565b6020808252825182820181905260009190848201906040850190845b8181101561479257835183529284019291840191600101614776565b50909695505050505050565b600081518084526020808501945080840160005b838110156147d75781516001600160a01b0316875295820195908201906001016147b2565b509495945050505050565b602081526000612264602083018461479e565b6000806040838503121561480857600080fd5b823561481381614581565b9150602083013561482381614581565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6001600160a01b0392831681529116602082015260400190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6000602082840312156148c657600080fd5b5051919050565b6000602082840312156148df57600080fd5b815161226481614581565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008282101561492857614928614900565b500390565b6000821982111561494057614940614900565b500190565b60006001820161495757614957614900565b5060010190565b600060018060a01b03808616835260606020840152614980606084018661479e565b9150808416604084015250949350505050565b634e487b7160e01b600052601260045260246000fd5b6000826149b8576149b8614993565b500690565b60008160001904831182151516156149d7576149d7614900565b500290565b6000826149eb576149eb614993565b500490565b6020808252602d908201527f44474e58436f6e74726f6c6c65723a3a7265636f766572546f6b656e204e6f2060408201526c191c985a5b88185b1b1bddd959609a1b606082015260800190565b60005b83811015614a58578181015183820152602001614a40565b83811115614a67576000848401525b50505050565b60008251614a7f818460208701614a3d565b9190910192915050565b600060208284031215614a9b57600080fd5b8151801515811461226457600080fd5b84815283602082015260018060a01b03831660408201526080606082015260008251806080840152614ae48160a0850160208701614a3d565b601f01601f19169190910160a00195945050505050565b634e487b7160e01b600052600160045260246000fd5b80516001600160701b03811681146145a157600080fd5b600080600060608486031215614b3d57600080fd5b614b4684614b11565b9250614b5460208501614b11565b9150604084015163ffffffff81168114614b6d57600080fd5b809150509250925092565b60208082526023908201527f44474e584c6962726172793a20494e53554646494349454e545f4c495155494460408201526249545960e81b60608201526080019056fea26469706673582212207f4d27ddabb443a1c2f391a48c09d3b82617d0baa4eb7253600c11d1b5fdd07064736f6c634300080d003344474e58436f6e74726f6c6c65723a3a636f6e7374727563746f722077726f6e4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657200000000000000000000000051e48670098173025c477d9aa3f0eff7bf9f7812000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c700000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000bcabb94006400ed84c3699728d6ecbaa06665c8900000000000000000000000000000000000000000000000000000000000000020000000000000000000000009ad6c38be94206ca50bb0d90783181662f0cfa10000000000000000000000000efa94de7a4656d787667c749f7e1223d71e9fd880000000000000000000000000000000000000000000000000000000000000002000000000000000000000000bcabb94006400ed84c3699728d6ecbaa06665c890000000000000000000000004a8323a220d554c03733612d415d465b3f21f12e
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000051e48670098173025c477d9aa3f0eff7bf9f7812000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c700000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000bcabb94006400ed84c3699728d6ecbaa06665c8900000000000000000000000000000000000000000000000000000000000000020000000000000000000000009ad6c38be94206ca50bb0d90783181662f0cfa10000000000000000000000000efa94de7a4656d787667c749f7e1223d71e9fd880000000000000000000000000000000000000000000000000000000000000002000000000000000000000000bcabb94006400ed84c3699728d6ecbaa06665c890000000000000000000000004a8323a220d554c03733612d415d465b3f21f12e
-----Decoded View---------------
Arg [0] : _dgnx (address): 0x51e48670098173025c477d9aa3f0eff7bf9f7812
Arg [1] : _wavax (address): 0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7
Arg [2] : _factories (address[]): 0x9ad6c38be94206ca50bb0d90783181662f0cfa10,0xefa94de7a4656d787667c749f7e1223d71e9fd88
Arg [3] : _pairs (address[]): 0xbcabb94006400ed84c3699728d6ecbaa06665c89,0x4a8323a220d554c03733612d415d465b3f21f12e
Arg [4] : _mainPair (address): 0xbcabb94006400ed84c3699728d6ecbaa06665c89
-----Encoded View---------------
11 Constructor Arguments found :
Arg [0] : 00000000000000000000000051e48670098173025c477d9aa3f0eff7bf9f7812
Arg [1] : 000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c7
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [4] : 000000000000000000000000bcabb94006400ed84c3699728d6ecbaa06665c89
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [6] : 0000000000000000000000009ad6c38be94206ca50bb0d90783181662f0cfa10
Arg [7] : 000000000000000000000000efa94de7a4656d787667c749f7e1223d71e9fd88
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [9] : 000000000000000000000000bcabb94006400ed84c3699728d6ecbaa06665c89
Arg [10] : 0000000000000000000000004a8323a220d554c03733612d415d465b3f21f12e
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.