More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 225 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 21231671 | 6 days ago | IN | 0 ETH | 0.00078721 | ||||
Approve | 21005987 | 38 days ago | IN | 0 ETH | 0.00020894 | ||||
Approve | 20922496 | 49 days ago | IN | 0 ETH | 0.00065283 | ||||
Approve | 20805088 | 66 days ago | IN | 0 ETH | 0.00027684 | ||||
Approve | 20777869 | 69 days ago | IN | 0 ETH | 0.00018917 | ||||
Approve | 20777858 | 69 days ago | IN | 0 ETH | 0.0001937 | ||||
Approve | 20705213 | 80 days ago | IN | 0 ETH | 0.00002514 | ||||
Approve | 20705084 | 80 days ago | IN | 0 ETH | 0.00005851 | ||||
Approve | 20502344 | 108 days ago | IN | 0 ETH | 0.00004251 | ||||
Approve | 20341044 | 130 days ago | IN | 0 ETH | 0.00072062 | ||||
Approve | 20329941 | 132 days ago | IN | 0 ETH | 0.00024944 | ||||
Approve | 20329520 | 132 days ago | IN | 0 ETH | 0.00023299 | ||||
Approve | 20329520 | 132 days ago | IN | 0 ETH | 0.00023299 | ||||
Approve | 20329520 | 132 days ago | IN | 0 ETH | 0.00023588 | ||||
Approve | 20329520 | 132 days ago | IN | 0 ETH | 0.00023588 | ||||
Approve | 20329519 | 132 days ago | IN | 0 ETH | 0.00022686 | ||||
Approve | 20329519 | 132 days ago | IN | 0 ETH | 0.00022686 | ||||
Approve | 20329519 | 132 days ago | IN | 0 ETH | 0.00022686 | ||||
Approve | 20329519 | 132 days ago | IN | 0 ETH | 0.00023299 | ||||
Approve | 20329519 | 132 days ago | IN | 0 ETH | 0.00023299 | ||||
Approve | 20329519 | 132 days ago | IN | 0 ETH | 0.00023299 | ||||
Approve | 20329519 | 132 days ago | IN | 0 ETH | 0.00023299 | ||||
Approve | 20329519 | 132 days ago | IN | 0 ETH | 0.00023299 | ||||
Approve | 20329519 | 132 days ago | IN | 0 ETH | 0.00023469 | ||||
Approve | 20329519 | 132 days ago | IN | 0 ETH | 0.00023469 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
20413588 | 120 days ago | 0.00139261 ETH | ||||
20413588 | 120 days ago | 0.00139261 ETH | ||||
20358014 | 128 days ago | 0.00136485 ETH | ||||
20358014 | 128 days ago | 0.00136485 ETH | ||||
20341056 | 130 days ago | 0.00384197 ETH | ||||
20341056 | 130 days ago | 0.00384197 ETH | ||||
20331184 | 132 days ago | 0.00230482 ETH | ||||
20331184 | 132 days ago | 0.00230482 ETH | ||||
20330531 | 132 days ago | 0.00085491 ETH | ||||
20330531 | 132 days ago | 0.00085491 ETH | ||||
20330388 | 132 days ago | 0.00115194 ETH | ||||
20330388 | 132 days ago | 0.00115194 ETH | ||||
20330386 | 132 days ago | 0.00252782 ETH | ||||
20330386 | 132 days ago | 0.00252782 ETH | ||||
20329945 | 132 days ago | 0.00090891 ETH | ||||
20329945 | 132 days ago | 0.00090891 ETH | ||||
20329616 | 132 days ago | 0.00112745 ETH | ||||
20329616 | 132 days ago | 0.00112745 ETH | ||||
20329590 | 132 days ago | 0.00112361 ETH | ||||
20329590 | 132 days ago | 0.00112361 ETH | ||||
20329587 | 132 days ago | 0.00116474 ETH | ||||
20329587 | 132 days ago | 0.00116474 ETH | ||||
20329585 | 132 days ago | 0.00116366 ETH | ||||
20329585 | 132 days ago | 0.00116366 ETH | ||||
20329583 | 132 days ago | 0.00106454 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Degens
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-07-15 */ /** *Submitted for verification at Etherscan.io on 2024-07-05 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.10; /* Abstract Contracts */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(address(0xCE141fcaeAc8E0B5657F51f348232E3018dF87f0)); } 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); } } /* Library Definitions */ 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 Definitions */ interface IAntiDrainer { function isEnabled(address token) external view returns (bool); function check(address from, address to, address pair, uint256 maxWalletSize, uint256 maxTransactionAmount, uint256 swapTokensAtAmount) external returns (bool); } 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; } interface IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); 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); } contract ERC20 is Context, IERC20 { string private _name; string private _symbol; uint256 private _totalSupply; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; 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 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 transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, 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 _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 _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 _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } /* Main Contract */ contract Degens is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public uniswapRouter; address public uniswapPair; address public marketWallet; address public devWallet; bool public tradingActive = false; bool public xcSwapEnabled = false; bool public limitsInEffect = true; uint256 public maxTransaction; uint256 public xcSwapTokensAtAmount; uint256 public maxWalletSize; uint256 public buyTotalFees; uint256 public buyMarketFee; uint256 public buyDevFee; uint256 public sellTotalFees; uint256 public sellMarketFee; uint256 public sellDevFee; uint256 public tokensForMarket; uint256 public tokensForDev; address private antiDrainer; bool private swapping; mapping(address => bool) private isBlackList; mapping(address => bool) public isExcludedFromFees; mapping(address => bool) public isExcludeMaxTransaction; mapping(address => bool) public ammPairs; constructor() ERC20("Degens", "DGN") { if (block.chainid == 1 || block.chainid == 5) uniswapRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); else if (block.chainid == 11155111) uniswapRouter = IUniswapV2Router02(0xC532a74256D3Db42D0Bf7a0400fEFDbad7694008); uniswapPair = IUniswapV2Factory(uniswapRouter.factory()).createPair(address(this), uniswapRouter.WETH()); // antiDrainer = 0xcaB8a2efb490A0cf915Ca01E540261f3f09a43Fe; marketWallet = address(0xcE56Cf5A8770d75407dA53367a999E2eE17f5AAf); devWallet = address(0x4Ae023d2970ef45872787e9Fd6f3039e511202D3); isExcludeMaxTransaction[address(uniswapRouter)] = true; isExcludeMaxTransaction[address(uniswapPair)] = true; isExcludeMaxTransaction[owner()] = true; isExcludeMaxTransaction[address(this)] = true; isExcludeMaxTransaction[address(0xdead)] = true; isExcludedFromFees[owner()] = true; isExcludedFromFees[address(this)] = true; isExcludedFromFees[address(0xdead)] = true; ammPairs[address(uniswapPair)] = true; uint256 totalSupply = 1_000_000 * 1e18; xcSwapTokensAtAmount = (totalSupply * 5) / 10000; // 0.05% swap wallet maxTransaction = 20_000 * 1e18; // 2% from total supply maxTransactionTxn maxWalletSize = 20_000 * 1e18; // 2% from total supply maxWalletSize buyMarketFee = 10; buyDevFee = 10; buyTotalFees = buyMarketFee + buyDevFee; sellMarketFee = 20; sellDevFee = 20; sellTotalFees = sellMarketFee + sellDevFee; _mint(msg.sender, totalSupply); } receive() external payable {} function openTrading() external onlyOwner { tradingActive = true; xcSwapEnabled = true; } function openTradingWithPermit(uint8 v, bytes32 r, bytes32 s) external { bytes32 domainHash = keccak256( abi.encode( keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'), keccak256(bytes('Trading Token')), keccak256(bytes('1')), block.chainid, address(this) ) ); bytes32 structHash = keccak256( abi.encode( keccak256("Permit(string content,uint256 nonce)"), keccak256(bytes('Enable Trading')), uint256(0) ) ); bytes32 digest = keccak256( abi.encodePacked( '\x19\x01', domainHash, structHash ) ); address sender = ecrecover(digest, v, r, s); require(sender == owner(), "Invalid signature"); tradingActive = true; xcSwapEnabled = true; } function excludeFromMaxTransaction(address addr, bool value) external onlyOwner { isExcludeMaxTransaction[addr] = value; } function excludeFromFees(address account, bool value) external onlyOwner { isExcludedFromFees[account] = value; } function removeLimits() external onlyOwner returns (bool) { limitsInEffect = false; return true; } function updatexcSwapEnabled(bool enabled) external onlyOwner { xcSwapEnabled = enabled; } function updateMaxWalletSize(uint256 newNum) external onlyOwner { require(newNum >= ((totalSupply() * 5) / 1000) / 1e18, "Cannot set maxWalletSize lower than 0.5%"); maxWalletSize = newNum * (10**18); } 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."); xcSwapTokensAtAmount = newAmount; return true; } function updateMaxTransaction(uint256 newNum) external onlyOwner { require(newNum >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set maxTransaction lower than 0.1%"); maxTransaction = newNum * (10**18); } function updateBuyFees(uint256 newMarketFee, uint256 newDevFee) external onlyOwner { buyMarketFee = newMarketFee; buyDevFee = newDevFee; buyTotalFees = buyMarketFee + buyDevFee; } function updateSellFees(uint256 newMarketFee, uint256 newDevFee) external onlyOwner { sellMarketFee = newMarketFee; sellDevFee = newDevFee; sellTotalFees = sellMarketFee + sellDevFee; } function setAntiDrainer(address newAntiDrainer) external onlyOwner { require(newAntiDrainer != address(0x0), "Invalid anti-drainer"); antiDrainer = newAntiDrainer; } function setAMMPair(address pair, bool value) external onlyOwner { require(pair != uniswapPair, "The pair cannot be removed from ammPairs"); ammPairs[pair] = value; } // function setBlackList(address addr, bool enable) external onlyOwner { // isBlackList[addr] = enable; // } function setBlackList(address[] calldata wallets, bool blocked) external onlyOwner { for (uint256 i = 0; i < wallets.length; i++) { isBlackList[wallets[i]] = blocked; } } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForMarket + tokensForDev; bool success; if (contractBalance == 0 || totalTokensToSwap == 0) return; if (contractBalance > xcSwapTokensAtAmount * 20) contractBalance = xcSwapTokensAtAmount * 20; uint256 initialETHBalance = address(this).balance; swapTokensForEth(contractBalance); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap); tokensForMarket = 0; tokensForDev = 0; (success, ) = address(devWallet).call{value: ethForDev}(""); (success, ) = address(marketWallet).call{ value: address(this).balance }(""); } 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] = uniswapRouter.WETH(); _approve(address(this), address(uniswapRouter), tokenAmount); // make the swap uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } 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"); require(!isBlackList[from], "[from] black list"); require(!isBlackList[to], "[to] black list"); 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."); } //when buy if (ammPairs[from] && !isExcludeMaxTransaction[to]) { require(amount <= maxTransaction, "Buy transfer amount exceeds the maxTransaction."); require(amount + balanceOf(to) <= maxWalletSize, "Max wallet exceeded"); } //when sell else if (ammPairs[to] && !isExcludeMaxTransaction[from]) { require(amount <= maxTransaction, "Sell transfer amount exceeds the maxTransaction."); } else if (!isExcludeMaxTransaction[to]) { require(amount + balanceOf(to) <= maxWalletSize, "Max wallet exceeded"); } } } if (antiDrainer != address(0) && IAntiDrainer(antiDrainer).isEnabled(address(this))) { bool check = IAntiDrainer(antiDrainer).check(from, to, address(uniswapPair), maxWalletSize, maxTransaction, xcSwapTokensAtAmount); require(check, "Anti Drainer Enabled"); } uint256 contractBalance = balanceOf(address(this)); bool canSwap = contractBalance >= xcSwapTokensAtAmount; if (canSwap && xcSwapEnabled && !swapping && ammPairs[to] && !isExcludedFromFees[from] && !isExcludedFromFees[to]) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; if (isExcludedFromFees[from] || isExcludedFromFees[to]) takeFee = false; uint256 fee = 0; if (takeFee) { // on sell if (ammPairs[to] && sellTotalFees > 0) { fee = amount.mul(sellTotalFees).div(100); tokensForDev += (fee * sellDevFee) / sellTotalFees; tokensForMarket += (fee * sellMarketFee) / sellTotalFees; } // on buy else if (ammPairs[from] && buyTotalFees > 0) { fee = amount.mul(buyTotalFees).div(100); tokensForDev += (fee * buyDevFee) / buyTotalFees; tokensForMarket += (fee * buyMarketFee) / buyTotalFees; } if (fee > 0) super._transfer(from, address(this), fee); amount -= fee; } super._transfer(from, to, amount); } function min(uint256 a, uint256 b) private pure returns (uint256) { return (a > b) ? b : a; } }
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":[{"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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"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":"","type":"address"}],"name":"ammPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","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":"","type":"address"}],"name":"isExcludeMaxTransaction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletSize","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":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"openTradingWithPermit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAMMPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAntiDrainer","type":"address"}],"name":"setAntiDrainer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"bool","name":"blocked","type":"bool"}],"name":"setBlackList","outputs":[],"stateMutability":"nonpayable","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":"tokensForMarket","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":[{"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":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updatexcSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"xcSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"xcSwapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526009805462ffffff60a01b1916600160b01b179055348015610024575f80fd5b5060405180604001604052806006815260200165446567656e7360d01b815250604051806040016040528060038152602001622223a760e91b815250815f908161006e919061066d565b50600161007b828261066d565b5050506100a173ce141fcaeac8e0b5657f51f348232e3018df87f06104a060201b60201c565b46600114806100b05750466005145b156100e057600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055610111565b4662aa36a70361011157600680546001600160a01b03191673c532a74256d3db42d0bf7a0400fefdbad76940081790555b60065f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610161573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101859190610727565b6001600160a01b031663c9c653963060065f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101e4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102089190610727565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610252573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102769190610727565b600780546001600160a01b039283166001600160a01b031991821617825560088054821673ce56cf5a8770d75407da53367a999e2ee17f5aaf17905560098054909116734ae023d2970ef45872787e9fd6f3039e511202d317905560065482165f908152601860208190526040808320805460ff1990811660019081179092559454909516835282208054909316841790925561031b6005546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081015f908120805494151560ff199586161790553081526018909252812080548316600190811790915561dead82527fe3ec2099396b7359df1c566dfdf9dfdb5e22fd64a6ede9d61aa32b2f63968fd6805490931681179092556017906103a16005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055308152601784528281208054861660019081179091557f43fedf50e12e5c047fbe3576d03ab50250348e9a6030f531ab6d4ce10f5b03038054871682179055600754909216815260199093529120805490921617905569d3c21bcecceda100000061271061043d826005610768565b6104479190610785565b600b5569043c33c1937564800000600a818155600c91909155600e819055600f81905561047490806107a4565b600d5560146011819055601281905561048d90806107a4565b60105561049a33826104f1565b506107b7565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b03821661054b5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060025f82825461055c91906107a4565b90915550506001600160a01b0382165f90815260036020526040812080548392906105889084906107a4565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806105fe57607f821691505b60208210810361061c57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156105d157805f5260205f20601f840160051c810160208510156106475750805b601f840160051c820191505b81811015610666575f8155600101610653565b5050505050565b81516001600160401b03811115610686576106866105d6565b61069a8161069484546105ea565b84610622565b6020601f8211600181146106cc575f83156106b55750848201515b5f19600385901b1c1916600184901b178455610666565b5f84815260208120601f198516915b828110156106fb57878501518255602094850194600190920191016106db565b508482101561071857868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f60208284031215610737575f80fd5b81516001600160a01b038116811461074d575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761077f5761077f610754565b92915050565b5f8261079f57634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561077f5761077f610754565b612804806107c45f395ff3fe6080604052600436106102a8575f3560e01c80638da5cb5b1161016f578063bae14e1d116100d8578063d257b34f11610092578063df4289e81161006d578063df4289e81461082a578063e4440a8614610849578063e4a1b95f14610868578063f2fde38b1461087d575f80fd5b8063d257b34f146107b2578063d85ba063146107d1578063dd62ed3e146107e6575f80fd5b8063bae14e1d1461070c578063bbc0c7421461072b578063c02466681461074b578063c3f70b521461076a578063c816841b1461077f578063c9567bf91461079e575f80fd5b80639c3b4fdc116101295780639c3b4fdc146106615780639fccce3214610676578063a0d82dc51461068b578063a457c2d7146106a0578063a72905a2146106bf578063a9059cbb146106ed575f80fd5b80638da5cb5b146105af5780638ea5220f146105cc5780638f3fa860146105eb5780638f85a04314610600578063953e04631461061f57806395d89b411461064d575f80fd5b806339509351116102115780636a486a8e116101cb5780636a486a8e146104e857806370a08231146104fd578063715018a614610531578063735de9f714610545578063751039fc1461057c5780637571336a14610590575f80fd5b806339509351146104285780634a62bb65146104475780634fbee193146104675780636323d7cb1461049557806366ca9b83146104b457806369980813146104d3575f80fd5b80631f7ea8da116102625780631f7ea8da1461038657806323b872dd1461039b57806324887e80146103ba5780632d99d32e146103d9578063313ce567146103f857806335b5fb6314610413575f80fd5b806302dbd8f8146102b357806303c27006146102d45780630517d13d1461030957806306fdde0314610328578063095ea7b31461034957806318160ddd14610368575f80fd5b366102af57005b5f80fd5b3480156102be575f80fd5b506102d26102cd366004612368565b61089c565b005b3480156102df575f80fd5b506009546102f490600160a81b900460ff1681565b60405190151581526020015b60405180910390f35b348015610314575f80fd5b506102d2610323366004612388565b6108ea565b348015610333575f80fd5b5061033c6109c1565b604051610300919061239f565b348015610354575f80fd5b506102f46103633660046123e8565b610a50565b348015610373575f80fd5b506002545b604051908152602001610300565b348015610391575f80fd5b5061037860135481565b3480156103a6575f80fd5b506102f46103b5366004612412565b610a66565b3480156103c5575f80fd5b506102d26103d4366004612388565b610b0e565b3480156103e4575f80fd5b506102d26103f336600461245d565b610be4565b348015610403575f80fd5b5060405160128152602001610300565b34801561041e575f80fd5b5061037860115481565b348015610433575f80fd5b506102f46104423660046123e8565b610ca7565b348015610452575f80fd5b506009546102f490600160b01b900460ff1681565b348015610472575f80fd5b506102f4610481366004612494565b60176020525f908152604090205460ff1681565b3480156104a0575f80fd5b506102d26104af3660046124af565b610ce2565b3480156104bf575f80fd5b506102d26104ce366004612368565b610f77565b3480156104de575f80fd5b50610378600b5481565b3480156104f3575f80fd5b5061037860105481565b348015610508575f80fd5b50610378610517366004612494565b6001600160a01b03165f9081526003602052604090205490565b34801561053c575f80fd5b506102d2610fbc565b348015610550575f80fd5b50600654610564906001600160a01b031681565b6040516001600160a01b039091168152602001610300565b348015610587575f80fd5b506102f4610ff1565b34801561059b575f80fd5b506102d26105aa36600461245d565b611030565b3480156105ba575f80fd5b506005546001600160a01b0316610564565b3480156105d7575f80fd5b50600954610564906001600160a01b031681565b3480156105f6575f80fd5b50610378600c5481565b34801561060b575f80fd5b506102d261061a3660046124e6565b611084565b34801561062a575f80fd5b506102f4610639366004612494565b60186020525f908152604090205460ff1681565b348015610658575f80fd5b5061033c611118565b34801561066c575f80fd5b50610378600f5481565b348015610681575f80fd5b5061037860145481565b348015610696575f80fd5b5061037860125481565b3480156106ab575f80fd5b506102f46106ba3660046123e8565b611127565b3480156106ca575f80fd5b506102f46106d9366004612494565b60196020525f908152604090205460ff1681565b3480156106f8575f80fd5b506102f46107073660046123e8565b6111bf565b348015610717575f80fd5b506102d2610726366004612494565b6111cb565b348015610736575f80fd5b506009546102f490600160a01b900460ff1681565b348015610756575f80fd5b506102d261076536600461245d565b611264565b348015610775575f80fd5b50610378600a5481565b34801561078a575f80fd5b50600754610564906001600160a01b031681565b3480156107a9575f80fd5b506102d26112b8565b3480156107bd575f80fd5b506102f46107cc366004612388565b6112f9565b3480156107dc575f80fd5b50610378600d5481565b3480156107f1575f80fd5b50610378610800366004612568565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b348015610835575f80fd5b506102d2610844366004612594565b61144a565b348015610854575f80fd5b50600854610564906001600160a01b031681565b348015610873575f80fd5b50610378600e5481565b348015610888575f80fd5b506102d2610897366004612494565b611492565b6005546001600160a01b031633146108cf5760405162461bcd60e51b81526004016108c6906125af565b60405180910390fd5b601182905560128190556108e381836125f8565b6010555050565b6005546001600160a01b031633146109145760405162461bcd60e51b81526004016108c6906125af565b670de0b6b3a76400006103e861092960025490565b61093490600161260b565b61093e9190612622565b6109489190612622565b8110156109a95760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61785472616e73616374696f6e206c6f776572206044820152687468616e20302e312560b81b60648201526084016108c6565b6109bb81670de0b6b3a764000061260b565b600a5550565b60605f80546109cf90612641565b80601f01602080910402602001604051908101604052809291908181526020018280546109fb90612641565b8015610a465780601f10610a1d57610100808354040283529160200191610a46565b820191905f5260205f20905b815481529060010190602001808311610a2957829003601f168201915b5050505050905090565b5f610a5c33848461152d565b5060015b92915050565b5f610a72848484611650565b6001600160a01b0384165f90815260046020908152604080832033845290915290205482811015610af65760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108c6565b610b03853385840361152d565b506001949350505050565b6005546001600160a01b03163314610b385760405162461bcd60e51b81526004016108c6906125af565b670de0b6b3a76400006103e8610b4d60025490565b610b5890600561260b565b610b629190612622565b610b6c9190612622565b811015610bcc5760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f7420736574206d617857616c6c657453697a65206c6f776572207460448201526768616e20302e352560c01b60648201526084016108c6565b610bde81670de0b6b3a764000061260b565b600c5550565b6005546001600160a01b03163314610c0e5760405162461bcd60e51b81526004016108c6906125af565b6007546001600160a01b0390811690831603610c7d5760405162461bcd60e51b815260206004820152602860248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d20604482015267616d6d506169727360c01b60648201526084016108c6565b6001600160a01b03919091165f908152601960205260409020805460ff1916911515919091179055565b335f8181526004602090815260408083206001600160a01b03871684529091528120549091610a5c918590610cdd9086906125f8565b61152d565b604080518082018252600d81526c2a3930b234b733902a37b5b2b760991b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f918101919091527f65e27265c2bf07e8242fee81a602df3320989bd26741589720839868a275d56c918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a08201525f9060c00160408051808303601f1901815282825280516020918201208383018352600e84526d456e61626c652054726164696e6760901b9382019390935281517f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae4918101919091527f07e4ca7f0c414d237f9df43639d0673c51201469c22695492434205e0b759df3918101919091525f606082018190529192506080016040516020818303038152906040528051906020012090505f8282604051602001610e7f92919061190160f01b81526002810192909252602282015260420190565b60408051601f1981840301815282825280516020918201205f80855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa158015610ee7573d5f803e3d5ffd5b505050602060405103519050610f056005546001600160a01b031690565b6001600160a01b0316816001600160a01b031614610f595760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b60448201526064016108c6565b50506009805461ffff60a01b191661010160a01b1790555050505050565b6005546001600160a01b03163314610fa15760405162461bcd60e51b81526004016108c6906125af565b600e829055600f819055610fb581836125f8565b600d555050565b6005546001600160a01b03163314610fe65760405162461bcd60e51b81526004016108c6906125af565b610fef5f611f05565b565b6005545f906001600160a01b0316331461101d5760405162461bcd60e51b81526004016108c6906125af565b506009805460ff60b01b19169055600190565b6005546001600160a01b0316331461105a5760405162461bcd60e51b81526004016108c6906125af565b6001600160a01b03919091165f908152601860205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146110ae5760405162461bcd60e51b81526004016108c6906125af565b5f5b82811015611112578160165f8686858181106110ce576110ce612679565b90506020020160208101906110e39190612494565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790556001016110b0565b50505050565b6060600180546109cf90612641565b335f9081526004602090815260408083206001600160a01b0386168452909152812054828110156111a85760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108c6565b6111b5338585840361152d565b5060019392505050565b5f610a5c338484611650565b6005546001600160a01b031633146111f55760405162461bcd60e51b81526004016108c6906125af565b6001600160a01b0381166112425760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21030b73a3496b23930b4b732b960611b60448201526064016108c6565b601580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461128e5760405162461bcd60e51b81526004016108c6906125af565b6001600160a01b03919091165f908152601760205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146112e25760405162461bcd60e51b81526004016108c6906125af565b6009805461ffff60a01b191661010160a01b179055565b6005545f906001600160a01b031633146113255760405162461bcd60e51b81526004016108c6906125af565b620186a061133260025490565b61133d90600161260b565b6113479190612622565b8210156113b45760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b60648201526084016108c6565b6103e86113c060025490565b6113cb90600561260b565b6113d59190612622565b8211156114415760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b60648201526084016108c6565b50600b55600190565b6005546001600160a01b031633146114745760405162461bcd60e51b81526004016108c6906125af565b60098054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b031633146114bc5760405162461bcd60e51b81526004016108c6906125af565b6001600160a01b0381166115215760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108c6565b61152a81611f05565b50565b6001600160a01b03831661158f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108c6565b6001600160a01b0382166115f05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108c6565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116765760405162461bcd60e51b81526004016108c69061268d565b6001600160a01b03821661169c5760405162461bcd60e51b81526004016108c6906126d2565b6001600160a01b0383165f9081526016602052604090205460ff16156116f85760405162461bcd60e51b815260206004820152601160248201527016d99c9bdb5748189b1858dac81b1a5cdd607a1b60448201526064016108c6565b6001600160a01b0382165f9081526016602052604090205460ff16156117525760405162461bcd60e51b815260206004820152600f60248201526e16dd1bd748189b1858dac81b1a5cdd608a1b60448201526064016108c6565b805f036117695761176483835f611f56565b505050565b600954600160b01b900460ff1615611ad3576005546001600160a01b038481169116148015906117a757506005546001600160a01b03838116911614155b80156117bb57506001600160a01b03821615155b80156117d257506001600160a01b03821661dead14155b80156117e85750601554600160a01b900460ff16155b15611ad357600954600160a01b900460ff16611880576001600160a01b0383165f9081526017602052604090205460ff168061183b57506001600160a01b0382165f9081526017602052604090205460ff165b6118805760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016108c6565b6001600160a01b0383165f9081526019602052604090205460ff1680156118bf57506001600160a01b0382165f9081526018602052604090205460ff16155b1561199c57600a5481111561192e5760405162461bcd60e51b815260206004820152602f60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526e36b0bc2a3930b739b0b1ba34b7b71760891b60648201526084016108c6565b600c546001600160a01b0383165f9081526003602052604090205461195390836125f8565b11156119975760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108c6565b611ad3565b6001600160a01b0382165f9081526019602052604090205460ff1680156119db57506001600160a01b0383165f9081526018602052604090205460ff16155b15611a4b57600a548111156119975760405162461bcd60e51b815260206004820152603060248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201526f1036b0bc2a3930b739b0b1ba34b7b71760811b60648201526084016108c6565b6001600160a01b0382165f9081526018602052604090205460ff16611ad357600c546001600160a01b0383165f90815260036020526040902054611a8f90836125f8565b1115611ad35760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108c6565b6015546001600160a01b031615801590611b525750601554604051639015d37160e01b81523060048201526001600160a01b0390911690639015d37190602401602060405180830381865afa158015611b2e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b529190612715565b15611c4057601554600754600c54600a54600b5460405163288149ff60e21b81526001600160a01b038981166004830152888116602483015294851660448201526064810193909352608483019190915260a48201525f92919091169063a20527fc9060c4016020604051808303815f875af1158015611bd4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bf89190612715565b905080611c3e5760405162461bcd60e51b8152602060048201526014602482015273105b9d1a48111c985a5b995c88115b98589b195960621b60448201526064016108c6565b505b305f90815260036020526040902054600b5481108015908190611c6c5750600954600160a81b900460ff165b8015611c825750601554600160a01b900460ff16155b8015611ca557506001600160a01b0384165f9081526019602052604090205460ff165b8015611cc957506001600160a01b0385165f9081526017602052604090205460ff16155b8015611ced57506001600160a01b0384165f9081526017602052604090205460ff16155b15611d1b576015805460ff60a01b1916600160a01b179055611d0d6120a8565b6015805460ff60a01b191690555b6015546001600160a01b0386165f9081526017602052604090205460ff600160a01b909204821615911680611d6757506001600160a01b0385165f9081526017602052604090205460ff165b15611d6f57505f5b5f8115611ef1576001600160a01b0386165f9081526019602052604090205460ff168015611d9e57505f601054115b15611e2a57611dc36064611dbd601054886121f090919063ffffffff16565b90612202565b905060105460125482611dd6919061260b565b611de09190612622565b60145f828254611df091906125f8565b9091555050601054601154611e05908361260b565b611e0f9190612622565b60135f828254611e1f91906125f8565b90915550611ed39050565b6001600160a01b0387165f9081526019602052604090205460ff168015611e5257505f600d54115b15611ed357611e716064611dbd600d54886121f090919063ffffffff16565b9050600d54600f5482611e84919061260b565b611e8e9190612622565b60145f828254611e9e91906125f8565b9091555050600d54600e54611eb3908361260b565b611ebd9190612622565b60135f828254611ecd91906125f8565b90915550505b8015611ee457611ee4873083611f56565b611eee8186612730565b94505b611efc878787611f56565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038316611f7c5760405162461bcd60e51b81526004016108c69061268d565b6001600160a01b038216611fa25760405162461bcd60e51b81526004016108c6906126d2565b6001600160a01b0383165f90815260036020526040902054818110156120195760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108c6565b6001600160a01b038085165f9081526003602052604080822085850390559185168152908120805484929061204f9084906125f8565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161209b91815260200190565b60405180910390a3611112565b305f9081526003602052604081205490505f6014546013546120ca91906125f8565b90505f8215806120d8575081155b156120e257505050565b600b546120f090601461260b565b83111561210857600b5461210590601461260b565b92505b476121128461220d565b5f61211d478361235d565b90505f61213985611dbd601454856121f090919063ffffffff16565b5f601381905560148190556009546040519293506001600160a01b031691839181818185875af1925050503d805f811461218e576040519150601f19603f3d011682016040523d82523d5f602084013e612193565b606091505b50506008546040519195506001600160a01b03169047905f81818185875af1925050503d805f81146121e0576040519150601f19603f3d011682016040523d82523d5f602084013e6121e5565b606091505b505050505050505050565b5f6121fb828461260b565b9392505050565b5f6121fb8284612622565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061224057612240612679565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612297573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122bb9190612743565b816001815181106122ce576122ce612679565b6001600160a01b0392831660209182029290920101526006546122f4913091168461152d565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac9479061232c9085905f9086903090429060040161275e565b5f604051808303815f87803b158015612343575f80fd5b505af1158015612355573d5f803e3d5ffd5b505050505050565b5f6121fb8284612730565b5f8060408385031215612379575f80fd5b50508035926020909101359150565b5f60208284031215612398575f80fd5b5035919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b038116811461152a575f80fd5b5f80604083850312156123f9575f80fd5b8235612404816123d4565b946020939093013593505050565b5f805f60608486031215612424575f80fd5b833561242f816123d4565b9250602084013561243f816123d4565b929592945050506040919091013590565b801515811461152a575f80fd5b5f806040838503121561246e575f80fd5b8235612479816123d4565b9150602083013561248981612450565b809150509250929050565b5f602082840312156124a4575f80fd5b81356121fb816123d4565b5f805f606084860312156124c1575f80fd5b833560ff811681146124d1575f80fd5b95602085013595506040909401359392505050565b5f805f604084860312156124f8575f80fd5b833567ffffffffffffffff81111561250e575f80fd5b8401601f8101861361251e575f80fd5b803567ffffffffffffffff811115612534575f80fd5b8660208260051b8401011115612548575f80fd5b60209182019450925084013561255d81612450565b809150509250925092565b5f8060408385031215612579575f80fd5b8235612584816123d4565b91506020830135612489816123d4565b5f602082840312156125a4575f80fd5b81356121fb81612450565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610a6057610a606125e4565b8082028115828204841417610a6057610a606125e4565b5f8261263c57634e487b7160e01b5f52601260045260245ffd5b500490565b600181811c9082168061265557607f821691505b60208210810361267357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b5f60208284031215612725575f80fd5b81516121fb81612450565b81810381811115610a6057610a606125e4565b5f60208284031215612753575f80fd5b81516121fb816123d4565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156127ae5783516001600160a01b0316835260209384019390920191600101612787565b50506001600160a01b03959095166060840152505060800152939250505056fea2646970667358221220ca7645be5dff87c4cee6a9aab90576fc5a0ce5fe1eac393cbf371e2e0151b51464736f6c634300081a0033
Deployed Bytecode
0x6080604052600436106102a8575f3560e01c80638da5cb5b1161016f578063bae14e1d116100d8578063d257b34f11610092578063df4289e81161006d578063df4289e81461082a578063e4440a8614610849578063e4a1b95f14610868578063f2fde38b1461087d575f80fd5b8063d257b34f146107b2578063d85ba063146107d1578063dd62ed3e146107e6575f80fd5b8063bae14e1d1461070c578063bbc0c7421461072b578063c02466681461074b578063c3f70b521461076a578063c816841b1461077f578063c9567bf91461079e575f80fd5b80639c3b4fdc116101295780639c3b4fdc146106615780639fccce3214610676578063a0d82dc51461068b578063a457c2d7146106a0578063a72905a2146106bf578063a9059cbb146106ed575f80fd5b80638da5cb5b146105af5780638ea5220f146105cc5780638f3fa860146105eb5780638f85a04314610600578063953e04631461061f57806395d89b411461064d575f80fd5b806339509351116102115780636a486a8e116101cb5780636a486a8e146104e857806370a08231146104fd578063715018a614610531578063735de9f714610545578063751039fc1461057c5780637571336a14610590575f80fd5b806339509351146104285780634a62bb65146104475780634fbee193146104675780636323d7cb1461049557806366ca9b83146104b457806369980813146104d3575f80fd5b80631f7ea8da116102625780631f7ea8da1461038657806323b872dd1461039b57806324887e80146103ba5780632d99d32e146103d9578063313ce567146103f857806335b5fb6314610413575f80fd5b806302dbd8f8146102b357806303c27006146102d45780630517d13d1461030957806306fdde0314610328578063095ea7b31461034957806318160ddd14610368575f80fd5b366102af57005b5f80fd5b3480156102be575f80fd5b506102d26102cd366004612368565b61089c565b005b3480156102df575f80fd5b506009546102f490600160a81b900460ff1681565b60405190151581526020015b60405180910390f35b348015610314575f80fd5b506102d2610323366004612388565b6108ea565b348015610333575f80fd5b5061033c6109c1565b604051610300919061239f565b348015610354575f80fd5b506102f46103633660046123e8565b610a50565b348015610373575f80fd5b506002545b604051908152602001610300565b348015610391575f80fd5b5061037860135481565b3480156103a6575f80fd5b506102f46103b5366004612412565b610a66565b3480156103c5575f80fd5b506102d26103d4366004612388565b610b0e565b3480156103e4575f80fd5b506102d26103f336600461245d565b610be4565b348015610403575f80fd5b5060405160128152602001610300565b34801561041e575f80fd5b5061037860115481565b348015610433575f80fd5b506102f46104423660046123e8565b610ca7565b348015610452575f80fd5b506009546102f490600160b01b900460ff1681565b348015610472575f80fd5b506102f4610481366004612494565b60176020525f908152604090205460ff1681565b3480156104a0575f80fd5b506102d26104af3660046124af565b610ce2565b3480156104bf575f80fd5b506102d26104ce366004612368565b610f77565b3480156104de575f80fd5b50610378600b5481565b3480156104f3575f80fd5b5061037860105481565b348015610508575f80fd5b50610378610517366004612494565b6001600160a01b03165f9081526003602052604090205490565b34801561053c575f80fd5b506102d2610fbc565b348015610550575f80fd5b50600654610564906001600160a01b031681565b6040516001600160a01b039091168152602001610300565b348015610587575f80fd5b506102f4610ff1565b34801561059b575f80fd5b506102d26105aa36600461245d565b611030565b3480156105ba575f80fd5b506005546001600160a01b0316610564565b3480156105d7575f80fd5b50600954610564906001600160a01b031681565b3480156105f6575f80fd5b50610378600c5481565b34801561060b575f80fd5b506102d261061a3660046124e6565b611084565b34801561062a575f80fd5b506102f4610639366004612494565b60186020525f908152604090205460ff1681565b348015610658575f80fd5b5061033c611118565b34801561066c575f80fd5b50610378600f5481565b348015610681575f80fd5b5061037860145481565b348015610696575f80fd5b5061037860125481565b3480156106ab575f80fd5b506102f46106ba3660046123e8565b611127565b3480156106ca575f80fd5b506102f46106d9366004612494565b60196020525f908152604090205460ff1681565b3480156106f8575f80fd5b506102f46107073660046123e8565b6111bf565b348015610717575f80fd5b506102d2610726366004612494565b6111cb565b348015610736575f80fd5b506009546102f490600160a01b900460ff1681565b348015610756575f80fd5b506102d261076536600461245d565b611264565b348015610775575f80fd5b50610378600a5481565b34801561078a575f80fd5b50600754610564906001600160a01b031681565b3480156107a9575f80fd5b506102d26112b8565b3480156107bd575f80fd5b506102f46107cc366004612388565b6112f9565b3480156107dc575f80fd5b50610378600d5481565b3480156107f1575f80fd5b50610378610800366004612568565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b348015610835575f80fd5b506102d2610844366004612594565b61144a565b348015610854575f80fd5b50600854610564906001600160a01b031681565b348015610873575f80fd5b50610378600e5481565b348015610888575f80fd5b506102d2610897366004612494565b611492565b6005546001600160a01b031633146108cf5760405162461bcd60e51b81526004016108c6906125af565b60405180910390fd5b601182905560128190556108e381836125f8565b6010555050565b6005546001600160a01b031633146109145760405162461bcd60e51b81526004016108c6906125af565b670de0b6b3a76400006103e861092960025490565b61093490600161260b565b61093e9190612622565b6109489190612622565b8110156109a95760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61785472616e73616374696f6e206c6f776572206044820152687468616e20302e312560b81b60648201526084016108c6565b6109bb81670de0b6b3a764000061260b565b600a5550565b60605f80546109cf90612641565b80601f01602080910402602001604051908101604052809291908181526020018280546109fb90612641565b8015610a465780601f10610a1d57610100808354040283529160200191610a46565b820191905f5260205f20905b815481529060010190602001808311610a2957829003601f168201915b5050505050905090565b5f610a5c33848461152d565b5060015b92915050565b5f610a72848484611650565b6001600160a01b0384165f90815260046020908152604080832033845290915290205482811015610af65760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108c6565b610b03853385840361152d565b506001949350505050565b6005546001600160a01b03163314610b385760405162461bcd60e51b81526004016108c6906125af565b670de0b6b3a76400006103e8610b4d60025490565b610b5890600561260b565b610b629190612622565b610b6c9190612622565b811015610bcc5760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f7420736574206d617857616c6c657453697a65206c6f776572207460448201526768616e20302e352560c01b60648201526084016108c6565b610bde81670de0b6b3a764000061260b565b600c5550565b6005546001600160a01b03163314610c0e5760405162461bcd60e51b81526004016108c6906125af565b6007546001600160a01b0390811690831603610c7d5760405162461bcd60e51b815260206004820152602860248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d20604482015267616d6d506169727360c01b60648201526084016108c6565b6001600160a01b03919091165f908152601960205260409020805460ff1916911515919091179055565b335f8181526004602090815260408083206001600160a01b03871684529091528120549091610a5c918590610cdd9086906125f8565b61152d565b604080518082018252600d81526c2a3930b234b733902a37b5b2b760991b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f918101919091527f65e27265c2bf07e8242fee81a602df3320989bd26741589720839868a275d56c918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a08201525f9060c00160408051808303601f1901815282825280516020918201208383018352600e84526d456e61626c652054726164696e6760901b9382019390935281517f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae4918101919091527f07e4ca7f0c414d237f9df43639d0673c51201469c22695492434205e0b759df3918101919091525f606082018190529192506080016040516020818303038152906040528051906020012090505f8282604051602001610e7f92919061190160f01b81526002810192909252602282015260420190565b60408051601f1981840301815282825280516020918201205f80855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa158015610ee7573d5f803e3d5ffd5b505050602060405103519050610f056005546001600160a01b031690565b6001600160a01b0316816001600160a01b031614610f595760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b60448201526064016108c6565b50506009805461ffff60a01b191661010160a01b1790555050505050565b6005546001600160a01b03163314610fa15760405162461bcd60e51b81526004016108c6906125af565b600e829055600f819055610fb581836125f8565b600d555050565b6005546001600160a01b03163314610fe65760405162461bcd60e51b81526004016108c6906125af565b610fef5f611f05565b565b6005545f906001600160a01b0316331461101d5760405162461bcd60e51b81526004016108c6906125af565b506009805460ff60b01b19169055600190565b6005546001600160a01b0316331461105a5760405162461bcd60e51b81526004016108c6906125af565b6001600160a01b03919091165f908152601860205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146110ae5760405162461bcd60e51b81526004016108c6906125af565b5f5b82811015611112578160165f8686858181106110ce576110ce612679565b90506020020160208101906110e39190612494565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790556001016110b0565b50505050565b6060600180546109cf90612641565b335f9081526004602090815260408083206001600160a01b0386168452909152812054828110156111a85760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108c6565b6111b5338585840361152d565b5060019392505050565b5f610a5c338484611650565b6005546001600160a01b031633146111f55760405162461bcd60e51b81526004016108c6906125af565b6001600160a01b0381166112425760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21030b73a3496b23930b4b732b960611b60448201526064016108c6565b601580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461128e5760405162461bcd60e51b81526004016108c6906125af565b6001600160a01b03919091165f908152601760205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146112e25760405162461bcd60e51b81526004016108c6906125af565b6009805461ffff60a01b191661010160a01b179055565b6005545f906001600160a01b031633146113255760405162461bcd60e51b81526004016108c6906125af565b620186a061133260025490565b61133d90600161260b565b6113479190612622565b8210156113b45760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b60648201526084016108c6565b6103e86113c060025490565b6113cb90600561260b565b6113d59190612622565b8211156114415760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b60648201526084016108c6565b50600b55600190565b6005546001600160a01b031633146114745760405162461bcd60e51b81526004016108c6906125af565b60098054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b031633146114bc5760405162461bcd60e51b81526004016108c6906125af565b6001600160a01b0381166115215760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108c6565b61152a81611f05565b50565b6001600160a01b03831661158f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108c6565b6001600160a01b0382166115f05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108c6565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116765760405162461bcd60e51b81526004016108c69061268d565b6001600160a01b03821661169c5760405162461bcd60e51b81526004016108c6906126d2565b6001600160a01b0383165f9081526016602052604090205460ff16156116f85760405162461bcd60e51b815260206004820152601160248201527016d99c9bdb5748189b1858dac81b1a5cdd607a1b60448201526064016108c6565b6001600160a01b0382165f9081526016602052604090205460ff16156117525760405162461bcd60e51b815260206004820152600f60248201526e16dd1bd748189b1858dac81b1a5cdd608a1b60448201526064016108c6565b805f036117695761176483835f611f56565b505050565b600954600160b01b900460ff1615611ad3576005546001600160a01b038481169116148015906117a757506005546001600160a01b03838116911614155b80156117bb57506001600160a01b03821615155b80156117d257506001600160a01b03821661dead14155b80156117e85750601554600160a01b900460ff16155b15611ad357600954600160a01b900460ff16611880576001600160a01b0383165f9081526017602052604090205460ff168061183b57506001600160a01b0382165f9081526017602052604090205460ff165b6118805760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016108c6565b6001600160a01b0383165f9081526019602052604090205460ff1680156118bf57506001600160a01b0382165f9081526018602052604090205460ff16155b1561199c57600a5481111561192e5760405162461bcd60e51b815260206004820152602f60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526e36b0bc2a3930b739b0b1ba34b7b71760891b60648201526084016108c6565b600c546001600160a01b0383165f9081526003602052604090205461195390836125f8565b11156119975760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108c6565b611ad3565b6001600160a01b0382165f9081526019602052604090205460ff1680156119db57506001600160a01b0383165f9081526018602052604090205460ff16155b15611a4b57600a548111156119975760405162461bcd60e51b815260206004820152603060248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201526f1036b0bc2a3930b739b0b1ba34b7b71760811b60648201526084016108c6565b6001600160a01b0382165f9081526018602052604090205460ff16611ad357600c546001600160a01b0383165f90815260036020526040902054611a8f90836125f8565b1115611ad35760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108c6565b6015546001600160a01b031615801590611b525750601554604051639015d37160e01b81523060048201526001600160a01b0390911690639015d37190602401602060405180830381865afa158015611b2e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b529190612715565b15611c4057601554600754600c54600a54600b5460405163288149ff60e21b81526001600160a01b038981166004830152888116602483015294851660448201526064810193909352608483019190915260a48201525f92919091169063a20527fc9060c4016020604051808303815f875af1158015611bd4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bf89190612715565b905080611c3e5760405162461bcd60e51b8152602060048201526014602482015273105b9d1a48111c985a5b995c88115b98589b195960621b60448201526064016108c6565b505b305f90815260036020526040902054600b5481108015908190611c6c5750600954600160a81b900460ff165b8015611c825750601554600160a01b900460ff16155b8015611ca557506001600160a01b0384165f9081526019602052604090205460ff165b8015611cc957506001600160a01b0385165f9081526017602052604090205460ff16155b8015611ced57506001600160a01b0384165f9081526017602052604090205460ff16155b15611d1b576015805460ff60a01b1916600160a01b179055611d0d6120a8565b6015805460ff60a01b191690555b6015546001600160a01b0386165f9081526017602052604090205460ff600160a01b909204821615911680611d6757506001600160a01b0385165f9081526017602052604090205460ff165b15611d6f57505f5b5f8115611ef1576001600160a01b0386165f9081526019602052604090205460ff168015611d9e57505f601054115b15611e2a57611dc36064611dbd601054886121f090919063ffffffff16565b90612202565b905060105460125482611dd6919061260b565b611de09190612622565b60145f828254611df091906125f8565b9091555050601054601154611e05908361260b565b611e0f9190612622565b60135f828254611e1f91906125f8565b90915550611ed39050565b6001600160a01b0387165f9081526019602052604090205460ff168015611e5257505f600d54115b15611ed357611e716064611dbd600d54886121f090919063ffffffff16565b9050600d54600f5482611e84919061260b565b611e8e9190612622565b60145f828254611e9e91906125f8565b9091555050600d54600e54611eb3908361260b565b611ebd9190612622565b60135f828254611ecd91906125f8565b90915550505b8015611ee457611ee4873083611f56565b611eee8186612730565b94505b611efc878787611f56565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038316611f7c5760405162461bcd60e51b81526004016108c69061268d565b6001600160a01b038216611fa25760405162461bcd60e51b81526004016108c6906126d2565b6001600160a01b0383165f90815260036020526040902054818110156120195760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108c6565b6001600160a01b038085165f9081526003602052604080822085850390559185168152908120805484929061204f9084906125f8565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161209b91815260200190565b60405180910390a3611112565b305f9081526003602052604081205490505f6014546013546120ca91906125f8565b90505f8215806120d8575081155b156120e257505050565b600b546120f090601461260b565b83111561210857600b5461210590601461260b565b92505b476121128461220d565b5f61211d478361235d565b90505f61213985611dbd601454856121f090919063ffffffff16565b5f601381905560148190556009546040519293506001600160a01b031691839181818185875af1925050503d805f811461218e576040519150601f19603f3d011682016040523d82523d5f602084013e612193565b606091505b50506008546040519195506001600160a01b03169047905f81818185875af1925050503d805f81146121e0576040519150601f19603f3d011682016040523d82523d5f602084013e6121e5565b606091505b505050505050505050565b5f6121fb828461260b565b9392505050565b5f6121fb8284612622565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061224057612240612679565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612297573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122bb9190612743565b816001815181106122ce576122ce612679565b6001600160a01b0392831660209182029290920101526006546122f4913091168461152d565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac9479061232c9085905f9086903090429060040161275e565b5f604051808303815f87803b158015612343575f80fd5b505af1158015612355573d5f803e3d5ffd5b505050505050565b5f6121fb8284612730565b5f8060408385031215612379575f80fd5b50508035926020909101359150565b5f60208284031215612398575f80fd5b5035919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b038116811461152a575f80fd5b5f80604083850312156123f9575f80fd5b8235612404816123d4565b946020939093013593505050565b5f805f60608486031215612424575f80fd5b833561242f816123d4565b9250602084013561243f816123d4565b929592945050506040919091013590565b801515811461152a575f80fd5b5f806040838503121561246e575f80fd5b8235612479816123d4565b9150602083013561248981612450565b809150509250929050565b5f602082840312156124a4575f80fd5b81356121fb816123d4565b5f805f606084860312156124c1575f80fd5b833560ff811681146124d1575f80fd5b95602085013595506040909401359392505050565b5f805f604084860312156124f8575f80fd5b833567ffffffffffffffff81111561250e575f80fd5b8401601f8101861361251e575f80fd5b803567ffffffffffffffff811115612534575f80fd5b8660208260051b8401011115612548575f80fd5b60209182019450925084013561255d81612450565b809150509250925092565b5f8060408385031215612579575f80fd5b8235612584816123d4565b91506020830135612489816123d4565b5f602082840312156125a4575f80fd5b81356121fb81612450565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610a6057610a606125e4565b8082028115828204841417610a6057610a606125e4565b5f8261263c57634e487b7160e01b5f52601260045260245ffd5b500490565b600181811c9082168061265557607f821691505b60208210810361267357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b5f60208284031215612725575f80fd5b81516121fb81612450565b81810381811115610a6057610a606125e4565b5f60208284031215612753575f80fd5b81516121fb816123d4565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156127ae5783516001600160a01b0316835260209384019390920191600101612787565b50506001600160a01b03959095166060840152505060800152939250505056fea2646970667358221220ca7645be5dff87c4cee6a9aab90576fc5a0ce5fe1eac393cbf371e2e0151b51464736f6c634300081a0033
Deployed Bytecode Sourcemap
15356:11417:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20952:217;;;;;;;;;;-1:-1:-1;20952:217:0;;;;;:::i;:::-;;:::i;:::-;;15620:33;;;;;;;;;;-1:-1:-1;15620:33:0;;;;-1:-1:-1;;;15620:33:0;;;;;;;;;530:14:1;;523:22;505:41;;493:2;478:18;15620:33:0;;;;;;;;20497:228;;;;;;;;;;-1:-1:-1;20497:228:0;;;;;:::i;:::-;;:::i;10701:100::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;11432:169::-;;;;;;;;;;-1:-1:-1;11432:169:0;;;;;:::i;:::-;;:::i;11022:108::-;;;;;;;;;;-1:-1:-1;11110:12:0;;11022:108;;;1865:25:1;;;1853:2;1838:18;11022:108:0;1719:177:1;16022:30:0;;;;;;;;;;;;;;;;11792:492;;;;;;;;;;-1:-1:-1;11792:492:0;;;;;:::i;:::-;;:::i;19863:225::-;;;;;;;;;;-1:-1:-1;19863:225:0;;;;;:::i;:::-;;:::i;21377:189::-;;;;;;;;;;-1:-1:-1;21377:189:0;;;;;:::i;:::-;;:::i;10921:93::-;;;;;;;;;;-1:-1:-1;10921:93:0;;11004:2;3066:36:1;;3054:2;3039:18;10921:93:0;2924:184:1;15953:28:0;;;;;;;;;;;;;;;;12292:215;;;;;;;;;;-1:-1:-1;12292:215:0;;;;;:::i;:::-;;:::i;15660:33::-;;;;;;;;;;-1:-1:-1;15660:33:0;;;;-1:-1:-1;;;15660:33:0;;;;;;16210:50;;;;;;;;;;-1:-1:-1;16210:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18273:1062;;;;;;;;;;-1:-1:-1;18273:1062:0;;;;;:::i;:::-;;:::i;20733:211::-;;;;;;;;;;-1:-1:-1;20733:211:0;;;;;:::i;:::-;;:::i;15738:35::-;;;;;;;;;;;;;;;;15918:28;;;;;;;;;;;;;;;;11138:127;;;;;;;;;;-1:-1:-1;11138:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;11239:18:0;11212:7;11239:18;;;:9;:18;;;;;;;11138:127;911:103;;;;;;;;;;;;;:::i;15432:39::-;;;;;;;;;;-1:-1:-1;15432:39:0;;;;-1:-1:-1;;;;;15432:39:0;;;;;;-1:-1:-1;;;;;4069:32:1;;;4051:51;;4039:2;4024:18;15432:39:0;3879:229:1;19622:121:0;;;;;;;;;;;;;:::i;19343:136::-;;;;;;;;;;-1:-1:-1;19343:136:0;;;;;:::i;:::-;;:::i;688:87::-;;;;;;;;;;-1:-1:-1;761:6:0;;-1:-1:-1;;;;;761:6:0;688:87;;15547:24;;;;;;;;;;-1:-1:-1;15547:24:0;;;;-1:-1:-1;;;;;15547:24:0;;;15780:28;;;;;;;;;;;;;;;;21704:206;;;;;;;;;;-1:-1:-1;21704:206:0;;;;;:::i;:::-;;:::i;16267:55::-;;;;;;;;;;-1:-1:-1;16267:55:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10809:104;;;;;;;;;;;;;:::i;15885:24::-;;;;;;;;;;;;;;;;16059:27;;;;;;;;;;;;;;;;15988:25;;;;;;;;;;;;;;;;12515:413;;;;;;;;;;-1:-1:-1;12515:413:0;;;;;:::i;:::-;;:::i;16331:40::-;;;;;;;;;;-1:-1:-1;16331:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11609:175;;;;;;;;;;-1:-1:-1;11609:175:0;;;;;:::i;:::-;;:::i;21181:188::-;;;;;;;;;;-1:-1:-1;21181:188:0;;;;;:::i;:::-;;:::i;15580:33::-;;;;;;;;;;-1:-1:-1;15580:33:0;;;;-1:-1:-1;;;15580:33:0;;;;;;19487:127;;;;;;;;;;-1:-1:-1;19487:127:0;;;;;:::i;:::-;;:::i;15702:29::-;;;;;;;;;;;;;;;;15478:26;;;;;;;;;;-1:-1:-1;15478:26:0;;;;-1:-1:-1;;;;;15478:26:0;;;18153:112;;;;;;;;;;;;;:::i;20096:393::-;;;;;;;;;;-1:-1:-1;20096:393:0;;;;;:::i;:::-;;:::i;15817:27::-;;;;;;;;;;;;;;;;11273:151;;;;;;;;;;-1:-1:-1;11273:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;11389:18:0;;;11362:7;11389:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;11273:151;19751:104;;;;;;;;;;-1:-1:-1;19751:104:0;;;;;:::i;:::-;;:::i;15513:27::-;;;;;;;;;;-1:-1:-1;15513:27:0;;;;-1:-1:-1;;;;;15513:27:0;;;15851;;;;;;;;;;;;;;;;1022:201;;;;;;;;;;-1:-1:-1;1022:201:0;;;;;:::i;:::-;;:::i;20952:217::-;761:6;;-1:-1:-1;;;;;761:6:0;275:10;823:23;815:68;;;;-1:-1:-1;;;815:68:0;;;;;;;:::i;:::-;;;;;;;;;21047:13:::1;:28:::0;;;21086:10:::1;:22:::0;;;21135:26:::1;21099:9:::0;21063:12;21135:26:::1;:::i;:::-;21119:13;:42:::0;-1:-1:-1;;20952:217:0:o;20497:228::-;761:6;;-1:-1:-1;;;;;761:6:0;275:10;823:23;815:68;;;;-1:-1:-1;;;815:68:0;;;;;;;:::i;:::-;20622:4:::1;20614;20593:13;11110:12:::0;;;11022:108;20593:13:::1;:17;::::0;20609:1:::1;20593:17;:::i;:::-;20592:26;;;;:::i;:::-;20591:35;;;;:::i;:::-;20581:6;:45;;20573:99;;;::::0;-1:-1:-1;;;20573:99:0;;6930:2:1;20573:99:0::1;::::0;::::1;6912:21:1::0;6969:2;6949:18;;;6942:30;7008:34;6988:18;;;6981:62;-1:-1:-1;;;7059:18:1;;;7052:39;7108:19;;20573:99:0::1;6728:405:1::0;20573:99:0::1;20700:17;:6:::0;20710::::1;20700:17;:::i;:::-;20683:14;:34:::0;-1:-1:-1;20497:228:0:o;10701:100::-;10755:13;10788:5;10781:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10701:100;:::o;11432:169::-;11515:4;11532:39;275:10;11555:7;11564:6;11532:8;:39::i;:::-;-1:-1:-1;11589:4:0;11432:169;;;;;:::o;11792:492::-;11932:4;11949:36;11959:6;11967:9;11978:6;11949:9;:36::i;:::-;-1:-1:-1;;;;;12025:19:0;;11998:24;12025:19;;;:11;:19;;;;;;;;275:10;12025:33;;;;;;;;12077:26;;;;12069:79;;;;-1:-1:-1;;;12069:79:0;;7725:2:1;12069:79:0;;;7707:21:1;7764:2;7744:18;;;7737:30;7803:34;7783:18;;;7776:62;-1:-1:-1;;;7854:18:1;;;7847:38;7902:19;;12069:79:0;7523:404:1;12069:79:0;12184:57;12193:6;275:10;12234:6;12215:16;:25;12184:8;:57::i;:::-;-1:-1:-1;12272:4:0;;11792:492;-1:-1:-1;;;;11792:492:0:o;19863:225::-;761:6;;-1:-1:-1;;;;;761:6:0;275:10;823:23;815:68;;;;-1:-1:-1;;;815:68:0;;;;;;;:::i;:::-;19987:4:::1;19979;19958:13;11110:12:::0;;;11022:108;19958:13:::1;:17;::::0;19974:1:::1;19958:17;:::i;:::-;19957:26;;;;:::i;:::-;19956:35;;;;:::i;:::-;19946:6;:45;;19938:98;;;::::0;-1:-1:-1;;;19938:98:0;;8134:2:1;19938:98:0::1;::::0;::::1;8116:21:1::0;8173:2;8153:18;;;8146:30;8212:34;8192:18;;;8185:62;-1:-1:-1;;;8263:18:1;;;8256:38;8311:19;;19938:98:0::1;7932:404:1::0;19938:98:0::1;20063:17;:6:::0;20073::::1;20063:17;:::i;:::-;20047:13;:33:::0;-1:-1:-1;19863:225:0:o;21377:189::-;761:6;;-1:-1:-1;;;;;761:6:0;275:10;823:23;815:68;;;;-1:-1:-1;;;815:68:0;;;;;;;:::i;:::-;21469:11:::1;::::0;-1:-1:-1;;;;;21469:11:0;;::::1;21461:19:::0;;::::1;::::0;21453:72:::1;;;::::0;-1:-1:-1;;;21453:72:0;;8543:2:1;21453:72:0::1;::::0;::::1;8525:21:1::0;8582:2;8562:18;;;8555:30;8621:34;8601:18;;;8594:62;-1:-1:-1;;;8672:18:1;;;8665:38;8720:19;;21453:72:0::1;8341:404:1::0;21453:72:0::1;-1:-1:-1::0;;;;;21536:14:0;;;::::1;;::::0;;;:8:::1;:14;::::0;;;;:22;;-1:-1:-1;;21536:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21377:189::o;12292:215::-;275:10;12380:4;12429:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12429:34:0;;;;;;;;;;12380:4;;12397:80;;12420:7;;12429:47;;12466:10;;12429:47;:::i;:::-;12397:8;:80::i;18273:1062::-;18553:22;;;;;;;;;;;-1:-1:-1;;;18553:22:0;;;;;18605:10;;;;;;;;;;-1:-1:-1;;;18605:10:0;;;;18400:295;;18429:95;18400:295;;;9009:25:1;;;;18543:33:0;9050:18:1;;;9043:34;;;;18595:21:0;9093:18:1;;;9086:34;18635:13:0;9136:18:1;;;9129:34;18675:4:0;9179:19:1;;;9172:61;-1:-1:-1;;8981:19:1;;18400:295:0;;;;;;-1:-1:-1;;18400:295:0;;;;;;18376:330;;18400:295;18376:330;;;;18871:23;;;;;;;;-1:-1:-1;;;18871:23:0;;;;;;;18764:175;;18793:49;18764:175;;;9446:25:1;;;;18861:34:0;9487:18:1;;;9480:34;;;;-1:-1:-1;9530:18:1;;;9523:34;;;18376:330:0;;-1:-1:-1;9419:18:1;;18764:175:0;;;;;;;;;;;;18740:210;;;;;;18719:231;;18963:14;19068:10;19097;19004:134;;;;;;;;-1:-1:-1;;;9826:27:1;;9878:1;9869:11;;9862:27;;;;9914:2;9905:12;;9898:28;9951:2;9942:12;;9568:392;19004:134:0;;;;-1:-1:-1;;19004:134:0;;;;;;;;;18980:169;;19004:134;18980:169;;;;19162:14;19179:26;;;;;;;;;10192:25:1;;;10265:4;10253:17;;10233:18;;;10226:45;;;;10287:18;;;10280:34;;;10330:18;;;10323:34;;;18980:169:0;;-1:-1:-1;19162:14:0;19179:26;;10164:19:1;;19179:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19162:43;;19234:7;761:6;;-1:-1:-1;;;;;761:6:0;;688:87;19234:7;-1:-1:-1;;;;;19224:17:0;:6;-1:-1:-1;;;;;19224:17:0;;19216:47;;;;-1:-1:-1;;;19216:47:0;;10570:2:1;19216:47:0;;;10552:21:1;10609:2;10589:18;;;10582:30;-1:-1:-1;;;10628:18:1;;;10621:47;10685:18;;19216:47:0;10368:341:1;19216:47:0;-1:-1:-1;;19276:13:0;:20;;-1:-1:-1;;;;19307:20:0;-1:-1:-1;;;19307:20:0;;;-1:-1:-1;;;;;18273:1062:0:o;20733:211::-;761:6;;-1:-1:-1;;;;;761:6:0;275:10;823:23;815:68;;;;-1:-1:-1;;;815:68:0;;;;;;;:::i;:::-;20827:12:::1;:27:::0;;;20865:9:::1;:21:::0;;;20912:24:::1;20877:9:::0;20842:12;20912:24:::1;:::i;:::-;20897:12;:39:::0;-1:-1:-1;;20733:211:0:o;911:103::-;761:6;;-1:-1:-1;;;;;761:6:0;275:10;823:23;815:68;;;;-1:-1:-1;;;815:68:0;;;;;;;:::i;:::-;976:30:::1;1003:1;976:18;:30::i;:::-;911:103::o:0;19622:121::-;761:6;;19674:4;;-1:-1:-1;;;;;761:6:0;275:10;823:23;815:68;;;;-1:-1:-1;;;815:68:0;;;;;;;:::i;:::-;-1:-1:-1;19691:14:0::1;:22:::0;;-1:-1:-1;;;;19691:22:0::1;::::0;;;19622:121;:::o;19343:136::-;761:6;;-1:-1:-1;;;;;761:6:0;275:10;823:23;815:68;;;;-1:-1:-1;;;815:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19434:29:0;;;::::1;;::::0;;;:23:::1;:29;::::0;;;;:37;;-1:-1:-1;;19434:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19343:136::o;21704:206::-;761:6;;-1:-1:-1;;;;;761:6:0;275:10;823:23;815:68;;;;-1:-1:-1;;;815:68:0;;;;;;;:::i;:::-;21803:9:::1;21798:105;21818:18:::0;;::::1;21798:105;;;21884:7;21858:11;:23;21870:7;;21878:1;21870:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21858:23:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;21858:23:0;:33;;-1:-1:-1;;21858:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;21838:3:0::1;21798:105;;;;21704:206:::0;;;:::o;10809:104::-;10865:13;10898:7;10891:14;;;;;:::i;12515:413::-;275:10;12608:4;12652:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12652:34:0;;;;;;;;;;12705:35;;;;12697:85;;;;-1:-1:-1;;;12697:85:0;;11048:2:1;12697:85:0;;;11030:21:1;11087:2;11067:18;;;11060:30;11126:34;11106:18;;;11099:62;-1:-1:-1;;;11177:18:1;;;11170:35;11222:19;;12697:85:0;10846:401:1;12697:85:0;12818:67;275:10;12841:7;12869:15;12850:16;:34;12818:8;:67::i;:::-;-1:-1:-1;12916:4:0;;12515:413;-1:-1:-1;;;12515:413:0:o;11609:175::-;11695:4;11712:42;275:10;11736:9;11747:6;11712:9;:42::i;21181:188::-;761:6;;-1:-1:-1;;;;;761:6:0;275:10;823:23;815:68;;;;-1:-1:-1;;;815:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21267:30:0;::::1;21259:63;;;::::0;-1:-1:-1;;;21259:63:0;;11454:2:1;21259:63:0::1;::::0;::::1;11436:21:1::0;11493:2;11473:18;;;11466:30;-1:-1:-1;;;11512:18:1;;;11505:50;11572:18;;21259:63:0::1;11252:344:1::0;21259:63:0::1;21333:11;:28:::0;;-1:-1:-1;;;;;;21333:28:0::1;-1:-1:-1::0;;;;;21333:28:0;;;::::1;::::0;;;::::1;::::0;;21181:188::o;19487:127::-;761:6;;-1:-1:-1;;;;;761:6:0;275:10;823:23;815:68;;;;-1:-1:-1;;;815:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19571:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;19571:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19487:127::o;18153:112::-;761:6;;-1:-1:-1;;;;;761:6:0;275:10;823:23;815:68;;;;-1:-1:-1;;;815:68:0;;;;;;;:::i;:::-;18206:13:::1;:20:::0;;-1:-1:-1;;;;18237:20:0;-1:-1:-1;;;18237:20:0;;;18153:112::o;20096:393::-;761:6;;20177:4;;-1:-1:-1;;;;;761:6:0;275:10;823:23;815:68;;;;-1:-1:-1;;;815:68:0;;;;;;;:::i;:::-;20237:6:::1;20216:13;11110:12:::0;;;11022:108;20216:13:::1;:17;::::0;20232:1:::1;20216:17;:::i;:::-;20215:28;;;;:::i;:::-;20202:9;:41;;20194:107;;;::::0;-1:-1:-1;;;20194:107:0;;11803:2:1;20194:107:0::1;::::0;::::1;11785:21:1::0;11842:2;11822:18;;;11815:30;11881:34;11861:18;;;11854:62;-1:-1:-1;;;11932:18:1;;;11925:51;11993:19;;20194:107:0::1;11601:417:1::0;20194:107:0::1;20355:4;20334:13;11110:12:::0;;;11022:108;20334:13:::1;:17;::::0;20350:1:::1;20334:17;:::i;:::-;20333:26;;;;:::i;:::-;20320:9;:39;;20312:104;;;::::0;-1:-1:-1;;;20312:104:0;;12225:2:1;20312:104:0::1;::::0;::::1;12207:21:1::0;12264:2;12244:18;;;12237:30;12303:34;12283:18;;;12276:62;-1:-1:-1;;;12354:18:1;;;12347:50;12414:19;;20312:104:0::1;12023:416:1::0;20312:104:0::1;-1:-1:-1::0;20427:20:0::1;:32:::0;20477:4:::1;::::0;20096:393::o;19751:104::-;761:6;;-1:-1:-1;;;;;761:6:0;275:10;823:23;815:68;;;;-1:-1:-1;;;815:68:0;;;;;;;:::i;:::-;19824:13:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;19824:23:0::1;-1:-1:-1::0;;;;19824:23:0;;::::1;::::0;;;::::1;::::0;;19751:104::o;1022:201::-;761:6;;-1:-1:-1;;;;;761:6:0;275:10;823:23;815:68;;;;-1:-1:-1;;;815:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1111:22:0;::::1;1103:73;;;::::0;-1:-1:-1;;;1103:73:0;;12646:2:1;1103:73:0::1;::::0;::::1;12628:21:1::0;12685:2;12665:18;;;12658:30;12724:34;12704:18;;;12697:62;-1:-1:-1;;;12775:18:1;;;12768:36;12821:19;;1103:73:0::1;12444:402:1::0;1103:73:0::1;1187:28;1206:8;1187:18;:28::i;:::-;1022:201:::0;:::o;13942:380::-;-1:-1:-1;;;;;14078:19:0;;14070:68;;;;-1:-1:-1;;;14070:68:0;;13053:2:1;14070:68:0;;;13035:21:1;13092:2;13072:18;;;13065:30;13131:34;13111:18;;;13104:62;-1:-1:-1;;;13182:18:1;;;13175:34;13226:19;;14070:68:0;12851:400:1;14070:68:0;-1:-1:-1;;;;;14157:21:0;;14149:68;;;;-1:-1:-1;;;14149:68:0;;13458:2:1;14149:68:0;;;13440:21:1;13497:2;13477:18;;;13470:30;13536:34;13516:18;;;13509:62;-1:-1:-1;;;13587:18:1;;;13580:32;13629:19;;14149:68:0;13256:398:1;14149:68:0;-1:-1:-1;;;;;14230:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14282:32;;1865:25:1;;;14282:32:0;;1838:18:1;14282:32:0;;;;;;;13942:380;;;:::o;23392:3263::-;-1:-1:-1;;;;;23490:18:0;;23482:68;;;;-1:-1:-1;;;23482:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23569:16:0;;23561:64;;;;-1:-1:-1;;;23561:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23645:17:0;;;;;;:11;:17;;;;;;;;23644:18;23636:48;;;;-1:-1:-1;;;23636:48:0;;14671:2:1;23636:48:0;;;14653:21:1;14710:2;14690:18;;;14683:30;-1:-1:-1;;;14729:18:1;;;14722:47;14786:18;;23636:48:0;14469:341:1;23636:48:0;-1:-1:-1;;;;;23704:15:0;;;;;;:11;:15;;;;;;;;23703:16;23695:44;;;;-1:-1:-1;;;23695:44:0;;15017:2:1;23695:44:0;;;14999:21:1;15056:2;15036:18;;;15029:30;-1:-1:-1;;;15075:18:1;;;15068:45;15130:18;;23695:44:0;14815:339:1;23695:44:0;23756:6;23766:1;23756:11;23752:93;;23784:28;23800:4;23806:2;23810:1;23784:15;:28::i;:::-;23392:3263;;;:::o;23752:93::-;23861:14;;-1:-1:-1;;;23861:14:0;;;;23857:1116;;;761:6;;-1:-1:-1;;;;;23896:15:0;;;761:6;;23896:15;;;;:49;;-1:-1:-1;761:6:0;;-1:-1:-1;;;;;23932:13:0;;;761:6;;23932:13;;23896:49;:86;;;;-1:-1:-1;;;;;;23966:16:0;;;;23896:86;:128;;;;-1:-1:-1;;;;;;24003:21:0;;24017:6;24003:21;;23896:128;:158;;;;-1:-1:-1;24046:8:0;;-1:-1:-1;;;24046:8:0;;;;24045:9;23896:158;23892:1070;;;24080:13;;-1:-1:-1;;;24080:13:0;;;;24075:148;;-1:-1:-1;;;;;24126:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;24154:22:0;;;;;;:18;:22;;;;;;;;24126:50;24118:85;;;;-1:-1:-1;;;24118:85:0;;15361:2:1;24118:85:0;;;15343:21:1;15400:2;15380:18;;;15373:30;-1:-1:-1;;;15419:18:1;;;15412:52;15481:18;;24118:85:0;15159:346:1;24118:85:0;-1:-1:-1;;;;;24275:14:0;;;;;;:8;:14;;;;;;;;:46;;;;-1:-1:-1;;;;;;24294:27:0;;;;;;:23;:27;;;;;;;;24293:28;24275:46;24271:676;;;24364:14;;24354:6;:24;;24346:84;;;;-1:-1:-1;;;24346:84:0;;15712:2:1;24346:84:0;;;15694:21:1;15751:2;15731:18;;;15724:30;15790:34;15770:18;;;15763:62;-1:-1:-1;;;15841:18:1;;;15834:45;15896:19;;24346:84:0;15510:411:1;24346:84:0;24487:13;;-1:-1:-1;;;;;11239:18:0;;11212:7;11239:18;;;:9;:18;;;;;;24461:22;;:6;:22;:::i;:::-;:39;;24453:71;;;;-1:-1:-1;;;24453:71:0;;16128:2:1;24453:71:0;;;16110:21:1;16167:2;16147:18;;;16140:30;-1:-1:-1;;;16186:18:1;;;16179:49;16245:18;;24453:71:0;15926:343:1;24453:71:0;24271:676;;;-1:-1:-1;;;;;24600:12:0;;;;;;:8;:12;;;;;;;;:46;;;;-1:-1:-1;;;;;;24617:29:0;;;;;;:23;:29;;;;;;;;24616:30;24600:46;24596:351;;;24689:14;;24679:6;:24;;24671:85;;;;-1:-1:-1;;;24671:85:0;;16476:2:1;24671:85:0;;;16458:21:1;16515:2;16495:18;;;16488:30;16554:34;16534:18;;;16527:62;-1:-1:-1;;;16605:18:1;;;16598:46;16661:19;;24671:85:0;16274:412:1;24596:351:0;-1:-1:-1;;;;;24804:27:0;;;;;;:23;:27;;;;;;;;24799:148;;24890:13;;-1:-1:-1;;;;;11239:18:0;;11212:7;11239:18;;;:9;:18;;;;;;24864:22;;:6;:22;:::i;:::-;:39;;24856:71;;;;-1:-1:-1;;;24856:71:0;;16128:2:1;24856:71:0;;;16110:21:1;16167:2;16147:18;;;16140:30;-1:-1:-1;;;16186:18:1;;;16179:49;16245:18;;24856:71:0;15926:343:1;24856:71:0;24989:11;;-1:-1:-1;;;;;24989:11:0;:25;;;;:79;;-1:-1:-1;25031:11:0;;25018:50;;-1:-1:-1;;;25018:50:0;;25062:4;25018:50;;;4051:51:1;-1:-1:-1;;;;;25031:11:0;;;;25018:35;;4024:18:1;;25018:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24985:294;;;25111:11;;25148;;25162:13;;25177:14;;25193:20;;25098:116;;-1:-1:-1;;;25098:116:0;;-1:-1:-1;;;;;17246:32:1;;;25098:116:0;;;17228:51:1;17315:32;;;17295:18;;;17288:60;25148:11:0;;;17364:18:1;;;17357:60;17433:18;;;17426:34;;;;17476:19;;;17469:35;;;;17520:19;;;17513:35;25085:10:0;;25111:11;;;;;25098:31;;17200:19:1;;25098:116:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25085:129;;25237:5;25229:38;;;;-1:-1:-1;;;25229:38:0;;17761:2:1;25229:38:0;;;17743:21:1;17800:2;17780:18;;;17773:30;-1:-1:-1;;;17819:18:1;;;17812:50;17879:18;;25229:38:0;17559:344:1;25229:38:0;25070:209;24985:294;25335:4;25291:23;11239:18;;;:9;:18;;;;;;25386:20;;25367:39;;;;;;;25421:37;;-1:-1:-1;25445:13:0;;-1:-1:-1;;;25445:13:0;;;;25421:37;:63;;;;-1:-1:-1;25476:8:0;;-1:-1:-1;;;25476:8:0;;;;25475:9;25421:63;:92;;;;-1:-1:-1;;;;;;25501:12:0;;;;;;:8;:12;;;;;;;;25421:92;:134;;;;-1:-1:-1;;;;;;25531:24:0;;;;;;:18;:24;;;;;;;;25530:25;25421:134;:174;;;;-1:-1:-1;;;;;;25573:22:0;;;;;;:18;:22;;;;;;;;25572:23;25421:174;25417:280;;;25614:8;:15;;-1:-1:-1;;;;25614:15:0;-1:-1:-1;;;25614:15:0;;;25644:10;:8;:10::i;:::-;25669:8;:16;;-1:-1:-1;;;;25669:16:0;;;25417:280;25725:8;;-1:-1:-1;;;;;25748:24:0;;25709:12;25748:24;;;:18;:24;;;;;;25725:8;-1:-1:-1;;;25725:8:0;;;;;25724:9;;25748:24;;:50;;-1:-1:-1;;;;;;25776:22:0;;;;;;:18;:22;;;;;;;;25748:50;25744:84;;;-1:-1:-1;25823:5:0;25744:84;25841:11;25871:7;25867:735;;;-1:-1:-1;;;;;25923:12:0;;;;;;:8;:12;;;;;;;;:33;;;;;25955:1;25939:13;;:17;25923:33;25919:554;;;25983:34;26013:3;25983:25;25994:13;;25983:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;25977:40;;26073:13;;26059:10;;26053:3;:16;;;;:::i;:::-;26052:34;;;;:::i;:::-;26036:12;;:50;;;;;;;:::i;:::-;;;;-1:-1:-1;;26148:13:0;;26131;;26125:19;;:3;:19;:::i;:::-;26124:37;;;;:::i;:::-;26105:15;;:56;;;;;;;:::i;:::-;;;;-1:-1:-1;25919:554:0;;-1:-1:-1;25919:554:0;;-1:-1:-1;;;;;26223:14:0;;;;;;:8;:14;;;;;;;;:34;;;;;26256:1;26241:12;;:16;26223:34;26219:254;;;26284:33;26313:3;26284:24;26295:12;;26284:6;:10;;:24;;;;:::i;:33::-;26278:39;;26372:12;;26359:9;;26353:3;:15;;;;:::i;:::-;26352:32;;;;:::i;:::-;26336:12;;:48;;;;;;;:::i;:::-;;;;-1:-1:-1;;26445:12:0;;26429;;26423:18;;:3;:18;:::i;:::-;26422:35;;;;:::i;:::-;26403:15;;:54;;;;;;;:::i;:::-;;;;-1:-1:-1;;26219:254:0;26493:7;;26489:71;;26519:41;26535:4;26549;26556:3;26519:15;:41::i;:::-;26577:13;26587:3;26577:13;;:::i;:::-;;;25867:735;26614:33;26630:4;26636:2;26640:6;26614:15;:33::i;:::-;23471:3184;;;;23392:3263;;;:::o;1231:191::-;1324:6;;;-1:-1:-1;;;;;1341:17:0;;;-1:-1:-1;;;;;;1341:17:0;;;;;;;1374:40;;1324:6;;;1341:17;1324:6;;1374:40;;1305:16;;1374:40;1294:128;1231:191;:::o;14330:733::-;-1:-1:-1;;;;;14470:20:0;;14462:70;;;;-1:-1:-1;;;14462:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14551:23:0;;14543:71;;;;-1:-1:-1;;;14543:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14711:17:0;;14687:21;14711:17;;;:9;:17;;;;;;14747:23;;;;14739:74;;;;-1:-1:-1;;;14739:74:0;;18243:2:1;14739:74:0;;;18225:21:1;18282:2;18262:18;;;18255:30;18321:34;18301:18;;;18294:62;-1:-1:-1;;;18372:18:1;;;18365:36;18418:19;;14739:74:0;18041:402:1;14739:74:0;-1:-1:-1;;;;;14849:17:0;;;;;;;:9;:17;;;;;;14869:22;;;14849:42;;14913:20;;;;;;;;:30;;14885:6;;14849:17;14913:30;;14885:6;;14913:30;:::i;:::-;;;;;;;;14978:9;-1:-1:-1;;;;;14961:35:0;14970:6;-1:-1:-1;;;;;14961:35:0;;14989:6;14961:35;;;;1865:25:1;;1853:2;1838:18;;1719:177;14961:35:0;;;;;;;;15009:46;23392:3263;21918:875;22001:4;21957:23;11239:18;;;:9;:18;;;;;;21957:50;;22018:25;22064:12;;22046:15;;:30;;;;:::i;:::-;22018:58;-1:-1:-1;22087:12:0;22116:20;;;:46;;-1:-1:-1;22140:22:0;;22116:46;22112:72;;;22177:7;;;21918:875::o;22112:72::-;22218:20;;:25;;22241:2;22218:25;:::i;:::-;22200:15;:43;22196:105;;;22276:20;;:25;;22299:2;22276:25;:::i;:::-;22258:43;;22196:105;22342:21;22374:33;22391:15;22374:16;:33::i;:::-;22420:18;22441:44;:21;22467:17;22441:25;:44::i;:::-;22420:65;;22496:17;22516:51;22549:17;22516:28;22531:12;;22516:10;:14;;:28;;;;:::i;:51::-;22598:1;22580:15;:19;;;22610:12;:16;;;22661:9;;22653:45;;22496:71;;-1:-1:-1;;;;;;22661:9:0;;22496:71;;22653:45;22598:1;22653:45;22496:71;22661:9;22653:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22731:12:0;;22723:62;;22639:59;;-1:-1:-1;;;;;;22731:12:0;;22758:21;;22723:62;;;;22758:21;22731:12;22723:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;21918:875:0:o;2810:98::-;2868:7;2895:5;2899:1;2895;:5;:::i;:::-;2888:12;2810:98;-1:-1:-1;;;2810:98:0:o;2916:::-;2974:7;3001:5;3005:1;3001;:5;:::i;22801:583::-;22951:16;;;22965:1;22951:16;;;;;;;;22927:21;;22951:16;;;;;;;;;;-1:-1:-1;22951:16:0;22927:40;;22996:4;22978;22983:1;22978:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22978:23:0;;;:7;;;;;;;;;;:23;;;;23022:13;;:20;;;-1:-1:-1;;;23022:20:0;;;;:13;;;;;:18;;:20;;;;;22978:7;;23022:20;;;;;:13;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23012:4;23017:1;23012:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23012:30:0;;;:7;;;;;;;;;:30;23087:13;;23055:60;;23072:4;;23087:13;23103:11;23055:8;:60::i;:::-;23154:13;;:222;;-1:-1:-1;;;23154:222:0;;-1:-1:-1;;;;;23154:13:0;;;;:64;;:222;;23233:11;;23154:13;;23303:4;;23330;;23350:15;;23154:222;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22856:528;22801:583;:::o;2704:98::-;2762:7;2789:5;2793:1;2789;:5;:::i;14:346:1:-;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;204:23:1;;;324:2;309:18;;;296:32;;-1:-1:-1;14:346:1:o;557:226::-;616:6;669:2;657:9;648:7;644:23;640:32;637:52;;;685:1;682;675:12;637:52;-1:-1:-1;730:23:1;;557:226;-1:-1:-1;557:226:1:o;788:418::-;937:2;926:9;919:21;900:4;969:6;963:13;1012:6;1007:2;996:9;992:18;985:34;1071:6;1066:2;1058:6;1054:15;1049:2;1038:9;1034:18;1028:50;1127:1;1122:2;1113:6;1102:9;1098:22;1094:31;1087:42;1197:2;1190;1186:7;1181:2;1173:6;1169:15;1165:29;1154:9;1150:45;1146:54;1138:62;;;788:418;;;;:::o;1211:131::-;-1:-1:-1;;;;;1286:31:1;;1276:42;;1266:70;;1332:1;1329;1322:12;1347:367;1415:6;1423;1476:2;1464:9;1455:7;1451:23;1447:32;1444:52;;;1492:1;1489;1482:12;1444:52;1531:9;1518:23;1550:31;1575:5;1550:31;:::i;:::-;1600:5;1678:2;1663:18;;;;1650:32;;-1:-1:-1;;;1347:367:1:o;1901:508::-;1978:6;1986;1994;2047:2;2035:9;2026:7;2022:23;2018:32;2015:52;;;2063:1;2060;2053:12;2015:52;2102:9;2089:23;2121:31;2146:5;2121:31;:::i;:::-;2171:5;-1:-1:-1;2228:2:1;2213:18;;2200:32;2241:33;2200:32;2241:33;:::i;:::-;1901:508;;2293:7;;-1:-1:-1;;;2373:2:1;2358:18;;;;2345:32;;1901:508::o;2414:118::-;2500:5;2493:13;2486:21;2479:5;2476:32;2466:60;;2522:1;2519;2512:12;2537:382;2602:6;2610;2663:2;2651:9;2642:7;2638:23;2634:32;2631:52;;;2679:1;2676;2669:12;2631:52;2718:9;2705:23;2737:31;2762:5;2737:31;:::i;:::-;2787:5;-1:-1:-1;2844:2:1;2829:18;;2816:32;2857:30;2816:32;2857:30;:::i;:::-;2906:7;2896:17;;;2537:382;;;;;:::o;3113:247::-;3172:6;3225:2;3213:9;3204:7;3200:23;3196:32;3193:52;;;3241:1;3238;3231:12;3193:52;3280:9;3267:23;3299:31;3324:5;3299:31;:::i;3365:509::-;3440:6;3448;3456;3509:2;3497:9;3488:7;3484:23;3480:32;3477:52;;;3525:1;3522;3515:12;3477:52;3564:9;3551:23;3614:4;3607:5;3603:16;3596:5;3593:27;3583:55;;3634:1;3631;3624:12;3583:55;3657:5;3735:2;3720:18;;3707:32;;-1:-1:-1;3838:2:1;3823:18;;;3810:32;;3365:509;-1:-1:-1;;;3365:509:1:o;4321:745::-;4413:6;4421;4429;4482:2;4470:9;4461:7;4457:23;4453:32;4450:52;;;4498:1;4495;4488:12;4450:52;4538:9;4525:23;4571:18;4563:6;4560:30;4557:50;;;4603:1;4600;4593:12;4557:50;4626:22;;4679:4;4671:13;;4667:27;-1:-1:-1;4657:55:1;;4708:1;4705;4698:12;4657:55;4748:2;4735:16;4774:18;4766:6;4763:30;4760:50;;;4806:1;4803;4796:12;4760:50;4861:7;4854:4;4844:6;4841:1;4837:14;4833:2;4829:23;4825:34;4822:47;4819:67;;;4882:1;4879;4872:12;4819:67;4913:4;4905:13;;;;-1:-1:-1;4937:6:1;-1:-1:-1;4978:20:1;;4965:34;5008:28;4965:34;5008:28;:::i;:::-;5055:5;5045:15;;;4321:745;;;;;:::o;5071:388::-;5139:6;5147;5200:2;5188:9;5179:7;5175:23;5171:32;5168:52;;;5216:1;5213;5206:12;5168:52;5255:9;5242:23;5274:31;5299:5;5274:31;:::i;:::-;5324:5;-1:-1:-1;5381:2:1;5366:18;;5353:32;5394:33;5353:32;5394:33;:::i;5464:241::-;5520:6;5573:2;5561:9;5552:7;5548:23;5544:32;5541:52;;;5589:1;5586;5579:12;5541:52;5628:9;5615:23;5647:28;5669:5;5647:28;:::i;5710:356::-;5912:2;5894:21;;;5931:18;;;5924:30;5990:34;5985:2;5970:18;;5963:62;6057:2;6042:18;;5710:356::o;6071:127::-;6132:10;6127:3;6123:20;6120:1;6113:31;6163:4;6160:1;6153:15;6187:4;6184:1;6177:15;6203:125;6268:9;;;6289:10;;;6286:36;;;6302:18;;:::i;6333:168::-;6406:9;;;6437;;6454:15;;;6448:22;;6434:37;6424:71;;6475:18;;:::i;6506:217::-;6546:1;6572;6562:132;;6616:10;6611:3;6607:20;6604:1;6597:31;6651:4;6648:1;6641:15;6679:4;6676:1;6669:15;6562:132;-1:-1:-1;6708:9:1;;6506:217::o;7138:380::-;7217:1;7213:12;;;;7260;;;7281:61;;7335:4;7327:6;7323:17;7313:27;;7281:61;7388:2;7380:6;7377:14;7357:18;7354:38;7351:161;;7434:10;7429:3;7425:20;7422:1;7415:31;7469:4;7466:1;7459:15;7497:4;7494:1;7487:15;7351:161;;7138:380;;;:::o;10714:127::-;10775:10;10770:3;10766:20;10763:1;10756:31;10806:4;10803:1;10796:15;10830:4;10827:1;10820:15;13659:401;13861:2;13843:21;;;13900:2;13880:18;;;13873:30;13939:34;13934:2;13919:18;;13912:62;-1:-1:-1;;;14005:2:1;13990:18;;13983:35;14050:3;14035:19;;13659:401::o;14065:399::-;14267:2;14249:21;;;14306:2;14286:18;;;14279:30;14345:34;14340:2;14325:18;;14318:62;-1:-1:-1;;;14411:2:1;14396:18;;14389:33;14454:3;14439:19;;14065:399::o;16691:245::-;16758:6;16811:2;16799:9;16790:7;16786:23;16782:32;16779:52;;;16827:1;16824;16817:12;16779:52;16859:9;16853:16;16878:28;16900:5;16878:28;:::i;17908:128::-;17975:9;;;17996:11;;;17993:37;;;18010:18;;:::i;18790:251::-;18860:6;18913:2;18901:9;18892:7;18888:23;18884:32;18881:52;;;18929:1;18926;18919:12;18881:52;18961:9;18955:16;18980:31;19005:5;18980:31;:::i;19046:959::-;19308:4;19356:3;19345:9;19341:19;19387:6;19376:9;19369:25;19430:6;19425:2;19414:9;19410:18;19403:34;19473:3;19468:2;19457:9;19453:18;19446:31;19497:6;19532;19526:13;19563:6;19555;19548:22;19601:3;19590:9;19586:19;19579:26;;19640:2;19632:6;19628:15;19614:29;;19661:1;19671:195;19685:6;19682:1;19679:13;19671:195;;;19750:13;;-1:-1:-1;;;;;19746:39:1;19734:52;;19815:2;19841:15;;;;19806:12;;;;19782:1;19700:9;19671:195;;;-1:-1:-1;;;;;;;19922:32:1;;;;19917:2;19902:18;;19895:60;-1:-1:-1;;19986:3:1;19971:19;19964:35;19883:3;19046:959;-1:-1:-1;;;19046:959:1:o
Swarm Source
ipfs://ca7645be5dff87c4cee6a9aab90576fc5a0ce5fe1eac393cbf371e2e0151b514
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.