ERC-20
Overview
Max Total Supply
100,000,000 DPU
Holders
161
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
246,563.54048423548562259 DPUValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
DEGGER
Compiler Version
v0.8.24+commit.e11b9ed9
Contract Source Code (Solidity Standard Json-Input format)
/* DEGGER - Your rig to unlocking the power of crypto mining Website: https://degger.io Gitdoc: https://docs.degger.io/ dAPP: https://t.me/DeggerOfficialBot Telegram: https://t.me/Degger_official Twitter: https://twitter.com/Degger_official */ // SPDX-License-Identifier: MIT pragma solidity >=0.8.10 >=0.8.0 <0.9.0; pragma experimental ABIEncoderV2; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { _transferOwnership(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer( address recipient, uint256 amount ) external returns (bool); function allowance( address owner, address spender ) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf( address account ) public view virtual override returns (uint256) { return _balances[account]; } function transfer( address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance( address owner, address spender ) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve( address spender, uint256 amount ) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require( currentAllowance >= amount, "ERC20: transfer amount exceeds allowance" ); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance( address spender, uint256 addedValue ) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender] + addedValue ); return true; } function decreaseAllowance( address spender, uint256 subtractedValue ) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require( currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero" ); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require( senderBalance >= amount, "ERC20: transfer amount exceeds balance" ); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeMath { 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); } } function trySub( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair( address tokenA, address tokenB ) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair( address tokenA, address tokenB ) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance( address owner, address spender ) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn( address to ) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract DEGGER is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; address public constant deadAddress = address(0xdead); bool private swapping; address private marketingWallet; address private developmentWallet; uint256 public percentForLPBurn = 0; bool public lpBurnEnabled = false; uint256 public lpBurnFrequency = 3600 seconds; uint256 public lastLpBurnTime; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = true; uint256 public manualBurnFrequency = 30 minutes; uint256 public lastManualLpBurnTime; mapping(address => uint256) private _holderLastTransferTimestamp; bool public transferDelayEnabled = true; struct FeeSet { uint8 buyTotalFees; uint8 buyMarketingFee; uint8 buyLiquidityFee; uint8 buyDevelopmentFee; // uint8 sellTotalFees; uint8 sellMarketingFee; uint8 sellLiquidityFee; uint8 sellDevelopmentFee; // uint8 finalBuyingFees; uint8 finalBuyMarketingFee; uint8 finalBuyLiquidityFee; uint8 finalBuyDevelopmentFee; // uint8 finalSellingFees; uint8 finalSellMarketingFee; uint8 finalSellLiquidityFee; uint8 finalSellDevelopmentFee; } FeeSet public feeSet; uint256 public maxSwapToFinal; uint16 public swapCount = 0; bool public stopCount = false; uint256 public lastTaxSaleHeight = 0; uint256 public lastTaxSaleAmount = 0; uint256 public tokensForMarketing; uint256 public tokensForLiquidity; uint256 public tokensForDev; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedMaxTransactionAmount; mapping(address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router( address indexed newAddress, address indexed oldAddress ); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event marketingWalletUpdated( address indexed newWallet, address indexed oldWallet ); event developmentWalletUpdated( address indexed newWallet, address indexed oldWallet ); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event AutoNukeLP(); event ManualNukeLP(); constructor() ERC20("Degger", "DPU") { uint8 _buyMarketingFee = 2; uint8 _buyLiquidityFee = 0; uint8 _buyDevelopmentFee = 2; uint8 _sellMarketingFee = 2; uint8 _sellLiquidityFee = 0; uint8 _sellDevelopmentFee = 2; uint8 _finalBuyMarketingFee = 2; uint8 _finalBuyLiquidityFee = 0; uint8 _finalBuyDevelopmentFee = 2; uint8 _finalSellMarketingFee = 2; uint8 _finalSellLiquidityFee = 0; uint8 _finalSellDevelopmentFee = 2; uint256 _maxSwapToFinal = 100; uint256 totalSupply = 100000000 * 1e18; maxTransactionAmount = 1400000 * 1e18; maxWallet = 1400000 * 1e18; swapTokensAtAmount = (totalSupply * 5) / 10000; marketingWallet = address(0x0649D83b88061a76d10FA7BE72148245FA9860D4); developmentWallet = address(0xf1aDA43188DfcBB3A1199383a0ba5793A95a2Ab9); maxSwapToFinal = _maxSwapToFinal; feeSet.buyMarketingFee = _buyMarketingFee; feeSet.buyLiquidityFee = _buyLiquidityFee; feeSet.buyDevelopmentFee = _buyDevelopmentFee; feeSet.buyTotalFees = feeSet.buyMarketingFee + feeSet.buyLiquidityFee + feeSet.buyDevelopmentFee; feeSet.sellMarketingFee = _sellMarketingFee; feeSet.sellLiquidityFee = _sellLiquidityFee; feeSet.sellDevelopmentFee = _sellDevelopmentFee; feeSet.sellTotalFees = feeSet.sellMarketingFee + feeSet.sellLiquidityFee + feeSet.sellDevelopmentFee; feeSet.finalBuyMarketingFee = _finalBuyMarketingFee; feeSet.finalBuyLiquidityFee = _finalBuyLiquidityFee; feeSet.finalBuyDevelopmentFee = _finalBuyDevelopmentFee; feeSet.finalBuyingFees = feeSet.finalBuyMarketingFee + feeSet.finalBuyLiquidityFee + feeSet.finalBuyDevelopmentFee; feeSet.finalSellMarketingFee = _finalSellMarketingFee; feeSet.finalSellLiquidityFee = _finalSellLiquidityFee; feeSet.finalSellDevelopmentFee = _finalSellDevelopmentFee; feeSet.finalSellingFees = feeSet.finalSellMarketingFee + feeSet.finalSellLiquidityFee + feeSet.finalSellDevelopmentFee; excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); _mint(msg.sender, totalSupply); } receive() external payable {} function createPair() external onlyOwner { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); } function enableTrade() external onlyOwner { tradingActive = true; swapEnabled = true; lastLpBurnTime = block.timestamp; } function removeLimits() external onlyOwner returns (bool) { limitsInEffect = false; return true; } function disableTransferDelay() external onlyOwner returns (bool) { transferDelayEnabled = false; return true; } function updateSwapTokensAtAmount( uint256 newAmount ) external onlyOwner returns (bool) { require( newAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply." ); require( newAmount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply." ); swapTokensAtAmount = newAmount; return true; } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set maxTransactionAmount lower than 0.1%" ); maxTransactionAmount = newNum * (10 ** 18); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 5) / 1000) / 1e18, "Cannot set maxWallet lower than 0.5%" ); maxWallet = newNum * (10 ** 18); } function excludeFromMaxTransaction( address updAds, bool isEx ) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } function updateSwapEnabled(bool enabled) external onlyOwner { swapEnabled = enabled; } function updateBuyFees( uint8 _marketingFee, uint8 _liquidityFee, uint8 _developmentFee ) external onlyOwner { feeSet.buyMarketingFee = _marketingFee; feeSet.buyLiquidityFee = _liquidityFee; feeSet.buyDevelopmentFee = _developmentFee; uint256 newBuyTotalFees = feeSet.buyMarketingFee + feeSet.buyLiquidityFee + feeSet.buyDevelopmentFee; require(!stopCount, "Final fees are already set"); require(newBuyTotalFees <= 100, "Total fees cannot exceed 100%"); feeSet.buyTotalFees = uint8(newBuyTotalFees); // override the fees if the stopCount is true if (stopCount) { updateFeesToFinal(); } } function updateFeesToFinal() private { feeSet.buyMarketingFee = feeSet.finalBuyMarketingFee; feeSet.buyLiquidityFee = feeSet.finalBuyLiquidityFee; feeSet.buyDevelopmentFee = feeSet.finalBuyDevelopmentFee; feeSet.buyTotalFees = feeSet.finalBuyingFees; feeSet.sellMarketingFee = feeSet.finalSellMarketingFee; feeSet.sellLiquidityFee = feeSet.finalSellLiquidityFee; feeSet.sellDevelopmentFee = feeSet.finalSellDevelopmentFee; feeSet.sellTotalFees = feeSet.finalSellingFees; } function updateSellFees( uint8 _marketingFee, uint8 _liquidityFee, uint8 _developmentFee ) external onlyOwner { feeSet.sellMarketingFee = _marketingFee; feeSet.sellLiquidityFee = _liquidityFee; feeSet.sellDevelopmentFee = _developmentFee; uint256 newSellTotalFees = feeSet.sellMarketingFee + feeSet.sellLiquidityFee + feeSet.sellDevelopmentFee; require(newSellTotalFees <= 100, "Total fees cannot exceed 100%"); feeSet.sellTotalFees = uint8(newSellTotalFees); // override the fees if the stopCount is true if (stopCount) { updateFeesToFinal(); } } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair( address pair, bool value ) public onlyOwner { require( pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs" ); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updateMarketingWalletInfo( address newMarketingWallet ) external onlyOwner { emit marketingWalletUpdated(newMarketingWallet, marketingWallet); marketingWallet = newMarketingWallet; } function updateDevelopmentWalletInfo(address newWallet) external onlyOwner { emit developmentWalletUpdated(newWallet, developmentWallet); developmentWallet = newWallet; } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } event BoughtEarly(address indexed sniper); function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if (amount == 0) { super._transfer(from, to, 0); return; } if (limitsInEffect) { if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ) { if (!tradingActive) { require( _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active." ); } // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. if (transferDelayEnabled) { if ( to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair) ) { require( _holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed." ); _holderLastTransferTimestamp[tx.origin] = block.number; } } //when buy if ( automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to] ) { require( amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount." ); require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } //when sell else if ( automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from] ) { require( amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount." ); } else if (!_isExcludedMaxTransactionAmount[to]) { require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } if ( !swapping && automatedMarketMakerPairs[to] && lpBurnEnabled && block.timestamp >= lastLpBurnTime + lpBurnFrequency && !_isExcludedFromFees[from] ) { autoBurnLiquidityPairTokens(); } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; bool isSell = false; // only take fees on buys/sells, do not take on wallet transfers if (takeFee) { if (!stopCount) { swapCount += 1; if (swapCount > maxSwapToFinal) { stopCount = true; updateFeesToFinal(); } } // on sell if (automatedMarketMakerPairs[to] && feeSet.sellTotalFees > 0) { isSell = true; fees = amount.mul(feeSet.sellTotalFees).div(100); } // on buy else if ( automatedMarketMakerPairs[from] && feeSet.buyTotalFees > 0 ) { fees = amount.mul(feeSet.buyTotalFees).div(100); } if (fees > 0) { super._transfer(from, address(this), fees); if (isSell) { swapBeforeSell(amount); } } amount -= fees; } super._transfer(from, to, amount); } function swapBeforeSell(uint256 amount) private { uint256 twoPercent = (totalSupply() * 2) / 100; if (lastTaxSaleHeight == block.number) { // same block if (lastTaxSaleAmount >= twoPercent) { return; } else { // lastTaxSaleAmount < 2% && amount + lastTaxSaleAmount < 2% amount = amount < (twoPercent - lastTaxSaleAmount) ? amount : (twoPercent - lastTaxSaleAmount); // amount < tokenBalance uint256 tokenBalance = balanceOf(address(this)); amount = tokenBalance < amount ? tokenBalance : amount; lastTaxSaleAmount += amount; } } else { // new block // amount <= 2% of totalSupply amount = amount < twoPercent ? amount : twoPercent; // amount <= balance uint256 tokenBalance = balanceOf(address(this)); amount = tokenBalance < amount ? tokenBalance : amount; // reset lastTaxSaleHeight to now height lastTaxSaleHeight = block.number; lastTaxSaleAmount = amount; } if (amount > 0) { swapTokensForEth(amount); } } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable deadAddress, block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev; bool success; if (contractBalance == 0 || totalTokensToSwap == 0) { return; } if (contractBalance > swapTokensAtAmount * 20) { contractBalance = swapTokensAtAmount * 20; } // Halve the amount of liquidity tokens uint256 liquidityTokens = (contractBalance * tokensForLiquidity) / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div( totalTokensToSwap ); uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev; tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDev = 0; (success, ) = address(developmentWallet).call{value: ethForDev}(""); if (liquidityTokens > 0 && ethForLiquidity > 0) { addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify( amountToSwapForETH, ethForLiquidity, tokensForLiquidity ); } (success, ) = address(marketingWallet).call{ value: address(this).balance }(""); } function manualswap() external { require( _msgSender() == developmentWallet || _msgSender() == marketingWallet ); uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualsend() external { require( _msgSender() == developmentWallet || _msgSender() == marketingWallet ); bool success; (success, ) = address(marketingWallet).call{ value: address(this).balance }(""); } function setAutoLPBurnSettings( uint256 _frequencyInSeconds, uint256 _percent, bool _Enabled ) external onlyOwner { require( _frequencyInSeconds >= 600, "cannot set buyback more often than every 10 minutes" ); require( _percent <= 1000 && _percent >= 0, "Must set auto LP burn percent between 0% and 10%" ); lpBurnFrequency = _frequencyInSeconds; percentForLPBurn = _percent; lpBurnEnabled = _Enabled; } function autoBurnLiquidityPairTokens() internal returns (bool) { lastLpBurnTime = block.timestamp; // get balance of liquidity pair uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair); // calculate amount to burn uint256 amountToBurn = liquidityPairBalance.mul(percentForLPBurn).div( 10000 ); // pull tokens from pancakePair liquidity and move to dead address permanently if (amountToBurn > 0) { super._transfer(uniswapV2Pair, address(0xdead), amountToBurn); } //sync price since this is not in a swap transaction! IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair); pair.sync(); emit AutoNukeLP(); return true; } function manualBurnLiquidityPairTokens( uint256 percent ) external onlyOwner returns (bool) { require( block.timestamp > lastManualLpBurnTime + manualBurnFrequency, "Must wait for cooldown to finish" ); require(percent <= 1000, "May not nuke more than 10% of tokens in LP"); lastManualLpBurnTime = block.timestamp; // get balance of liquidity pair uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair); // calculate amount to burn uint256 amountToBurn = liquidityPairBalance.mul(percent).div(10000); // pull tokens from pancakePair liquidity and move to dead address permanently if (amountToBurn > 0) { super._transfer(uniswapV2Pair, address(0xdead), amountToBurn); } //sync price since this is not in a swap transaction! IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair); pair.sync(); emit ManualNukeLP(); return true; } }
{ "optimizer": { "enabled": true, "runs": 200 }, "viaIR": true, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "remappings": [] }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","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":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"developmentWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeSet","outputs":[{"internalType":"uint8","name":"buyTotalFees","type":"uint8"},{"internalType":"uint8","name":"buyMarketingFee","type":"uint8"},{"internalType":"uint8","name":"buyLiquidityFee","type":"uint8"},{"internalType":"uint8","name":"buyDevelopmentFee","type":"uint8"},{"internalType":"uint8","name":"sellTotalFees","type":"uint8"},{"internalType":"uint8","name":"sellMarketingFee","type":"uint8"},{"internalType":"uint8","name":"sellLiquidityFee","type":"uint8"},{"internalType":"uint8","name":"sellDevelopmentFee","type":"uint8"},{"internalType":"uint8","name":"finalBuyingFees","type":"uint8"},{"internalType":"uint8","name":"finalBuyMarketingFee","type":"uint8"},{"internalType":"uint8","name":"finalBuyLiquidityFee","type":"uint8"},{"internalType":"uint8","name":"finalBuyDevelopmentFee","type":"uint8"},{"internalType":"uint8","name":"finalSellingFees","type":"uint8"},{"internalType":"uint8","name":"finalSellMarketingFee","type":"uint8"},{"internalType":"uint8","name":"finalSellLiquidityFee","type":"uint8"},{"internalType":"uint8","name":"finalSellDevelopmentFee","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastManualLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastTaxSaleAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastTaxSaleHeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnLiquidityPairTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxSwapToFinal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopCount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapCount","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"_marketingFee","type":"uint8"},{"internalType":"uint8","name":"_liquidityFee","type":"uint8"},{"internalType":"uint8","name":"_developmentFee","type":"uint8"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevelopmentWalletInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWalletInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_marketingFee","type":"uint8"},{"internalType":"uint8","name":"_liquidityFee","type":"uint8"},{"internalType":"uint8","name":"_developmentFee","type":"uint8"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080346200070b576001600160401b0390604090808201838111828210176200061657825260068152602090652232b3b3b2b960d11b8282015282519383850185811082821117620006165784526003918286526244505560e81b8487015280519180831162000616578354926001928385811c9516801562000700575b87861014620006ec578190601f9586811162000699575b50879086831160011462000636575f926200062a575b50505f1982871b1c191690831b1784555b8651908111620006165760049384548381811c911680156200060b575b87821014620005f857848111620005b0575b50858483116001146200054957829394959697985f936200053d575b505082841b925f19911b1c19161783555b60058054336001600160a01b03198083168217845593926001600160a01b03926200047b929084167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35f600a5573f1ada43188dfcbb3a1199383a0ba5793a95a2ab960ff199586600b5416600b55610e10600c5562ffffff196201000181601154161760115561070860125586886015541617601555601854166018555f6019555f601a556a01287626ee52197b00000080600e55601055690a968163f0a57b400000600f55730649d83b88061a76d10fa7be72148245fa9860d481600854161760085560095416176009556064601755620002696d0200020000000000000000000000690200020000000000000065020002000200601654630200020063ffffff001982161760ff9581876200025d81809560101c16828460081c166200070f565b9160181c16906200070f565b169065ff00ffffffff1916171764ff00000000620002b967020000000000000067ffff0000000000001984161786620002ad818360301c16828460281c166200070f565b9160381c16906200070f565b8d1b169069ff00ffff00ff000000001916171768ff00000000000000006200031b6b0200000000000000000000006bffff0000000000000000000019841617856200030f818360501c16828460481c166200070f565b9160581c16906200070f565b8d1b16906dff00ffff00ff0000000000000000191617176cff00000000000000000000000062000378600160791b938461ffff60701b19851617906200036c818360701c16828460681c166200070f565b9160781c16906200070f565b60601b16906fffff00ff00000000000000000000000019161717601655335f52601e8852885f2084868254161790558851928484527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df793848a3392a2620003e433828454161462000738565b305f52601e8952895f2085878254161790558951858152848a3092a26200041033828454161462000738565b61dead8094815f52601e8b528b5f2087898254161790558a8c51888152a2808254166200043f33821462000738565b5f52868952895f2085878254161790556200045f33828454161462000738565b305f52868952895f208587825416179055339154161462000738565b5f52828552855f20918254161790553315620004fe575050620004a060025462000784565b600255335f525f8152815f20620004b8815462000784565b90555f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8351926a52b7d2dcc80cd2e400000084523393a351612e8a90816200079e8239f35b60649284519262461bcd60e51b845283015260248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152fd5b015191505f8062000106565b90601f19831691865f52875f20925f5b8181106200059a57509984869798999a9b1062000580575b50505050811b01835562000117565b01519060f8845f19921b161c191690555f80808062000571565b8b83015185559386019391890191890162000559565b855f52865f208580850160051c820192898610620005ee575b0160051c019084905b828110620005e2575050620000ea565b5f8155018490620005d2565b92508192620005c9565b602286634e487b7160e01b5f525260245ffd5b90607f1690620000d8565b634e487b7160e01b5f52604160045260245ffd5b015190505f80620000aa565b90859350601f19831691885f52895f20925f5b8b8282106200068257505084116200066a575b505050811b018455620000bb565b01515f1983891b60f8161c191690555f80806200065c565b838501518655899790950194938401930162000649565b909150865f52875f208680850160051c8201928a8610620006e2575b918791869594930160051c01915b828110620006d357505062000094565b5f8155859450879101620006c3565b92508192620006b5565b634e487b7160e01b5f52602260045260245ffd5b94607f16946200007d565b5f80fd5b9060ff8091169116019060ff82116200072457565b634e487b7160e01b5f52601160045260245ffd5b156200074057565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b906a52b7d2dcc80cd2e40000008201809211620007245756fe6040608081526004908136101561001f575b5050361561001d575f80fd5b005b5f905f3560e01c806299d38614611b8e578063057f202e14611b7057806306fdde0314611a7b578063095ea7b314611a5257806310d5de5314611a165780631694505e146119ee57806318160ddd146119d0578063184c16c5146119b2578063199ffc72146119945780631a8145bb146119765780631d003eb61461186c5780631f3fed8f1461184e578063203e727e1461178957806323b872dd146116cd57806327c8f835146116b15780632c3e486c146116935780632e82f1a0146116705780632eff0d9e1461164e578063313674dd14611630578063313ce5671461161557806338b2c461146115f757806339509351146115ab578063404bc41b146115855780634487c29f146114a657806349bd5a5e1461147e5780634a62bb651461145b5780634fbee1931461141f578063535e02d8146113ae5780636ddd1713146113885780636fc3eaec146113395780637040eb8b1461126c57806370a0823114611236578063715018a6146111d8578063730c1888146110a5578063751039fc1461106b5780637571336a1461100f5780637d831a8b14610f9e5780638da5cb5b14610f76578063924de9b714610f2957806395d89b4114610e265780639a7a23d614610d345780639e78fb4f14610b4b5780639ec22c0e14610b2d5780639fccce3214610b0f578063a457c2d714610a6a578063a4c82a0014610a4c578063a9059cbb14610a1c578063b62496f5146109e1578063bbc0c742146109bb578063c024666814610932578063c18bc1951461084e578063c3c8cd80146107fe578063c876d0b9146107db578063c8c8ebe4146107bd578063d257b34f14610665578063dd62ed3e1461061c578063e2f45605146105fe578063e884f260146105c4578063f2fde38b146104fc578063f8b45b05146104de5763fe72b27a146102c95750610011565b346103fa57602092836003193601126103fa576005546001600160a01b03908235906102f89083163314611c7c565b61030760135460125490611db6565b42111561049d576103e88111610447574260135581600754169084516370a0823160e01b815282858201528781602481305afa90811561043d575f9161040e575b506127109161035691611d85565b04806103fe575b50506007541690813b156103fa57825160016209351760e01b03198152915f918391829084905af180156103f0576103bd575b507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb90519180a160018152f35b6103c8919250611cc7565b5f907f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb610390565b82513d5f823e3d90fd5b5f80fd5b61040791612a29565b5f8061035d565b90508781813d8311610436575b6104258183611cef565b810103126103fa5751612710610348565b503d61041b565b86513d5f823e3d90fd5b835162461bcd60e51b8152808401879052602a60248201527f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60448201526906b656e7320696e204c560b41b6064820152608490fd5b606483878087519262461bcd60e51b845283015260248201527f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e6973686044820152fd5b50346103fa575f3660031901126103fa576020906010549051908152f35b5082346103fa5760203660031901126103fa57610517611c11565b6005546001600160a01b03808216939192610533338614611c7c565b169384156105725750506001600160a01b03191682176005557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b906020608492519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b50346103fa575f3660031901126103fa576020906105ed60018060a01b03600554163314611c7c565b60ff19601554166015555160018152f35b50346103fa575f3660031901126103fa57602090600f549051908152f35b50346103fa57806003193601126103fa57602090610638611c11565b610640611c27565b9060018060a01b038091165f5260018452825f2091165f528252805f20549051908152f35b8382346103fa5760203660031901126103fa57813561068f60018060a01b03600554163314611c7c565b60025480158180046001148117156107aa57620186a08204831061074957600582029182046005141715610736576103e8900481116106d65760209250600f555160018152f35b815162461bcd60e51b8152602081850152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608490fd5b601184634e487b7160e01b5f525260245ffd5b835162461bcd60e51b8152602081870152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608490fd5b601185634e487b7160e01b5f525260245ffd5b50346103fa575f3660031901126103fa57602090600e549051908152f35b50346103fa575f3660031901126103fa5760209060ff6015541690519015158152f35b50346103fa575f3660031901126103fa57600954336001600160a01b0391821614908115610840575b50156103fa5761001d90305f525f6020525f20546128bd565b905060085416331482610827565b5082346103fa5760203660031901126103fa57803561087860018060a01b03600554163314611c7c565b6002549260058402938085046005149015171561091f576103e893670de0b6b3a7640000948591040482106108d157508281029281840414901517156108be5750601055005b601190634e487b7160e01b5f525260245ffd5b5162461bcd60e51b81526020818401526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608490fd5b601183634e487b7160e01b5f525260245ffd5b50346103fa57806003193601126103fa577f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7602061096e611c11565b610976611c6d565b60055490916001600160a01b03916109919083163314611c7c565b1693845f52601e83526109b282825f209060ff801983541691151516179055565b519015158152a2005b50346103fa575f3660031901126103fa5760209060ff60115460081c1690519015158152f35b50346103fa5760203660031901126103fa576020906001600160a01b03610a06611c11565b165f5281805260ff815f20541690519015158152f35b50346103fa57806003193601126103fa57602090610a45610a3b611c11565b60243590336120f9565b5160018152f35b50346103fa575f3660031901126103fa57602090600d549051908152f35b5082346103fa57816003193601126103fa57610a84611c11565b9060243590335f526001602052835f2060018060a01b0384165f52602052835f205490828210610abe57602085610a458585038733611e21565b608490602086519162461bcd60e51b8352820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152fd5b50346103fa575f3660031901126103fa57602090601d549051908152f35b50346103fa575f3660031901126103fa576020906013549051908152f35b5082346103fa575f3660031901126103fa576005546001600160a01b039190610b809083163314610b7b81611c7c565b611c7c565b737a250d5630b4cf539739df2c5dacb4c659f2488d91825f52602092601f8452845f209260ff19936001858254161790556bffffffffffffffffffffffff60a01b9180836006541617600655865163c45a015560e01b815286818481855afa908115610d0b57839288915f93610d15575b5089516315ab88c960e31b815293849182905afa8015610d0b5785938489945f93610ce7575b505f90604493948c5197889687956364e329cb60e11b87523090870152166024850152165af190811561043d57918360019793928895935f91610cba575b501680916007541617600755610c7033836005541614611c7c565b5f52601f8552815f2083858254161790556007541693845f5280525f20918254161790557fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab5f80a3005b610cda9150883d8a11610ce0575b610cd28183611cef565b810190611e02565b89610c55565b503d610cc8565b6044935090610d035f92873d8911610ce057610cd28183611cef565b935090610c17565b88513d5f823e3d90fd5b610d2d919350823d8411610ce057610cd28183611cef565b918a610bf1565b5082346103fa57816003193601126103fa57610d4e611c11565b91610d57611c6d565b9160018060a01b03610d6e81600554163314611c7c565b80600754169416938414610dbe57505f8381526020805220805460ff191660ff831515161790551515907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab5f80a3005b6020608492519162461bcd60e51b8352820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152fd5b8382346103fa575f3660031901126103fa578051905f9280549060018260011c9160018416938415610f1f575b6020948585108114610f0c57848852908115610eea5750600114610e91575b610e8d8686610e83828b0383611cef565b5191829182611bca565b0390f35b5f9081529295507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b828410610ed75750505082610e8d94610e83928201019486610e72565b8054868501880152928601928101610eba565b60ff191687860152505050151560051b8301019250610e8382610e8d86610e72565b602283634e487b7160e01b5f525260245ffd5b92607f1692610e53565b83346103fa5760203660031901126103fa57358015158091036103fa57610f5b60018060a01b03600554163314611c7c565b62ff00006011549160101b169062ff00001916176011555f80f35b50346103fa575f3660031901126103fa5760055490516001600160a01b039091168152602090f35b346103fa5760203660031901126103fa57610fb7611c11565b6005546001600160a01b039190610fd19083163314611c7c565b816008549116918116827fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b056745f80a36001600160a01b03191617600855005b50346103fa57806003193601126103fa5761001d9061102c611c11565b90611035611c6d565b60055490926001600160a01b03916110509083163314611c7c565b165f52601f6020525f209060ff801983541691151516179055565b50346103fa575f3660031901126103fa5760209061109460018060a01b03600554163314611c7c565b60ff19601154166011555160018152f35b5082346103fa5760603660031901126103fa57803560243591604435938415158095036103fa576110e160018060a01b03600554163314611c7c565b6102588310611179576103e884111580611171575b15611115575050600c55600a5560ff8019600b5416911617600b555f80f35b906020608492519162461bcd60e51b8352820152603060248201527f4d75737420736574206175746f204c50206275726e2070657263656e7420626560448201526f747765656e20302520616e642031302560801b6064820152fd5b5060016110f6565b906020608492519162461bcd60e51b8352820152603360248201527f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e207468604482015272616e206576657279203130206d696e7574657360681b6064820152fd5b346103fa575f3660031901126103fa576005545f906001600160a01b03811690611203338314611c7c565b6001600160a01b0319166005557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b50346103fa5760203660031901126103fa576020906001600160a01b0361125b611c11565b165f525f8252805f20549051908152f35b50346103fa575f3660031901126103fa576102009060165460ff9081818451948282168652828260081c166020870152828260101c1681870152828260181c166060870152828260201c166080870152828260281c1660a0870152828260301c1660c0870152828260381c1660e08701521c16610100840152818160481c16610120840152818160501c16610140840152818160581c16610160840152818160601c16610180840152818160681c166101a0840152818160701c166101c084015260781c166101e0820152f35b346103fa575f3660031901126103fa576009546001600160a01b039081163314801561137b575b156103fa575f808080936008541647905af15061001d611dc3565b5080600854163314611360565b50346103fa575f3660031901126103fa5760209060ff60115460101c1690519015158152f35b346103fa5760203660031901126103fa576113c7611c11565b6005546001600160a01b0391906113e19083163314611c7c565b816009549116918116827ffaf1b77ed79f6e898c44dd8ab36b330c7b2fd39bcaab05ed6362480df87039655f80a36001600160a01b03191617600955005b50346103fa5760203660031901126103fa576020906001600160a01b03611444611c11565b165f52601e825260ff815f20541690519015158152f35b50346103fa575f3660031901126103fa5760209060ff6011541690519015158152f35b50346103fa575f3660031901126103fa5760075490516001600160a01b039091168152602090f35b346103fa5760603660031901126103fa576114bf611c3d565b6114c7611c4d565b6114cf611c5d565b6114e460018060a01b03600554163314611c7c565b60ff60381b66ff00000000000065ff00000000006016549560281b169360301b169160381b169164ff00000000611547848367ffffff00000000001988161785171760ff61153c818360301c16828460281c16611d11565b9160381c1690611d11565b611557606460ff83161115611d39565b60201b169367ffffffff0000000019161717171760165560ff60185460101c1661157d57005b61001d611f1f565b50346103fa575f3660031901126103fa5760209060ff60185460101c1690519015158152f35b50346103fa57806003193601126103fa57602090610a456115ca611c11565b335f5260018452825f2060018060a01b0382165f5284526115f0602435845f2054611db6565b9033611e21565b50346103fa575f3660031901126103fa576020906017549051908152f35b50346103fa575f3660031901126103fa576020905160128152f35b50346103fa575f3660031901126103fa57602090601a549051908152f35b50346103fa575f3660031901126103fa5760209061ffff601854169051908152f35b50346103fa575f3660031901126103fa5760209060ff600b541690519015158152f35b50346103fa575f3660031901126103fa57602090600c549051908152f35b50346103fa575f3660031901126103fa576020905161dead8152f35b5082346103fa5760603660031901126103fa576116e8611c11565b906116f1611c27565b906117006044358093856120f9565b60018060a01b0383165f526001602052835f20335f52602052835f20549082821061173557602085610a458585033388611e21565b608490602086519162461bcd60e51b8352820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152fd5b5082346103fa5760203660031901126103fa5780356117b360018060a01b03600554163314611c7c565b600254928380046001148415171561091f576103e893670de0b6b3a7640000948591040482106117f457508281029281840414901517156108be5750600e55005b5162461bcd60e51b8152602081840152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b6064820152608490fd5b50346103fa575f3660031901126103fa57602090601b549051908152f35b5082346103fa5760603660031901126103fa57611887611c3d565b61188f611c4d565b611897611c5d565b906118ad60018060a01b03600554163314611c7c565b63ff00000062ff000061ff006016549560081b169260101b169260181b169260ff6118ff858463ffffff0019851617861717826118f4818360101c16828460081c16611d11565b9160181c1690611d11565b169460ff60185460101c16968761193357505061191f6064861115611d39565b63ffffffff19161717171760165561157d57005b906020606492519162461bcd60e51b8352820152601a60248201527f46696e616c20666565732061726520616c7265616479207365740000000000006044820152fd5b50346103fa575f3660031901126103fa57602090601c549051908152f35b50346103fa575f3660031901126103fa57602090600a549051908152f35b50346103fa575f3660031901126103fa576020906012549051908152f35b50346103fa575f3660031901126103fa576020906002549051908152f35b50346103fa575f3660031901126103fa5760065490516001600160a01b039091168152602090f35b50346103fa5760203660031901126103fa576020906001600160a01b03611a3b611c11565b165f52601f825260ff815f20541690519015158152f35b50346103fa57806003193601126103fa57602090610a45611a71611c11565b6024359033611e21565b8382346103fa575f3660031901126103fa578051905f9260035460018160011c91600181168015611b66575b6020948585108214611b535750838752908115611b335750600114611ad9575b505050610e8382610e8d940383611cef565b60035f9081529295507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b828410611b205750505082610e8d94610e839282010194611ac7565b8054868501880152928601928101611b04565b60ff1916868501525050151560051b8301019250610e8382610e8d611ac7565b602290634e487b7160e01b5f525260245ffd5b92607f1692611aa7565b50346103fa575f3660031901126103fa576020906019549051908152f35b346103fa575f3660031901126103fa57611bb360018060a01b03600554163314611c7c565b6011805462ffff0019166201010017905542600d55005b602080825282518183018190529093925f5b828110611bfd57505060409293505f838284010152601f8019910116010190565b818101860151848201604001528501611bdc565b600435906001600160a01b03821682036103fa57565b602435906001600160a01b03821682036103fa57565b6004359060ff821682036103fa57565b6024359060ff821682036103fa57565b6044359060ff821682036103fa57565b6024359081151582036103fa57565b15611c8357565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b67ffffffffffffffff8111611cdb57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff821117611cdb57604052565b9060ff8091169116019060ff8211611d2557565b634e487b7160e01b5f52601160045260245ffd5b15611d4057565b60405162461bcd60e51b815260206004820152601d60248201527f546f74616c20666565732063616e6e6f742065786365656420313030250000006044820152606490fd5b81810292918115918404141715611d2557565b8115611da2570490565b634e487b7160e01b5f52601260045260245ffd5b91908201809211611d2557565b3d15611dfd573d9067ffffffffffffffff8211611cdb5760405191611df2601f8201601f191660200184611cef565b82523d5f602084013e565b606090565b908160209103126103fa57516001600160a01b03811681036103fa5790565b6001600160a01b03908116918215611ece5716918215611e7e5760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591835f526001825260405f20855f5282528060405f2055604051908152a3565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b601654604061ff0082821c1662ff00008161ff0019851617831c1663ff000000818362ffff001987161717841c1660ff818463ffffff0019881617841717851c169065ff0000000000828563ffffffff198916178517831717861c169266ff000000000000848665ff00ffffffff198a161783178417851717871c169464ff0000000060ff60381b878366ffff00ffffffff198c1617851786178717881717891c1697888367ffffff00ffffffff198c16178517861787178817891717901c169767ffffffffffffffff19161717171717171717601655565b15611fff57565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b1561205957565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b156120b157565b60405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606490fd5b91908203918211611d2557565b5f939291906001600160a01b038082168015159061211682611ff8565b828516908115159261212784612052565b871561286e57506011549260ff848180961661252c575b505050305f526020935f8552604090815f2054600f5411158061251e575b8061250f575b806124fc575b806124e8575b806124d4575b6124aa575b600754858160a01c161580612498575b8061248d575b80612475575b80612461575b612363575b50508360075460a01c161591808b52601e865284828c2054168015612354575b61234c575b8a938b936121e2575b505050505050506121e0939450612af7565b565b60189996979954868160101c16156122ca575b509a612245979695949392916121e09b9c8252878052858383205416806122bb575b15612277575050505050612236606491600194601654901c1683611d85565b04915b82612253575b506120ec565b9184935f80808080806121ce565b61225e833088612af7565b612269575b5f61223f565b61227281612d7f565b612263565b8152205491945091908116806122ae575b612293575b50612239565b60649193506122a6906016541683611d85565b04915f61228d565b5080601654161515612288565b5085601654891c161515612217565b61ffff60018183160181811161233857916121e09d9e93916122459b9a999897969593168061ffff19831617601855601754818684161711612319575b5050919c9b50919293949596976121f5565b620100009162ffffff19161717601855612331611f1f565b5f80612307565b634e487b7160e01b8f52601160045260248ffd5b8a92506121c5565b50838b5284828c2054166121c0565b819042600d551682516370a0823160e01b81528160048201528781602481305afa908115612457575f91612428575b506123a361271091600a5490611d85565b0480612418575b505060075416803b156103fa575f8091600484518094819363fff6cae960e01b83525af180156103f057612405575b507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d8a80a15f806121a0565b612410919a50611cc7565b5f985f6123d9565b61242191612a29565b5f806123aa565b90508781813d8311612450575b61243f8183611cef565b810103126103fa57516123a3612392565b503d612435565b84513d5f823e3d90fd5b50835f52601e875285835f2054161561219b565b50612485600d54600c5490611db6565b421015612195565b5085600b541661218f565b50845f5286805285835f205416612189565b6007805460ff60a01b19908116600160a01b179091556124c8612b72565b60075416600755612179565b50835f52601e865284825f20541615612174565b50825f52601e865284825f2054161561216e565b50825f5285805284825f20541615612168565b508460075460a01c1615612162565b508460115460101c1661215c565b866005541692838514159081612863575b8161285b575b508061284f575b80612840575b1561213e5760081c16156127d8575b83601554166126fe575b50805f52602080805260409084825f205416806126ea575b1561261757600e5489116125b7576125af915f6125a592868252525f205489611db6565b60105410156120aa565b5f838161213e565b608491519062461bcd60e51b82526004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152fd5b90835f5281805284815f205416806126d6575b156126a157600e54891161263f5750506125af565b60849250519062461bcd60e51b82526004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152fd5b90835f52601f815284825f205416156126bc575b50506125af565b6126cf915f6125a592525f205489611db6565b5f806126b5565b50825f52601f825284815f2054161561262a565b50835f52601f815284825f20541615612581565b821415806127ca575b806127bc575b612718575b5f612569565b325f52601460205260405f205443111561273f57325f5260146020524360405f2055612712565b60405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a490fd5b50836007541682141561270d565b508360065416821415612707565b815f52601e6020528360405f2054168015612830575b61255f5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606490fd5b50825f528360405f2054166127ee565b508160075460a01c1615612550565b5061dead85141561254a565b90505f612543565b86851415915061253d565b929450955095965061288a93506128859150611ff8565b612052565b5f602052815f527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60206040515f8152a3565b60408051916060830183811067ffffffffffffffff821117611cdb57825260028352602080840190833683378451156129ec5730825260065484516315ab88c960e31b81526001600160a01b03949092909185168184600481845afa938415612a1f575f94612a00575b50875193600194600110156129ec576129489187859216898b015230611e21565b846006541694853b156103fa57918697949391975197889563791ac94760e01b875260a487019260048801525f602488015260a060448801525180925260c4860194935f905b8382106129d25750505050505091815f81819530606483015242608483015203925af19081156129c957506129c05750565b6121e090611cc7565b513d5f823e3d90fd5b8551811687528a975095820195948201949084019061298e565b634e487b7160e01b5f52603260045260245ffd5b612a18919450823d8411610ce057610cd28183611cef565b925f612927565b87513d5f823e3d90fd5b6001600160a01b0316612a3d811515611ff8565b805f525f60205260405f2054828110612aa3578290825f525f6020520360405f20557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602061dead93845f5260405f20612a98828254611db6565b9055604051908152a3565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b6001600160a01b0390811691612b0e831515611ff8565b1691612b1b831515612052565b815f525f60205260405f2054818110612aa357817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f5260405f20612a98828254611db6565b305f525f60205260405f2054601c54612b99612b90601b5483611db6565b601d5490611db6565b9082158015612d77575b612d7257600f54601481029080820460141490151715611d2557808411612d68575b50612bdc82612bd7612be69386611d85565b611d98565b60011c80936120ec565b612c2c612bfc47612bf6846128bd565b476120ec565b612c27612c1f612c1286612bd7601b5486611d85565b95612bd7601d5485611d85565b9485926120ec565b6120ec565b925f601c555f601b555f601d555f80808060018060a01b039687600954165af150612c55611dc3565b5080151580612d5f575b612c81575b50505f8080935080926008541647905af150612c7e611dc3565b50565b606081612c948693866006541630611e21565b60c4856006541691604051948593849263f305d71960e01b845230600485015260248401525f60448401525f606484015261dead60848401524260a48401525af18015612d5457612d29575b505f8093927f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56160608395948495601c549060405192835260208301526040820152a19250612c64565b606090813d8311612d4d575b612d3f8183611cef565b810103126103fa575f612ce0565b503d612d35565b6040513d5f823e3d90fd5b50831515612c5f565b9250612bdc612bc5565b505050565b508115612ba3565b6002548060011b9080820460021490151715611d25576064900460195443145f14612e1757601a5491818310612db457505050565b8282612dc382612dec956120ec565b831015612e085750505b305f525f60205260405f2054908082105f14612e0157505b8092611db6565b601a555b80612df85750565b6121e0906128bd565b9050612de5565b612e1292506120ec565b612dcd565b80821015612e4d57505b305f525f60205260405f2054908082105f14612e4657505b8043601955601a55612df0565b9050612e39565b9050612e2156fea264697066735822122018c2a9f370a5b082947e52a818c2990ac1b3576dc8ab8fcc5d2cc66f6172de9464736f6c63430008180033
Deployed Bytecode
0x6040608081526004908136101561001f575b5050361561001d575f80fd5b005b5f905f3560e01c806299d38614611b8e578063057f202e14611b7057806306fdde0314611a7b578063095ea7b314611a5257806310d5de5314611a165780631694505e146119ee57806318160ddd146119d0578063184c16c5146119b2578063199ffc72146119945780631a8145bb146119765780631d003eb61461186c5780631f3fed8f1461184e578063203e727e1461178957806323b872dd146116cd57806327c8f835146116b15780632c3e486c146116935780632e82f1a0146116705780632eff0d9e1461164e578063313674dd14611630578063313ce5671461161557806338b2c461146115f757806339509351146115ab578063404bc41b146115855780634487c29f146114a657806349bd5a5e1461147e5780634a62bb651461145b5780634fbee1931461141f578063535e02d8146113ae5780636ddd1713146113885780636fc3eaec146113395780637040eb8b1461126c57806370a0823114611236578063715018a6146111d8578063730c1888146110a5578063751039fc1461106b5780637571336a1461100f5780637d831a8b14610f9e5780638da5cb5b14610f76578063924de9b714610f2957806395d89b4114610e265780639a7a23d614610d345780639e78fb4f14610b4b5780639ec22c0e14610b2d5780639fccce3214610b0f578063a457c2d714610a6a578063a4c82a0014610a4c578063a9059cbb14610a1c578063b62496f5146109e1578063bbc0c742146109bb578063c024666814610932578063c18bc1951461084e578063c3c8cd80146107fe578063c876d0b9146107db578063c8c8ebe4146107bd578063d257b34f14610665578063dd62ed3e1461061c578063e2f45605146105fe578063e884f260146105c4578063f2fde38b146104fc578063f8b45b05146104de5763fe72b27a146102c95750610011565b346103fa57602092836003193601126103fa576005546001600160a01b03908235906102f89083163314611c7c565b61030760135460125490611db6565b42111561049d576103e88111610447574260135581600754169084516370a0823160e01b815282858201528781602481305afa90811561043d575f9161040e575b506127109161035691611d85565b04806103fe575b50506007541690813b156103fa57825160016209351760e01b03198152915f918391829084905af180156103f0576103bd575b507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb90519180a160018152f35b6103c8919250611cc7565b5f907f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb610390565b82513d5f823e3d90fd5b5f80fd5b61040791612a29565b5f8061035d565b90508781813d8311610436575b6104258183611cef565b810103126103fa5751612710610348565b503d61041b565b86513d5f823e3d90fd5b835162461bcd60e51b8152808401879052602a60248201527f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60448201526906b656e7320696e204c560b41b6064820152608490fd5b606483878087519262461bcd60e51b845283015260248201527f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e6973686044820152fd5b50346103fa575f3660031901126103fa576020906010549051908152f35b5082346103fa5760203660031901126103fa57610517611c11565b6005546001600160a01b03808216939192610533338614611c7c565b169384156105725750506001600160a01b03191682176005557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b906020608492519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b50346103fa575f3660031901126103fa576020906105ed60018060a01b03600554163314611c7c565b60ff19601554166015555160018152f35b50346103fa575f3660031901126103fa57602090600f549051908152f35b50346103fa57806003193601126103fa57602090610638611c11565b610640611c27565b9060018060a01b038091165f5260018452825f2091165f528252805f20549051908152f35b8382346103fa5760203660031901126103fa57813561068f60018060a01b03600554163314611c7c565b60025480158180046001148117156107aa57620186a08204831061074957600582029182046005141715610736576103e8900481116106d65760209250600f555160018152f35b815162461bcd60e51b8152602081850152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608490fd5b601184634e487b7160e01b5f525260245ffd5b835162461bcd60e51b8152602081870152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608490fd5b601185634e487b7160e01b5f525260245ffd5b50346103fa575f3660031901126103fa57602090600e549051908152f35b50346103fa575f3660031901126103fa5760209060ff6015541690519015158152f35b50346103fa575f3660031901126103fa57600954336001600160a01b0391821614908115610840575b50156103fa5761001d90305f525f6020525f20546128bd565b905060085416331482610827565b5082346103fa5760203660031901126103fa57803561087860018060a01b03600554163314611c7c565b6002549260058402938085046005149015171561091f576103e893670de0b6b3a7640000948591040482106108d157508281029281840414901517156108be5750601055005b601190634e487b7160e01b5f525260245ffd5b5162461bcd60e51b81526020818401526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608490fd5b601183634e487b7160e01b5f525260245ffd5b50346103fa57806003193601126103fa577f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7602061096e611c11565b610976611c6d565b60055490916001600160a01b03916109919083163314611c7c565b1693845f52601e83526109b282825f209060ff801983541691151516179055565b519015158152a2005b50346103fa575f3660031901126103fa5760209060ff60115460081c1690519015158152f35b50346103fa5760203660031901126103fa576020906001600160a01b03610a06611c11565b165f5281805260ff815f20541690519015158152f35b50346103fa57806003193601126103fa57602090610a45610a3b611c11565b60243590336120f9565b5160018152f35b50346103fa575f3660031901126103fa57602090600d549051908152f35b5082346103fa57816003193601126103fa57610a84611c11565b9060243590335f526001602052835f2060018060a01b0384165f52602052835f205490828210610abe57602085610a458585038733611e21565b608490602086519162461bcd60e51b8352820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152fd5b50346103fa575f3660031901126103fa57602090601d549051908152f35b50346103fa575f3660031901126103fa576020906013549051908152f35b5082346103fa575f3660031901126103fa576005546001600160a01b039190610b809083163314610b7b81611c7c565b611c7c565b737a250d5630b4cf539739df2c5dacb4c659f2488d91825f52602092601f8452845f209260ff19936001858254161790556bffffffffffffffffffffffff60a01b9180836006541617600655865163c45a015560e01b815286818481855afa908115610d0b57839288915f93610d15575b5089516315ab88c960e31b815293849182905afa8015610d0b5785938489945f93610ce7575b505f90604493948c5197889687956364e329cb60e11b87523090870152166024850152165af190811561043d57918360019793928895935f91610cba575b501680916007541617600755610c7033836005541614611c7c565b5f52601f8552815f2083858254161790556007541693845f5280525f20918254161790557fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab5f80a3005b610cda9150883d8a11610ce0575b610cd28183611cef565b810190611e02565b89610c55565b503d610cc8565b6044935090610d035f92873d8911610ce057610cd28183611cef565b935090610c17565b88513d5f823e3d90fd5b610d2d919350823d8411610ce057610cd28183611cef565b918a610bf1565b5082346103fa57816003193601126103fa57610d4e611c11565b91610d57611c6d565b9160018060a01b03610d6e81600554163314611c7c565b80600754169416938414610dbe57505f8381526020805220805460ff191660ff831515161790551515907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab5f80a3005b6020608492519162461bcd60e51b8352820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152fd5b8382346103fa575f3660031901126103fa578051905f9280549060018260011c9160018416938415610f1f575b6020948585108114610f0c57848852908115610eea5750600114610e91575b610e8d8686610e83828b0383611cef565b5191829182611bca565b0390f35b5f9081529295507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b828410610ed75750505082610e8d94610e83928201019486610e72565b8054868501880152928601928101610eba565b60ff191687860152505050151560051b8301019250610e8382610e8d86610e72565b602283634e487b7160e01b5f525260245ffd5b92607f1692610e53565b83346103fa5760203660031901126103fa57358015158091036103fa57610f5b60018060a01b03600554163314611c7c565b62ff00006011549160101b169062ff00001916176011555f80f35b50346103fa575f3660031901126103fa5760055490516001600160a01b039091168152602090f35b346103fa5760203660031901126103fa57610fb7611c11565b6005546001600160a01b039190610fd19083163314611c7c565b816008549116918116827fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b056745f80a36001600160a01b03191617600855005b50346103fa57806003193601126103fa5761001d9061102c611c11565b90611035611c6d565b60055490926001600160a01b03916110509083163314611c7c565b165f52601f6020525f209060ff801983541691151516179055565b50346103fa575f3660031901126103fa5760209061109460018060a01b03600554163314611c7c565b60ff19601154166011555160018152f35b5082346103fa5760603660031901126103fa57803560243591604435938415158095036103fa576110e160018060a01b03600554163314611c7c565b6102588310611179576103e884111580611171575b15611115575050600c55600a5560ff8019600b5416911617600b555f80f35b906020608492519162461bcd60e51b8352820152603060248201527f4d75737420736574206175746f204c50206275726e2070657263656e7420626560448201526f747765656e20302520616e642031302560801b6064820152fd5b5060016110f6565b906020608492519162461bcd60e51b8352820152603360248201527f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e207468604482015272616e206576657279203130206d696e7574657360681b6064820152fd5b346103fa575f3660031901126103fa576005545f906001600160a01b03811690611203338314611c7c565b6001600160a01b0319166005557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b50346103fa5760203660031901126103fa576020906001600160a01b0361125b611c11565b165f525f8252805f20549051908152f35b50346103fa575f3660031901126103fa576102009060165460ff9081818451948282168652828260081c166020870152828260101c1681870152828260181c166060870152828260201c166080870152828260281c1660a0870152828260301c1660c0870152828260381c1660e08701521c16610100840152818160481c16610120840152818160501c16610140840152818160581c16610160840152818160601c16610180840152818160681c166101a0840152818160701c166101c084015260781c166101e0820152f35b346103fa575f3660031901126103fa576009546001600160a01b039081163314801561137b575b156103fa575f808080936008541647905af15061001d611dc3565b5080600854163314611360565b50346103fa575f3660031901126103fa5760209060ff60115460101c1690519015158152f35b346103fa5760203660031901126103fa576113c7611c11565b6005546001600160a01b0391906113e19083163314611c7c565b816009549116918116827ffaf1b77ed79f6e898c44dd8ab36b330c7b2fd39bcaab05ed6362480df87039655f80a36001600160a01b03191617600955005b50346103fa5760203660031901126103fa576020906001600160a01b03611444611c11565b165f52601e825260ff815f20541690519015158152f35b50346103fa575f3660031901126103fa5760209060ff6011541690519015158152f35b50346103fa575f3660031901126103fa5760075490516001600160a01b039091168152602090f35b346103fa5760603660031901126103fa576114bf611c3d565b6114c7611c4d565b6114cf611c5d565b6114e460018060a01b03600554163314611c7c565b60ff60381b66ff00000000000065ff00000000006016549560281b169360301b169160381b169164ff00000000611547848367ffffff00000000001988161785171760ff61153c818360301c16828460281c16611d11565b9160381c1690611d11565b611557606460ff83161115611d39565b60201b169367ffffffff0000000019161717171760165560ff60185460101c1661157d57005b61001d611f1f565b50346103fa575f3660031901126103fa5760209060ff60185460101c1690519015158152f35b50346103fa57806003193601126103fa57602090610a456115ca611c11565b335f5260018452825f2060018060a01b0382165f5284526115f0602435845f2054611db6565b9033611e21565b50346103fa575f3660031901126103fa576020906017549051908152f35b50346103fa575f3660031901126103fa576020905160128152f35b50346103fa575f3660031901126103fa57602090601a549051908152f35b50346103fa575f3660031901126103fa5760209061ffff601854169051908152f35b50346103fa575f3660031901126103fa5760209060ff600b541690519015158152f35b50346103fa575f3660031901126103fa57602090600c549051908152f35b50346103fa575f3660031901126103fa576020905161dead8152f35b5082346103fa5760603660031901126103fa576116e8611c11565b906116f1611c27565b906117006044358093856120f9565b60018060a01b0383165f526001602052835f20335f52602052835f20549082821061173557602085610a458585033388611e21565b608490602086519162461bcd60e51b8352820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152fd5b5082346103fa5760203660031901126103fa5780356117b360018060a01b03600554163314611c7c565b600254928380046001148415171561091f576103e893670de0b6b3a7640000948591040482106117f457508281029281840414901517156108be5750600e55005b5162461bcd60e51b8152602081840152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b6064820152608490fd5b50346103fa575f3660031901126103fa57602090601b549051908152f35b5082346103fa5760603660031901126103fa57611887611c3d565b61188f611c4d565b611897611c5d565b906118ad60018060a01b03600554163314611c7c565b63ff00000062ff000061ff006016549560081b169260101b169260181b169260ff6118ff858463ffffff0019851617861717826118f4818360101c16828460081c16611d11565b9160181c1690611d11565b169460ff60185460101c16968761193357505061191f6064861115611d39565b63ffffffff19161717171760165561157d57005b906020606492519162461bcd60e51b8352820152601a60248201527f46696e616c20666565732061726520616c7265616479207365740000000000006044820152fd5b50346103fa575f3660031901126103fa57602090601c549051908152f35b50346103fa575f3660031901126103fa57602090600a549051908152f35b50346103fa575f3660031901126103fa576020906012549051908152f35b50346103fa575f3660031901126103fa576020906002549051908152f35b50346103fa575f3660031901126103fa5760065490516001600160a01b039091168152602090f35b50346103fa5760203660031901126103fa576020906001600160a01b03611a3b611c11565b165f52601f825260ff815f20541690519015158152f35b50346103fa57806003193601126103fa57602090610a45611a71611c11565b6024359033611e21565b8382346103fa575f3660031901126103fa578051905f9260035460018160011c91600181168015611b66575b6020948585108214611b535750838752908115611b335750600114611ad9575b505050610e8382610e8d940383611cef565b60035f9081529295507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b828410611b205750505082610e8d94610e839282010194611ac7565b8054868501880152928601928101611b04565b60ff1916868501525050151560051b8301019250610e8382610e8d611ac7565b602290634e487b7160e01b5f525260245ffd5b92607f1692611aa7565b50346103fa575f3660031901126103fa576020906019549051908152f35b346103fa575f3660031901126103fa57611bb360018060a01b03600554163314611c7c565b6011805462ffff0019166201010017905542600d55005b602080825282518183018190529093925f5b828110611bfd57505060409293505f838284010152601f8019910116010190565b818101860151848201604001528501611bdc565b600435906001600160a01b03821682036103fa57565b602435906001600160a01b03821682036103fa57565b6004359060ff821682036103fa57565b6024359060ff821682036103fa57565b6044359060ff821682036103fa57565b6024359081151582036103fa57565b15611c8357565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b67ffffffffffffffff8111611cdb57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff821117611cdb57604052565b9060ff8091169116019060ff8211611d2557565b634e487b7160e01b5f52601160045260245ffd5b15611d4057565b60405162461bcd60e51b815260206004820152601d60248201527f546f74616c20666565732063616e6e6f742065786365656420313030250000006044820152606490fd5b81810292918115918404141715611d2557565b8115611da2570490565b634e487b7160e01b5f52601260045260245ffd5b91908201809211611d2557565b3d15611dfd573d9067ffffffffffffffff8211611cdb5760405191611df2601f8201601f191660200184611cef565b82523d5f602084013e565b606090565b908160209103126103fa57516001600160a01b03811681036103fa5790565b6001600160a01b03908116918215611ece5716918215611e7e5760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591835f526001825260405f20855f5282528060405f2055604051908152a3565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b601654604061ff0082821c1662ff00008161ff0019851617831c1663ff000000818362ffff001987161717841c1660ff818463ffffff0019881617841717851c169065ff0000000000828563ffffffff198916178517831717861c169266ff000000000000848665ff00ffffffff198a161783178417851717871c169464ff0000000060ff60381b878366ffff00ffffffff198c1617851786178717881717891c1697888367ffffff00ffffffff198c16178517861787178817891717901c169767ffffffffffffffff19161717171717171717601655565b15611fff57565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b1561205957565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b156120b157565b60405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606490fd5b91908203918211611d2557565b5f939291906001600160a01b038082168015159061211682611ff8565b828516908115159261212784612052565b871561286e57506011549260ff848180961661252c575b505050305f526020935f8552604090815f2054600f5411158061251e575b8061250f575b806124fc575b806124e8575b806124d4575b6124aa575b600754858160a01c161580612498575b8061248d575b80612475575b80612461575b612363575b50508360075460a01c161591808b52601e865284828c2054168015612354575b61234c575b8a938b936121e2575b505050505050506121e0939450612af7565b565b60189996979954868160101c16156122ca575b509a612245979695949392916121e09b9c8252878052858383205416806122bb575b15612277575050505050612236606491600194601654901c1683611d85565b04915b82612253575b506120ec565b9184935f80808080806121ce565b61225e833088612af7565b612269575b5f61223f565b61227281612d7f565b612263565b8152205491945091908116806122ae575b612293575b50612239565b60649193506122a6906016541683611d85565b04915f61228d565b5080601654161515612288565b5085601654891c161515612217565b61ffff60018183160181811161233857916121e09d9e93916122459b9a999897969593168061ffff19831617601855601754818684161711612319575b5050919c9b50919293949596976121f5565b620100009162ffffff19161717601855612331611f1f565b5f80612307565b634e487b7160e01b8f52601160045260248ffd5b8a92506121c5565b50838b5284828c2054166121c0565b819042600d551682516370a0823160e01b81528160048201528781602481305afa908115612457575f91612428575b506123a361271091600a5490611d85565b0480612418575b505060075416803b156103fa575f8091600484518094819363fff6cae960e01b83525af180156103f057612405575b507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d8a80a15f806121a0565b612410919a50611cc7565b5f985f6123d9565b61242191612a29565b5f806123aa565b90508781813d8311612450575b61243f8183611cef565b810103126103fa57516123a3612392565b503d612435565b84513d5f823e3d90fd5b50835f52601e875285835f2054161561219b565b50612485600d54600c5490611db6565b421015612195565b5085600b541661218f565b50845f5286805285835f205416612189565b6007805460ff60a01b19908116600160a01b179091556124c8612b72565b60075416600755612179565b50835f52601e865284825f20541615612174565b50825f52601e865284825f2054161561216e565b50825f5285805284825f20541615612168565b508460075460a01c1615612162565b508460115460101c1661215c565b866005541692838514159081612863575b8161285b575b508061284f575b80612840575b1561213e5760081c16156127d8575b83601554166126fe575b50805f52602080805260409084825f205416806126ea575b1561261757600e5489116125b7576125af915f6125a592868252525f205489611db6565b60105410156120aa565b5f838161213e565b608491519062461bcd60e51b82526004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152fd5b90835f5281805284815f205416806126d6575b156126a157600e54891161263f5750506125af565b60849250519062461bcd60e51b82526004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152fd5b90835f52601f815284825f205416156126bc575b50506125af565b6126cf915f6125a592525f205489611db6565b5f806126b5565b50825f52601f825284815f2054161561262a565b50835f52601f815284825f20541615612581565b821415806127ca575b806127bc575b612718575b5f612569565b325f52601460205260405f205443111561273f57325f5260146020524360405f2055612712565b60405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a490fd5b50836007541682141561270d565b508360065416821415612707565b815f52601e6020528360405f2054168015612830575b61255f5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606490fd5b50825f528360405f2054166127ee565b508160075460a01c1615612550565b5061dead85141561254a565b90505f612543565b86851415915061253d565b929450955095965061288a93506128859150611ff8565b612052565b5f602052815f527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60206040515f8152a3565b60408051916060830183811067ffffffffffffffff821117611cdb57825260028352602080840190833683378451156129ec5730825260065484516315ab88c960e31b81526001600160a01b03949092909185168184600481845afa938415612a1f575f94612a00575b50875193600194600110156129ec576129489187859216898b015230611e21565b846006541694853b156103fa57918697949391975197889563791ac94760e01b875260a487019260048801525f602488015260a060448801525180925260c4860194935f905b8382106129d25750505050505091815f81819530606483015242608483015203925af19081156129c957506129c05750565b6121e090611cc7565b513d5f823e3d90fd5b8551811687528a975095820195948201949084019061298e565b634e487b7160e01b5f52603260045260245ffd5b612a18919450823d8411610ce057610cd28183611cef565b925f612927565b87513d5f823e3d90fd5b6001600160a01b0316612a3d811515611ff8565b805f525f60205260405f2054828110612aa3578290825f525f6020520360405f20557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602061dead93845f5260405f20612a98828254611db6565b9055604051908152a3565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b6001600160a01b0390811691612b0e831515611ff8565b1691612b1b831515612052565b815f525f60205260405f2054818110612aa357817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f5260405f20612a98828254611db6565b305f525f60205260405f2054601c54612b99612b90601b5483611db6565b601d5490611db6565b9082158015612d77575b612d7257600f54601481029080820460141490151715611d2557808411612d68575b50612bdc82612bd7612be69386611d85565b611d98565b60011c80936120ec565b612c2c612bfc47612bf6846128bd565b476120ec565b612c27612c1f612c1286612bd7601b5486611d85565b95612bd7601d5485611d85565b9485926120ec565b6120ec565b925f601c555f601b555f601d555f80808060018060a01b039687600954165af150612c55611dc3565b5080151580612d5f575b612c81575b50505f8080935080926008541647905af150612c7e611dc3565b50565b606081612c948693866006541630611e21565b60c4856006541691604051948593849263f305d71960e01b845230600485015260248401525f60448401525f606484015261dead60848401524260a48401525af18015612d5457612d29575b505f8093927f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56160608395948495601c549060405192835260208301526040820152a19250612c64565b606090813d8311612d4d575b612d3f8183611cef565b810103126103fa575f612ce0565b503d612d35565b6040513d5f823e3d90fd5b50831515612c5f565b9250612bdc612bc5565b505050565b508115612ba3565b6002548060011b9080820460021490151715611d25576064900460195443145f14612e1757601a5491818310612db457505050565b8282612dc382612dec956120ec565b831015612e085750505b305f525f60205260405f2054908082105f14612e0157505b8092611db6565b601a555b80612df85750565b6121e0906128bd565b9050612de5565b612e1292506120ec565b612dcd565b80821015612e4d57505b305f525f60205260405f2054908082105f14612e4657505b8043601955601a55612df0565b9050612e39565b9050612e2156fea264697066735822122018c2a9f370a5b082947e52a818c2990ac1b3576dc8ab8fcc5d2cc66f6172de9464736f6c63430008180033
Deployed Bytecode Sourcemap
15083:22725:0:-:0;;;;;;;;;;;;-1:-1:-1;15083:22725:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;926:6;15083:22725;-1:-1:-1;;;;;15083:22725:0;;;;976:68;;15083:22725;;475:10;984:23;976:68;:::i;:::-;36945:42;:20;15083:22725;36968:19;15083:22725;36945:42;;:::i;:::-;36927:15;:60;15083:22725;;;37074:4;37063:15;;15083:22725;;36927:15;36945:20;15083:22725;;37271:13;15083:22725;;;;;;;;37256:29;;;;;;15083:22725;37256:4;;15083:22725;37256:4;;:29;;;;;;;15083:22725;37256:29;;;15083:22725;9253:5;37393;9253;;;;:::i;:::-;15083:22725;37501:16;37497:108;;15083:22725;;;37271:13;15083:22725;;37738:11;;;;;;15083:22725;;-1:-1:-1;;;;;;37738:11:0;;15083:22725;;;;;;;;;37738:11;;;;;;;;15083:22725;;37764:14;15083:22725;;37764:14;;;15083:22725;;;;37738:11;;;;;;:::i;:::-;15083:22725;;37764:14;37738:11;;;15083:22725;;;;;;;;;37738:11;15083:22725;;;37497:108;37581:12;;;:::i;:::-;37497:108;;;;37256:29;;;;;;;;;;;;;;;;:::i;:::-;;;15083:22725;;;;;37393:5;37256:29;;;;;;;;15083:22725;;;;;;;;;;;;-1:-1:-1;;;15083:22725:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15083:22725:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;15649:24;15083:22725;;;;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;:::i;:::-;926:6;15083:22725;-1:-1:-1;;;;;15083:22725:0;;;;;;976:68;475:10;984:23;;976:68;:::i;:::-;15083:22725;1276:22;;;15083:22725;;-1:-1:-1;;;;;;;;15083:22725:0;;;926:6;15083:22725;1553:40;15083:22725;;1553:40;15083:22725;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15083:22725:0;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;976:68;15083:22725;;;;;926:6;15083:22725;;475:10;984:23;976:68;:::i;:::-;15083:22725;;21375:28;15083:22725;;21375:28;15083:22725;;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;15610:33;15083:22725;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;3892:11;15083:22725;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;976:68;15083:22725;;;;;926:6;15083:22725;;475:10;984:23;976:68;:::i;:::-;3385:12;15083:22725;;;;;;;;;;;;;21604:6;15083:22725;;21569:41;;15083:22725;;926:6;15083:22725;;;;;926:6;15083:22725;;;;;21755:4;15083:22725;;21720:39;;15083:22725;;;;;21847:30;15083:22725;;;;;;;;;-1:-1:-1;;;15083:22725:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;15083:22725:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15083:22725:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;15083:22725:0;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;15569:35;15083:22725;;;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;;15960:39;15083:22725;;;;;;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;35012:17;15083:22725;475:10;-1:-1:-1;;;;;15083:22725:0;;;34996:33;;:68;;;;15083:22725;;;;;35161:15;35128:4;;15083:22725;;;;;;;;35161:15;:::i;34996:68::-;15083:22725;;35049:15;15083:22725;;475:10;35033:31;34996:68;;;15083:22725;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;976:68;15083:22725;;;;;926:6;15083:22725;;475:10;984:23;976:68;:::i;:::-;3385:12;15083:22725;;926:6;15083:22725;;;;;;926:6;15083:22725;;;;;;;22318:4;22326;;15083:22725;;;;;22285:45;;15083:22725;;;;;;;;;;;;;;;;;-1:-1:-1;22402:31:0;15083:22725;;;;;;;;;;;;;;;;-1:-1:-1;;;15083:22725:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;15083:22725:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24839:34;15083:22725;;;:::i;:::-;;;:::i;:::-;926:6;15083:22725;;;-1:-1:-1;;;;;15083:22725:0;976:68;;15083:22725;;475:10;984:23;976:68;:::i;:::-;15083:22725;;;;;24785:19;15083:22725;;24785:39;15083:22725;;;;;;;;;;;;;;;;;;;24785:39;15083:22725;;;;;;24839:34;15083:22725;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;;15719:33;15083:22725;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;-1:-1:-1;;;;;15083:22725:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3714:6;15083:22725;;:::i;:::-;;;475:10;;3714:6;:::i;:::-;15083:22725;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;15533:29;15083:22725;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;475:10;;15083:22725;;;;;;;;;;;;;;;;;;;;;;;5153:35;;;;15083:22725;;;;5317:34;15083:22725;;;;475:10;5317:34;:::i;15083:22725::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15083:22725:0;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;16897:27;15083:22725;;;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;15848:35;15083:22725;;;;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;926:6;15083:22725;-1:-1:-1;;;;;15083:22725:0;;976:68;;15083:22725;;475:10;984:23;976:68;984:23;976:68;:::i;:::-;;:::i;:::-;20575:42;15083:22725;;;;;;22557:31;15083:22725;;;;;;;;;20690:4;15083:22725;;;;;;;;;;;;;20705:34;15083:22725;;;20705:34;15083:22725;;;;;;20783:26;;;;;;;;;;;;;;;;;;15083:22725;20783:26;;;15083:22725;-1:-1:-1;15083:22725:0;;-1:-1:-1;;;20850:23:0;;15083:22725;;;;;20850:23;;;;;;;;;;;15083:22725;20850:23;;;15083:22725;;;;;;;;;;;;;;;;;20765:109;;20843:4;20765:109;;;15083:22725;;;;;;;20765:109;;;;;;;;;20690:4;20765:109;;;;;;15083:22725;20765:109;;;15083:22725;;;;;20749:125;15083:22725;;;20749:125;15083:22725;976:68;475:10;15083:22725;926:6;15083:22725;;984:23;976:68;:::i;:::-;15083:22725;;22557:31;15083:22725;;;;;;;;;;;;;20749:125;15083:22725;;;;;;;;;;;;;;;;;25325:40;15083:22725;25325:40;;15083:22725;20765:109;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;20850:23;15083:22725;20850:23;;;;15083:22725;20850:23;;;;;;;;;;;:::i;:::-;;;;;;;15083:22725;;;;;;;;;20783:26;;;;;;;;;;;;;;;:::i;:::-;;;;;15083:22725;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;976:68;15083:22725;926:6;15083:22725;;475:10;984:23;976:68;:::i;:::-;15083:22725;25027:13;15083:22725;;;;25019:21;;;15083:22725;;-1:-1:-1;15083:22725:0;;;;25270:25;15083:22725;;;;;-1:-1:-1;;15083:22725:0;;;;;;;;;;;25325:40;;15083:22725;25325:40;;15083:22725;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;15083:22725:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;-1:-1:-1;;;15083:22725:0;;;;;;;;-1:-1:-1;15083:22725:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;;;;;;;;976:68;15083:22725;;;;;926:6;15083:22725;;475:10;984:23;976:68;:::i;:::-;15083:22725;22686:21;15083:22725;;;;;;;;;;22686:21;15083:22725;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;926:6;15083:22725;;;-1:-1:-1;;;;;15083:22725:0;;;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;:::i;:::-;926:6;15083:22725;-1:-1:-1;;;;;15083:22725:0;;976:68;;15083:22725;;475:10;984:23;976:68;:::i;:::-;15083:22725;25532:15;15083:22725;;;;;;25489:59;;15083:22725;25489:59;;-1:-1:-1;;;;;;15083:22725:0;;25532:15;15083:22725;;;;;;;;;;;;;;;22557:46;15083:22725;;;:::i;:::-;;;;:::i;:::-;926:6;15083:22725;;;-1:-1:-1;;;;;15083:22725:0;976:68;;15083:22725;;475:10;984:23;976:68;:::i;:::-;15083:22725;;;22557:31;15083:22725;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;976:68;15083:22725;;;;;926:6;15083:22725;;475:10;984:23;976:68;:::i;:::-;15083:22725;;21243:22;15083:22725;;21243:22;15083:22725;;;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;;;;;;;;;;;;;;;976:68;15083:22725;;;;;926:6;15083:22725;;475:10;984:23;976:68;:::i;:::-;35670:3;35647:26;;15083:22725;;35793:4;35781:16;;;:33;;;15083:22725;;;;;;35898:37;15083:22725;35945:27;15083:22725;;;;35982:24;15083:22725;;;;;35982:24;15083:22725;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15083:22725:0;;;;;35781:33;;15083:22725;35781:33;;15083:22725;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15083:22725:0;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;926:6;15083:22725;;;-1:-1:-1;;;;;15083:22725:0;;;976:68;475:10;984:23;;976:68;:::i;:::-;-1:-1:-1;;;;;;15083:22725:0;926:6;15083:22725;1553:40;;;;15083:22725;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;-1:-1:-1;;;;;15083:22725:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;16602:20;15083:22725;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;35268:17;15083:22725;-1:-1:-1;;;;;15083:22725:0;;;475:10;35252:33;:68;;;;15083:22725;;;;;;;;;35384:15;15083:22725;;35426:21;35376:85;;;;;;:::i;35252:68::-;15083:22725;;35305:15;15083:22725;;475:10;35289:31;35252:68;;15083:22725;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;;15758:30;15083:22725;;;;;;;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;:::i;:::-;926:6;15083:22725;-1:-1:-1;;;;;15083:22725:0;;976:68;;15083:22725;;475:10;984:23;976:68;:::i;:::-;15083:22725;25733:17;15083:22725;;;;;;25697:54;;15083:22725;25697:54;;-1:-1:-1;;;;;;15083:22725:0;;25733:17;15083:22725;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;-1:-1:-1;;;;;15083:22725:0;;:::i;:::-;;;;25892:19;15083:22725;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;;15680:33;15083:22725;;;;;;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;15203:28;15083:22725;;;-1:-1:-1;;;;;15083:22725:0;;;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;976:68;15083:22725;;;;;926:6;15083:22725;;475:10;984:23;976:68;:::i;:::-;-1:-1:-1;;;15083:22725:0;;24156:6;15083:22725;;;;;;;;;;;;;;;24334:101;15083:22725;;;;;;;;;;;24334:61;15083:22725;;;;;;;;;;24334:61;:::i;:::-;15083:22725;;;;24334:101;;:::i;:::-;24445:65;24473:3;15083:22725;;;24453:23;;24445:65;:::i;:::-;15083:22725;;;;;;;;;;;24156:6;15083:22725;;24634:9;15083:22725;;;;24630:59;;15083:22725;24630:59;;;:::i;15083:22725::-;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;;16698:29;15083:22725;;;;;;;;;;;;;;;;;;;;;;;;;;;4839:47;15083:22725;;:::i;:::-;475:10;15083:22725;;;;;;;;;;;;;;;;;;;4839:47;15083:22725;;;;;;4839:47;:::i;:::-;475:10;;4839:47;:::i;15083:22725::-;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;16629:29;15083:22725;;;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;;3283:2;15083:22725;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;16776:36;15083:22725;;;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;;16665:27;15083:22725;;;;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;;15443:33;15083:22725;;;;;;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;15482:45;15083:22725;;;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;;15283:6;15083:22725;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;:::i;:::-;;;;:::i;:::-;;4307:6;15083:22725;;4307:6;;;;:::i;:::-;15083:22725;;;;;;;;;;;;;;;475:10;15083:22725;;;;;;;;4416:26;;;;15083:22725;;;;4573:25;15083:22725;;;475:10;15083:22725;4573:25;:::i;15083:22725::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15083:22725:0;;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;976:68;15083:22725;;;;;926:6;15083:22725;;475:10;984:23;976:68;:::i;:::-;3385:12;15083:22725;;;;;;;;;;;;;22038:4;22046;;15083:22725;;;;;22005:45;;15083:22725;;;;;;;;;;;;;;;;;-1:-1:-1;22133:42:0;15083:22725;;;;-1:-1:-1;;;15083:22725:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;15083:22725:0;;;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;16819:33;15083:22725;;;;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;976:68;15083:22725;;;;;926:6;15083:22725;;475:10;984:23;976:68;:::i;:::-;15083:22725;;;22867:6;15083:22725;;;;;;;;;;;;;;;23041:98;15083:22725;;;;;;;;;;;23041:59;15083:22725;;;;;;;;;;23041:59;:::i;:::-;15083:22725;;;;23041:98;;:::i;:::-;15083:22725;;;;;;;;23157:10;;15083:22725;;23216:22;;23208:64;23235:3;23216:22;;;23208:64;:::i;:::-;-1:-1:-1;;15083:22725:0;;;;;22867:6;15083:22725;23390:59;;15083:22725;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;16858:33;15083:22725;;;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;15402:35;15083:22725;;;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;15795:47;15083:22725;;;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;3385:12;15083:22725;;;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;15156:41;15083:22725;;;-1:-1:-1;;;;;15083:22725:0;;;;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;-1:-1:-1;;;;;15083:22725:0;;:::i;:::-;;;;16989:63;15083:22725;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4085:6;15083:22725;;:::i;:::-;;;475:10;;4085:6;:::i;15083:22725::-;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;;;;3075:5;15083:22725;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15083:22725:0;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3075:5;15083:22725;;;;;;-1:-1:-1;15083:22725:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;-1:-1:-1;;15083:22725:0;;;;;;;;-1:-1:-1;15083:22725:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;;16734:36;15083:22725;;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;976:68;15083:22725;;;;;926:6;15083:22725;;475:10;984:23;976:68;:::i;:::-;21072:20;15083:22725;;-1:-1:-1;;15083:22725:0;;;;;21147:15;21130:32;15083:22725;;;;;;;;;;;;;;;;;;-1:-1:-1;15083:22725:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15083:22725:0;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;15083:22725:0;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;15083:22725:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15083:22725:0;;;;;:::i;:::-;;;;-1:-1:-1;15083:22725:0;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;15083:22725:0;;;;;;;:::o;7127:370::-;-1:-1:-1;;;;;15083:22725:0;;;;7258:19;;15083:22725;;;7336:21;;;15083:22725;;;7458:32;15083:22725;;7275:1;15083:22725;7407:11;15083:22725;;;7275:1;15083:22725;;7275:1;15083:22725;;;;;7275:1;15083:22725;;;;;;;7458:32;7127:370::o;15083:22725::-;;;-1:-1:-1;;;15083:22725:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;15083:22725:0;;;;;;;;;;-1:-1:-1;;;15083:22725:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;15083:22725:0;;;;;;;23461:541;23533:6;15083:22725;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15083:22725:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23533:6;15083:22725;23461:541::o;15083:22725::-;;;;:::o;:::-;;;-1:-1:-1;;;15083:22725:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;15083:22725:0;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;15083:22725:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;15083:22725:0;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;15083:22725:0;;;;;;;;;;;;-1:-1:-1;;;15083:22725:0;;;;;;;;;;;;;;;;;:::o;25981:4850::-;26124:1;;25981:4850;;;-1:-1:-1;;;;;15083:22725:0;;;26108:18;;;;26100:68;26108:18;26100:68;:::i;:::-;15083:22725;;;26186:16;;;;26178:64;;;;:::i;:::-;26257:11;;26253:90;;15083:22725;26357:14;15083:22725;;;;;;;;26353:2426;;25981:4850;28838:4;;;;26124:1;15083:22725;;;26124:1;15083:22725;;;;;26124:1;15083:22725;;28894:18;15083:22725;-1:-1:-1;28870:42:0;28940:34;;;25981:4850;28940:59;;;25981:4850;28940:107;;;25981:4850;28940:149;;;25981:4850;28940:189;;;25981:4850;28923:313;;25981:4850;29264:8;15083:22725;;;;;;29263:9;:54;;;25981:4850;29263:83;;;25981:4850;29263:150;;;25981:4850;29263:192;;;25981:4850;29246:274;;25981:4850;15083:22725;;;29264:8;15083:22725;;;;29545:9;15083:22725;;;;29653:19;15083:22725;;;;;;;;29653:52;;;;25981:4850;29649:98;;25981:4850;29757:16;29783:19;;29885:896;;;25981:4850;30817:6;;;;;;;;;;;;:::i;:::-;25981:4850::o;29885:896::-;29917:9;15083:22725;;;;;;;;;;29916:10;29912:210;;29885:896;15083:22725;;30756:14;15083:22725;;;;;;;30817:6;15083:22725;;;;;;;;;;;;;30162:57;;;29885:896;30158:389;;;30239:13;;;;;9253:5;30314:3;30239:13;30248:4;15083:22725;30288:6;15083:22725;;;;9253:5;;:::i;:::-;15083:22725;30158:389;;30565:8;30561:181;;30158:389;30756:14;;:::i;:::-;29885:896;;;;;;;;;;;30561:181;30630:4;28838;;30630;;:::i;:::-;30653:75;;30561:181;;;;30653:75;30702:6;;;:::i;:::-;30653:75;;30158:389;15083:22725;;;;;;-1:-1:-1;15083:22725:0;;;;;30394:58;;30158:389;30373:174;;30158:389;;;;30373:174;30528:3;15083:22725;;;9253:5;15083:22725;30503:6;15083:22725;;9253:5;;:::i;:::-;15083:22725;30373:174;;;;30394:58;15083:22725;;30429:6;15083:22725;;30429:23;;30394:58;;30162:57;15083:22725;;30195:6;15083:22725;;;;30195:24;;30162:57;;29912:210;15083:22725;29959:1;15083:22725;;;;;;;;;;30817:6;15083:22725;;;;30756:14;15083:22725;;;;;;;;;;;;;;;29917:9;15083:22725;29994:14;15083:22725;;;;;;29982:26;29978:130;;29912:210;;;;;;;;;;;;;;;;29978:130;15083:22725;;;;;;;29917:9;15083:22725;30032:16;;:::i;:::-;29978:130;;;;15083:22725;-1:-1:-1;;;15083:22725:0;;26357:14;15083:22725;;;;;29649:98;29721:15;;-1:-1:-1;29649:98:0;;29653:52;15083:22725;;;;;;;;;;29653:52;;29246:274;36109:15;;;36092:32;15083:22725;;;;;;;36207:29;;;;;;15083:22725;28838:4;;15083:22725;28838:4;;36207:29;;;;;;;26124:1;36207:29;;;29246:274;15083:22725;9253:5;36366;15083:22725;36331:16;15083:22725;9253:5;;:::i;:::-;15083:22725;36483:16;36479:108;;29246:274;15083:22725;;29264:8;15083:22725;;36720:11;;;;;26124:1;15083:22725;;36207:29;15083:22725;;;;;;;;;36720:11;;;;;;;;;;29246:274;36746:12;;;;;29246:274;;;;36720:11;;;;;;:::i;:::-;26124:1;36720:11;;;;36479:108;36563:12;;;:::i;:::-;36479:108;;;;36207:29;;;;;;;;;;;;;;;;:::i;:::-;;;15083:22725;;;;;9253:5;36207:29;;;;;;;;15083:22725;;;26124:1;15083:22725;;;;;29263:192;15083:22725;;26124:1;15083:22725;29430:19;15083:22725;;;;26124:1;15083:22725;;;29429:26;29263:192;;:150;15083:22725;29381:32;:14;15083:22725;29398:15;15083:22725;29381:32;;:::i;:::-;29362:15;:51;;29263:150;;:83;15083:22725;;29333:13;15083:22725;;29263:83;;:54;15083:22725;;26124:1;15083:22725;;;;;;26124:1;15083:22725;;;29263:54;;28923:313;29154:15;15083:22725;;-1:-1:-1;;;;15083:22725:0;;;-1:-1:-1;;;15083:22725:0;;;;29154:15;;:::i;:::-;;15083:22725;;29154:15;15083:22725;28923:313;;28940:189;15083:22725;;26124:1;15083:22725;29106:19;15083:22725;;;;26124:1;15083:22725;;;29105:24;28940:189;;:149;15083:22725;;26124:1;15083:22725;29064:19;15083:22725;;;;26124:1;15083:22725;;;29063:26;28940:149;;:107;15083:22725;;26124:1;15083:22725;;;;;;26124:1;15083:22725;;;29015:32;28940:107;;:59;15083:22725;;28991:8;15083:22725;;;;28990:9;28940:59;;:34;15083:22725;;26357:14;15083:22725;;;;28940:34;;26353:2426;15083:22725;926:6;15083:22725;;26408:15;;;;;:48;;;;26353:2426;26408:84;;;26353:2426;26408:125;;;;26353:2426;26408:154;;;26353:2426;26387:2382;26353:2426;26387:2382;15083:22725;;;26599:14;26595:218;;26387:2382;15083:22725;26966:20;15083:22725;;26962:628;;26387:2382;15083:22725;;26124:1;15083:22725;27660:25;15083:22725;;;;;;;26124:1;15083:22725;;;27660:91;;;26387:2382;27635:1120;;;27835:20;15083:22725;27825:30;;15083:22725;;27980:137;15083:22725;26124:1;28013:22;15083:22725;;;;;26124:1;15083:22725;;28013:22;;:::i;:::-;28039:9;15083:22725;-1:-1:-1;28013:35:0;27980:137;:::i;:::-;26387:2382;;;26353:2426;;15083:22725;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15083:22725:0;;;;;27635:1120;15083:22725;;26124:1;15083:22725;;;;;;26124:1;15083:22725;;;28211:91;;;27635:1120;28186:569;;;28386:20;15083:22725;28376:30;;15083:22725;;28186:569;;27635:1120;;15083:22725;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15083:22725:0;;;;;28186:569;15083:22725;;26124:1;15083:22725;28540:31;15083:22725;;;;26124:1;15083:22725;;;28539:36;28535:220;;28186:569;;;27635:1120;;28535:220;28599:137;15083:22725;26124:1;28632:22;15083:22725;;26124:1;15083:22725;;28632:22;;:::i;28599:137::-;28535:220;;;;28211:91;15083:22725;;26124:1;15083:22725;28265:31;15083:22725;;;;26124:1;15083:22725;;;28264:38;28211:91;;27660;15083:22725;;26124:1;15083:22725;27716:31;15083:22725;;;;26124:1;15083:22725;;;27715:36;27660:91;;26962:628;27039:13;;;:71;;;26962:628;27039:127;;;26962:628;27010:562;;26962:628;;;;27010:562;27281:9;26124:1;15083:22725;27252:28;15083:22725;;;26124:1;15083:22725;;27326:12;-1:-1:-1;15083:22725:0;;;27281:9;26124:1;15083:22725;27252:28;15083:22725;;27326:12;15083:22725;26124:1;15083:22725;;27010:562;;15083:22725;;;-1:-1:-1;;;15083:22725:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15083:22725:0;;;;;;;27039:127;15083:22725;;27152:13;15083:22725;;27138:28;;;27039:127;;:71;15083:22725;;27094:15;15083:22725;;27080:30;;;27039:71;;26595:218;15083:22725;26124:1;15083:22725;26670:19;15083:22725;;;;26124:1;15083:22725;;;26670:52;;;;26595:218;;15083:22725;;;-1:-1:-1;;;15083:22725:0;;;;;;;;;;;;-1:-1:-1;;;15083:22725:0;;;;;;;26670:52;15083:22725;;26124:1;15083:22725;;;26124:1;15083:22725;;;26670:52;;26408:154;15083:22725;;26554:8;15083:22725;;;;26553:9;26408:154;;:125;26512:21;26526:6;26512:21;;;26408:125;;:84;;;;;;:48;26443:13;;;;;-1:-1:-1;26408:48:0;;26253:90;5524:70;;;;;;;;5604:71;5524:70;;;;;;:::i;:::-;5604:71;:::i;:::-;26124:1;15083:22725;;;26124:1;15083:22725;6045:35;15083:22725;;;26124:1;15083:22725;;6045:35;26326:7::o;32127:573::-;15083:22725;;;;;;;;;;;;;;;;;;32289:1;15083:22725;;;;;;;;;;;;;;;;32319:4;15083:22725;;32344:15;15083:22725;;;-1:-1:-1;;;32344:22:0;;-1:-1:-1;;;;;15083:22725:0;;;;;;;;;32344:22;15083:22725;;32344:22;;;;;;;-1:-1:-1;32344:22:0;;;32127:573;15083:22725;;;32339:1;;15083:22725;32339:1;15083:22725;;;;32427:11;15083:22725;;;;;;;;;32319:4;32427:11;:::i;:::-;15083:22725;32344:15;15083:22725;;32475:218;;;;;;15083:22725;;;;;;;;;;;;;;32475:218;;15083:22725;;;32475:218;32344:22;32475:218;;15083:22725;-1:-1:-1;15083:22725:0;;;;;;;;;;;;;;;;;;-1:-1:-1;15083:22725:0;;;;;;;32319:4;;;;;;;;-1:-1:-1;32319:4:0;;;;15083:22725;;;;32668:15;15083:22725;;;;32475:218;;;;;;;;;;;;32127:573;:::o;32475:218::-;;;;:::i;:::-;15083:22725;;-1:-1:-1;15083:22725:0;;;;;;;;;;;;;;-1:-1:-1;15083:22725:0;;;;;;;;;;;;;;;;;;-1:-1:-1;15083:22725:0;;32344:22;15083:22725;;-1:-1:-1;15083:22725:0;32344:22;;;;;;;;;;;;;;;:::i;:::-;;;;;;15083:22725;;;-1:-1:-1;15083:22725:0;;;;;5397:747;-1:-1:-1;;;;;15083:22725:0;5524:70;5532:20;;;5524:70;:::i;:::-;15083:22725;5550:1;15083:22725;5550:1;15083:22725;;;5550:1;15083:22725;;5816:23;;;15083:22725;;;;;5550:1;15083:22725;5550:1;15083:22725;;;;5550:1;15083:22725;;6045:35;15083:22725;;;;5550:1;15083:22725;;5550:1;15083:22725;5999:30;15083:22725;;;5999:30;:::i;:::-;15083:22725;;;;;;;6045:35;5397:747::o;15083:22725::-;;;-1:-1:-1;;;15083:22725:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;15083:22725:0;;;;;;;5397:747;-1:-1:-1;;;;;15083:22725:0;;;;5524:70;5532:20;;;5524:70;:::i;:::-;15083:22725;5612:23;5604:71;5612:23;;;5604:71;:::i;:::-;15083:22725;5550:1;15083:22725;5550:1;15083:22725;;;5550:1;15083:22725;;5816:23;;;15083:22725;;;6045:35;15083:22725;;;;5550:1;15083:22725;5550:1;15083:22725;;;;5550:1;15083:22725;;;5550:1;15083:22725;;5550:1;15083:22725;5999:30;15083:22725;;;5999:30;:::i;33216:1712::-;33298:4;3524:9;15083:22725;3524:9;15083:22725;;;3524:9;15083:22725;;33342:18;15083:22725;33342:78;:51;33375:18;15083:22725;33342:51;;:::i;:::-;33408:12;15083:22725;33342:78;;:::i;:::-;33457:20;;;:46;;;;33216:1712;33453:83;;33568:18;15083:22725;33589:2;15083:22725;;;;;;33589:2;15083:22725;;;;;;;33550:41;;;33546:113;;33216:1712;33744:36;33743:70;33744:36;;9151:5;33744:36;;;:::i;:::-;33743:70;:::i;:::-;15083:22725;;9151:5;;;:::i;:::-;34321:40;9151:5;33943:21;33992:18;;;:::i;:::-;34043:21;9151:5;:::i;:::-;34321:28;9355:5;;15083:22725;9253:5;33375:18;15083:22725;9253:5;;:::i;9355:::-;15083:22725;9253:5;33408:12;15083:22725;9253:5;;:::i;9355:::-;34321:28;;;;:::i;:::-;:40;:::i;:::-;15083:22725;3524:9;33342:18;15083:22725;3524:9;33375:18;15083:22725;3524:9;33408:12;15083:22725;3524:9;15083:22725;;;;;;;;;;34485:17;15083:22725;;34477:53;;;;;:::i;:::-;;34545:19;;;:42;;;33216:1712;34541:271;;33216:1712;15083:22725;;3524:9;15083:22725;;;;;;34844:15;15083:22725;;34886:21;34836:85;;;;;;:::i;:::-;;33216:1712::o;34541:271::-;32954:249;15083:22725;32902:11;15083:22725;;;32884:15;15083:22725;;33298:4;32902:11;:::i;:::-;15083:22725;;32884:15;15083:22725;;;;;;;;;;;;;32954:249;;33298:4;32954:249;;;15083:22725;;;;;3524:9;15083:22725;;;;3524:9;15083:22725;;;;15283:6;15083:22725;;;;33178:15;15083:22725;;;;32954:249;;;;;;;;34541:271;15083:22725;3524:9;15083:22725;;;34668:133;32954:249;15083:22725;;;;;33342:18;15083:22725;;;;;;;;;;;;;;;34668:133;34541:271;;;;32954:249;;;;;;;;;;;;;;:::i;:::-;;;15083:22725;;;;32954:249;;;;;;;;;15083:22725;;;3524:9;15083:22725;;;;;34545:42;34568:19;;;;34545:42;;33546:113;33607:41;-1:-1:-1;33743:70:0;33546:113;;33453:83;33519:7;;;:::o;33457:46::-;33481:22;;;33457:46;;30837:1284;3385:12;15083:22725;;;;;;;;3385:12;15083:22725;;;;;;;30938:3;15083:22725;;30955:17;15083:22725;30976:12;30955:33;30951:1090;30976:12;;;31034:17;15083:22725;;31034:31;;;;;31085:7;;;:::o;31030:550::-;31226:30;;;;31538:27;31226:30;;:::i;:::-;31216:41;;:125;;;;;;31441:4;-1:-1:-1;15083:22725:0;-1:-1:-1;15083:22725:0;;;-1:-1:-1;15083:22725:0;;31474:45;:21;;;:45;:21;;;:45;;31465:54;31538:27;;:::i;:::-;31034:17;15083:22725;30951:1090;32054:10;32050:65;;30837:1284;:::o;32050:65::-;32097:6;;;:::i;31474:45::-;;;;;31216:125;31310:30;;;;:::i;:::-;31216:125;;30951:1090;31687:19;;;;;;:41;;31816:4;-1:-1:-1;15083:22725:0;-1:-1:-1;15083:22725:0;;;-1:-1:-1;15083:22725:0;;31845:45;:21;;;:45;:21;;;:45;;31836:54;30976:12;30955:17;15083:22725;32004:26;15083:22725;30951:1090;;31845:45;;;;;31687:41;;;;
Swarm Source
ipfs://18c2a9f370a5b082947e52a818c2990ac1b3576dc8ab8fcc5d2cc66f6172de94
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.