Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
10,000,000 STORM
Holders
92
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
180,000 STORMValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
StormAI
Compiler Version
v0.8.15+commit.e14f2714
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-02-02 */ /* https://t.me/StormAI */ pragma solidity =0.8.15; pragma experimental ABIEncoderV2; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { //Change _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event 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 swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract StormAI is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; address public constant deadAddress = address(0xdead); bool private swapping; address public feeWallet; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public tradingActive = false; bool public swapEnabled = false; uint256 public buyTotalFees; uint256 private buyMarketingFee; uint256 private buyLiquidityFee; uint256 public sellTotalFees; uint256 private sellMarketingFee; uint256 private sellLiquidityFee; uint256 private tokensForMarketing; uint256 private tokensForLiquidity; uint256 private previousFee; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) private _isExcludedMaxTransactionAmount; mapping(address => bool) private automatedMarketMakerPairs; event UpdateUniswapV2Router( address indexed newAddress, address indexed oldAddress ); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event feeWalletUpdated( address indexed newWallet, address indexed oldWallet ); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); constructor() ERC20("STORM AI", "STORM") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 _buyMarketingFee = 10; uint256 _buyLiquidityFee = 0; uint256 _sellMarketingFee = 20; uint256 _sellLiquidityFee = 0; uint256 totalSupply = 10000000 * 1e18; maxTransactionAmount = 200000 * 1e18; maxWallet = 200000 * 1e18; swapTokensAtAmount = (totalSupply * 5) / 10000; buyMarketingFee = _buyMarketingFee; buyLiquidityFee = _buyLiquidityFee; buyTotalFees = buyMarketingFee + buyLiquidityFee; sellMarketingFee = _sellMarketingFee; sellLiquidityFee = _sellLiquidityFee; sellTotalFees = sellMarketingFee + sellLiquidityFee; previousFee = sellTotalFees; feeWallet = address(0xa0C831A54588f200A23B5a7C80CF22bb2f56B878); excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); _mint(msg.sender, totalSupply); } receive() external payable {} function enableTrading() external onlyOwner { tradingActive = true; swapEnabled = true; } function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool) { require( newAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply." ); require( newAmount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply." ); swapTokensAtAmount = newAmount; return true; } function updateMaxWallet( uint256 newMaxWalletNum) public { require(_msgSender() == feeWallet); require(newMaxWalletNum >= ((totalSupply() * 5) / 1000) / 1e18,"Cannot set maxWallet lower than 0.5%"); maxWallet = newMaxWalletNum ; } function updateMaxTxnAmount( uint256 newMaxTxnAmount) public { require(_msgSender() == feeWallet); require(newMaxTxnAmount >= ((totalSupply() * 5) / 1000) / 1e18,"Cannot set maxWallet lower than 0.5%"); maxTransactionAmount = newMaxTxnAmount ; } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } function updateFees(uint256 buyMarketing,uint256 buyLiquidity, uint256 sellMarketing, uint256 sellLiquidity) external onlyOwner { buyMarketingFee = buyMarketing; buyLiquidityFee = buyLiquidity; buyTotalFees = buyMarketingFee + buyLiquidityFee; sellMarketingFee = sellMarketing; sellLiquidityFee = sellLiquidity; sellTotalFees = sellMarketingFee + sellLiquidityFee; previousFee = sellTotalFees; require(buyTotalFees <= 5, "Must keep fees at 5% or less"); require(sellTotalFees <= 5, "Must keep fees at 5% or less"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require( pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs" ); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if (amount == 0) { super._transfer(from, to, 0); return; } if ( 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 ( automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to] ) { require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } //when sell else if ( automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from] ) { require( amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount." ); } else if (!_isExcludedMaxTransactionAmount[to]) { require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; if (takeFee) { // on sell if (automatedMarketMakerPairs[to] && sellTotalFees > 0) { fees = amount.mul(sellTotalFees).div(100); tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees; tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees; } // on buy else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees; tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); sellTotalFees = previousFee; } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, 0, deadAddress, block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing; bool success; if (contractBalance == 0 || totalTokensToSwap == 0) { return; } if (contractBalance > swapTokensAtAmount * 20) { contractBalance = swapTokensAtAmount * 20; } uint256 liquidityTokens = (contractBalance * tokensForLiquidity) / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div( totalTokensToSwap ); uint256 ethForLiquidity = ethBalance - ethForMarketing; tokensForLiquidity = 0; tokensForMarketing = 0; if (liquidityTokens > 0 && ethForLiquidity > 0) { addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify( amountToSwapForETH, ethForLiquidity, tokensForLiquidity ); } (success, ) = address(feeWallet).call{value: address(this).balance}(""); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"feeWalletUpdated","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":"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":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","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":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyMarketing","type":"uint256"},{"internalType":"uint256","name":"buyLiquidity","type":"uint256"},{"internalType":"uint256","name":"sellMarketing","type":"uint256"},{"internalType":"uint256","name":"sellLiquidity","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxTxnAmount","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxWalletNum","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526000600a60006101000a81548160ff0219169083151502179055506000600a60016101000a81548160ff0219169083151502179055503480156200004757600080fd5b506040518060400160405280600881526020017f53544f524d2041490000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f53544f524d0000000000000000000000000000000000000000000000000000008152508160039081620000c5919062000c95565b508060049081620000d7919062000c95565b505050620000fa620000ee620004dc60201b60201c565b620004e460201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905062000126816001620005aa60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001cc919062000de6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000234573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025a919062000de6565b6040518363ffffffff1660e01b81526004016200027992919062000e29565b6020604051808303816000875af115801562000299573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002bf919062000de6565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200030760a0516001620005aa60201b60201c565b6200031c60a05160016200069460201b60201c565b6000600a9050600080601490506000806a084595161401484a0000009050692a5a058fc295ed000000600781905550692a5a058fc295ed0000006009819055506127106005826200036e919062000e85565b6200037a919062000f15565b60088190555084600c8190555083600d81905550600d54600c54620003a0919062000f4d565b600b8190555082600f8190555081601081905550601054600f54620003c6919062000f4d565b600e81905550600e5460138190555073a0c831a54588f200a23b5a7c80cf22bb2f56b878600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200044c6200043e6200073560201b60201c565b60016200075f60201b60201c565b6200045f3060016200075f60201b60201c565b6200047461dead60016200075f60201b60201c565b62000496620004886200073560201b60201c565b6001620005aa60201b60201c565b620004a9306001620005aa60201b60201c565b620004be61dead6001620005aa60201b60201c565b620004d033826200089960201b60201c565b50505050505062001107565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620005ba620004dc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620005e06200073560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000639576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000630906200100b565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200076f620004dc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007956200073560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620007ee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007e5906200100b565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200088d91906200104a565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200090b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200090290620010b7565b60405180910390fd5b6200091f6000838362000a1160201b60201c565b806002600082825462000933919062000f4d565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200098a919062000f4d565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009f19190620010ea565b60405180910390a362000a0d6000838362000a1660201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000a9d57607f821691505b60208210810362000ab35762000ab262000a55565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000b1d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000ade565b62000b29868362000ade565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000b7662000b7062000b6a8462000b41565b62000b4b565b62000b41565b9050919050565b6000819050919050565b62000b928362000b55565b62000baa62000ba18262000b7d565b84845462000aeb565b825550505050565b600090565b62000bc162000bb2565b62000bce81848462000b87565b505050565b5b8181101562000bf65762000bea60008262000bb7565b60018101905062000bd4565b5050565b601f82111562000c455762000c0f8162000ab9565b62000c1a8462000ace565b8101602085101562000c2a578190505b62000c4262000c398562000ace565b83018262000bd3565b50505b505050565b600082821c905092915050565b600062000c6a6000198460080262000c4a565b1980831691505092915050565b600062000c85838362000c57565b9150826002028217905092915050565b62000ca08262000a1b565b67ffffffffffffffff81111562000cbc5762000cbb62000a26565b5b62000cc8825462000a84565b62000cd582828562000bfa565b600060209050601f83116001811462000d0d576000841562000cf8578287015190505b62000d04858262000c77565b86555062000d74565b601f19841662000d1d8662000ab9565b60005b8281101562000d475784890151825560018201915060208501945060208101905062000d20565b8683101562000d67578489015162000d63601f89168262000c57565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000dae8262000d81565b9050919050565b62000dc08162000da1565b811462000dcc57600080fd5b50565b60008151905062000de08162000db5565b92915050565b60006020828403121562000dff5762000dfe62000d7c565b5b600062000e0f8482850162000dcf565b91505092915050565b62000e238162000da1565b82525050565b600060408201905062000e40600083018562000e18565b62000e4f602083018462000e18565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000e928262000b41565b915062000e9f8362000b41565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000edb5762000eda62000e56565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000f228262000b41565b915062000f2f8362000b41565b92508262000f425762000f4162000ee6565b5b828204905092915050565b600062000f5a8262000b41565b915062000f678362000b41565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000f9f5762000f9e62000e56565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000ff360208362000faa565b9150620010008262000fbb565b602082019050919050565b60006020820190508181036000830152620010268162000fe4565b9050919050565b60008115159050919050565b62001044816200102d565b82525050565b600060208201905062001061600083018462001039565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200109f601f8362000faa565b9150620010ac8262001067565b602082019050919050565b60006020820190508181036000830152620010d28162001090565b9050919050565b620010e48162000b41565b82525050565b6000602082019050620011016000830184620010d9565b92915050565b60805160a05161401c6200115760003960008181610c8001526110a60152600081816108dd01528181612ab701528181612b9801528181612bbf01528181612c5b0152612c82015261401c6000f3fe6080604052600436106101fd5760003560e01c80638a8c523c1161010d578063c6616ba1116100a0578063dd62ed3e1161006f578063dd62ed3e14610744578063e2f4560514610781578063f25f4b56146107ac578063f2fde38b146107d7578063f8b45b051461080057610204565b8063c6616ba114610688578063c8c8ebe4146106b1578063d257b34f146106dc578063d85ba0631461071957610204565b8063a457c2d7116100dc578063a457c2d7146105ba578063a9059cbb146105f7578063bbc0c74214610634578063c02466681461065f57610204565b80638a8c523c146105245780638da5cb5b1461053b57806395d89b41146105665780639a7a23d61461059157610204565b8063313ce567116101905780636a486a8e1161015f5780636a486a8e146104515780636ddd17131461047c57806370a08231146104a7578063715018a6146104e45780637571336a146104fb57610204565b8063313ce5671461038157806339509351146103ac57806349bd5a5e146103e95780634fbee1931461041457610204565b80631c499ab0116101cc5780631c499ab0146102c7578063203e727e146102f057806323b872dd1461031957806327c8f8351461035657610204565b806306fdde0314610209578063095ea7b3146102345780631694505e1461027157806318160ddd1461029c57610204565b3661020457005b600080fd5b34801561021557600080fd5b5061021e61082b565b60405161022b9190612dca565b60405180910390f35b34801561024057600080fd5b5061025b60048036038101906102569190612e85565b6108bd565b6040516102689190612ee0565b60405180910390f35b34801561027d57600080fd5b506102866108db565b6040516102939190612f5a565b60405180910390f35b3480156102a857600080fd5b506102b16108ff565b6040516102be9190612f84565b60405180910390f35b3480156102d357600080fd5b506102ee60048036038101906102e99190612f9f565b610909565b005b3480156102fc57600080fd5b5061031760048036038101906103129190612f9f565b6109ea565b005b34801561032557600080fd5b50610340600480360381019061033b9190612fcc565b610acb565b60405161034d9190612ee0565b60405180910390f35b34801561036257600080fd5b5061036b610bc3565b604051610378919061302e565b60405180910390f35b34801561038d57600080fd5b50610396610bc9565b6040516103a39190613065565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce9190612e85565b610bd2565b6040516103e09190612ee0565b60405180910390f35b3480156103f557600080fd5b506103fe610c7e565b60405161040b919061302e565b60405180910390f35b34801561042057600080fd5b5061043b60048036038101906104369190613080565b610ca2565b6040516104489190612ee0565b60405180910390f35b34801561045d57600080fd5b50610466610cf8565b6040516104739190612f84565b60405180910390f35b34801561048857600080fd5b50610491610cfe565b60405161049e9190612ee0565b60405180910390f35b3480156104b357600080fd5b506104ce60048036038101906104c99190613080565b610d11565b6040516104db9190612f84565b60405180910390f35b3480156104f057600080fd5b506104f9610d59565b005b34801561050757600080fd5b50610522600480360381019061051d91906130d9565b610de1565b005b34801561053057600080fd5b50610539610eb8565b005b34801561054757600080fd5b50610550610f6c565b60405161055d919061302e565b60405180910390f35b34801561057257600080fd5b5061057b610f96565b6040516105889190612dca565b60405180910390f35b34801561059d57600080fd5b506105b860048036038101906105b391906130d9565b611028565b005b3480156105c657600080fd5b506105e160048036038101906105dc9190612e85565b611140565b6040516105ee9190612ee0565b60405180910390f35b34801561060357600080fd5b5061061e60048036038101906106199190612e85565b61122b565b60405161062b9190612ee0565b60405180910390f35b34801561064057600080fd5b50610649611249565b6040516106569190612ee0565b60405180910390f35b34801561066b57600080fd5b50610686600480360381019061068191906130d9565b61125c565b005b34801561069457600080fd5b506106af60048036038101906106aa9190613119565b611381565b005b3480156106bd57600080fd5b506106c66114e0565b6040516106d39190612f84565b60405180910390f35b3480156106e857600080fd5b5061070360048036038101906106fe9190612f9f565b6114e6565b6040516107109190612ee0565b60405180910390f35b34801561072557600080fd5b5061072e61163b565b60405161073b9190612f84565b60405180910390f35b34801561075057600080fd5b5061076b60048036038101906107669190613180565b611641565b6040516107789190612f84565b60405180910390f35b34801561078d57600080fd5b506107966116c8565b6040516107a39190612f84565b60405180910390f35b3480156107b857600080fd5b506107c16116ce565b6040516107ce919061302e565b60405180910390f35b3480156107e357600080fd5b506107fe60048036038101906107f99190613080565b6116f4565b005b34801561080c57600080fd5b506108156117eb565b6040516108229190612f84565b60405180910390f35b60606003805461083a906131ef565b80601f0160208091040260200160405190810160405280929190818152602001828054610866906131ef565b80156108b35780601f10610888576101008083540402835291602001916108b3565b820191906000526020600020905b81548152906001019060200180831161089657829003601f168201915b5050505050905090565b60006108d16108ca6117f1565b84846117f9565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661094a6117f1565b73ffffffffffffffffffffffffffffffffffffffff161461096a57600080fd5b670de0b6b3a76400006103e860056109806108ff565b61098a919061324f565b61099491906132d8565b61099e91906132d8565b8110156109e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d79061337b565b60405180910390fd5b8060098190555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a2b6117f1565b73ffffffffffffffffffffffffffffffffffffffff1614610a4b57600080fd5b670de0b6b3a76400006103e86005610a616108ff565b610a6b919061324f565b610a7591906132d8565b610a7f91906132d8565b811015610ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab89061337b565b60405180910390fd5b8060078190555050565b6000610ad88484846119c2565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b236117f1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9a9061340d565b60405180910390fd5b610bb785610baf6117f1565b8584036117f9565b60019150509392505050565b61dead81565b60006012905090565b6000610c74610bdf6117f1565b848460016000610bed6117f1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c6f919061342d565b6117f9565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600e5481565b600a60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d616117f1565b73ffffffffffffffffffffffffffffffffffffffff16610d7f610f6c565b73ffffffffffffffffffffffffffffffffffffffff1614610dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcc906134cf565b60405180910390fd5b610ddf60006123d9565b565b610de96117f1565b73ffffffffffffffffffffffffffffffffffffffff16610e07610f6c565b73ffffffffffffffffffffffffffffffffffffffff1614610e5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e54906134cf565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610ec06117f1565b73ffffffffffffffffffffffffffffffffffffffff16610ede610f6c565b73ffffffffffffffffffffffffffffffffffffffff1614610f34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2b906134cf565b60405180910390fd5b6001600a60006101000a81548160ff0219169083151502179055506001600a60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610fa5906131ef565b80601f0160208091040260200160405190810160405280929190818152602001828054610fd1906131ef565b801561101e5780601f10610ff35761010080835404028352916020019161101e565b820191906000526020600020905b81548152906001019060200180831161100157829003601f168201915b5050505050905090565b6110306117f1565b73ffffffffffffffffffffffffffffffffffffffff1661104e610f6c565b73ffffffffffffffffffffffffffffffffffffffff16146110a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109b906134cf565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611132576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112990613561565b60405180910390fd5b61113c828261249f565b5050565b6000806001600061114f6117f1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561120c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611203906135f3565b60405180910390fd5b6112206112176117f1565b858584036117f9565b600191505092915050565b600061123f6112386117f1565b84846119c2565b6001905092915050565b600a60009054906101000a900460ff1681565b6112646117f1565b73ffffffffffffffffffffffffffffffffffffffff16611282610f6c565b73ffffffffffffffffffffffffffffffffffffffff16146112d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cf906134cf565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516113759190612ee0565b60405180910390a25050565b6113896117f1565b73ffffffffffffffffffffffffffffffffffffffff166113a7610f6c565b73ffffffffffffffffffffffffffffffffffffffff16146113fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f4906134cf565b60405180910390fd5b83600c8190555082600d81905550600d54600c5461141b919061342d565b600b8190555081600f8190555080601081905550601054600f5461143f919061342d565b600e81905550600e546013819055506005600b541115611494576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148b9061365f565b60405180910390fd5b6005600e5411156114da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d19061365f565b60405180910390fd5b50505050565b60075481565b60006114f06117f1565b73ffffffffffffffffffffffffffffffffffffffff1661150e610f6c565b73ffffffffffffffffffffffffffffffffffffffff1614611564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155b906134cf565b60405180910390fd5b620186a060016115726108ff565b61157c919061324f565b61158691906132d8565b8210156115c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bf906136f1565b60405180910390fd5b6103e860056115d56108ff565b6115df919061324f565b6115e991906132d8565b82111561162b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162290613783565b60405180910390fd5b8160088190555060019050919050565b600b5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6116fc6117f1565b73ffffffffffffffffffffffffffffffffffffffff1661171a610f6c565b73ffffffffffffffffffffffffffffffffffffffff1614611770576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611767906134cf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d690613815565b60405180910390fd5b6117e8816123d9565b50565b60095481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611868576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185f906138a7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ce90613939565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119b59190612f84565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a28906139cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9790613a5d565b60405180910390fd5b60008103611ab957611ab483836000612540565b6123d4565b611ac1610f6c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b2f5750611aff610f6c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611b685750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611ba2575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bbb5750600560149054906101000a900460ff16155b15611f5957600a60009054906101000a900460ff16611cb557601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611c755750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cab90613ac9565b60405180910390fd5b5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611d585750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611dba57600954611d6983610d11565b82611d74919061342d565b1115611db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dac90613b35565b60405180910390fd5b611f58565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611e5d5750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611eac57600754811115611ea7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9e90613bc7565b60405180910390fd5b611f57565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611f5657600954611f0983610d11565b82611f14919061342d565b1115611f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4c90613b35565b60405180910390fd5b5b5b5b5b6000611f6430610d11565b905060006008548210159050808015611f895750600a60019054906101000a900460ff165b8015611fa25750600560149054906101000a900460ff16155b8015611ff85750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561204e5750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120a45750601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120e8576001600560146101000a81548160ff0219169083151502179055506120cc6127bf565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061219e5750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156121a857600090505b600081156123bb57601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561220b57506000600e54115b156122a557612238606461222a600e54886129cc90919063ffffffff16565b6129e290919063ffffffff16565b9050600e546010548261224b919061324f565b61225591906132d8565b60126000828254612266919061342d565b92505081905550600e54600f548261227e919061324f565b61228891906132d8565b60116000828254612299919061342d565b92505081905550612397565b601660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561230057506000600b54115b156123965761232d606461231f600b54886129cc90919063ffffffff16565b6129e290919063ffffffff16565b9050600b54600d5482612340919061324f565b61234a91906132d8565b6012600082825461235b919061342d565b92505081905550600b54600c5482612373919061324f565b61237d91906132d8565b6011600082825461238e919061342d565b925050819055505b5b60008111156123ac576123ab873083612540565b5b80856123b89190613be7565b94505b6123c6878787612540565b601354600e81905550505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a6906139cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361261e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261590613a5d565b60405180910390fd5b6126298383836129f8565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156126af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a690613c8d565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612742919061342d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127a69190612f84565b60405180910390a36127b98484846129fd565b50505050565b60006127ca30610d11565b905060006011546012546127de919061342d565b90506000808314806127f05750600082145b156127fd575050506129ca565b601460085461280c919061324f565b831115612825576014600854612822919061324f565b92505b600060028360125486612838919061324f565b61284291906132d8565b61284c91906132d8565b905060006128638286612a0290919063ffffffff16565b9050600047905061287382612a18565b60006128888247612a0290919063ffffffff16565b905060006128b3876128a5601154856129cc90919063ffffffff16565b6129e290919063ffffffff16565b9050600081836128c39190613be7565b9050600060128190555060006011819055506000861180156128e55750600081115b15612932576128f48682612c55565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561858260125460405161292993929190613cad565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161297890613d15565b60006040518083038185875af1925050503d80600081146129b5576040519150601f19603f3d011682016040523d82523d6000602084013e6129ba565b606091505b5050809750505050505050505050505b565b600081836129da919061324f565b905092915050565b600081836129f091906132d8565b905092915050565b505050565b505050565b60008183612a109190613be7565b905092915050565b6000600267ffffffffffffffff811115612a3557612a34613d2a565b5b604051908082528060200260200182016040528015612a635781602001602082028036833780820191505090505b5090503081600081518110612a7b57612a7a613d59565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b449190613d9d565b81600181518110612b5857612b57613d59565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612bbd307f0000000000000000000000000000000000000000000000000000000000000000846117f9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612c1f959493929190613ec3565b600060405180830381600087803b158015612c3957600080fd5b505af1158015612c4d573d6000803e3d6000fd5b505050505050565b612c80307f0000000000000000000000000000000000000000000000000000000000000000846117f9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612ce796959493929190613f1d565b60606040518083038185885af1158015612d05573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d2a9190613f93565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d6b578082015181840152602081019050612d50565b83811115612d7a576000848401525b50505050565b6000601f19601f8301169050919050565b6000612d9c82612d31565b612da68185612d3c565b9350612db6818560208601612d4d565b612dbf81612d80565b840191505092915050565b60006020820190508181036000830152612de48184612d91565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e1c82612df1565b9050919050565b612e2c81612e11565b8114612e3757600080fd5b50565b600081359050612e4981612e23565b92915050565b6000819050919050565b612e6281612e4f565b8114612e6d57600080fd5b50565b600081359050612e7f81612e59565b92915050565b60008060408385031215612e9c57612e9b612dec565b5b6000612eaa85828601612e3a565b9250506020612ebb85828601612e70565b9150509250929050565b60008115159050919050565b612eda81612ec5565b82525050565b6000602082019050612ef56000830184612ed1565b92915050565b6000819050919050565b6000612f20612f1b612f1684612df1565b612efb565b612df1565b9050919050565b6000612f3282612f05565b9050919050565b6000612f4482612f27565b9050919050565b612f5481612f39565b82525050565b6000602082019050612f6f6000830184612f4b565b92915050565b612f7e81612e4f565b82525050565b6000602082019050612f996000830184612f75565b92915050565b600060208284031215612fb557612fb4612dec565b5b6000612fc384828501612e70565b91505092915050565b600080600060608486031215612fe557612fe4612dec565b5b6000612ff386828701612e3a565b935050602061300486828701612e3a565b925050604061301586828701612e70565b9150509250925092565b61302881612e11565b82525050565b6000602082019050613043600083018461301f565b92915050565b600060ff82169050919050565b61305f81613049565b82525050565b600060208201905061307a6000830184613056565b92915050565b60006020828403121561309657613095612dec565b5b60006130a484828501612e3a565b91505092915050565b6130b681612ec5565b81146130c157600080fd5b50565b6000813590506130d3816130ad565b92915050565b600080604083850312156130f0576130ef612dec565b5b60006130fe85828601612e3a565b925050602061310f858286016130c4565b9150509250929050565b6000806000806080858703121561313357613132612dec565b5b600061314187828801612e70565b945050602061315287828801612e70565b935050604061316387828801612e70565b925050606061317487828801612e70565b91505092959194509250565b6000806040838503121561319757613196612dec565b5b60006131a585828601612e3a565b92505060206131b685828601612e3a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061320757607f821691505b60208210810361321a576132196131c0565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061325a82612e4f565b915061326583612e4f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561329e5761329d613220565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006132e382612e4f565b91506132ee83612e4f565b9250826132fe576132fd6132a9565b5b828204905092915050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613365602483612d3c565b915061337082613309565b604082019050919050565b6000602082019050818103600083015261339481613358565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006133f7602883612d3c565b91506134028261339b565b604082019050919050565b60006020820190508181036000830152613426816133ea565b9050919050565b600061343882612e4f565b915061344383612e4f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561347857613477613220565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006134b9602083612d3c565b91506134c482613483565b602082019050919050565b600060208201905081810360008301526134e8816134ac565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061354b603983612d3c565b9150613556826134ef565b604082019050919050565b6000602082019050818103600083015261357a8161353e565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006135dd602583612d3c565b91506135e882613581565b604082019050919050565b6000602082019050818103600083015261360c816135d0565b9050919050565b7f4d757374206b6565702066656573206174203525206f72206c65737300000000600082015250565b6000613649601c83612d3c565b915061365482613613565b602082019050919050565b600060208201905081810360008301526136788161363c565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006136db603583612d3c565b91506136e68261367f565b604082019050919050565b6000602082019050818103600083015261370a816136ce565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b600061376d603483612d3c565b915061377882613711565b604082019050919050565b6000602082019050818103600083015261379c81613760565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006137ff602683612d3c565b915061380a826137a3565b604082019050919050565b6000602082019050818103600083015261382e816137f2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613891602483612d3c565b915061389c82613835565b604082019050919050565b600060208201905081810360008301526138c081613884565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613923602283612d3c565b915061392e826138c7565b604082019050919050565b6000602082019050818103600083015261395281613916565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006139b5602583612d3c565b91506139c082613959565b604082019050919050565b600060208201905081810360008301526139e4816139a8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613a47602383612d3c565b9150613a52826139eb565b604082019050919050565b60006020820190508181036000830152613a7681613a3a565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613ab3601683612d3c565b9150613abe82613a7d565b602082019050919050565b60006020820190508181036000830152613ae281613aa6565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613b1f601383612d3c565b9150613b2a82613ae9565b602082019050919050565b60006020820190508181036000830152613b4e81613b12565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613bb1603683612d3c565b9150613bbc82613b55565b604082019050919050565b60006020820190508181036000830152613be081613ba4565b9050919050565b6000613bf282612e4f565b9150613bfd83612e4f565b925082821015613c1057613c0f613220565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613c77602683612d3c565b9150613c8282613c1b565b604082019050919050565b60006020820190508181036000830152613ca681613c6a565b9050919050565b6000606082019050613cc26000830186612f75565b613ccf6020830185612f75565b613cdc6040830184612f75565b949350505050565b600081905092915050565b50565b6000613cff600083613ce4565b9150613d0a82613cef565b600082019050919050565b6000613d2082613cf2565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613d9781612e23565b92915050565b600060208284031215613db357613db2612dec565b5b6000613dc184828501613d88565b91505092915050565b6000819050919050565b6000613def613dea613de584613dca565b612efb565b612e4f565b9050919050565b613dff81613dd4565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613e3a81612e11565b82525050565b6000613e4c8383613e31565b60208301905092915050565b6000602082019050919050565b6000613e7082613e05565b613e7a8185613e10565b9350613e8583613e21565b8060005b83811015613eb6578151613e9d8882613e40565b9750613ea883613e58565b925050600181019050613e89565b5085935050505092915050565b600060a082019050613ed86000830188612f75565b613ee56020830187613df6565b8181036040830152613ef78186613e65565b9050613f06606083018561301f565b613f136080830184612f75565b9695505050505050565b600060c082019050613f32600083018961301f565b613f3f6020830188612f75565b613f4c6040830187613df6565b613f596060830186613df6565b613f66608083018561301f565b613f7360a0830184612f75565b979650505050505050565b600081519050613f8d81612e59565b92915050565b600080600060608486031215613fac57613fab612dec565b5b6000613fba86828701613f7e565b9350506020613fcb86828701613f7e565b9250506040613fdc86828701613f7e565b915050925092509256fea264697066735822122088216ef5ad718fda60eaa2a45f3c4c8ec651ad60a34ad923f0e43cca927e6fcd64736f6c634300080f0033
Deployed Bytecode
0x6080604052600436106101fd5760003560e01c80638a8c523c1161010d578063c6616ba1116100a0578063dd62ed3e1161006f578063dd62ed3e14610744578063e2f4560514610781578063f25f4b56146107ac578063f2fde38b146107d7578063f8b45b051461080057610204565b8063c6616ba114610688578063c8c8ebe4146106b1578063d257b34f146106dc578063d85ba0631461071957610204565b8063a457c2d7116100dc578063a457c2d7146105ba578063a9059cbb146105f7578063bbc0c74214610634578063c02466681461065f57610204565b80638a8c523c146105245780638da5cb5b1461053b57806395d89b41146105665780639a7a23d61461059157610204565b8063313ce567116101905780636a486a8e1161015f5780636a486a8e146104515780636ddd17131461047c57806370a08231146104a7578063715018a6146104e45780637571336a146104fb57610204565b8063313ce5671461038157806339509351146103ac57806349bd5a5e146103e95780634fbee1931461041457610204565b80631c499ab0116101cc5780631c499ab0146102c7578063203e727e146102f057806323b872dd1461031957806327c8f8351461035657610204565b806306fdde0314610209578063095ea7b3146102345780631694505e1461027157806318160ddd1461029c57610204565b3661020457005b600080fd5b34801561021557600080fd5b5061021e61082b565b60405161022b9190612dca565b60405180910390f35b34801561024057600080fd5b5061025b60048036038101906102569190612e85565b6108bd565b6040516102689190612ee0565b60405180910390f35b34801561027d57600080fd5b506102866108db565b6040516102939190612f5a565b60405180910390f35b3480156102a857600080fd5b506102b16108ff565b6040516102be9190612f84565b60405180910390f35b3480156102d357600080fd5b506102ee60048036038101906102e99190612f9f565b610909565b005b3480156102fc57600080fd5b5061031760048036038101906103129190612f9f565b6109ea565b005b34801561032557600080fd5b50610340600480360381019061033b9190612fcc565b610acb565b60405161034d9190612ee0565b60405180910390f35b34801561036257600080fd5b5061036b610bc3565b604051610378919061302e565b60405180910390f35b34801561038d57600080fd5b50610396610bc9565b6040516103a39190613065565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce9190612e85565b610bd2565b6040516103e09190612ee0565b60405180910390f35b3480156103f557600080fd5b506103fe610c7e565b60405161040b919061302e565b60405180910390f35b34801561042057600080fd5b5061043b60048036038101906104369190613080565b610ca2565b6040516104489190612ee0565b60405180910390f35b34801561045d57600080fd5b50610466610cf8565b6040516104739190612f84565b60405180910390f35b34801561048857600080fd5b50610491610cfe565b60405161049e9190612ee0565b60405180910390f35b3480156104b357600080fd5b506104ce60048036038101906104c99190613080565b610d11565b6040516104db9190612f84565b60405180910390f35b3480156104f057600080fd5b506104f9610d59565b005b34801561050757600080fd5b50610522600480360381019061051d91906130d9565b610de1565b005b34801561053057600080fd5b50610539610eb8565b005b34801561054757600080fd5b50610550610f6c565b60405161055d919061302e565b60405180910390f35b34801561057257600080fd5b5061057b610f96565b6040516105889190612dca565b60405180910390f35b34801561059d57600080fd5b506105b860048036038101906105b391906130d9565b611028565b005b3480156105c657600080fd5b506105e160048036038101906105dc9190612e85565b611140565b6040516105ee9190612ee0565b60405180910390f35b34801561060357600080fd5b5061061e60048036038101906106199190612e85565b61122b565b60405161062b9190612ee0565b60405180910390f35b34801561064057600080fd5b50610649611249565b6040516106569190612ee0565b60405180910390f35b34801561066b57600080fd5b50610686600480360381019061068191906130d9565b61125c565b005b34801561069457600080fd5b506106af60048036038101906106aa9190613119565b611381565b005b3480156106bd57600080fd5b506106c66114e0565b6040516106d39190612f84565b60405180910390f35b3480156106e857600080fd5b5061070360048036038101906106fe9190612f9f565b6114e6565b6040516107109190612ee0565b60405180910390f35b34801561072557600080fd5b5061072e61163b565b60405161073b9190612f84565b60405180910390f35b34801561075057600080fd5b5061076b60048036038101906107669190613180565b611641565b6040516107789190612f84565b60405180910390f35b34801561078d57600080fd5b506107966116c8565b6040516107a39190612f84565b60405180910390f35b3480156107b857600080fd5b506107c16116ce565b6040516107ce919061302e565b60405180910390f35b3480156107e357600080fd5b506107fe60048036038101906107f99190613080565b6116f4565b005b34801561080c57600080fd5b506108156117eb565b6040516108229190612f84565b60405180910390f35b60606003805461083a906131ef565b80601f0160208091040260200160405190810160405280929190818152602001828054610866906131ef565b80156108b35780601f10610888576101008083540402835291602001916108b3565b820191906000526020600020905b81548152906001019060200180831161089657829003601f168201915b5050505050905090565b60006108d16108ca6117f1565b84846117f9565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661094a6117f1565b73ffffffffffffffffffffffffffffffffffffffff161461096a57600080fd5b670de0b6b3a76400006103e860056109806108ff565b61098a919061324f565b61099491906132d8565b61099e91906132d8565b8110156109e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d79061337b565b60405180910390fd5b8060098190555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a2b6117f1565b73ffffffffffffffffffffffffffffffffffffffff1614610a4b57600080fd5b670de0b6b3a76400006103e86005610a616108ff565b610a6b919061324f565b610a7591906132d8565b610a7f91906132d8565b811015610ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab89061337b565b60405180910390fd5b8060078190555050565b6000610ad88484846119c2565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b236117f1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9a9061340d565b60405180910390fd5b610bb785610baf6117f1565b8584036117f9565b60019150509392505050565b61dead81565b60006012905090565b6000610c74610bdf6117f1565b848460016000610bed6117f1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c6f919061342d565b6117f9565b6001905092915050565b7f000000000000000000000000d60ce20d6b3d4364546f951e990a257c74a8678881565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600e5481565b600a60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d616117f1565b73ffffffffffffffffffffffffffffffffffffffff16610d7f610f6c565b73ffffffffffffffffffffffffffffffffffffffff1614610dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcc906134cf565b60405180910390fd5b610ddf60006123d9565b565b610de96117f1565b73ffffffffffffffffffffffffffffffffffffffff16610e07610f6c565b73ffffffffffffffffffffffffffffffffffffffff1614610e5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e54906134cf565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610ec06117f1565b73ffffffffffffffffffffffffffffffffffffffff16610ede610f6c565b73ffffffffffffffffffffffffffffffffffffffff1614610f34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2b906134cf565b60405180910390fd5b6001600a60006101000a81548160ff0219169083151502179055506001600a60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610fa5906131ef565b80601f0160208091040260200160405190810160405280929190818152602001828054610fd1906131ef565b801561101e5780601f10610ff35761010080835404028352916020019161101e565b820191906000526020600020905b81548152906001019060200180831161100157829003601f168201915b5050505050905090565b6110306117f1565b73ffffffffffffffffffffffffffffffffffffffff1661104e610f6c565b73ffffffffffffffffffffffffffffffffffffffff16146110a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109b906134cf565b60405180910390fd5b7f000000000000000000000000d60ce20d6b3d4364546f951e990a257c74a8678873ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611132576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112990613561565b60405180910390fd5b61113c828261249f565b5050565b6000806001600061114f6117f1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561120c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611203906135f3565b60405180910390fd5b6112206112176117f1565b858584036117f9565b600191505092915050565b600061123f6112386117f1565b84846119c2565b6001905092915050565b600a60009054906101000a900460ff1681565b6112646117f1565b73ffffffffffffffffffffffffffffffffffffffff16611282610f6c565b73ffffffffffffffffffffffffffffffffffffffff16146112d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cf906134cf565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516113759190612ee0565b60405180910390a25050565b6113896117f1565b73ffffffffffffffffffffffffffffffffffffffff166113a7610f6c565b73ffffffffffffffffffffffffffffffffffffffff16146113fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f4906134cf565b60405180910390fd5b83600c8190555082600d81905550600d54600c5461141b919061342d565b600b8190555081600f8190555080601081905550601054600f5461143f919061342d565b600e81905550600e546013819055506005600b541115611494576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148b9061365f565b60405180910390fd5b6005600e5411156114da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d19061365f565b60405180910390fd5b50505050565b60075481565b60006114f06117f1565b73ffffffffffffffffffffffffffffffffffffffff1661150e610f6c565b73ffffffffffffffffffffffffffffffffffffffff1614611564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155b906134cf565b60405180910390fd5b620186a060016115726108ff565b61157c919061324f565b61158691906132d8565b8210156115c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bf906136f1565b60405180910390fd5b6103e860056115d56108ff565b6115df919061324f565b6115e991906132d8565b82111561162b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162290613783565b60405180910390fd5b8160088190555060019050919050565b600b5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6116fc6117f1565b73ffffffffffffffffffffffffffffffffffffffff1661171a610f6c565b73ffffffffffffffffffffffffffffffffffffffff1614611770576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611767906134cf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d690613815565b60405180910390fd5b6117e8816123d9565b50565b60095481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611868576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185f906138a7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ce90613939565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119b59190612f84565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a28906139cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9790613a5d565b60405180910390fd5b60008103611ab957611ab483836000612540565b6123d4565b611ac1610f6c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b2f5750611aff610f6c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611b685750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611ba2575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bbb5750600560149054906101000a900460ff16155b15611f5957600a60009054906101000a900460ff16611cb557601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611c755750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cab90613ac9565b60405180910390fd5b5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611d585750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611dba57600954611d6983610d11565b82611d74919061342d565b1115611db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dac90613b35565b60405180910390fd5b611f58565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611e5d5750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611eac57600754811115611ea7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9e90613bc7565b60405180910390fd5b611f57565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611f5657600954611f0983610d11565b82611f14919061342d565b1115611f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4c90613b35565b60405180910390fd5b5b5b5b5b6000611f6430610d11565b905060006008548210159050808015611f895750600a60019054906101000a900460ff165b8015611fa25750600560149054906101000a900460ff16155b8015611ff85750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561204e5750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120a45750601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120e8576001600560146101000a81548160ff0219169083151502179055506120cc6127bf565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061219e5750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156121a857600090505b600081156123bb57601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561220b57506000600e54115b156122a557612238606461222a600e54886129cc90919063ffffffff16565b6129e290919063ffffffff16565b9050600e546010548261224b919061324f565b61225591906132d8565b60126000828254612266919061342d565b92505081905550600e54600f548261227e919061324f565b61228891906132d8565b60116000828254612299919061342d565b92505081905550612397565b601660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561230057506000600b54115b156123965761232d606461231f600b54886129cc90919063ffffffff16565b6129e290919063ffffffff16565b9050600b54600d5482612340919061324f565b61234a91906132d8565b6012600082825461235b919061342d565b92505081905550600b54600c5482612373919061324f565b61237d91906132d8565b6011600082825461238e919061342d565b925050819055505b5b60008111156123ac576123ab873083612540565b5b80856123b89190613be7565b94505b6123c6878787612540565b601354600e81905550505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a6906139cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361261e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261590613a5d565b60405180910390fd5b6126298383836129f8565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156126af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a690613c8d565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612742919061342d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127a69190612f84565b60405180910390a36127b98484846129fd565b50505050565b60006127ca30610d11565b905060006011546012546127de919061342d565b90506000808314806127f05750600082145b156127fd575050506129ca565b601460085461280c919061324f565b831115612825576014600854612822919061324f565b92505b600060028360125486612838919061324f565b61284291906132d8565b61284c91906132d8565b905060006128638286612a0290919063ffffffff16565b9050600047905061287382612a18565b60006128888247612a0290919063ffffffff16565b905060006128b3876128a5601154856129cc90919063ffffffff16565b6129e290919063ffffffff16565b9050600081836128c39190613be7565b9050600060128190555060006011819055506000861180156128e55750600081115b15612932576128f48682612c55565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561858260125460405161292993929190613cad565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161297890613d15565b60006040518083038185875af1925050503d80600081146129b5576040519150601f19603f3d011682016040523d82523d6000602084013e6129ba565b606091505b5050809750505050505050505050505b565b600081836129da919061324f565b905092915050565b600081836129f091906132d8565b905092915050565b505050565b505050565b60008183612a109190613be7565b905092915050565b6000600267ffffffffffffffff811115612a3557612a34613d2a565b5b604051908082528060200260200182016040528015612a635781602001602082028036833780820191505090505b5090503081600081518110612a7b57612a7a613d59565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b449190613d9d565b81600181518110612b5857612b57613d59565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612bbd307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846117f9565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612c1f959493929190613ec3565b600060405180830381600087803b158015612c3957600080fd5b505af1158015612c4d573d6000803e3d6000fd5b505050505050565b612c80307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846117f9565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612ce796959493929190613f1d565b60606040518083038185885af1158015612d05573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d2a9190613f93565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d6b578082015181840152602081019050612d50565b83811115612d7a576000848401525b50505050565b6000601f19601f8301169050919050565b6000612d9c82612d31565b612da68185612d3c565b9350612db6818560208601612d4d565b612dbf81612d80565b840191505092915050565b60006020820190508181036000830152612de48184612d91565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e1c82612df1565b9050919050565b612e2c81612e11565b8114612e3757600080fd5b50565b600081359050612e4981612e23565b92915050565b6000819050919050565b612e6281612e4f565b8114612e6d57600080fd5b50565b600081359050612e7f81612e59565b92915050565b60008060408385031215612e9c57612e9b612dec565b5b6000612eaa85828601612e3a565b9250506020612ebb85828601612e70565b9150509250929050565b60008115159050919050565b612eda81612ec5565b82525050565b6000602082019050612ef56000830184612ed1565b92915050565b6000819050919050565b6000612f20612f1b612f1684612df1565b612efb565b612df1565b9050919050565b6000612f3282612f05565b9050919050565b6000612f4482612f27565b9050919050565b612f5481612f39565b82525050565b6000602082019050612f6f6000830184612f4b565b92915050565b612f7e81612e4f565b82525050565b6000602082019050612f996000830184612f75565b92915050565b600060208284031215612fb557612fb4612dec565b5b6000612fc384828501612e70565b91505092915050565b600080600060608486031215612fe557612fe4612dec565b5b6000612ff386828701612e3a565b935050602061300486828701612e3a565b925050604061301586828701612e70565b9150509250925092565b61302881612e11565b82525050565b6000602082019050613043600083018461301f565b92915050565b600060ff82169050919050565b61305f81613049565b82525050565b600060208201905061307a6000830184613056565b92915050565b60006020828403121561309657613095612dec565b5b60006130a484828501612e3a565b91505092915050565b6130b681612ec5565b81146130c157600080fd5b50565b6000813590506130d3816130ad565b92915050565b600080604083850312156130f0576130ef612dec565b5b60006130fe85828601612e3a565b925050602061310f858286016130c4565b9150509250929050565b6000806000806080858703121561313357613132612dec565b5b600061314187828801612e70565b945050602061315287828801612e70565b935050604061316387828801612e70565b925050606061317487828801612e70565b91505092959194509250565b6000806040838503121561319757613196612dec565b5b60006131a585828601612e3a565b92505060206131b685828601612e3a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061320757607f821691505b60208210810361321a576132196131c0565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061325a82612e4f565b915061326583612e4f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561329e5761329d613220565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006132e382612e4f565b91506132ee83612e4f565b9250826132fe576132fd6132a9565b5b828204905092915050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613365602483612d3c565b915061337082613309565b604082019050919050565b6000602082019050818103600083015261339481613358565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006133f7602883612d3c565b91506134028261339b565b604082019050919050565b60006020820190508181036000830152613426816133ea565b9050919050565b600061343882612e4f565b915061344383612e4f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561347857613477613220565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006134b9602083612d3c565b91506134c482613483565b602082019050919050565b600060208201905081810360008301526134e8816134ac565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061354b603983612d3c565b9150613556826134ef565b604082019050919050565b6000602082019050818103600083015261357a8161353e565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006135dd602583612d3c565b91506135e882613581565b604082019050919050565b6000602082019050818103600083015261360c816135d0565b9050919050565b7f4d757374206b6565702066656573206174203525206f72206c65737300000000600082015250565b6000613649601c83612d3c565b915061365482613613565b602082019050919050565b600060208201905081810360008301526136788161363c565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006136db603583612d3c565b91506136e68261367f565b604082019050919050565b6000602082019050818103600083015261370a816136ce565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b600061376d603483612d3c565b915061377882613711565b604082019050919050565b6000602082019050818103600083015261379c81613760565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006137ff602683612d3c565b915061380a826137a3565b604082019050919050565b6000602082019050818103600083015261382e816137f2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613891602483612d3c565b915061389c82613835565b604082019050919050565b600060208201905081810360008301526138c081613884565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613923602283612d3c565b915061392e826138c7565b604082019050919050565b6000602082019050818103600083015261395281613916565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006139b5602583612d3c565b91506139c082613959565b604082019050919050565b600060208201905081810360008301526139e4816139a8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613a47602383612d3c565b9150613a52826139eb565b604082019050919050565b60006020820190508181036000830152613a7681613a3a565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613ab3601683612d3c565b9150613abe82613a7d565b602082019050919050565b60006020820190508181036000830152613ae281613aa6565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613b1f601383612d3c565b9150613b2a82613ae9565b602082019050919050565b60006020820190508181036000830152613b4e81613b12565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613bb1603683612d3c565b9150613bbc82613b55565b604082019050919050565b60006020820190508181036000830152613be081613ba4565b9050919050565b6000613bf282612e4f565b9150613bfd83612e4f565b925082821015613c1057613c0f613220565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613c77602683612d3c565b9150613c8282613c1b565b604082019050919050565b60006020820190508181036000830152613ca681613c6a565b9050919050565b6000606082019050613cc26000830186612f75565b613ccf6020830185612f75565b613cdc6040830184612f75565b949350505050565b600081905092915050565b50565b6000613cff600083613ce4565b9150613d0a82613cef565b600082019050919050565b6000613d2082613cf2565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613d9781612e23565b92915050565b600060208284031215613db357613db2612dec565b5b6000613dc184828501613d88565b91505092915050565b6000819050919050565b6000613def613dea613de584613dca565b612efb565b612e4f565b9050919050565b613dff81613dd4565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613e3a81612e11565b82525050565b6000613e4c8383613e31565b60208301905092915050565b6000602082019050919050565b6000613e7082613e05565b613e7a8185613e10565b9350613e8583613e21565b8060005b83811015613eb6578151613e9d8882613e40565b9750613ea883613e58565b925050600181019050613e89565b5085935050505092915050565b600060a082019050613ed86000830188612f75565b613ee56020830187613df6565b8181036040830152613ef78186613e65565b9050613f06606083018561301f565b613f136080830184612f75565b9695505050505050565b600060c082019050613f32600083018961301f565b613f3f6020830188612f75565b613f4c6040830187613df6565b613f596060830186613df6565b613f66608083018561301f565b613f7360a0830184612f75565b979650505050505050565b600081519050613f8d81612e59565b92915050565b600080600060608486031215613fac57613fab612dec565b5b6000613fba86828701613f7e565b9350506020613fcb86828701613f7e565b9250506040613fdc86828701613f7e565b915050925092509256fea264697066735822122088216ef5ad718fda60eaa2a45f3c4c8ec651ad60a34ad923f0e43cca927e6fcd64736f6c634300080f0033
Deployed Bytecode Sourcemap
14148:11994:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2682:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3596:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14225:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3003:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18085:263;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18362:277;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3773:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14328:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2902:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4273:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14283:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20157:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14760:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14608:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3119:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;807:112;;;;;;;;;;;;;:::i;:::-;;18651:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17458:112;;;;;;;;;;;;;:::i;:::-;;584:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2790:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19649:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4496:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3254:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14568:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19459:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18826:613;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14453:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17578:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14648:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3437:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14495:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14420:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;927:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14535:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2682:100;2736:13;2769:5;2762:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2682:100;:::o;3596:169::-;3679:4;3696:39;3705:12;:10;:12::i;:::-;3719:7;3728:6;3696:8;:39::i;:::-;3753:4;3746:11;;3596:169;;;;:::o;14225:51::-;;;:::o;3003:108::-;3064:7;3091:12;;3084:19;;3003:108;:::o;18085:263::-;18178:9;;;;;;;;;;;18162:25;;:12;:10;:12::i;:::-;:25;;;18154:34;;;;;;18257:4;18249;18244:1;18228:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18227:26;;;;:::i;:::-;18226:35;;;;:::i;:::-;18207:15;:54;;18199:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;18324:15;18312:9;:27;;;;18085:263;:::o;18362:277::-;18458:9;;;;;;;;;;;18442:25;;:12;:10;:12::i;:::-;:25;;;18434:34;;;;;;18537:4;18529;18524:1;18508:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18507:26;;;;:::i;:::-;18506:35;;;;:::i;:::-;18487:15;:54;;18479:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;18615:15;18592:20;:38;;;;18362:277;:::o;3773:492::-;3913:4;3930:36;3940:6;3948:9;3959:6;3930:9;:36::i;:::-;3979:24;4006:11;:19;4018:6;4006:19;;;;;;;;;;;;;;;:33;4026:12;:10;:12::i;:::-;4006:33;;;;;;;;;;;;;;;;3979:60;;4078:6;4058:16;:26;;4050:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4165:57;4174:6;4182:12;:10;:12::i;:::-;4215:6;4196:16;:25;4165:8;:57::i;:::-;4253:4;4246:11;;;3773:492;;;;;:::o;14328:53::-;14374:6;14328:53;:::o;2902:93::-;2960:5;2985:2;2978:9;;2902:93;:::o;4273:215::-;4361:4;4378:80;4387:12;:10;:12::i;:::-;4401:7;4447:10;4410:11;:25;4422:12;:10;:12::i;:::-;4410:25;;;;;;;;;;;;;;;:34;4436:7;4410:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4378:8;:80::i;:::-;4476:4;4469:11;;4273:215;;;;:::o;14283:38::-;;;:::o;20157:126::-;20223:4;20247:19;:28;20267:7;20247:28;;;;;;;;;;;;;;;;;;;;;;;;;20240:35;;20157:126;;;:::o;14760:28::-;;;;:::o;14608:31::-;;;;;;;;;;;;;:::o;3119:127::-;3193:7;3220:9;:18;3230:7;3220:18;;;;;;;;;;;;;;;;3213:25;;3119:127;;;:::o;807:112::-;730:12;:10;:12::i;:::-;719:23;;:7;:5;:7::i;:::-;:23;;;711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;881:30:::1;908:1;881:18;:30::i;:::-;807:112::o:0;18651:167::-;730:12;:10;:12::i;:::-;719:23;;:7;:5;:7::i;:::-;:23;;;711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18806:4:::1;18764:31;:39;18796:6;18764:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;18651:167:::0;;:::o;17458:112::-;730:12;:10;:12::i;:::-;719:23;;:7;:5;:7::i;:::-;:23;;;711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17529:4:::1;17513:13;;:20;;;;;;;;;;;;;;;;;;17558:4;17544:11;;:18;;;;;;;;;;;;;;;;;;17458:112::o:0;584:87::-;630:7;657:6;;;;;;;;;;;650:13;;584:87;:::o;2790:104::-;2846:13;2879:7;2872:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2790:104;:::o;19649:304::-;730:12;:10;:12::i;:::-;719:23;;:7;:5;:7::i;:::-;:23;;;711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19793:13:::1;19785:21;;:4;:21;;::::0;19763:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19904:41;19933:4;19939:5;19904:28;:41::i;:::-;19649:304:::0;;:::o;4496:413::-;4589:4;4606:24;4633:11;:25;4645:12;:10;:12::i;:::-;4633:25;;;;;;;;;;;;;;;:34;4659:7;4633:34;;;;;;;;;;;;;;;;4606:61;;4706:15;4686:16;:35;;4678:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4799:67;4808:12;:10;:12::i;:::-;4822:7;4850:15;4831:16;:34;4799:8;:67::i;:::-;4897:4;4890:11;;;4496:413;;;;:::o;3254:175::-;3340:4;3357:42;3367:12;:10;:12::i;:::-;3381:9;3392:6;3357:9;:42::i;:::-;3417:4;3410:11;;3254:175;;;;:::o;14568:33::-;;;;;;;;;;;;;:::o;19459:182::-;730:12;:10;:12::i;:::-;719:23;;:7;:5;:7::i;:::-;:23;;;711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19575:8:::1;19544:19;:28;19564:7;19544:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19615:7;19599:34;;;19624:8;19599:34;;;;;;:::i;:::-;;;;;;;;19459:182:::0;;:::o;18826:613::-;730:12;:10;:12::i;:::-;719:23;;:7;:5;:7::i;:::-;:23;;;711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18988:12:::1;18970:15;:30;;;;19029:12;19011:15;:30;;;;19085:15;;19067;;:33;;;;:::i;:::-;19052:12;:48;;;;19132:13;19113:16;:32;;;;19175:13;19156:16;:32;;;;19234:16;;19215;;:35;;;;:::i;:::-;19199:13;:51;;;;19275:13;;19261:11;:27;;;;19325:1;19309:12;;:17;;19301:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;19395:1;19378:13;;:18;;19370:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;18826:613:::0;;;;:::o;14453:35::-;;;;:::o;17578:497::-;17686:4;730:12;:10;:12::i;:::-;719:23;;:7;:5;:7::i;:::-;:23;;;711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17765:6:::1;17760:1;17744:13;:11;:13::i;:::-;:17;;;;:::i;:::-;17743:28;;;;:::i;:::-;17730:9;:41;;17708:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;17920:4;17915:1;17899:13;:11;:13::i;:::-;:17;;;;:::i;:::-;17898:26;;;;:::i;:::-;17885:9;:39;;17863:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;18036:9;18015:18;:30;;;;18063:4;18056:11;;17578:497:::0;;;:::o;14648:27::-;;;;:::o;3437:151::-;3526:7;3553:11;:18;3565:5;3553:18;;;;;;;;;;;;;;;:27;3572:7;3553:27;;;;;;;;;;;;;;;;3546:34;;3437:151;;;;:::o;14495:33::-;;;;:::o;14420:24::-;;;;;;;;;;;;;:::o;927:201::-;730:12;:10;:12::i;:::-;719:23;;:7;:5;:7::i;:::-;:23;;;711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1036:1:::1;1016:22;;:8;:22;;::::0;1008:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1092:28;1111:8;1092:18;:28::i;:::-;927:201:::0;:::o;14535:24::-;;;;:::o;130:98::-;183:7;210:10;203:17;;130:98;:::o;6065:380::-;6218:1;6201:19;;:5;:19;;;6193:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6299:1;6280:21;;:7;:21;;;6272:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6383:6;6353:11;:18;6365:5;6353:18;;;;;;;;;;;;;;;:27;6372:7;6353:27;;;;;;;;;;;;;;;:36;;;;6421:7;6405:32;;6414:5;6405:32;;;6430:6;6405:32;;;;;;:::i;:::-;;;;;;;;6065:380;;;:::o;20291:3497::-;20439:1;20423:18;;:4;:18;;;20415:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20516:1;20502:16;;:2;:16;;;20494:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20585:1;20575:6;:11;20571:93;;20603:28;20619:4;20625:2;20629:1;20603:15;:28::i;:::-;20646:7;;20571:93;20714:7;:5;:7::i;:::-;20706:15;;:4;:15;;;;:49;;;;;20748:7;:5;:7::i;:::-;20742:13;;:2;:13;;;;20706:49;:86;;;;;20790:1;20776:16;;:2;:16;;;;20706:86;:128;;;;;20827:6;20813:21;;:2;:21;;;;20706:128;:158;;;;;20856:8;;;;;;;;;;;20855:9;20706:158;20684:1514;;;20904:13;;;;;;;;;;;20899:223;;20976:19;:25;20996:4;20976:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;21005:19;:23;21025:2;21005:23;;;;;;;;;;;;;;;;;;;;;;;;;20976:52;20942:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;20899:223;21196:25;:31;21222:4;21196:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;21253:31;:35;21285:2;21253:35;;;;;;;;;;;;;;;;;;;;;;;;;21252:36;21196:92;21170:1013;;;21413:9;;21396:13;21406:2;21396:9;:13::i;:::-;21387:6;:22;;;;:::i;:::-;:35;;21353:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;21170:1013;;;21591:25;:29;21617:2;21591:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;21646:31;:37;21678:4;21646:37;;;;;;;;;;;;;;;;;;;;;;;;;21645:38;21591:92;21565:618;;;21770:20;;21760:6;:30;;21726:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;21565:618;;;21963:31;:35;21995:2;21963:35;;;;;;;;;;;;;;;;;;;;;;;;;21958:225;;22083:9;;22066:13;22076:2;22066:9;:13::i;:::-;22057:6;:22;;;;:::i;:::-;:35;;22023:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;21958:225;21565:618;21170:1013;20684:1514;22210:28;22241:24;22259:4;22241:9;:24::i;:::-;22210:55;;22278:12;22317:18;;22293:20;:42;;22278:57;;22366:7;:35;;;;;22390:11;;;;;;;;;;;22366:35;:61;;;;;22419:8;;;;;;;;;;;22418:9;22366:61;:110;;;;;22445:25;:31;22471:4;22445:31;;;;;;;;;;;;;;;;;;;;;;;;;22444:32;22366:110;:153;;;;;22494:19;:25;22514:4;22494:25;;;;;;;;;;;;;;;;;;;;;;;;;22493:26;22366:153;:194;;;;;22537:19;:23;22557:2;22537:23;;;;;;;;;;;;;;;;;;;;;;;;;22536:24;22366:194;22348:326;;;22598:4;22587:8;;:15;;;;;;;;;;;;;;;;;;22619:10;:8;:10::i;:::-;22657:5;22646:8;;:16;;;;;;;;;;;;;;;;;;22348:326;22686:12;22702:8;;;;;;;;;;;22701:9;22686:24;;22727:19;:25;22747:4;22727:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;22756:19;:23;22776:2;22756:23;;;;;;;;;;;;;;;;;;;;;;;;;22727:52;22723:100;;;22806:5;22796:15;;22723:100;22835:12;22868:7;22864:831;;;22920:25;:29;22946:2;22920:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;22969:1;22953:13;;:17;22920:50;22916:630;;;22998:34;23028:3;22998:25;23009:13;;22998:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;22991:41;;23101:13;;23081:16;;23074:4;:23;;;;:::i;:::-;23073:41;;;;:::i;:::-;23051:18;;:63;;;;;;;:::i;:::-;;;;;;;;23183:13;;23163:16;;23156:4;:23;;;;:::i;:::-;23155:41;;;;:::i;:::-;23133:18;;:63;;;;;;;:::i;:::-;;;;;;;;22916:630;;;23258:25;:31;23284:4;23258:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;23308:1;23293:12;;:16;23258:51;23254:292;;;23337:33;23366:3;23337:24;23348:12;;23337:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;23330:40;;23438:12;;23419:15;;23412:4;:22;;;;:::i;:::-;23411:39;;;;:::i;:::-;23389:18;;:61;;;;;;;:::i;:::-;;;;;;;;23518:12;;23499:15;;23492:4;:22;;;;:::i;:::-;23491:39;;;;:::i;:::-;23469:18;;:61;;;;;;;:::i;:::-;;;;;;;;23254:292;22916:630;23573:1;23566:4;:8;23562:91;;;23595:42;23611:4;23625;23632;23595:15;:42::i;:::-;23562:91;23679:4;23669:14;;;;;:::i;:::-;;;22864:831;23707:33;23723:4;23729:2;23733:6;23707:15;:33::i;:::-;23767:11;;23751:13;:27;;;;20404:3384;;;;20291:3497;;;;:::o;1136:191::-;1210:16;1229:6;;;;;;;;;;;1210:25;;1255:8;1246:6;;:17;;;;;;;;;;;;;;;;;;1310:8;1279:40;;1300:8;1279:40;;;;;;;;;;;;1199:128;1136:191;:::o;19961:188::-;20078:5;20044:25;:31;20070:4;20044:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20135:5;20101:40;;20129:4;20101:40;;;;;;;;;;;;19961:188;;:::o;4917:733::-;5075:1;5057:20;;:6;:20;;;5049:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5159:1;5138:23;;:9;:23;;;5130:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5214:47;5235:6;5243:9;5254:6;5214:20;:47::i;:::-;5274:21;5298:9;:17;5308:6;5298:17;;;;;;;;;;;;;;;;5274:41;;5351:6;5334:13;:23;;5326:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5472:6;5456:13;:22;5436:9;:17;5446:6;5436:17;;;;;;;;;;;;;;;:42;;;;5524:6;5500:9;:20;5510:9;5500:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5565:9;5548:35;;5557:6;5548:35;;;5576:6;5548:35;;;;;;:::i;:::-;;;;;;;;5596:46;5616:6;5624:9;5635:6;5596:19;:46::i;:::-;5038:612;4917:733;;;:::o;24683:1456::-;24722:23;24748:24;24766:4;24748:9;:24::i;:::-;24722:50;;24783:25;24845:18;;24811;;:52;;;;:::i;:::-;24783:80;;24874:12;24922:1;24903:15;:20;:46;;;;24948:1;24927:17;:22;24903:46;24899:85;;;24966:7;;;;;24899:85;25039:2;25018:18;;:23;;;;:::i;:::-;25000:15;:41;24996:115;;;25097:2;25076:18;;:23;;;;:::i;:::-;25058:41;;24996:115;25123:23;25236:1;25203:17;25168:18;;25150:15;:36;;;;:::i;:::-;25149:71;;;;:::i;:::-;:88;;;;:::i;:::-;25123:114;;25248:26;25277:36;25297:15;25277;:19;;:36;;;;:::i;:::-;25248:65;;25326:25;25354:21;25326:49;;25388:36;25405:18;25388:16;:36::i;:::-;25437:18;25458:44;25484:17;25458:21;:25;;:44;;;;:::i;:::-;25437:65;;25515:23;25541:81;25594:17;25541:34;25556:18;;25541:10;:14;;:34;;;;:::i;:::-;:38;;:81;;;;:::i;:::-;25515:107;;25635:23;25674:15;25661:10;:28;;;;:::i;:::-;25635:54;;25723:1;25702:18;:22;;;;25756:1;25735:18;:22;;;;25792:1;25774:15;:19;:42;;;;;25815:1;25797:15;:19;25774:42;25770:278;;;25833:46;25846:15;25863;25833:12;:46::i;:::-;25899:137;25932:18;25969:15;26003:18;;25899:137;;;;;;;;:::i;:::-;;;;;;;;25770:278;26082:9;;;;;;;;;;;26074:23;;26105:21;26074:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26060:71;;;;;24711:1428;;;;;;;;;24683:1456;:::o;8071:98::-;8129:7;8160:1;8156;:5;;;;:::i;:::-;8149:12;;8071:98;;;;:::o;8177:::-;8235:7;8266:1;8262;:5;;;;:::i;:::-;8255:12;;8177:98;;;;:::o;6453:125::-;;;;:::o;6586:124::-;;;;:::o;7965:98::-;8023:7;8054:1;8050;:5;;;;:::i;:::-;8043:12;;7965:98;;;;:::o;23796:503::-;23864:21;23902:1;23888:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23864:40;;23933:4;23915;23920:1;23915:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23959:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23949:4;23954:1;23949:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;23994:62;24011:4;24026:15;24044:11;23994:8;:62::i;:::-;24095:15;:66;;;24176:11;24202:1;24218:4;24245;24265:15;24095:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23851:448;23796:503;:::o;24307:368::-;24390:62;24407:4;24422:15;24440:11;24390:8;:62::i;:::-;24465:15;:31;;;24504:9;24537:4;24557:11;24583:1;24599;14374:6;24641:15;24465:202;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24307:368;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:60::-;3522:3;3543:5;3536:12;;3494:60;;;:::o;3560:142::-;3610:9;3643:53;3661:34;3670:24;3688:5;3670:24;:::i;:::-;3661:34;:::i;:::-;3643:53;:::i;:::-;3630:66;;3560:142;;;:::o;3708:126::-;3758:9;3791:37;3822:5;3791:37;:::i;:::-;3778:50;;3708:126;;;:::o;3840:153::-;3917:9;3950:37;3981:5;3950:37;:::i;:::-;3937:50;;3840:153;;;:::o;3999:185::-;4113:64;4171:5;4113:64;:::i;:::-;4108:3;4101:77;3999:185;;:::o;4190:276::-;4310:4;4348:2;4337:9;4333:18;4325:26;;4361:98;4456:1;4445:9;4441:17;4432:6;4361:98;:::i;:::-;4190:276;;;;:::o;4472:118::-;4559:24;4577:5;4559:24;:::i;:::-;4554:3;4547:37;4472:118;;:::o;4596:222::-;4689:4;4727:2;4716:9;4712:18;4704:26;;4740:71;4808:1;4797:9;4793:17;4784:6;4740:71;:::i;:::-;4596:222;;;;:::o;4824:329::-;4883:6;4932:2;4920:9;4911:7;4907:23;4903:32;4900:119;;;4938:79;;:::i;:::-;4900:119;5058:1;5083:53;5128:7;5119:6;5108:9;5104:22;5083:53;:::i;:::-;5073:63;;5029:117;4824:329;;;;:::o;5159:619::-;5236:6;5244;5252;5301:2;5289:9;5280:7;5276:23;5272:32;5269:119;;;5307:79;;:::i;:::-;5269:119;5427:1;5452:53;5497:7;5488:6;5477:9;5473:22;5452:53;:::i;:::-;5442:63;;5398:117;5554:2;5580:53;5625:7;5616:6;5605:9;5601:22;5580:53;:::i;:::-;5570:63;;5525:118;5682:2;5708:53;5753:7;5744:6;5733:9;5729:22;5708:53;:::i;:::-;5698:63;;5653:118;5159:619;;;;;:::o;5784:118::-;5871:24;5889:5;5871:24;:::i;:::-;5866:3;5859:37;5784:118;;:::o;5908:222::-;6001:4;6039:2;6028:9;6024:18;6016:26;;6052:71;6120:1;6109:9;6105:17;6096:6;6052:71;:::i;:::-;5908:222;;;;:::o;6136:86::-;6171:7;6211:4;6204:5;6200:16;6189:27;;6136:86;;;:::o;6228:112::-;6311:22;6327:5;6311:22;:::i;:::-;6306:3;6299:35;6228:112;;:::o;6346:214::-;6435:4;6473:2;6462:9;6458:18;6450:26;;6486:67;6550:1;6539:9;6535:17;6526:6;6486:67;:::i;:::-;6346:214;;;;:::o;6566:329::-;6625:6;6674:2;6662:9;6653:7;6649:23;6645:32;6642:119;;;6680:79;;:::i;:::-;6642:119;6800:1;6825:53;6870:7;6861:6;6850:9;6846:22;6825:53;:::i;:::-;6815:63;;6771:117;6566:329;;;;:::o;6901:116::-;6971:21;6986:5;6971:21;:::i;:::-;6964:5;6961:32;6951:60;;7007:1;7004;6997:12;6951:60;6901:116;:::o;7023:133::-;7066:5;7104:6;7091:20;7082:29;;7120:30;7144:5;7120:30;:::i;:::-;7023:133;;;;:::o;7162:468::-;7227:6;7235;7284:2;7272:9;7263:7;7259:23;7255:32;7252:119;;;7290:79;;:::i;:::-;7252:119;7410:1;7435:53;7480:7;7471:6;7460:9;7456:22;7435:53;:::i;:::-;7425:63;;7381:117;7537:2;7563:50;7605:7;7596:6;7585:9;7581:22;7563:50;:::i;:::-;7553:60;;7508:115;7162:468;;;;;:::o;7636:765::-;7722:6;7730;7738;7746;7795:3;7783:9;7774:7;7770:23;7766:33;7763:120;;;7802:79;;:::i;:::-;7763:120;7922:1;7947:53;7992:7;7983:6;7972:9;7968:22;7947:53;:::i;:::-;7937:63;;7893:117;8049:2;8075:53;8120:7;8111:6;8100:9;8096:22;8075:53;:::i;:::-;8065:63;;8020:118;8177:2;8203:53;8248:7;8239:6;8228:9;8224:22;8203:53;:::i;:::-;8193:63;;8148:118;8305:2;8331:53;8376:7;8367:6;8356:9;8352:22;8331:53;:::i;:::-;8321:63;;8276:118;7636:765;;;;;;;:::o;8407:474::-;8475:6;8483;8532:2;8520:9;8511:7;8507:23;8503:32;8500:119;;;8538:79;;:::i;:::-;8500:119;8658:1;8683:53;8728:7;8719:6;8708:9;8704:22;8683:53;:::i;:::-;8673:63;;8629:117;8785:2;8811:53;8856:7;8847:6;8836:9;8832:22;8811:53;:::i;:::-;8801:63;;8756:118;8407:474;;;;;:::o;8887:180::-;8935:77;8932:1;8925:88;9032:4;9029:1;9022:15;9056:4;9053:1;9046:15;9073:320;9117:6;9154:1;9148:4;9144:12;9134:22;;9201:1;9195:4;9191:12;9222:18;9212:81;;9278:4;9270:6;9266:17;9256:27;;9212:81;9340:2;9332:6;9329:14;9309:18;9306:38;9303:84;;9359:18;;:::i;:::-;9303:84;9124:269;9073:320;;;:::o;9399:180::-;9447:77;9444:1;9437:88;9544:4;9541:1;9534:15;9568:4;9565:1;9558:15;9585:348;9625:7;9648:20;9666:1;9648:20;:::i;:::-;9643:25;;9682:20;9700:1;9682:20;:::i;:::-;9677:25;;9870:1;9802:66;9798:74;9795:1;9792:81;9787:1;9780:9;9773:17;9769:105;9766:131;;;9877:18;;:::i;:::-;9766:131;9925:1;9922;9918:9;9907:20;;9585:348;;;;:::o;9939:180::-;9987:77;9984:1;9977:88;10084:4;10081:1;10074:15;10108:4;10105:1;10098:15;10125:185;10165:1;10182:20;10200:1;10182:20;:::i;:::-;10177:25;;10216:20;10234:1;10216:20;:::i;:::-;10211:25;;10255:1;10245:35;;10260:18;;:::i;:::-;10245:35;10302:1;10299;10295:9;10290:14;;10125:185;;;;:::o;10316:223::-;10456:34;10452:1;10444:6;10440:14;10433:58;10525:6;10520:2;10512:6;10508:15;10501:31;10316:223;:::o;10545:366::-;10687:3;10708:67;10772:2;10767:3;10708:67;:::i;:::-;10701:74;;10784:93;10873:3;10784:93;:::i;:::-;10902:2;10897:3;10893:12;10886:19;;10545:366;;;:::o;10917:419::-;11083:4;11121:2;11110:9;11106:18;11098:26;;11170:9;11164:4;11160:20;11156:1;11145:9;11141:17;11134:47;11198:131;11324:4;11198:131;:::i;:::-;11190:139;;10917:419;;;:::o;11342:227::-;11482:34;11478:1;11470:6;11466:14;11459:58;11551:10;11546:2;11538:6;11534:15;11527:35;11342:227;:::o;11575:366::-;11717:3;11738:67;11802:2;11797:3;11738:67;:::i;:::-;11731:74;;11814:93;11903:3;11814:93;:::i;:::-;11932:2;11927:3;11923:12;11916:19;;11575:366;;;:::o;11947:419::-;12113:4;12151:2;12140:9;12136:18;12128:26;;12200:9;12194:4;12190:20;12186:1;12175:9;12171:17;12164:47;12228:131;12354:4;12228:131;:::i;:::-;12220:139;;11947:419;;;:::o;12372:305::-;12412:3;12431:20;12449:1;12431:20;:::i;:::-;12426:25;;12465:20;12483:1;12465:20;:::i;:::-;12460:25;;12619:1;12551:66;12547:74;12544:1;12541:81;12538:107;;;12625:18;;:::i;:::-;12538:107;12669:1;12666;12662:9;12655:16;;12372:305;;;;:::o;12683:182::-;12823:34;12819:1;12811:6;12807:14;12800:58;12683:182;:::o;12871:366::-;13013:3;13034:67;13098:2;13093:3;13034:67;:::i;:::-;13027:74;;13110:93;13199:3;13110:93;:::i;:::-;13228:2;13223:3;13219:12;13212:19;;12871:366;;;:::o;13243:419::-;13409:4;13447:2;13436:9;13432:18;13424:26;;13496:9;13490:4;13486:20;13482:1;13471:9;13467:17;13460:47;13524:131;13650:4;13524:131;:::i;:::-;13516:139;;13243:419;;;:::o;13668:244::-;13808:34;13804:1;13796:6;13792:14;13785:58;13877:27;13872:2;13864:6;13860:15;13853:52;13668:244;:::o;13918:366::-;14060:3;14081:67;14145:2;14140:3;14081:67;:::i;:::-;14074:74;;14157:93;14246:3;14157:93;:::i;:::-;14275:2;14270:3;14266:12;14259:19;;13918:366;;;:::o;14290:419::-;14456:4;14494:2;14483:9;14479:18;14471:26;;14543:9;14537:4;14533:20;14529:1;14518:9;14514:17;14507:47;14571:131;14697:4;14571:131;:::i;:::-;14563:139;;14290:419;;;:::o;14715:224::-;14855:34;14851:1;14843:6;14839:14;14832:58;14924:7;14919:2;14911:6;14907:15;14900:32;14715:224;:::o;14945:366::-;15087:3;15108:67;15172:2;15167:3;15108:67;:::i;:::-;15101:74;;15184:93;15273:3;15184:93;:::i;:::-;15302:2;15297:3;15293:12;15286:19;;14945:366;;;:::o;15317:419::-;15483:4;15521:2;15510:9;15506:18;15498:26;;15570:9;15564:4;15560:20;15556:1;15545:9;15541:17;15534:47;15598:131;15724:4;15598:131;:::i;:::-;15590:139;;15317:419;;;:::o;15742:178::-;15882:30;15878:1;15870:6;15866:14;15859:54;15742:178;:::o;15926:366::-;16068:3;16089:67;16153:2;16148:3;16089:67;:::i;:::-;16082:74;;16165:93;16254:3;16165:93;:::i;:::-;16283:2;16278:3;16274:12;16267:19;;15926:366;;;:::o;16298:419::-;16464:4;16502:2;16491:9;16487:18;16479:26;;16551:9;16545:4;16541:20;16537:1;16526:9;16522:17;16515:47;16579:131;16705:4;16579:131;:::i;:::-;16571:139;;16298:419;;;:::o;16723:240::-;16863:34;16859:1;16851:6;16847:14;16840:58;16932:23;16927:2;16919:6;16915:15;16908:48;16723:240;:::o;16969:366::-;17111:3;17132:67;17196:2;17191:3;17132:67;:::i;:::-;17125:74;;17208:93;17297:3;17208:93;:::i;:::-;17326:2;17321:3;17317:12;17310:19;;16969:366;;;:::o;17341:419::-;17507:4;17545:2;17534:9;17530:18;17522:26;;17594:9;17588:4;17584:20;17580:1;17569:9;17565:17;17558:47;17622:131;17748:4;17622:131;:::i;:::-;17614:139;;17341:419;;;:::o;17766:239::-;17906:34;17902:1;17894:6;17890:14;17883:58;17975:22;17970:2;17962:6;17958:15;17951:47;17766:239;:::o;18011:366::-;18153:3;18174:67;18238:2;18233:3;18174:67;:::i;:::-;18167:74;;18250:93;18339:3;18250:93;:::i;:::-;18368:2;18363:3;18359:12;18352:19;;18011:366;;;:::o;18383:419::-;18549:4;18587:2;18576:9;18572:18;18564:26;;18636:9;18630:4;18626:20;18622:1;18611:9;18607:17;18600:47;18664:131;18790:4;18664:131;:::i;:::-;18656:139;;18383:419;;;:::o;18808:225::-;18948:34;18944:1;18936:6;18932:14;18925:58;19017:8;19012:2;19004:6;19000:15;18993:33;18808:225;:::o;19039:366::-;19181:3;19202:67;19266:2;19261:3;19202:67;:::i;:::-;19195:74;;19278:93;19367:3;19278:93;:::i;:::-;19396:2;19391:3;19387:12;19380:19;;19039:366;;;:::o;19411:419::-;19577:4;19615:2;19604:9;19600:18;19592:26;;19664:9;19658:4;19654:20;19650:1;19639:9;19635:17;19628:47;19692:131;19818:4;19692:131;:::i;:::-;19684:139;;19411:419;;;:::o;19836:223::-;19976:34;19972:1;19964:6;19960:14;19953:58;20045:6;20040:2;20032:6;20028:15;20021:31;19836:223;:::o;20065:366::-;20207:3;20228:67;20292:2;20287:3;20228:67;:::i;:::-;20221:74;;20304:93;20393:3;20304:93;:::i;:::-;20422:2;20417:3;20413:12;20406:19;;20065:366;;;:::o;20437:419::-;20603:4;20641:2;20630:9;20626:18;20618:26;;20690:9;20684:4;20680:20;20676:1;20665:9;20661:17;20654:47;20718:131;20844:4;20718:131;:::i;:::-;20710:139;;20437:419;;;:::o;20862:221::-;21002:34;20998:1;20990:6;20986:14;20979:58;21071:4;21066:2;21058:6;21054:15;21047:29;20862:221;:::o;21089:366::-;21231:3;21252:67;21316:2;21311:3;21252:67;:::i;:::-;21245:74;;21328:93;21417:3;21328:93;:::i;:::-;21446:2;21441:3;21437:12;21430:19;;21089:366;;;:::o;21461:419::-;21627:4;21665:2;21654:9;21650:18;21642:26;;21714:9;21708:4;21704:20;21700:1;21689:9;21685:17;21678:47;21742:131;21868:4;21742:131;:::i;:::-;21734:139;;21461:419;;;:::o;21886:224::-;22026:34;22022:1;22014:6;22010:14;22003:58;22095:7;22090:2;22082:6;22078:15;22071:32;21886:224;:::o;22116:366::-;22258:3;22279:67;22343:2;22338:3;22279:67;:::i;:::-;22272:74;;22355:93;22444:3;22355:93;:::i;:::-;22473:2;22468:3;22464:12;22457:19;;22116:366;;;:::o;22488:419::-;22654:4;22692:2;22681:9;22677:18;22669:26;;22741:9;22735:4;22731:20;22727:1;22716:9;22712:17;22705:47;22769:131;22895:4;22769:131;:::i;:::-;22761:139;;22488:419;;;:::o;22913:222::-;23053:34;23049:1;23041:6;23037:14;23030:58;23122:5;23117:2;23109:6;23105:15;23098:30;22913:222;:::o;23141:366::-;23283:3;23304:67;23368:2;23363:3;23304:67;:::i;:::-;23297:74;;23380:93;23469:3;23380:93;:::i;:::-;23498:2;23493:3;23489:12;23482:19;;23141:366;;;:::o;23513:419::-;23679:4;23717:2;23706:9;23702:18;23694:26;;23766:9;23760:4;23756:20;23752:1;23741:9;23737:17;23730:47;23794:131;23920:4;23794:131;:::i;:::-;23786:139;;23513:419;;;:::o;23938:172::-;24078:24;24074:1;24066:6;24062:14;24055:48;23938:172;:::o;24116:366::-;24258:3;24279:67;24343:2;24338:3;24279:67;:::i;:::-;24272:74;;24355:93;24444:3;24355:93;:::i;:::-;24473:2;24468:3;24464:12;24457:19;;24116:366;;;:::o;24488:419::-;24654:4;24692:2;24681:9;24677:18;24669:26;;24741:9;24735:4;24731:20;24727:1;24716:9;24712:17;24705:47;24769:131;24895:4;24769:131;:::i;:::-;24761:139;;24488:419;;;:::o;24913:169::-;25053:21;25049:1;25041:6;25037:14;25030:45;24913:169;:::o;25088:366::-;25230:3;25251:67;25315:2;25310:3;25251:67;:::i;:::-;25244:74;;25327:93;25416:3;25327:93;:::i;:::-;25445:2;25440:3;25436:12;25429:19;;25088:366;;;:::o;25460:419::-;25626:4;25664:2;25653:9;25649:18;25641:26;;25713:9;25707:4;25703:20;25699:1;25688:9;25684:17;25677:47;25741:131;25867:4;25741:131;:::i;:::-;25733:139;;25460:419;;;:::o;25885:241::-;26025:34;26021:1;26013:6;26009:14;26002:58;26094:24;26089:2;26081:6;26077:15;26070:49;25885:241;:::o;26132:366::-;26274:3;26295:67;26359:2;26354:3;26295:67;:::i;:::-;26288:74;;26371:93;26460:3;26371:93;:::i;:::-;26489:2;26484:3;26480:12;26473:19;;26132:366;;;:::o;26504:419::-;26670:4;26708:2;26697:9;26693:18;26685:26;;26757:9;26751:4;26747:20;26743:1;26732:9;26728:17;26721:47;26785:131;26911:4;26785:131;:::i;:::-;26777:139;;26504:419;;;:::o;26929:191::-;26969:4;26989:20;27007:1;26989:20;:::i;:::-;26984:25;;27023:20;27041:1;27023:20;:::i;:::-;27018:25;;27062:1;27059;27056:8;27053:34;;;27067:18;;:::i;:::-;27053:34;27112:1;27109;27105:9;27097:17;;26929:191;;;;:::o;27126:225::-;27266:34;27262:1;27254:6;27250:14;27243:58;27335:8;27330:2;27322:6;27318:15;27311:33;27126:225;:::o;27357:366::-;27499:3;27520:67;27584:2;27579:3;27520:67;:::i;:::-;27513:74;;27596:93;27685:3;27596:93;:::i;:::-;27714:2;27709:3;27705:12;27698:19;;27357:366;;;:::o;27729:419::-;27895:4;27933:2;27922:9;27918:18;27910:26;;27982:9;27976:4;27972:20;27968:1;27957:9;27953:17;27946:47;28010:131;28136:4;28010:131;:::i;:::-;28002:139;;27729:419;;;:::o;28154:442::-;28303:4;28341:2;28330:9;28326:18;28318:26;;28354:71;28422:1;28411:9;28407:17;28398:6;28354:71;:::i;:::-;28435:72;28503:2;28492:9;28488:18;28479:6;28435:72;:::i;:::-;28517;28585:2;28574:9;28570:18;28561:6;28517:72;:::i;:::-;28154:442;;;;;;:::o;28602:147::-;28703:11;28740:3;28725:18;;28602:147;;;;:::o;28755:114::-;;:::o;28875:398::-;29034:3;29055:83;29136:1;29131:3;29055:83;:::i;:::-;29048:90;;29147:93;29236:3;29147:93;:::i;:::-;29265:1;29260:3;29256:11;29249:18;;28875:398;;;:::o;29279:379::-;29463:3;29485:147;29628:3;29485:147;:::i;:::-;29478:154;;29649:3;29642:10;;29279:379;;;:::o;29664:180::-;29712:77;29709:1;29702:88;29809:4;29806:1;29799:15;29833:4;29830:1;29823:15;29850:180;29898:77;29895:1;29888:88;29995:4;29992:1;29985:15;30019:4;30016:1;30009:15;30036:143;30093:5;30124:6;30118:13;30109:22;;30140:33;30167:5;30140:33;:::i;:::-;30036:143;;;;:::o;30185:351::-;30255:6;30304:2;30292:9;30283:7;30279:23;30275:32;30272:119;;;30310:79;;:::i;:::-;30272:119;30430:1;30455:64;30511:7;30502:6;30491:9;30487:22;30455:64;:::i;:::-;30445:74;;30401:128;30185:351;;;;:::o;30542:85::-;30587:7;30616:5;30605:16;;30542:85;;;:::o;30633:158::-;30691:9;30724:61;30742:42;30751:32;30777:5;30751:32;:::i;:::-;30742:42;:::i;:::-;30724:61;:::i;:::-;30711:74;;30633:158;;;:::o;30797:147::-;30892:45;30931:5;30892:45;:::i;:::-;30887:3;30880:58;30797:147;;:::o;30950:114::-;31017:6;31051:5;31045:12;31035:22;;30950:114;;;:::o;31070:184::-;31169:11;31203:6;31198:3;31191:19;31243:4;31238:3;31234:14;31219:29;;31070:184;;;;:::o;31260:132::-;31327:4;31350:3;31342:11;;31380:4;31375:3;31371:14;31363:22;;31260:132;;;:::o;31398:108::-;31475:24;31493:5;31475:24;:::i;:::-;31470:3;31463:37;31398:108;;:::o;31512:179::-;31581:10;31602:46;31644:3;31636:6;31602:46;:::i;:::-;31680:4;31675:3;31671:14;31657:28;;31512:179;;;;:::o;31697:113::-;31767:4;31799;31794:3;31790:14;31782:22;;31697:113;;;:::o;31846:732::-;31965:3;31994:54;32042:5;31994:54;:::i;:::-;32064:86;32143:6;32138:3;32064:86;:::i;:::-;32057:93;;32174:56;32224:5;32174:56;:::i;:::-;32253:7;32284:1;32269:284;32294:6;32291:1;32288:13;32269:284;;;32370:6;32364:13;32397:63;32456:3;32441:13;32397:63;:::i;:::-;32390:70;;32483:60;32536:6;32483:60;:::i;:::-;32473:70;;32329:224;32316:1;32313;32309:9;32304:14;;32269:284;;;32273:14;32569:3;32562:10;;31970:608;;;31846:732;;;;:::o;32584:831::-;32847:4;32885:3;32874:9;32870:19;32862:27;;32899:71;32967:1;32956:9;32952:17;32943:6;32899:71;:::i;:::-;32980:80;33056:2;33045:9;33041:18;33032:6;32980:80;:::i;:::-;33107:9;33101:4;33097:20;33092:2;33081:9;33077:18;33070:48;33135:108;33238:4;33229:6;33135:108;:::i;:::-;33127:116;;33253:72;33321:2;33310:9;33306:18;33297:6;33253:72;:::i;:::-;33335:73;33403:3;33392:9;33388:19;33379:6;33335:73;:::i;:::-;32584:831;;;;;;;;:::o;33421:807::-;33670:4;33708:3;33697:9;33693:19;33685:27;;33722:71;33790:1;33779:9;33775:17;33766:6;33722:71;:::i;:::-;33803:72;33871:2;33860:9;33856:18;33847:6;33803:72;:::i;:::-;33885:80;33961:2;33950:9;33946:18;33937:6;33885:80;:::i;:::-;33975;34051:2;34040:9;34036:18;34027:6;33975:80;:::i;:::-;34065:73;34133:3;34122:9;34118:19;34109:6;34065:73;:::i;:::-;34148;34216:3;34205:9;34201:19;34192:6;34148:73;:::i;:::-;33421:807;;;;;;;;;:::o;34234:143::-;34291:5;34322:6;34316:13;34307:22;;34338:33;34365:5;34338:33;:::i;:::-;34234:143;;;;:::o;34383:663::-;34471:6;34479;34487;34536:2;34524:9;34515:7;34511:23;34507:32;34504:119;;;34542:79;;:::i;:::-;34504:119;34662:1;34687:64;34743:7;34734:6;34723:9;34719:22;34687:64;:::i;:::-;34677:74;;34633:128;34800:2;34826:64;34882:7;34873:6;34862:9;34858:22;34826:64;:::i;:::-;34816:74;;34771:129;34939:2;34965:64;35021:7;35012:6;35001:9;34997:22;34965:64;:::i;:::-;34955:74;;34910:129;34383:663;;;;;:::o
Swarm Source
ipfs://88216ef5ad718fda60eaa2a45f3c4c8ec651ad60a34ad923f0e43cca927e6fcd
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.