ERC-20
Overview
Max Total Supply
5,000,000,000 $GREEN
Holders
29
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
959,014,161 $GREENValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Token
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-08-08 */ // SPDX-License-Identifier: MIT //Website: www.microoverse.com //X: https://x.com/microoverse //Discord: https://discord.gg/BsWKFRcknj pragma solidity 0.8.17; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; return msg.data; } } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint 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 (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint 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 (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); 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 (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); 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(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } 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); } 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; } } } library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); function mul(int256 a, int256 b) internal pure returns (int256) { int256 c = a * b; // Detect overflow when multiplying MIN_INT256 with -1 require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } function div(int256 a, int256 b) internal pure returns (int256) { // Prevent overflow when dividing MIN_INT256 by -1 require(b != -1 || a != MIN_INT256); // Solidity already throws when dividing by 0. return a / b; } function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } function abs(int256 a) internal pure returns (int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } function toUint256Safe(int256 a) internal pure returns (uint256) { require(a >= 0); return uint256(a); } } library SafeMathUint { function toInt256Safe(uint256 a) internal pure returns (int256) { int256 b = int256(a); require(b >= 0); return b; } } contract ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; 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 9; } 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); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); 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); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(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 = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract Token is ERC20, Ownable { IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool private swapping; address payable public DEVWallet = payable(0xb9A4e719226261E5ea1A7256482c6bE867Ef0fB9);//wallet 1 address payable public TaxWallet = payable(0xb9A4e719226261E5ea1A7256482c6bE867Ef0fB9); address payable public BurnAddress = payable (0x000000000000000000000000000000000000dEaD); address public contractAddress = address(this); uint256 public maxTransactionAmount = 100000e9; uint256 public swapTokensAtAmount = 1000; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; bool public antiBotEnabled = false; mapping(address => uint256) private _holderLastTransferTimestamp; mapping (address => uint256) private _holderFirstBuyTimestamp; mapping (address => bool) public _blacklist; bool public transferDelayEnabled = false; uint256 public buyTotalFees; uint256 public buyTaxFee; uint256 public buyDEVFee; uint256 public buyBurnFee; uint256 public sellTotalFees; uint256 public sellTaxFee; uint256 public sellDEVFee; uint256 public sellBurnFee; uint256 public tokensForTax; uint256 public tokensForDEV; uint256 public tokensForBurn; uint256 launchedAt; mapping (address => bool) public _isExcludedFromFees; mapping (address => bool) public _isExcludedMaxTransactionAmount; mapping (address => bool) public _isExcludedMaxWalletAmount; mapping (address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event TaxWalletUpdated(address indexed newWallet, address indexed oldWallet); event DEVWalletUpdated(address indexed newWallet, address indexed oldWallet); event BurnAddressUpdated(address indexed newWallet, address indexed oldWallet); constructor() ERC20("GREEN", "$GREEN") { //name first then IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); excludeFromMaxTransaction(address(_uniswapV2Router), true); excludeFromMaxWallet(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); excludeFromMaxWallet(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 _buyTaxFee = 10; uint256 _buyDEVFee = 0; uint256 _buyBurnfee = 0; uint256 _sellTaxFee = 10; uint256 _sellDEVFee = 0; uint256 _sellBurnfee = 0; uint256 totalSupply = 5000000000e9; buyTaxFee = _buyTaxFee; buyDEVFee = _buyDEVFee; buyBurnFee = _buyBurnfee; buyTotalFees = buyTaxFee + buyDEVFee + buyBurnFee; sellTaxFee = _sellTaxFee; sellDEVFee = _sellDEVFee; sellBurnFee = _sellBurnfee; sellTotalFees = sellTaxFee + sellDEVFee + sellBurnFee; excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromFees(TaxWallet, true); excludeFromFees(DEVWallet, true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); excludeFromMaxTransaction(TaxWallet, true); excludeFromMaxTransaction(DEVWallet, true); excludeFromMaxWallet(owner(), true); excludeFromMaxWallet(address(this), true); excludeFromMaxWallet(address(0xdead), true); excludeFromMaxWallet(TaxWallet, true); excludeFromMaxWallet(DEVWallet, true); _mint(owner(), totalSupply*100/100); } receive() external payable { } function enableTrading() external onlyOwner { tradingActive = true; launchedAt = block.number; } function areLimitsInEffect(bool limits) external onlyOwner returns (bool){ limitsInEffect = limits; return limits; } function disableTransferDelay() external onlyOwner returns (bool){ transferDelayEnabled = false; return true; } function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){ swapTokensAtAmount = newAmount; return true; } function updateMaxTxnAmount(uint256 newNumofTokens) external onlyOwner { maxTransactionAmount = newNumofTokens; } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } function excludeFromMaxWallet(address updAds, bool isEx) public onlyOwner { _isExcludedMaxWalletAmount[updAds] = isEx; } function updateSwapEnabled(bool enabled) external onlyOwner(){ swapEnabled = enabled; } function updateBuyFees(uint256 _TaxFee, uint256 _DEVFee, uint256 _BurnFee) external onlyOwner { buyTaxFee = _TaxFee; buyDEVFee = _DEVFee; buyBurnFee = _BurnFee; buyTotalFees = buyTaxFee + buyDEVFee + buyBurnFee; require(buyTotalFees <= 20, "Must keep fees at 20% or less"); } function updateSellFees(uint256 _TaxFee, uint256 _DEVFee, uint256 _BurnFee) external onlyOwner { sellTaxFee = _TaxFee; sellDEVFee = _DEVFee; sellBurnFee = _BurnFee; sellTotalFees = sellTaxFee + sellDEVFee + sellBurnFee; require(sellTotalFees <= 20, "Must keep fees at 20% or less"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function antiBotIsEnabled(bool enabled) public onlyOwner{ antiBotEnabled = enabled; } 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 updateTaxWallet(address newTaxWallet) external onlyOwner { TaxWallet = payable(newTaxWallet); } function updateDEVWallet(address newWallet) external onlyOwner { DEVWallet = payable(newWallet); } function updateBurnAddress(address newWallet) external onlyOwner { BurnAddress = payable(newWallet); } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } event BoughtEarly(address indexed sniper); function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(!_blacklist[to] && !_blacklist[from], "You have been blacklisted from transfering tokens"); if(amount == 0) { super._transfer(from, to, 0); return; } if(limitsInEffect){ if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ) { if(!tradingActive){ require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active."); } if (transferDelayEnabled){ if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){ require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed."); _holderLastTransferTimestamp[tx.origin] = block.number; } } if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount."); } else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount."); } } } if ( antiBotEnabled && to != uniswapV2Pair && to != address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D) ) { _blacklist[to] = true; } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if( canSwap && swapEnabled && !swapping && automatedMarketMakerPairs[to] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; if(takeFee){ if (automatedMarketMakerPairs[to] && sellTotalFees > 0){ fees = amount*sellTotalFees/100; tokensForDEV += fees * sellDEVFee / sellTotalFees; tokensForTax += fees * sellTaxFee / sellTotalFees; tokensForBurn += fees * sellBurnFee / sellTotalFees; } else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount*buyTotalFees/100; tokensForDEV += fees * buyDEVFee / buyTotalFees; tokensForTax += fees * buyTaxFee / buyTotalFees; tokensForBurn += fees *buyBurnFee/ buyTotalFees; } if(fees > 10){ super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } 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); 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, // slippage is unavoidable 0, // slippage is unavoidable address(this), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForTax + tokensForDEV + tokensForBurn; if(contractBalance == 0 || totalTokensToSwap == 100) {return;} uint256 amountToSwapForETH = contractBalance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance; uint256 ethForTax = ethBalance*tokensForTax/totalTokensToSwap; uint256 ethForDEV = ethBalance*tokensForDEV/totalTokensToSwap; uint256 ethForBurn = ethBalance*tokensForBurn/totalTokensToSwap; payable(TaxWallet).transfer(ethForTax); payable(DEVWallet).transfer(ethForDEV); payable(BurnAddress).transfer(ethForBurn); tokensForBurn = 0; tokensForTax = 0; tokensForDEV = 0; } function recoverAllTokens() external onlyOwner { super._transfer(address(this), owner(), balanceOf(contractAddress)); } function recoverAllETH() external onlyOwner { payable(owner()).transfer(address(this).balance); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"BurnAddressUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"DEVWalletUpdated","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":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"TaxWalletUpdated","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"},{"inputs":[],"name":"BurnAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEVWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TaxWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxWalletAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiBotEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"antiBotIsEnabled","outputs":[],"stateMutability":"nonpayable","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":"bool","name":"limits","type":"bool"}],"name":"areLimitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDEVFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTaxFee","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":"contractAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","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":"recoverAllETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"recoverAllTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDEVFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"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":"tokensForBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDEV","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateBurnAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_TaxFee","type":"uint256"},{"internalType":"uint256","name":"_DEVFee","type":"uint256"},{"internalType":"uint256","name":"_BurnFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDEVWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNumofTokens","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_TaxFee","type":"uint256"},{"internalType":"uint256","name":"_DEVFee","type":"uint256"},{"internalType":"uint256","name":"_BurnFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTaxWallet","type":"address"}],"name":"updateTaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c060405273b9a4e719226261e5ea1a7256482c6be867ef0fb9600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b9a4e719226261e5ea1a7256482c6be867ef0fb9600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555030600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550655af3107a4000600a556103e8600b556001600c60006101000a81548160ff0219169083151502179055506000600c60016101000a81548160ff0219169083151502179055506000600c60026101000a81548160ff0219169083151502179055506000600c60036101000a81548160ff0219169083151502179055506000601060006101000a81548160ff021916908315150217905550348015620001d657600080fd5b506040518060400160405280600581526020017f475245454e0000000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f24475245454e00000000000000000000000000000000000000000000000000008152508160039081620002549190620010c0565b508060049081620002669190620010c0565b50505060006200027b6200086160201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620003468160016200086960201b60201c565b620003598160016200096660201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ff919062001211565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000467573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200048d919062001211565b6040518363ffffffff1660e01b8152600401620004ac92919062001254565b6020604051808303816000875af1158015620004cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004f2919062001211565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200053a60a05160016200086960201b60201c565b6200054f60a05160016200096660201b60201c565b6200056460a051600162000a6360201b60201c565b6000600a90506000806000600a90506000806000674563918244f400009050866012819055508560138190555084601481905550601454601354601254620005ad9190620012b0565b620005b99190620012b0565b601181905550836016819055508260178190555081601881905550601854601754601654620005e99190620012b0565b620005f59190620012b0565b6015819055506200061d6200060f62000b0460201b60201c565b600162000b2e60201b60201c565b6200063030600162000b2e60201b60201c565b6200064561dead600162000b2e60201b60201c565b6200067a600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600162000b2e60201b60201c565b620006af600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600162000b2e60201b60201c565b620006d1620006c362000b0460201b60201c565b60016200086960201b60201c565b620006e43060016200086960201b60201c565b620006f961dead60016200086960201b60201c565b6200072e600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200086960201b60201c565b62000763600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200086960201b60201c565b620007856200077762000b0460201b60201c565b60016200096660201b60201c565b620007983060016200096660201b60201c565b620007ad61dead60016200096660201b60201c565b620007e2600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200096660201b60201c565b62000817600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200096660201b60201c565b620008536200082b62000b0460201b60201c565b606480846200083b9190620012eb565b62000847919062001365565b62000c7b60201b60201c565b5050505050505050620014fa565b600033905090565b620008796200086160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200090b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200090290620013fe565b60405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b620009766200086160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000a08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009ff90620013fe565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000b3e6200086160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000bd0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bc790620013fe565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000c6f91906200143d565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000ced576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ce490620014aa565b60405180910390fd5b62000d016000838362000e2960201b60201c565b62000d1d8160025462000e2e60201b620028eb1790919060201c565b60028190555062000d7b816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000e2e60201b620028eb1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000e1d9190620014dd565b60405180910390a35050565b505050565b6000818362000e3e9190620012b0565b905092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000ec857607f821691505b60208210810362000ede5762000edd62000e80565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000f487fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000f09565b62000f54868362000f09565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000fa162000f9b62000f958462000f6c565b62000f76565b62000f6c565b9050919050565b6000819050919050565b62000fbd8362000f80565b62000fd562000fcc8262000fa8565b84845462000f16565b825550505050565b600090565b62000fec62000fdd565b62000ff981848462000fb2565b505050565b5b8181101562001021576200101560008262000fe2565b60018101905062000fff565b5050565b601f82111562001070576200103a8162000ee4565b620010458462000ef9565b8101602085101562001055578190505b6200106d620010648562000ef9565b83018262000ffe565b50505b505050565b600082821c905092915050565b6000620010956000198460080262001075565b1980831691505092915050565b6000620010b0838362001082565b9150826002028217905092915050565b620010cb8262000e46565b67ffffffffffffffff811115620010e757620010e662000e51565b5b620010f3825462000eaf565b6200110082828562001025565b600060209050601f83116001811462001138576000841562001123578287015190505b6200112f8582620010a2565b8655506200119f565b601f198416620011488662000ee4565b60005b8281101562001172578489015182556001820191506020850194506020810190506200114b565b868310156200119257848901516200118e601f89168262001082565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620011d982620011ac565b9050919050565b620011eb81620011cc565b8114620011f757600080fd5b50565b6000815190506200120b81620011e0565b92915050565b6000602082840312156200122a5762001229620011a7565b5b60006200123a84828501620011fa565b91505092915050565b6200124e81620011cc565b82525050565b60006040820190506200126b600083018562001243565b6200127a602083018462001243565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620012bd8262000f6c565b9150620012ca8362000f6c565b9250828201905080821115620012e557620012e462001281565b5b92915050565b6000620012f88262000f6c565b9150620013058362000f6c565b9250828202620013158162000f6c565b915082820484148315176200132f576200132e62001281565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620013728262000f6c565b91506200137f8362000f6c565b92508262001392576200139162001336565b5b828204905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620013e66020836200139d565b9150620013f382620013ae565b602082019050919050565b600060208201905081810360008301526200141981620013d7565b9050919050565b60008115159050919050565b620014378162001420565b82525050565b60006020820190506200145460008301846200142c565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001492601f836200139d565b91506200149f826200145a565b602082019050919050565b60006020820190508181036000830152620014c58162001483565b9050919050565b620014d78162000f6c565b82525050565b6000602082019050620014f46000830184620014cc565b92915050565b60805160a051615043620015516000396000818161131401528181611ce501528181612f6a015261328101526000818161107e01528181612f1201528181613e7701528181613f580152613f7f01526150436000f3fe6080604052600436106103b15760003560e01c8063941fa5cd116101e7578063c876d0b91161010d578063dd62ed3e116100a0578063e884f2601161006f578063e884f26014610e21578063f2fde38b14610e4c578063f6b4dfb414610e75578063f8a25a9414610ea0576103b8565b8063dd62ed3e14610d51578063e0bf7fd114610d8e578063e2f4560514610dcb578063e71dc3f514610df6576103b8565b8063d257b34f116100dc578063d257b34f14610c95578063d2fcc00114610cd2578063d85ba06314610cfb578063d8c6404b14610d26576103b8565b8063c876d0b914610beb578063c8c8ebe414610c16578063cabcc71814610c41578063d10268ad14610c6c576103b8565b8063a9059cbb11610185578063b62496f511610154578063b62496f514610b31578063bbc0c74214610b6e578063c024666814610b99578063c17b5b8c14610bc2576103b8565b8063a9059cbb14610a87578063adb873bd14610ac4578063b31efe4a14610aef578063b51ac2c614610b06576103b8565b80639a7a23d6116101c15780639a7a23d6146109bb578063a20623ce146109e4578063a457c2d714610a21578063a841ebad14610a5e576103b8565b8063941fa5cd1461092857806395d89b411461095357806396880b171461097e576103b8565b80634a62bb65116102d757806370a082311161026a5780638095d564116102395780638095d564146108945780638a8c523c146108bd5780638da5cb5b146108d4578063924de9b7146108ff576103b8565b806370a08231146107ee578063715018a61461082b57806374c9f603146108425780637571336a1461086b576103b8565b80636a486a8e116102a65780636a486a8e146107445780636bd89cdd1461076f5780636d7adcad146107985780636ddd1713146107c3576103b8565b80634a62bb651461069a5780634fbee193146106c55780635945267a14610702578063663f95c714610719576103b8565b80631d7778561161034f578063313ce5671161031e578063313ce567146105dc57806333d90e7414610607578063395093511461063257806349bd5a5e1461066f576103b8565b80631d77785614610520578063203e727e1461054b57806323b872dd146105745780632b14bbff146105b1576103b8565b806310d5de531161038b57806310d5de5314610462578063141533fd1461049f5780631694505e146104ca57806318160ddd146104f5576103b8565b806301b70dab146103bd57806306fdde03146103fa578063095ea7b314610425576103b8565b366103b857005b600080fd5b3480156103c957600080fd5b506103e460048036038101906103df9190614052565b610ecb565b6040516103f1919061408e565b60405180910390f35b34801561040657600080fd5b5061040f610f86565b60405161041c9190614139565b60405180910390f35b34801561043157600080fd5b5061044c600480360381019061044791906141ef565b611018565b604051610459919061408e565b60405180910390f35b34801561046e57600080fd5b506104896004803603810190610484919061422f565b611036565b604051610496919061408e565b60405180910390f35b3480156104ab57600080fd5b506104b4611056565b6040516104c1919061427d565b60405180910390f35b3480156104d657600080fd5b506104df61107c565b6040516104ec91906142f7565b60405180910390f35b34801561050157600080fd5b5061050a6110a0565b6040516105179190614321565b60405180910390f35b34801561052c57600080fd5b506105356110aa565b6040516105429190614321565b60405180910390f35b34801561055757600080fd5b50610572600480360381019061056d919061433c565b6110b0565b005b34801561058057600080fd5b5061059b60048036038101906105969190614369565b611151565b6040516105a8919061408e565b60405180910390f35b3480156105bd57600080fd5b506105c661122a565b6040516105d39190614321565b60405180910390f35b3480156105e857600080fd5b506105f1611230565b6040516105fe91906143d8565b60405180910390f35b34801561061357600080fd5b5061061c611239565b604051610629919061427d565b60405180910390f35b34801561063e57600080fd5b50610659600480360381019061065491906141ef565b61125f565b604051610666919061408e565b60405180910390f35b34801561067b57600080fd5b50610684611312565b6040516106919190614402565b60405180910390f35b3480156106a657600080fd5b506106af611336565b6040516106bc919061408e565b60405180910390f35b3480156106d157600080fd5b506106ec60048036038101906106e7919061422f565b611349565b6040516106f9919061408e565b60405180910390f35b34801561070e57600080fd5b5061071761139f565b005b34801561072557600080fd5b5061072e611474565b60405161073b9190614321565b60405180910390f35b34801561075057600080fd5b5061075961147a565b6040516107669190614321565b60405180910390f35b34801561077b57600080fd5b506107966004803603810190610791919061422f565b611480565b005b3480156107a457600080fd5b506107ad61155b565b6040516107ba9190614321565b60405180910390f35b3480156107cf57600080fd5b506107d8611561565b6040516107e5919061408e565b60405180910390f35b3480156107fa57600080fd5b506108156004803603810190610810919061422f565b611574565b6040516108229190614321565b60405180910390f35b34801561083757600080fd5b506108406115bc565b005b34801561084e57600080fd5b506108696004803603810190610864919061422f565b611714565b005b34801561087757600080fd5b50610892600480360381019061088d919061441d565b6117ef565b005b3480156108a057600080fd5b506108bb60048036038101906108b6919061445d565b6118e1565b005b3480156108c957600080fd5b506108d26119fb565b005b3480156108e057600080fd5b506108e9611ab6565b6040516108f69190614402565b60405180910390f35b34801561090b57600080fd5b5061092660048036038101906109219190614052565b611ae0565b005b34801561093457600080fd5b5061093d611b94565b60405161094a9190614321565b60405180910390f35b34801561095f57600080fd5b50610968611b9a565b6040516109759190614139565b60405180910390f35b34801561098a57600080fd5b506109a560048036038101906109a0919061422f565b611c2c565b6040516109b2919061408e565b60405180910390f35b3480156109c757600080fd5b506109e260048036038101906109dd919061441d565b611c4c565b005b3480156109f057600080fd5b50610a0b6004803603810190610a06919061422f565b611d7f565b604051610a18919061408e565b60405180910390f35b348015610a2d57600080fd5b50610a486004803603810190610a4391906141ef565b611d9f565b604051610a55919061408e565b60405180910390f35b348015610a6a57600080fd5b50610a856004803603810190610a80919061422f565b611e6c565b005b348015610a9357600080fd5b50610aae6004803603810190610aa991906141ef565b611f47565b604051610abb919061408e565b60405180910390f35b348015610ad057600080fd5b50610ad9611f65565b604051610ae69190614321565b60405180910390f35b348015610afb57600080fd5b50610b04611f6b565b005b348015610b1257600080fd5b50610b1b612052565b604051610b289190614321565b60405180910390f35b348015610b3d57600080fd5b50610b586004803603810190610b53919061422f565b612058565b604051610b65919061408e565b60405180910390f35b348015610b7a57600080fd5b50610b83612077565b604051610b90919061408e565b60405180910390f35b348015610ba557600080fd5b50610bc06004803603810190610bbb919061441d565b61208a565b005b348015610bce57600080fd5b50610be96004803603810190610be4919061445d565b6121ca565b005b348015610bf757600080fd5b50610c006122e4565b604051610c0d919061408e565b60405180910390f35b348015610c2257600080fd5b50610c2b6122f7565b604051610c389190614321565b60405180910390f35b348015610c4d57600080fd5b50610c566122fd565b604051610c63919061427d565b60405180910390f35b348015610c7857600080fd5b50610c936004803603810190610c8e9190614052565b612323565b005b348015610ca157600080fd5b50610cbc6004803603810190610cb7919061433c565b6123d7565b604051610cc9919061408e565b60405180910390f35b348015610cde57600080fd5b50610cf96004803603810190610cf4919061441d565b612480565b005b348015610d0757600080fd5b50610d10612572565b604051610d1d9190614321565b60405180910390f35b348015610d3257600080fd5b50610d3b612578565b604051610d48919061408e565b60405180910390f35b348015610d5d57600080fd5b50610d786004803603810190610d7391906144b0565b61258b565b604051610d859190614321565b60405180910390f35b348015610d9a57600080fd5b50610db56004803603810190610db0919061422f565b612612565b604051610dc2919061408e565b60405180910390f35b348015610dd757600080fd5b50610de0612632565b604051610ded9190614321565b60405180910390f35b348015610e0257600080fd5b50610e0b612638565b604051610e189190614321565b60405180910390f35b348015610e2d57600080fd5b50610e3661263e565b604051610e43919061408e565b60405180910390f35b348015610e5857600080fd5b50610e736004803603810190610e6e919061422f565b6126f9565b005b348015610e8157600080fd5b50610e8a6128bf565b604051610e979190614402565b60405180910390f35b348015610eac57600080fd5b50610eb56128e5565b604051610ec29190614321565b60405180910390f35b6000610ed5612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5b9061453c565b60405180910390fd5b81600c60006101000a81548160ff021916908315150217905550819050919050565b606060038054610f959061458b565b80601f0160208091040260200160405190810160405280929190818152602001828054610fc19061458b565b801561100e5780601f10610fe35761010080835404028352916020019161100e565b820191906000526020600020905b815481529060010190602001808311610ff157829003601f168201915b5050505050905090565b600061102c611025612901565b8484612909565b6001905092915050565b601e6020528060005260406000206000915054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b601b5481565b6110b8612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611147576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113e9061453c565b60405180910390fd5b80600a8190555050565b600061115e848484612ad2565b61121f8461116a612901565b61121a85604051806060016040528060288152602001614fc160289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006111d0612901565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461383a9092919063ffffffff16565b612909565b600190509392505050565b60175481565b60006009905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061130861126c612901565b84611303856001600061127d612901565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128eb90919063ffffffff16565b612909565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600c60009054906101000a900460ff1681565b6000601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6113a7612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611436576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142d9061453c565b60405180910390fd5b61147230611442611ab6565b61146d600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611574565b61388f565b565b601a5481565b60155481565b611488612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150e9061453c565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60195481565b600c60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6115c4612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164a9061453c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61171c612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a29061453c565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6117f7612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187d9061453c565b60405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6118e9612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196f9061453c565b60405180910390fd5b8260128190555081601381905550806014819055506014546013546012546119a091906145eb565b6119aa91906145eb565b601181905550601460115411156119f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ed9061466b565b60405180910390fd5b505050565b611a03612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a899061453c565b60405180910390fd5b6001600c60016101000a81548160ff02191690831515021790555043601c81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611ae8612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6e9061453c565b60405180910390fd5b80600c60026101000a81548160ff02191690831515021790555050565b60125481565b606060048054611ba99061458b565b80601f0160208091040260200160405190810160405280929190818152602001828054611bd59061458b565b8015611c225780601f10611bf757610100808354040283529160200191611c22565b820191906000526020600020905b815481529060010190602001808311611c0557829003601f168201915b5050505050905090565b601f6020528060005260406000206000915054906101000a900460ff1681565b611c54612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ce3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cda9061453c565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d68906146fd565b60405180910390fd5b611d7b8282613b22565b5050565b600f6020528060005260406000206000915054906101000a900460ff1681565b6000611e62611dac612901565b84611e5d85604051806060016040528060258152602001614fe96025913960016000611dd6612901565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461383a9092919063ffffffff16565b612909565b6001905092915050565b611e74612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611efa9061453c565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611f5b611f54612901565b8484612ad2565b6001905092915050565b60185481565b611f73612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612002576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff99061453c565b60405180910390fd5b61200a611ab6565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561204f573d6000803e3d6000fd5b50565b60135481565b602080528060005260406000206000915054906101000a900460ff1681565b600c60019054906101000a900460ff1681565b612092612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612121576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121189061453c565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516121be919061408e565b60405180910390a25050565b6121d2612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612261576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122589061453c565b60405180910390fd5b82601681905550816017819055508060188190555060185460175460165461228991906145eb565b61229391906145eb565b601581905550601460155411156122df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d69061466b565b60405180910390fd5b505050565b601060009054906101000a900460ff1681565b600a5481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61232b612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b19061453c565b60405180910390fd5b80600c60036101000a81548160ff02191690831515021790555050565b60006123e1612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612470576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124679061453c565b60405180910390fd5b81600b8190555060019050919050565b612488612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250e9061453c565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60115481565b600c60039054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601d6020528060005260406000206000915054906101000a900460ff1681565b600b5481565b60145481565b6000612648612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ce9061453c565b60405180910390fd5b6000601060006101000a81548160ff0219169083151502179055506001905090565b612701612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612790576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127879061453c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036127ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f69061478f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b600081836128f991906145eb565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296f90614821565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036129e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129de906148b3565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612ac59190614321565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3890614945565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612bb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba7906149d7565b60405180910390fd5b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612c545750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612c93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8a90614a69565b60405180910390fd5b60008103612cac57612ca78383600061388f565b613835565b600c60009054906101000a900460ff161561326857612cc9611ab6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612d375750612d07611ab6565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d705750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612daa575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612dc35750600560149054906101000a900460ff16155b1561326757600c60019054906101000a900460ff16612ebd57601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612e7d5750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612ebc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb390614ad5565b60405180910390fd5b5b601060009054906101000a900460ff161561308557612eda611ab6565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612f6157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612fb957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156130845743600d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061303f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161303690614b8d565b60405180910390fd5b43600d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131285750601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561317757600a54811115613172576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161316990614c1f565b60405180910390fd5b613266565b602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561321a5750601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561326557600a54811115613264576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161325b90614cb1565b60405180910390fd5b5b5b5b5b600c60039054906101000a900460ff1680156132d057507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561331c5750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561337a576001600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600061338530611574565b90506000600b5482101590508080156133aa5750600c60029054906101000a900460ff165b80156133c35750600560149054906101000a900460ff16155b80156134185750602060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561346e5750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134c45750601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613508576001600560146101000a81548160ff0219169083151502179055506134ec613bc3565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806135be5750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156135c857600090505b6000811561382557602060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561362b57506000601554115b156136ea576064601554866136409190614cd1565b61364a9190614d42565b90506015546017548261365d9190614cd1565b6136679190614d42565b601a600082825461367891906145eb565b92505081905550601554601654826136909190614cd1565b61369a9190614d42565b601960008282546136ab91906145eb565b92505081905550601554601854826136c39190614cd1565b6136cd9190614d42565b601b60008282546136de91906145eb565b92505081905550613801565b602060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561374557506000601154115b156138005760646011548661375a9190614cd1565b6137649190614d42565b9050601154601354826137779190614cd1565b6137819190614d42565b601a600082825461379291906145eb565b92505081905550601154601254826137aa9190614cd1565b6137b49190614d42565b601960008282546137c591906145eb565b92505081905550601154601454826137dd9190614cd1565b6137e79190614d42565b601b60008282546137f891906145eb565b925050819055505b5b600a8111156138165761381587308361388f565b5b80856138229190614d73565b94505b61383087878761388f565b505050505b505050565b6000838311158290613882576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138799190614139565b60405180910390fd5b5082840390509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036138fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138f590614945565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361396d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613964906149d7565b60405180910390fd5b613978838383613dd3565b6139e381604051806060016040528060268152602001614f9b602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461383a9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a76816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128eb90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613b159190614321565b60405180910390a3505050565b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000613bce30611574565b90506000601b54601a54601954613be591906145eb565b613bef91906145eb565b90506000821480613c005750606481145b15613c0c575050613dd1565b6000829050613c1a81613dd8565b600047905060008360195483613c309190614cd1565b613c3a9190614d42565b9050600084601a5484613c4d9190614cd1565b613c579190614d42565b9050600085601b5485613c6a9190614cd1565b613c749190614d42565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015613cde573d6000803e3d6000fd5b50600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613d47573d6000803e3d6000fd5b50600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613db0573d6000803e3d6000fd5b506000601b8190555060006019819055506000601a81905550505050505050505b565b505050565b6000600267ffffffffffffffff811115613df557613df4614da7565b5b604051908082528060200260200182016040528015613e235781602001602082028036833780820191505090505b5090503081600081518110613e3b57613e3a614dd6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ee0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f049190614e1a565b81600181518110613f1857613f17614dd6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f7d307f000000000000000000000000000000000000000000000000000000000000000084612909565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613fdf959493929190614f40565b600060405180830381600087803b158015613ff957600080fd5b505af115801561400d573d6000803e3d6000fd5b505050505050565b600080fd5b60008115159050919050565b61402f8161401a565b811461403a57600080fd5b50565b60008135905061404c81614026565b92915050565b60006020828403121561406857614067614015565b5b60006140768482850161403d565b91505092915050565b6140888161401a565b82525050565b60006020820190506140a3600083018461407f565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156140e35780820151818401526020810190506140c8565b60008484015250505050565b6000601f19601f8301169050919050565b600061410b826140a9565b61411581856140b4565b93506141258185602086016140c5565b61412e816140ef565b840191505092915050565b600060208201905081810360008301526141538184614100565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006141868261415b565b9050919050565b6141968161417b565b81146141a157600080fd5b50565b6000813590506141b38161418d565b92915050565b6000819050919050565b6141cc816141b9565b81146141d757600080fd5b50565b6000813590506141e9816141c3565b92915050565b6000806040838503121561420657614205614015565b5b6000614214858286016141a4565b9250506020614225858286016141da565b9150509250929050565b60006020828403121561424557614244614015565b5b6000614253848285016141a4565b91505092915050565b60006142678261415b565b9050919050565b6142778161425c565b82525050565b6000602082019050614292600083018461426e565b92915050565b6000819050919050565b60006142bd6142b86142b38461415b565b614298565b61415b565b9050919050565b60006142cf826142a2565b9050919050565b60006142e1826142c4565b9050919050565b6142f1816142d6565b82525050565b600060208201905061430c60008301846142e8565b92915050565b61431b816141b9565b82525050565b60006020820190506143366000830184614312565b92915050565b60006020828403121561435257614351614015565b5b6000614360848285016141da565b91505092915050565b60008060006060848603121561438257614381614015565b5b6000614390868287016141a4565b93505060206143a1868287016141a4565b92505060406143b2868287016141da565b9150509250925092565b600060ff82169050919050565b6143d2816143bc565b82525050565b60006020820190506143ed60008301846143c9565b92915050565b6143fc8161417b565b82525050565b600060208201905061441760008301846143f3565b92915050565b6000806040838503121561443457614433614015565b5b6000614442858286016141a4565b92505060206144538582860161403d565b9150509250929050565b60008060006060848603121561447657614475614015565b5b6000614484868287016141da565b9350506020614495868287016141da565b92505060406144a6868287016141da565b9150509250925092565b600080604083850312156144c7576144c6614015565b5b60006144d5858286016141a4565b92505060206144e6858286016141a4565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006145266020836140b4565b9150614531826144f0565b602082019050919050565b6000602082019050818103600083015261455581614519565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806145a357607f821691505b6020821081036145b6576145b561455c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006145f6826141b9565b9150614601836141b9565b9250828201905080821115614619576146186145bc565b5b92915050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b6000614655601d836140b4565b91506146608261461f565b602082019050919050565b6000602082019050818103600083015261468481614648565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006146e76039836140b4565b91506146f28261468b565b604082019050919050565b60006020820190508181036000830152614716816146da565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006147796026836140b4565b91506147848261471d565b604082019050919050565b600060208201905081810360008301526147a88161476c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061480b6024836140b4565b9150614816826147af565b604082019050919050565b6000602082019050818103600083015261483a816147fe565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061489d6022836140b4565b91506148a882614841565b604082019050919050565b600060208201905081810360008301526148cc81614890565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061492f6025836140b4565b915061493a826148d3565b604082019050919050565b6000602082019050818103600083015261495e81614922565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006149c16023836140b4565b91506149cc82614965565b604082019050919050565b600060208201905081810360008301526149f0816149b4565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460008201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b6000614a536031836140b4565b9150614a5e826149f7565b604082019050919050565b60006020820190508181036000830152614a8281614a46565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614abf6016836140b4565b9150614aca82614a89565b602082019050919050565b60006020820190508181036000830152614aee81614ab2565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614b776049836140b4565b9150614b8282614af5565b606082019050919050565b60006020820190508181036000830152614ba681614b6a565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614c096035836140b4565b9150614c1482614bad565b604082019050919050565b60006020820190508181036000830152614c3881614bfc565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000614c9b6036836140b4565b9150614ca682614c3f565b604082019050919050565b60006020820190508181036000830152614cca81614c8e565b9050919050565b6000614cdc826141b9565b9150614ce7836141b9565b9250828202614cf5816141b9565b91508282048414831517614d0c57614d0b6145bc565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614d4d826141b9565b9150614d58836141b9565b925082614d6857614d67614d13565b5b828204905092915050565b6000614d7e826141b9565b9150614d89836141b9565b9250828203905081811115614da157614da06145bc565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614e148161418d565b92915050565b600060208284031215614e3057614e2f614015565b5b6000614e3e84828501614e05565b91505092915050565b6000819050919050565b6000614e6c614e67614e6284614e47565b614298565b6141b9565b9050919050565b614e7c81614e51565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614eb78161417b565b82525050565b6000614ec98383614eae565b60208301905092915050565b6000602082019050919050565b6000614eed82614e82565b614ef78185614e8d565b9350614f0283614e9e565b8060005b83811015614f33578151614f1a8882614ebd565b9750614f2583614ed5565b925050600181019050614f06565b5085935050505092915050565b600060a082019050614f556000830188614312565b614f626020830187614e73565b8181036040830152614f748186614ee2565b9050614f8360608301856143f3565b614f906080830184614312565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a94b27267641016ccf9d7865cfbdfe3b17ce1747ff8d844a014a0f1ed7198ce764736f6c63430008110033
Deployed Bytecode
0x6080604052600436106103b15760003560e01c8063941fa5cd116101e7578063c876d0b91161010d578063dd62ed3e116100a0578063e884f2601161006f578063e884f26014610e21578063f2fde38b14610e4c578063f6b4dfb414610e75578063f8a25a9414610ea0576103b8565b8063dd62ed3e14610d51578063e0bf7fd114610d8e578063e2f4560514610dcb578063e71dc3f514610df6576103b8565b8063d257b34f116100dc578063d257b34f14610c95578063d2fcc00114610cd2578063d85ba06314610cfb578063d8c6404b14610d26576103b8565b8063c876d0b914610beb578063c8c8ebe414610c16578063cabcc71814610c41578063d10268ad14610c6c576103b8565b8063a9059cbb11610185578063b62496f511610154578063b62496f514610b31578063bbc0c74214610b6e578063c024666814610b99578063c17b5b8c14610bc2576103b8565b8063a9059cbb14610a87578063adb873bd14610ac4578063b31efe4a14610aef578063b51ac2c614610b06576103b8565b80639a7a23d6116101c15780639a7a23d6146109bb578063a20623ce146109e4578063a457c2d714610a21578063a841ebad14610a5e576103b8565b8063941fa5cd1461092857806395d89b411461095357806396880b171461097e576103b8565b80634a62bb65116102d757806370a082311161026a5780638095d564116102395780638095d564146108945780638a8c523c146108bd5780638da5cb5b146108d4578063924de9b7146108ff576103b8565b806370a08231146107ee578063715018a61461082b57806374c9f603146108425780637571336a1461086b576103b8565b80636a486a8e116102a65780636a486a8e146107445780636bd89cdd1461076f5780636d7adcad146107985780636ddd1713146107c3576103b8565b80634a62bb651461069a5780634fbee193146106c55780635945267a14610702578063663f95c714610719576103b8565b80631d7778561161034f578063313ce5671161031e578063313ce567146105dc57806333d90e7414610607578063395093511461063257806349bd5a5e1461066f576103b8565b80631d77785614610520578063203e727e1461054b57806323b872dd146105745780632b14bbff146105b1576103b8565b806310d5de531161038b57806310d5de5314610462578063141533fd1461049f5780631694505e146104ca57806318160ddd146104f5576103b8565b806301b70dab146103bd57806306fdde03146103fa578063095ea7b314610425576103b8565b366103b857005b600080fd5b3480156103c957600080fd5b506103e460048036038101906103df9190614052565b610ecb565b6040516103f1919061408e565b60405180910390f35b34801561040657600080fd5b5061040f610f86565b60405161041c9190614139565b60405180910390f35b34801561043157600080fd5b5061044c600480360381019061044791906141ef565b611018565b604051610459919061408e565b60405180910390f35b34801561046e57600080fd5b506104896004803603810190610484919061422f565b611036565b604051610496919061408e565b60405180910390f35b3480156104ab57600080fd5b506104b4611056565b6040516104c1919061427d565b60405180910390f35b3480156104d657600080fd5b506104df61107c565b6040516104ec91906142f7565b60405180910390f35b34801561050157600080fd5b5061050a6110a0565b6040516105179190614321565b60405180910390f35b34801561052c57600080fd5b506105356110aa565b6040516105429190614321565b60405180910390f35b34801561055757600080fd5b50610572600480360381019061056d919061433c565b6110b0565b005b34801561058057600080fd5b5061059b60048036038101906105969190614369565b611151565b6040516105a8919061408e565b60405180910390f35b3480156105bd57600080fd5b506105c661122a565b6040516105d39190614321565b60405180910390f35b3480156105e857600080fd5b506105f1611230565b6040516105fe91906143d8565b60405180910390f35b34801561061357600080fd5b5061061c611239565b604051610629919061427d565b60405180910390f35b34801561063e57600080fd5b50610659600480360381019061065491906141ef565b61125f565b604051610666919061408e565b60405180910390f35b34801561067b57600080fd5b50610684611312565b6040516106919190614402565b60405180910390f35b3480156106a657600080fd5b506106af611336565b6040516106bc919061408e565b60405180910390f35b3480156106d157600080fd5b506106ec60048036038101906106e7919061422f565b611349565b6040516106f9919061408e565b60405180910390f35b34801561070e57600080fd5b5061071761139f565b005b34801561072557600080fd5b5061072e611474565b60405161073b9190614321565b60405180910390f35b34801561075057600080fd5b5061075961147a565b6040516107669190614321565b60405180910390f35b34801561077b57600080fd5b506107966004803603810190610791919061422f565b611480565b005b3480156107a457600080fd5b506107ad61155b565b6040516107ba9190614321565b60405180910390f35b3480156107cf57600080fd5b506107d8611561565b6040516107e5919061408e565b60405180910390f35b3480156107fa57600080fd5b506108156004803603810190610810919061422f565b611574565b6040516108229190614321565b60405180910390f35b34801561083757600080fd5b506108406115bc565b005b34801561084e57600080fd5b506108696004803603810190610864919061422f565b611714565b005b34801561087757600080fd5b50610892600480360381019061088d919061441d565b6117ef565b005b3480156108a057600080fd5b506108bb60048036038101906108b6919061445d565b6118e1565b005b3480156108c957600080fd5b506108d26119fb565b005b3480156108e057600080fd5b506108e9611ab6565b6040516108f69190614402565b60405180910390f35b34801561090b57600080fd5b5061092660048036038101906109219190614052565b611ae0565b005b34801561093457600080fd5b5061093d611b94565b60405161094a9190614321565b60405180910390f35b34801561095f57600080fd5b50610968611b9a565b6040516109759190614139565b60405180910390f35b34801561098a57600080fd5b506109a560048036038101906109a0919061422f565b611c2c565b6040516109b2919061408e565b60405180910390f35b3480156109c757600080fd5b506109e260048036038101906109dd919061441d565b611c4c565b005b3480156109f057600080fd5b50610a0b6004803603810190610a06919061422f565b611d7f565b604051610a18919061408e565b60405180910390f35b348015610a2d57600080fd5b50610a486004803603810190610a4391906141ef565b611d9f565b604051610a55919061408e565b60405180910390f35b348015610a6a57600080fd5b50610a856004803603810190610a80919061422f565b611e6c565b005b348015610a9357600080fd5b50610aae6004803603810190610aa991906141ef565b611f47565b604051610abb919061408e565b60405180910390f35b348015610ad057600080fd5b50610ad9611f65565b604051610ae69190614321565b60405180910390f35b348015610afb57600080fd5b50610b04611f6b565b005b348015610b1257600080fd5b50610b1b612052565b604051610b289190614321565b60405180910390f35b348015610b3d57600080fd5b50610b586004803603810190610b53919061422f565b612058565b604051610b65919061408e565b60405180910390f35b348015610b7a57600080fd5b50610b83612077565b604051610b90919061408e565b60405180910390f35b348015610ba557600080fd5b50610bc06004803603810190610bbb919061441d565b61208a565b005b348015610bce57600080fd5b50610be96004803603810190610be4919061445d565b6121ca565b005b348015610bf757600080fd5b50610c006122e4565b604051610c0d919061408e565b60405180910390f35b348015610c2257600080fd5b50610c2b6122f7565b604051610c389190614321565b60405180910390f35b348015610c4d57600080fd5b50610c566122fd565b604051610c63919061427d565b60405180910390f35b348015610c7857600080fd5b50610c936004803603810190610c8e9190614052565b612323565b005b348015610ca157600080fd5b50610cbc6004803603810190610cb7919061433c565b6123d7565b604051610cc9919061408e565b60405180910390f35b348015610cde57600080fd5b50610cf96004803603810190610cf4919061441d565b612480565b005b348015610d0757600080fd5b50610d10612572565b604051610d1d9190614321565b60405180910390f35b348015610d3257600080fd5b50610d3b612578565b604051610d48919061408e565b60405180910390f35b348015610d5d57600080fd5b50610d786004803603810190610d7391906144b0565b61258b565b604051610d859190614321565b60405180910390f35b348015610d9a57600080fd5b50610db56004803603810190610db0919061422f565b612612565b604051610dc2919061408e565b60405180910390f35b348015610dd757600080fd5b50610de0612632565b604051610ded9190614321565b60405180910390f35b348015610e0257600080fd5b50610e0b612638565b604051610e189190614321565b60405180910390f35b348015610e2d57600080fd5b50610e3661263e565b604051610e43919061408e565b60405180910390f35b348015610e5857600080fd5b50610e736004803603810190610e6e919061422f565b6126f9565b005b348015610e8157600080fd5b50610e8a6128bf565b604051610e979190614402565b60405180910390f35b348015610eac57600080fd5b50610eb56128e5565b604051610ec29190614321565b60405180910390f35b6000610ed5612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5b9061453c565b60405180910390fd5b81600c60006101000a81548160ff021916908315150217905550819050919050565b606060038054610f959061458b565b80601f0160208091040260200160405190810160405280929190818152602001828054610fc19061458b565b801561100e5780601f10610fe35761010080835404028352916020019161100e565b820191906000526020600020905b815481529060010190602001808311610ff157829003601f168201915b5050505050905090565b600061102c611025612901565b8484612909565b6001905092915050565b601e6020528060005260406000206000915054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b601b5481565b6110b8612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611147576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113e9061453c565b60405180910390fd5b80600a8190555050565b600061115e848484612ad2565b61121f8461116a612901565b61121a85604051806060016040528060288152602001614fc160289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006111d0612901565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461383a9092919063ffffffff16565b612909565b600190509392505050565b60175481565b60006009905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061130861126c612901565b84611303856001600061127d612901565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128eb90919063ffffffff16565b612909565b6001905092915050565b7f0000000000000000000000004fa3573e95a84e0bc689978e657e5909df492b6e81565b600c60009054906101000a900460ff1681565b6000601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6113a7612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611436576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142d9061453c565b60405180910390fd5b61147230611442611ab6565b61146d600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611574565b61388f565b565b601a5481565b60155481565b611488612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150e9061453c565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60195481565b600c60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6115c4612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164a9061453c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61171c612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a29061453c565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6117f7612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187d9061453c565b60405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6118e9612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196f9061453c565b60405180910390fd5b8260128190555081601381905550806014819055506014546013546012546119a091906145eb565b6119aa91906145eb565b601181905550601460115411156119f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ed9061466b565b60405180910390fd5b505050565b611a03612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a899061453c565b60405180910390fd5b6001600c60016101000a81548160ff02191690831515021790555043601c81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611ae8612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6e9061453c565b60405180910390fd5b80600c60026101000a81548160ff02191690831515021790555050565b60125481565b606060048054611ba99061458b565b80601f0160208091040260200160405190810160405280929190818152602001828054611bd59061458b565b8015611c225780601f10611bf757610100808354040283529160200191611c22565b820191906000526020600020905b815481529060010190602001808311611c0557829003601f168201915b5050505050905090565b601f6020528060005260406000206000915054906101000a900460ff1681565b611c54612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ce3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cda9061453c565b60405180910390fd5b7f0000000000000000000000004fa3573e95a84e0bc689978e657e5909df492b6e73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d68906146fd565b60405180910390fd5b611d7b8282613b22565b5050565b600f6020528060005260406000206000915054906101000a900460ff1681565b6000611e62611dac612901565b84611e5d85604051806060016040528060258152602001614fe96025913960016000611dd6612901565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461383a9092919063ffffffff16565b612909565b6001905092915050565b611e74612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611efa9061453c565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611f5b611f54612901565b8484612ad2565b6001905092915050565b60185481565b611f73612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612002576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff99061453c565b60405180910390fd5b61200a611ab6565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561204f573d6000803e3d6000fd5b50565b60135481565b602080528060005260406000206000915054906101000a900460ff1681565b600c60019054906101000a900460ff1681565b612092612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612121576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121189061453c565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516121be919061408e565b60405180910390a25050565b6121d2612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612261576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122589061453c565b60405180910390fd5b82601681905550816017819055508060188190555060185460175460165461228991906145eb565b61229391906145eb565b601581905550601460155411156122df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d69061466b565b60405180910390fd5b505050565b601060009054906101000a900460ff1681565b600a5481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61232b612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b19061453c565b60405180910390fd5b80600c60036101000a81548160ff02191690831515021790555050565b60006123e1612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612470576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124679061453c565b60405180910390fd5b81600b8190555060019050919050565b612488612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250e9061453c565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60115481565b600c60039054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601d6020528060005260406000206000915054906101000a900460ff1681565b600b5481565b60145481565b6000612648612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ce9061453c565b60405180910390fd5b6000601060006101000a81548160ff0219169083151502179055506001905090565b612701612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612790576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127879061453c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036127ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f69061478f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b600081836128f991906145eb565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296f90614821565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036129e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129de906148b3565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612ac59190614321565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3890614945565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612bb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba7906149d7565b60405180910390fd5b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612c545750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612c93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8a90614a69565b60405180910390fd5b60008103612cac57612ca78383600061388f565b613835565b600c60009054906101000a900460ff161561326857612cc9611ab6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612d375750612d07611ab6565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d705750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612daa575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612dc35750600560149054906101000a900460ff16155b1561326757600c60019054906101000a900460ff16612ebd57601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612e7d5750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612ebc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb390614ad5565b60405180910390fd5b5b601060009054906101000a900460ff161561308557612eda611ab6565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612f6157507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612fb957507f0000000000000000000000004fa3573e95a84e0bc689978e657e5909df492b6e73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156130845743600d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061303f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161303690614b8d565b60405180910390fd5b43600d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131285750601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561317757600a54811115613172576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161316990614c1f565b60405180910390fd5b613266565b602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561321a5750601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561326557600a54811115613264576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161325b90614cb1565b60405180910390fd5b5b5b5b5b600c60039054906101000a900460ff1680156132d057507f0000000000000000000000004fa3573e95a84e0bc689978e657e5909df492b6e73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561331c5750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561337a576001600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600061338530611574565b90506000600b5482101590508080156133aa5750600c60029054906101000a900460ff165b80156133c35750600560149054906101000a900460ff16155b80156134185750602060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561346e5750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134c45750601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613508576001600560146101000a81548160ff0219169083151502179055506134ec613bc3565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806135be5750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156135c857600090505b6000811561382557602060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561362b57506000601554115b156136ea576064601554866136409190614cd1565b61364a9190614d42565b90506015546017548261365d9190614cd1565b6136679190614d42565b601a600082825461367891906145eb565b92505081905550601554601654826136909190614cd1565b61369a9190614d42565b601960008282546136ab91906145eb565b92505081905550601554601854826136c39190614cd1565b6136cd9190614d42565b601b60008282546136de91906145eb565b92505081905550613801565b602060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561374557506000601154115b156138005760646011548661375a9190614cd1565b6137649190614d42565b9050601154601354826137779190614cd1565b6137819190614d42565b601a600082825461379291906145eb565b92505081905550601154601254826137aa9190614cd1565b6137b49190614d42565b601960008282546137c591906145eb565b92505081905550601154601454826137dd9190614cd1565b6137e79190614d42565b601b60008282546137f891906145eb565b925050819055505b5b600a8111156138165761381587308361388f565b5b80856138229190614d73565b94505b61383087878761388f565b505050505b505050565b6000838311158290613882576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138799190614139565b60405180910390fd5b5082840390509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036138fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138f590614945565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361396d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613964906149d7565b60405180910390fd5b613978838383613dd3565b6139e381604051806060016040528060268152602001614f9b602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461383a9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a76816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128eb90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613b159190614321565b60405180910390a3505050565b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000613bce30611574565b90506000601b54601a54601954613be591906145eb565b613bef91906145eb565b90506000821480613c005750606481145b15613c0c575050613dd1565b6000829050613c1a81613dd8565b600047905060008360195483613c309190614cd1565b613c3a9190614d42565b9050600084601a5484613c4d9190614cd1565b613c579190614d42565b9050600085601b5485613c6a9190614cd1565b613c749190614d42565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015613cde573d6000803e3d6000fd5b50600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613d47573d6000803e3d6000fd5b50600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613db0573d6000803e3d6000fd5b506000601b8190555060006019819055506000601a81905550505050505050505b565b505050565b6000600267ffffffffffffffff811115613df557613df4614da7565b5b604051908082528060200260200182016040528015613e235781602001602082028036833780820191505090505b5090503081600081518110613e3b57613e3a614dd6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ee0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f049190614e1a565b81600181518110613f1857613f17614dd6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f7d307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612909565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613fdf959493929190614f40565b600060405180830381600087803b158015613ff957600080fd5b505af115801561400d573d6000803e3d6000fd5b505050505050565b600080fd5b60008115159050919050565b61402f8161401a565b811461403a57600080fd5b50565b60008135905061404c81614026565b92915050565b60006020828403121561406857614067614015565b5b60006140768482850161403d565b91505092915050565b6140888161401a565b82525050565b60006020820190506140a3600083018461407f565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156140e35780820151818401526020810190506140c8565b60008484015250505050565b6000601f19601f8301169050919050565b600061410b826140a9565b61411581856140b4565b93506141258185602086016140c5565b61412e816140ef565b840191505092915050565b600060208201905081810360008301526141538184614100565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006141868261415b565b9050919050565b6141968161417b565b81146141a157600080fd5b50565b6000813590506141b38161418d565b92915050565b6000819050919050565b6141cc816141b9565b81146141d757600080fd5b50565b6000813590506141e9816141c3565b92915050565b6000806040838503121561420657614205614015565b5b6000614214858286016141a4565b9250506020614225858286016141da565b9150509250929050565b60006020828403121561424557614244614015565b5b6000614253848285016141a4565b91505092915050565b60006142678261415b565b9050919050565b6142778161425c565b82525050565b6000602082019050614292600083018461426e565b92915050565b6000819050919050565b60006142bd6142b86142b38461415b565b614298565b61415b565b9050919050565b60006142cf826142a2565b9050919050565b60006142e1826142c4565b9050919050565b6142f1816142d6565b82525050565b600060208201905061430c60008301846142e8565b92915050565b61431b816141b9565b82525050565b60006020820190506143366000830184614312565b92915050565b60006020828403121561435257614351614015565b5b6000614360848285016141da565b91505092915050565b60008060006060848603121561438257614381614015565b5b6000614390868287016141a4565b93505060206143a1868287016141a4565b92505060406143b2868287016141da565b9150509250925092565b600060ff82169050919050565b6143d2816143bc565b82525050565b60006020820190506143ed60008301846143c9565b92915050565b6143fc8161417b565b82525050565b600060208201905061441760008301846143f3565b92915050565b6000806040838503121561443457614433614015565b5b6000614442858286016141a4565b92505060206144538582860161403d565b9150509250929050565b60008060006060848603121561447657614475614015565b5b6000614484868287016141da565b9350506020614495868287016141da565b92505060406144a6868287016141da565b9150509250925092565b600080604083850312156144c7576144c6614015565b5b60006144d5858286016141a4565b92505060206144e6858286016141a4565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006145266020836140b4565b9150614531826144f0565b602082019050919050565b6000602082019050818103600083015261455581614519565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806145a357607f821691505b6020821081036145b6576145b561455c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006145f6826141b9565b9150614601836141b9565b9250828201905080821115614619576146186145bc565b5b92915050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b6000614655601d836140b4565b91506146608261461f565b602082019050919050565b6000602082019050818103600083015261468481614648565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006146e76039836140b4565b91506146f28261468b565b604082019050919050565b60006020820190508181036000830152614716816146da565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006147796026836140b4565b91506147848261471d565b604082019050919050565b600060208201905081810360008301526147a88161476c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061480b6024836140b4565b9150614816826147af565b604082019050919050565b6000602082019050818103600083015261483a816147fe565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061489d6022836140b4565b91506148a882614841565b604082019050919050565b600060208201905081810360008301526148cc81614890565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061492f6025836140b4565b915061493a826148d3565b604082019050919050565b6000602082019050818103600083015261495e81614922565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006149c16023836140b4565b91506149cc82614965565b604082019050919050565b600060208201905081810360008301526149f0816149b4565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460008201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b6000614a536031836140b4565b9150614a5e826149f7565b604082019050919050565b60006020820190508181036000830152614a8281614a46565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614abf6016836140b4565b9150614aca82614a89565b602082019050919050565b60006020820190508181036000830152614aee81614ab2565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614b776049836140b4565b9150614b8282614af5565b606082019050919050565b60006020820190508181036000830152614ba681614b6a565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614c096035836140b4565b9150614c1482614bad565b604082019050919050565b60006020820190508181036000830152614c3881614bfc565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000614c9b6036836140b4565b9150614ca682614c3f565b604082019050919050565b60006020820190508181036000830152614cca81614c8e565b9050919050565b6000614cdc826141b9565b9150614ce7836141b9565b9250828202614cf5816141b9565b91508282048414831517614d0c57614d0b6145bc565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614d4d826141b9565b9150614d58836141b9565b925082614d6857614d67614d13565b5b828204905092915050565b6000614d7e826141b9565b9150614d89836141b9565b9250828203905081811115614da157614da06145bc565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614e148161418d565b92915050565b600060208284031215614e3057614e2f614015565b5b6000614e3e84828501614e05565b91505092915050565b6000819050919050565b6000614e6c614e67614e6284614e47565b614298565b6141b9565b9050919050565b614e7c81614e51565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614eb78161417b565b82525050565b6000614ec98383614eae565b60208301905092915050565b6000602082019050919050565b6000614eed82614e82565b614ef78185614e8d565b9350614f0283614e9e565b8060005b83811015614f33578151614f1a8882614ebd565b9750614f2583614ed5565b925050600181019050614f06565b5085935050505092915050565b600060a082019050614f556000830188614312565b614f626020830187614e73565b8181036040830152614f748186614ee2565b9050614f8360608301856143f3565b614f906080830184614312565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a94b27267641016ccf9d7865cfbdfe3b17ce1747ff8d844a014a0f1ed7198ce764736f6c63430008110033
Deployed Bytecode Sourcemap
18440:13040:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22876:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8769:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9682:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19928:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18621:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18486:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9089:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19805:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23330:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9859:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19670:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8989:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18724:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10222:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18544:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19072:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25662:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31225:134;;;;;;;;;;;;;:::i;:::-;;19771:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19603:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25537:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19737:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19152:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9205:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13172:148;;;;;;;;;;;;;:::i;:::-;;25290:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23467:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23870:325;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22749:119;;;;;;;;;;;;;:::i;:::-;;12958:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23761:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19507:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8877:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19999:59;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24842:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19374:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10448:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25416:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9340:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19702:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31367:110;;;;;;;;;;;;;:::i;:::-;;19538:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20065:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19112:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24545:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24203:334;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19424:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18968:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18817:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24735:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23165:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23619:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19473:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19190:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9523:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19869:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19023:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19569:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23023:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13328:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18913:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19638:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22876:139;22944:4;13095:12;:10;:12::i;:::-;13085:22;;:6;;;;;;;;;;;:22;;;13077:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22977:6:::1;22960:14;;:23;;;;;;;;;;;;;;;;;;23001:6;22994:13;;22876:139:::0;;;:::o;8769:100::-;8823:13;8856:5;8849:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8769:100;:::o;9682:169::-;9765:4;9782:39;9791:12;:10;:12::i;:::-;9805:7;9814:6;9782:8;:39::i;:::-;9839:4;9832:11;;9682:169;;;;:::o;19928:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;18621:86::-;;;;;;;;;;;;;:::o;18486:51::-;;;:::o;9089:108::-;9150:7;9177:12;;9170:19;;9089:108;:::o;19805:28::-;;;;:::o;23330:127::-;13095:12;:10;:12::i;:::-;13085:22;;:6;;;;;;;;;;;:22;;;13077:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23435:14:::1;23412:20;:37;;;;23330:127:::0;:::o;9859:355::-;9999:4;10016:36;10026:6;10034:9;10045:6;10016:9;:36::i;:::-;10063:121;10072:6;10080:12;:10;:12::i;:::-;10094:89;10132:6;10094:89;;;;;;;;;;;;;;;;;:11;:19;10106:6;10094:19;;;;;;;;;;;;;;;:33;10114:12;:10;:12::i;:::-;10094:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;10063:8;:121::i;:::-;10202:4;10195:11;;9859:355;;;;;:::o;19670:25::-;;;;:::o;8989:92::-;9047:5;9072:1;9065:8;;8989:92;:::o;18724:86::-;;;;;;;;;;;;;:::o;10222:218::-;10310:4;10327:83;10336:12;:10;:12::i;:::-;10350:7;10359:50;10398:10;10359:11;:25;10371:12;:10;:12::i;:::-;10359:25;;;;;;;;;;;;;;;:34;10385:7;10359:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;10327:8;:83::i;:::-;10428:4;10421:11;;10222:218;;;;:::o;18544:38::-;;;:::o;19072:33::-;;;;;;;;;;;;;:::o;25662:125::-;25727:4;25751:19;:28;25771:7;25751:28;;;;;;;;;;;;;;;;;;;;;;;;;25744:35;;25662:125;;;:::o;31225:134::-;13095:12;:10;:12::i;:::-;13085:22;;:6;;;;;;;;;;;:22;;;13077:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31284::::1;31308:4;31315:7;:5;:7::i;:::-;31324:26;31334:15;;;;;;;;;;;31324:9;:26::i;:::-;31284:15;:67::i;:::-;31225:134::o:0;19771:27::-;;;;:::o;19603:28::-;;;;:::o;25537:116::-;13095:12;:10;:12::i;:::-;13085:22;;:6;;;;;;;;;;;:22;;;13077:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25635:9:::1;25613:11;;:32;;;;;;;;;;;;;;;;;;25537:116:::0;:::o;19737:27::-;;;;:::o;19152:31::-;;;;;;;;;;;;;:::o;9205:127::-;9279:7;9306:9;:18;9316:7;9306:18;;;;;;;;;;;;;;;;9299:25;;9205:127;;;:::o;13172:148::-;13095:12;:10;:12::i;:::-;13085:22;;:6;;;;;;;;;;;:22;;;13077:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13279:1:::1;13242:40;;13263:6;;;;;;;;;;;13242:40;;;;;;;;;;;;13310:1;13293:6;;:19;;;;;;;;;;;;;;;;;;13172:148::o:0;25290:118::-;13095:12;:10;:12::i;:::-;13085:22;;:6;;;;;;;;;;;:22;;;13077:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25387:12:::1;25367:9;;:33;;;;;;;;;;;;;;;;;;25290:118:::0;:::o;23467:144::-;13095:12;:10;:12::i;:::-;13085:22;;:6;;;;;;;;;;;:22;;;13077:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23599:4:::1;23557:31;:39;23589:6;23557:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;23467:144:::0;;:::o;23870:325::-;13095:12;:10;:12::i;:::-;13085:22;;:6;;;;;;;;;;;:22;;;13077:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23987:7:::1;23975:9;:19;;;;24017:7;24005:9;:19;;;;24048:8;24035:10;:21;;;;24106:10;;24094:9;;24082;;:21;;;;:::i;:::-;:34;;;;:::i;:::-;24067:12;:49;;;;24151:2;24135:12;;:18;;24127:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;23870:325:::0;;;:::o;22749:119::-;13095:12;:10;:12::i;:::-;13085:22;;:6;;;;;;;;;;;:22;;;13077:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22820:4:::1;22804:13;;:20;;;;;;;;;;;;;;;;;;22848:12;22835:10;:25;;;;22749:119::o:0;12958:79::-;12996:7;13023:6;;;;;;;;;;;13016:13;;12958:79;:::o;23761:101::-;13095:12;:10;:12::i;:::-;13085:22;;:6;;;;;;;;;;;:22;;;13077:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23847:7:::1;23833:11;;:21;;;;;;;;;;;;;;;;;;23761:101:::0;:::o;19507:24::-;;;;:::o;8877:104::-;8933:13;8966:7;8959:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8877:104;:::o;19999:59::-;;;;;;;;;;;;;;;;;;;;;;:::o;24842:244::-;13095:12;:10;:12::i;:::-;13085:22;;:6;;;;;;;;;;;:22;;;13077:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24949:13:::1;24941:21;;:4;:21;;::::0;24933:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;25037:41;25066:4;25072:5;25037:28;:41::i;:::-;24842:244:::0;;:::o;19374:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;10448:269::-;10541:4;10558:129;10567:12;:10;:12::i;:::-;10581:7;10590:96;10629:15;10590:96;;;;;;;;;;;;;;;;;:11;:25;10602:12;:10;:12::i;:::-;10590:25;;;;;;;;;;;;;;;:34;10616:7;10590:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;10558:8;:129::i;:::-;10705:4;10698:11;;10448:269;;;;:::o;25416:112::-;13095:12;:10;:12::i;:::-;13085:22;;:6;;;;;;;;;;;:22;;;13077:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25510:9:::1;25490;;:30;;;;;;;;;;;;;;;;;;25416:112:::0;:::o;9340:175::-;9426:4;9443:42;9453:12;:10;:12::i;:::-;9467:9;9478:6;9443:9;:42::i;:::-;9503:4;9496:11;;9340:175;;;;:::o;19702:26::-;;;;:::o;31367:110::-;13095:12;:10;:12::i;:::-;13085:22;;:6;;;;;;;;;;;:22;;;13077:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31429:7:::1;:5;:7::i;:::-;31421:25;;:48;31447:21;31421:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;31367:110::o:0;19538:24::-;;;;:::o;20065:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;19112:33::-;;;;;;;;;;;;;:::o;24545:182::-;13095:12;:10;:12::i;:::-;13085:22;;:6;;;;;;;;;;;:22;;;13077:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24661:8:::1;24630:19;:28;24650:7;24630:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;24701:7;24685:34;;;24710:8;24685:34;;;;;;:::i;:::-;;;;;;;;24545:182:::0;;:::o;24203:334::-;13095:12;:10;:12::i;:::-;13085:22;;:6;;;;;;;;;;;:22;;;13077:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24322:7:::1;24309:10;:20;;;;24353:7;24340:10;:20;;;;24385:8;24371:11;:22;;;;24446:11;;24433:10;;24420;;:23;;;;:::i;:::-;:37;;;;:::i;:::-;24404:13;:53;;;;24493:2;24476:13;;:19;;24468:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;24203:334:::0;;;:::o;19424:40::-;;;;;;;;;;;;;:::o;18968:47::-;;;;:::o;18817:89::-;;;;;;;;;;;;;:::o;24735:99::-;13095:12;:10;:12::i;:::-;13085:22;;:6;;;;;;;;;;;:22;;;13077:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24819:7:::1;24802:14;;:24;;;;;;;;;;;;;;;;;;24735:99:::0;:::o;23165:157::-;23246:4;13095:12;:10;:12::i;:::-;13085:22;;:6;;;;;;;;;;;:22;;;13077:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23283:9:::1;23262:18;:30;;;;23310:4;23303:11;;23165:157:::0;;;:::o;23619:134::-;13095:12;:10;:12::i;:::-;13085:22;;:6;;;;;;;;;;;:22;;;13077:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23741:4:::1;23704:26;:34;23731:6;23704:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;23619:134:::0;;:::o;19473:27::-;;;;:::o;19190:34::-;;;;;;;;;;;;;:::o;9523:151::-;9612:7;9639:11;:18;9651:5;9639:18;;;;;;;;;;;;;;;:27;9658:7;9639:27;;;;;;;;;;;;;;;;9632:34;;9523:151;;;;:::o;19869:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;19023:40::-;;;;:::o;19569:25::-;;;;:::o;23023:134::-;23083:4;13095:12;:10;:12::i;:::-;13085:22;;:6;;;;;;;;;;;:22;;;13077:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23122:5:::1;23099:20;;:28;;;;;;;;;;;;;;;;;;23145:4;23138:11;;23023:134:::0;:::o;13328:244::-;13095:12;:10;:12::i;:::-;13085:22;;:6;;;;;;;;;;;:22;;;13077:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13437:1:::1;13417:22;;:8;:22;;::::0;13409:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;13527:8;13498:38;;13519:6;;;;;;;;;;;13498:38;;;;;;;;;;;;13556:8;13547:6;;:17;;;;;;;;;;;;;;;;;;13328:244:::0;:::o;18913:46::-;;;;;;;;;;;;;:::o;19638:25::-;;;;:::o;5520:98::-;5578:7;5609:1;5605;:5;;;;:::i;:::-;5598:12;;5520:98;;;;:::o;204:::-;257:7;284:10;277:17;;204:98;:::o;12118:380::-;12271:1;12254:19;;:5;:19;;;12246:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12352:1;12333:21;;:7;:21;;;12325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12436:6;12406:11;:18;12418:5;12406:18;;;;;;;;;;;;;;;:27;12425:7;12406:27;;;;;;;;;;;;;;;:36;;;;12474:7;12458:32;;12467:5;12458:32;;;12483:6;12458:32;;;;;;:::i;:::-;;;;;;;;12118:380;;;:::o;25845:3573::-;25993:1;25977:18;;:4;:18;;;25969:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26070:1;26056:16;;:2;:16;;;26048:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;26132:10;:14;26143:2;26132:14;;;;;;;;;;;;;;;;;;;;;;;;;26131:15;:36;;;;;26151:10;:16;26162:4;26151:16;;;;;;;;;;;;;;;;;;;;;;;;;26150:17;26131:36;26123:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;26246:1;26236:6;:11;26233:92;;26264:28;26280:4;26286:2;26290:1;26264:15;:28::i;:::-;26307:7;;26233:92;26338:14;;;;;;;;;;;26335:1337;;;26398:7;:5;:7::i;:::-;26390:15;;:4;:15;;;;:49;;;;;26432:7;:5;:7::i;:::-;26426:13;;:2;:13;;;;26390:49;:86;;;;;26474:1;26460:16;;:2;:16;;;;26390:86;:128;;;;;26511:6;26497:21;;:2;:21;;;;26390:128;:158;;;;;26540:8;;;;;;;;;;;26539:9;26390:158;26368:1293;;;26587:13;;;;;;;;;;;26583:148;;26632:19;:25;26652:4;26632:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;26661:19;:23;26681:2;26661:23;;;;;;;;;;;;;;;;;;;;;;;;;26632:52;26624:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;26583:148;26753:20;;;;;;;;;;;26749:423;;;26807:7;:5;:7::i;:::-;26801:13;;:2;:13;;;;:47;;;;;26832:15;26818:30;;:2;:30;;;;26801:47;:79;;;;;26866:13;26852:28;;:2;:28;;;;26801:79;26797:356;;;26958:12;26916:28;:39;26945:9;26916:39;;;;;;;;;;;;;;;;:54;26908:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;27117:12;27075:28;:39;27104:9;27075:39;;;;;;;;;;;;;;;:54;;;;26797:356;26749:423;27194:25;:31;27220:4;27194:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;27230:31;:35;27262:2;27230:35;;;;;;;;;;;;;;;;;;;;;;;;;27229:36;27194:71;27190:456;;;27308:20;;27298:6;:30;;27290:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;27190:456;;;27433:25;:29;27459:2;27433:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;27467:31;:37;27499:4;27467:37;;;;;;;;;;;;;;;;;;;;;;;;;27466:38;27433:71;27429:217;;;27547:20;;27537:6;:30;;27529:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;27429:217;27190:456;26368:1293;26335:1337;27700:14;;;;;;;;;;;:51;;;;;27738:13;27732:19;;:2;:19;;;;27700:51;:126;;;;;27783:42;27769:57;;:2;:57;;;;27700:126;27682:205;;;27871:4;27854:10;:14;27865:2;27854:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;27682:205;27897:28;27928:24;27946:4;27928:9;:24::i;:::-;27897:55;;27963:12;28002:18;;27978:20;:42;;27963:57;;28048:7;:35;;;;;28072:11;;;;;;;;;;;28048:35;:61;;;;;28101:8;;;;;;;;;;;28100:9;28048:61;:107;;;;;28126:25;:29;28152:2;28126:29;;;;;;;;;;;;;;;;;;;;;;;;;28048:107;:150;;;;;28173:19;:25;28193:4;28173:25;;;;;;;;;;;;;;;;;;;;;;;;;28172:26;28048:150;:191;;;;;28216:19;:23;28236:2;28216:23;;;;;;;;;;;;;;;;;;;;;;;;;28215:24;28048:191;28031:318;;;28277:4;28266:8;;:15;;;;;;;;;;;;;;;;;;28296:10;:8;:10::i;:::-;28332:5;28321:8;;:16;;;;;;;;;;;;;;;;;;28031:318;28359:12;28375:8;;;;;;;;;;;28374:9;28359:24;;28397:19;:25;28417:4;28397:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;28426:19;:23;28446:2;28426:23;;;;;;;;;;;;;;;;;;;;;;;;;28397:52;28394:99;;;28476:5;28466:15;;28394:99;28505:12;28535:7;28532:835;;;28562:25;:29;28588:2;28562:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;28611:1;28595:13;;:17;28562:50;28558:665;;;28660:3;28646:13;;28639:6;:20;;;;:::i;:::-;:24;;;;:::i;:::-;28632:31;;28718:13;;28705:10;;28698:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;28682:12;;:49;;;;;;;:::i;:::-;;;;;;;;28786:13;;28773:10;;28766:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;28750:12;;:49;;;;;;;:::i;:::-;;;;;;;;28856:13;;28842:11;;28835:4;:18;;;;:::i;:::-;:34;;;;:::i;:::-;28818:13;;:51;;;;;;;:::i;:::-;;;;;;;;28558:665;;;28907:25;:31;28933:4;28907:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;28957:1;28942:12;;:16;28907:51;28904:319;;;29006:3;28993:12;;28986:6;:19;;;;:::i;:::-;:23;;;;:::i;:::-;28979:30;;29063:12;;29051:9;;29044:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;29028:12;;:47;;;;;;;:::i;:::-;;;;;;;;29129:12;;29117:9;;29110:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;29094:12;;:47;;;;;;;:::i;:::-;;;;;;;;29195:12;;29183:10;;29177:4;:16;;;;:::i;:::-;:30;;;;:::i;:::-;29160:13;;:47;;;;;;;:::i;:::-;;;;;;;;28904:319;28558:665;29247:2;29240:4;:9;29237:90;;;29269:42;29285:4;29299;29306;29269:15;:42::i;:::-;29237:90;29351:4;29341:14;;;;;:::i;:::-;;;28532:835;29377:33;29393:4;29399:2;29403:6;29377:15;:33::i;:::-;25958:3460;;;;25845:3573;;;;:::o;6039:240::-;6159:7;6217:1;6212;:6;;6220:12;6204:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;6259:1;6255;:5;6248:12;;6039:240;;;;;:::o;10725:573::-;10883:1;10865:20;;:6;:20;;;10857:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;10967:1;10946:23;;:9;:23;;;10938:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11022:47;11043:6;11051:9;11062:6;11022:20;:47::i;:::-;11102:71;11124:6;11102:71;;;;;;;;;;;;;;;;;:9;:17;11112:6;11102:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;11082:9;:17;11092:6;11082:17;;;;;;;;;;;;;;;:91;;;;11207:32;11232:6;11207:9;:20;11217:9;11207:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;11184:9;:20;11194:9;11184:20;;;;;;;;;;;;;;;:55;;;;11272:9;11255:35;;11264:6;11255:35;;;11283:6;11255:35;;;;;;:::i;:::-;;;;;;;;10725:573;;;:::o;25094:188::-;25211:5;25177:25;:31;25203:4;25177:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;25268:5;25234:40;;25262:4;25234:40;;;;;;;;;;;;25094:188;;:::o;30348:869::-;30387:23;30413:24;30431:4;30413:9;:24::i;:::-;30387:50;;30448:25;30506:13;;30491:12;;30476;;:27;;;;:::i;:::-;:43;;;;:::i;:::-;30448:71;;30554:1;30535:15;:20;:48;;;;30580:3;30559:17;:24;30535:48;30532:62;;;30586:7;;;;30532:62;30606:26;30635:15;30606:44;;30663:36;30680:18;30663:16;:36::i;:::-;30713:18;30734:21;30713:42;;30768:17;30812;30799:12;;30788:10;:23;;;;:::i;:::-;:41;;;;:::i;:::-;30768:61;;30840:17;30884;30871:12;;30860:10;:23;;;;:::i;:::-;:41;;;;:::i;:::-;30840:61;;30912:18;30958:17;30944:13;;30933:10;:24;;;;:::i;:::-;:42;;;;:::i;:::-;30912:63;;30996:9;;;;;;;;;;;30988:27;;:38;31016:9;30988:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31045:9;;;;;;;;;;;31037:27;;:38;31065:9;31037:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31094:11;;;;;;;;;;;31086:29;;:41;31116:10;31086:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31154:1;31138:13;:17;;;;31181:1;31166:12;:16;;;;31208:1;31193:12;:16;;;;30376:841;;;;;;;30348:869;:::o;12506:125::-;;;;:::o;29426:476::-;29492:21;29530:1;29516:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29492:40;;29561:4;29543;29548:1;29543:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;29587:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29577:4;29582:1;29577:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;29622:62;29639:4;29654:15;29672:11;29622:8;:62::i;:::-;29695:15;:66;;;29776:11;29802:1;29819:4;29846;29866:15;29695:197;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29481:421;29426:476;:::o;88:117:1:-;197:1;194;187:12;334:90;368:7;411:5;404:13;397:21;386:32;;334:90;;;:::o;430:116::-;500:21;515:5;500:21;:::i;:::-;493:5;490:32;480:60;;536:1;533;526:12;480:60;430:116;:::o;552:133::-;595:5;633:6;620:20;611:29;;649:30;673:5;649:30;:::i;:::-;552:133;;;;:::o;691:323::-;747:6;796:2;784:9;775:7;771:23;767:32;764:119;;;802:79;;:::i;:::-;764:119;922:1;947:50;989:7;980:6;969:9;965:22;947:50;:::i;:::-;937:60;;893:114;691:323;;;;:::o;1020:109::-;1101:21;1116:5;1101:21;:::i;:::-;1096:3;1089:34;1020:109;;:::o;1135:210::-;1222:4;1260:2;1249:9;1245:18;1237:26;;1273:65;1335:1;1324:9;1320:17;1311:6;1273:65;:::i;:::-;1135:210;;;;:::o;1351:99::-;1403:6;1437:5;1431:12;1421:22;;1351:99;;;:::o;1456:169::-;1540:11;1574:6;1569:3;1562:19;1614:4;1609:3;1605:14;1590:29;;1456:169;;;;:::o;1631:246::-;1712:1;1722:113;1736:6;1733:1;1730:13;1722:113;;;1821:1;1816:3;1812:11;1806:18;1802:1;1797:3;1793:11;1786:39;1758:2;1755:1;1751:10;1746:15;;1722:113;;;1869:1;1860:6;1855:3;1851:16;1844:27;1693:184;1631:246;;;:::o;1883:102::-;1924:6;1975:2;1971:7;1966:2;1959:5;1955:14;1951:28;1941:38;;1883:102;;;:::o;1991:377::-;2079:3;2107:39;2140:5;2107:39;:::i;:::-;2162:71;2226:6;2221:3;2162:71;:::i;:::-;2155:78;;2242:65;2300:6;2295:3;2288:4;2281:5;2277:16;2242:65;:::i;:::-;2332:29;2354:6;2332:29;:::i;:::-;2327:3;2323:39;2316:46;;2083:285;1991:377;;;;:::o;2374:313::-;2487:4;2525:2;2514:9;2510:18;2502:26;;2574:9;2568:4;2564:20;2560:1;2549:9;2545:17;2538:47;2602:78;2675:4;2666:6;2602:78;:::i;:::-;2594:86;;2374:313;;;;:::o;2693:126::-;2730:7;2770:42;2763:5;2759:54;2748:65;;2693:126;;;:::o;2825:96::-;2862:7;2891:24;2909:5;2891:24;:::i;:::-;2880:35;;2825:96;;;:::o;2927:122::-;3000:24;3018:5;3000:24;:::i;:::-;2993:5;2990:35;2980:63;;3039:1;3036;3029:12;2980:63;2927:122;:::o;3055:139::-;3101:5;3139:6;3126:20;3117:29;;3155:33;3182:5;3155:33;:::i;:::-;3055:139;;;;:::o;3200:77::-;3237:7;3266:5;3255:16;;3200:77;;;:::o;3283:122::-;3356:24;3374:5;3356:24;:::i;:::-;3349:5;3346:35;3336:63;;3395:1;3392;3385:12;3336:63;3283:122;:::o;3411:139::-;3457:5;3495:6;3482:20;3473:29;;3511:33;3538:5;3511:33;:::i;:::-;3411:139;;;;:::o;3556:474::-;3624:6;3632;3681:2;3669:9;3660:7;3656:23;3652:32;3649:119;;;3687:79;;:::i;:::-;3649:119;3807:1;3832:53;3877:7;3868:6;3857:9;3853:22;3832:53;:::i;:::-;3822:63;;3778:117;3934:2;3960:53;4005:7;3996:6;3985:9;3981:22;3960:53;:::i;:::-;3950:63;;3905:118;3556:474;;;;;:::o;4036:329::-;4095:6;4144:2;4132:9;4123:7;4119:23;4115:32;4112:119;;;4150:79;;:::i;:::-;4112:119;4270:1;4295:53;4340:7;4331:6;4320:9;4316:22;4295:53;:::i;:::-;4285:63;;4241:117;4036:329;;;;:::o;4371:104::-;4416:7;4445:24;4463:5;4445:24;:::i;:::-;4434:35;;4371:104;;;:::o;4481:142::-;4584:32;4610:5;4584:32;:::i;:::-;4579:3;4572:45;4481:142;;:::o;4629:254::-;4738:4;4776:2;4765:9;4761:18;4753:26;;4789:87;4873:1;4862:9;4858:17;4849:6;4789:87;:::i;:::-;4629:254;;;;:::o;4889:60::-;4917:3;4938:5;4931:12;;4889:60;;;:::o;4955:142::-;5005:9;5038:53;5056:34;5065:24;5083:5;5065:24;:::i;:::-;5056:34;:::i;:::-;5038:53;:::i;:::-;5025:66;;4955:142;;;:::o;5103:126::-;5153:9;5186:37;5217:5;5186:37;:::i;:::-;5173:50;;5103:126;;;:::o;5235:153::-;5312:9;5345:37;5376:5;5345:37;:::i;:::-;5332:50;;5235:153;;;:::o;5394:185::-;5508:64;5566:5;5508:64;:::i;:::-;5503:3;5496:77;5394:185;;:::o;5585:276::-;5705:4;5743:2;5732:9;5728:18;5720:26;;5756:98;5851:1;5840:9;5836:17;5827:6;5756:98;:::i;:::-;5585:276;;;;:::o;5867:118::-;5954:24;5972:5;5954:24;:::i;:::-;5949:3;5942:37;5867:118;;:::o;5991:222::-;6084:4;6122:2;6111:9;6107:18;6099:26;;6135:71;6203:1;6192:9;6188:17;6179:6;6135:71;:::i;:::-;5991:222;;;;:::o;6219:329::-;6278:6;6327:2;6315:9;6306:7;6302:23;6298:32;6295:119;;;6333:79;;:::i;:::-;6295:119;6453:1;6478:53;6523:7;6514:6;6503:9;6499:22;6478:53;:::i;:::-;6468:63;;6424:117;6219:329;;;;:::o;6554:619::-;6631:6;6639;6647;6696:2;6684:9;6675:7;6671:23;6667:32;6664:119;;;6702:79;;:::i;:::-;6664:119;6822:1;6847:53;6892:7;6883:6;6872:9;6868:22;6847:53;:::i;:::-;6837:63;;6793:117;6949:2;6975:53;7020:7;7011:6;7000:9;6996:22;6975:53;:::i;:::-;6965:63;;6920:118;7077:2;7103:53;7148:7;7139:6;7128:9;7124:22;7103:53;:::i;:::-;7093:63;;7048:118;6554:619;;;;;:::o;7179:86::-;7214:7;7254:4;7247:5;7243:16;7232:27;;7179:86;;;:::o;7271:112::-;7354:22;7370:5;7354:22;:::i;:::-;7349:3;7342:35;7271:112;;:::o;7389:214::-;7478:4;7516:2;7505:9;7501:18;7493:26;;7529:67;7593:1;7582:9;7578:17;7569:6;7529:67;:::i;:::-;7389:214;;;;:::o;7609:118::-;7696:24;7714:5;7696:24;:::i;:::-;7691:3;7684:37;7609:118;;:::o;7733:222::-;7826:4;7864:2;7853:9;7849:18;7841:26;;7877:71;7945:1;7934:9;7930:17;7921:6;7877:71;:::i;:::-;7733:222;;;;:::o;7961:468::-;8026:6;8034;8083:2;8071:9;8062:7;8058:23;8054:32;8051:119;;;8089:79;;:::i;:::-;8051:119;8209:1;8234:53;8279:7;8270:6;8259:9;8255:22;8234:53;:::i;:::-;8224:63;;8180:117;8336:2;8362:50;8404:7;8395:6;8384:9;8380:22;8362:50;:::i;:::-;8352:60;;8307:115;7961:468;;;;;:::o;8435:619::-;8512:6;8520;8528;8577:2;8565:9;8556:7;8552:23;8548:32;8545:119;;;8583:79;;:::i;:::-;8545:119;8703:1;8728:53;8773:7;8764:6;8753:9;8749:22;8728:53;:::i;:::-;8718:63;;8674:117;8830:2;8856:53;8901:7;8892:6;8881:9;8877:22;8856:53;:::i;:::-;8846:63;;8801:118;8958:2;8984:53;9029:7;9020:6;9009:9;9005:22;8984:53;:::i;:::-;8974:63;;8929:118;8435:619;;;;;:::o;9060:474::-;9128:6;9136;9185:2;9173:9;9164:7;9160:23;9156:32;9153:119;;;9191:79;;:::i;:::-;9153:119;9311:1;9336:53;9381:7;9372:6;9361:9;9357:22;9336:53;:::i;:::-;9326:63;;9282:117;9438:2;9464:53;9509:7;9500:6;9489:9;9485:22;9464:53;:::i;:::-;9454:63;;9409:118;9060:474;;;;;:::o;9540:182::-;9680:34;9676:1;9668:6;9664:14;9657:58;9540:182;:::o;9728:366::-;9870:3;9891:67;9955:2;9950:3;9891:67;:::i;:::-;9884:74;;9967:93;10056:3;9967:93;:::i;:::-;10085:2;10080:3;10076:12;10069:19;;9728:366;;;:::o;10100:419::-;10266:4;10304:2;10293:9;10289:18;10281:26;;10353:9;10347:4;10343:20;10339:1;10328:9;10324:17;10317:47;10381:131;10507:4;10381:131;:::i;:::-;10373:139;;10100:419;;;:::o;10525:180::-;10573:77;10570:1;10563:88;10670:4;10667:1;10660:15;10694:4;10691:1;10684:15;10711:320;10755:6;10792:1;10786:4;10782:12;10772:22;;10839:1;10833:4;10829:12;10860:18;10850:81;;10916:4;10908:6;10904:17;10894:27;;10850:81;10978:2;10970:6;10967:14;10947:18;10944:38;10941:84;;10997:18;;:::i;:::-;10941:84;10762:269;10711:320;;;:::o;11037:180::-;11085:77;11082:1;11075:88;11182:4;11179:1;11172:15;11206:4;11203:1;11196:15;11223:191;11263:3;11282:20;11300:1;11282:20;:::i;:::-;11277:25;;11316:20;11334:1;11316:20;:::i;:::-;11311:25;;11359:1;11356;11352:9;11345:16;;11380:3;11377:1;11374:10;11371:36;;;11387:18;;:::i;:::-;11371:36;11223:191;;;;:::o;11420:179::-;11560:31;11556:1;11548:6;11544:14;11537:55;11420:179;:::o;11605:366::-;11747:3;11768:67;11832:2;11827:3;11768:67;:::i;:::-;11761:74;;11844:93;11933:3;11844:93;:::i;:::-;11962:2;11957:3;11953:12;11946:19;;11605:366;;;:::o;11977:419::-;12143:4;12181:2;12170:9;12166:18;12158:26;;12230:9;12224:4;12220:20;12216:1;12205:9;12201:17;12194:47;12258:131;12384:4;12258:131;:::i;:::-;12250:139;;11977:419;;;:::o;12402:244::-;12542:34;12538:1;12530:6;12526:14;12519:58;12611:27;12606:2;12598:6;12594:15;12587:52;12402:244;:::o;12652:366::-;12794:3;12815:67;12879:2;12874:3;12815:67;:::i;:::-;12808:74;;12891:93;12980:3;12891:93;:::i;:::-;13009:2;13004:3;13000:12;12993:19;;12652:366;;;:::o;13024:419::-;13190:4;13228:2;13217:9;13213:18;13205:26;;13277:9;13271:4;13267:20;13263:1;13252:9;13248:17;13241:47;13305:131;13431:4;13305:131;:::i;:::-;13297:139;;13024:419;;;:::o;13449:225::-;13589:34;13585:1;13577:6;13573:14;13566:58;13658:8;13653:2;13645:6;13641:15;13634:33;13449:225;:::o;13680:366::-;13822:3;13843:67;13907:2;13902:3;13843:67;:::i;:::-;13836:74;;13919:93;14008:3;13919:93;:::i;:::-;14037:2;14032:3;14028:12;14021:19;;13680:366;;;:::o;14052:419::-;14218:4;14256:2;14245:9;14241:18;14233:26;;14305:9;14299:4;14295:20;14291:1;14280:9;14276:17;14269:47;14333:131;14459:4;14333:131;:::i;:::-;14325:139;;14052:419;;;:::o;14477:223::-;14617:34;14613:1;14605:6;14601:14;14594:58;14686:6;14681:2;14673:6;14669:15;14662:31;14477:223;:::o;14706:366::-;14848:3;14869:67;14933:2;14928:3;14869:67;:::i;:::-;14862:74;;14945:93;15034:3;14945:93;:::i;:::-;15063:2;15058:3;15054:12;15047:19;;14706:366;;;:::o;15078:419::-;15244:4;15282:2;15271:9;15267:18;15259:26;;15331:9;15325:4;15321:20;15317:1;15306:9;15302:17;15295:47;15359:131;15485:4;15359:131;:::i;:::-;15351:139;;15078:419;;;:::o;15503:221::-;15643:34;15639:1;15631:6;15627:14;15620:58;15712:4;15707:2;15699:6;15695:15;15688:29;15503:221;:::o;15730:366::-;15872:3;15893:67;15957:2;15952:3;15893:67;:::i;:::-;15886:74;;15969:93;16058:3;15969:93;:::i;:::-;16087:2;16082:3;16078:12;16071:19;;15730:366;;;:::o;16102:419::-;16268:4;16306:2;16295:9;16291:18;16283:26;;16355:9;16349:4;16345:20;16341:1;16330:9;16326:17;16319:47;16383:131;16509:4;16383:131;:::i;:::-;16375:139;;16102:419;;;:::o;16527:224::-;16667:34;16663:1;16655:6;16651:14;16644:58;16736:7;16731:2;16723:6;16719:15;16712:32;16527:224;:::o;16757:366::-;16899:3;16920:67;16984:2;16979:3;16920:67;:::i;:::-;16913:74;;16996:93;17085:3;16996:93;:::i;:::-;17114:2;17109:3;17105:12;17098:19;;16757:366;;;:::o;17129:419::-;17295:4;17333:2;17322:9;17318:18;17310:26;;17382:9;17376:4;17372:20;17368:1;17357:9;17353:17;17346:47;17410:131;17536:4;17410:131;:::i;:::-;17402:139;;17129:419;;;:::o;17554:222::-;17694:34;17690:1;17682:6;17678:14;17671:58;17763:5;17758:2;17750:6;17746:15;17739:30;17554:222;:::o;17782:366::-;17924:3;17945:67;18009:2;18004:3;17945:67;:::i;:::-;17938:74;;18021:93;18110:3;18021:93;:::i;:::-;18139:2;18134:3;18130:12;18123:19;;17782:366;;;:::o;18154:419::-;18320:4;18358:2;18347:9;18343:18;18335:26;;18407:9;18401:4;18397:20;18393:1;18382:9;18378:17;18371:47;18435:131;18561:4;18435:131;:::i;:::-;18427:139;;18154:419;;;:::o;18579:236::-;18719:34;18715:1;18707:6;18703:14;18696:58;18788:19;18783:2;18775:6;18771:15;18764:44;18579:236;:::o;18821:366::-;18963:3;18984:67;19048:2;19043:3;18984:67;:::i;:::-;18977:74;;19060:93;19149:3;19060:93;:::i;:::-;19178:2;19173:3;19169:12;19162:19;;18821:366;;;:::o;19193:419::-;19359:4;19397:2;19386:9;19382:18;19374:26;;19446:9;19440:4;19436:20;19432:1;19421:9;19417:17;19410:47;19474:131;19600:4;19474:131;:::i;:::-;19466:139;;19193:419;;;:::o;19618:172::-;19758:24;19754:1;19746:6;19742:14;19735:48;19618:172;:::o;19796:366::-;19938:3;19959:67;20023:2;20018:3;19959:67;:::i;:::-;19952:74;;20035:93;20124:3;20035:93;:::i;:::-;20153:2;20148:3;20144:12;20137:19;;19796:366;;;:::o;20168:419::-;20334:4;20372:2;20361:9;20357:18;20349:26;;20421:9;20415:4;20411:20;20407:1;20396:9;20392:17;20385:47;20449:131;20575:4;20449:131;:::i;:::-;20441:139;;20168:419;;;:::o;20593:297::-;20733:34;20729:1;20721:6;20717:14;20710:58;20802:34;20797:2;20789:6;20785:15;20778:59;20871:11;20866:2;20858:6;20854:15;20847:36;20593:297;:::o;20896:366::-;21038:3;21059:67;21123:2;21118:3;21059:67;:::i;:::-;21052:74;;21135:93;21224:3;21135:93;:::i;:::-;21253:2;21248:3;21244:12;21237:19;;20896:366;;;:::o;21268:419::-;21434:4;21472:2;21461:9;21457:18;21449:26;;21521:9;21515:4;21511:20;21507:1;21496:9;21492:17;21485:47;21549:131;21675:4;21549:131;:::i;:::-;21541:139;;21268:419;;;:::o;21693:240::-;21833:34;21829:1;21821:6;21817:14;21810:58;21902:23;21897:2;21889:6;21885:15;21878:48;21693:240;:::o;21939:366::-;22081:3;22102:67;22166:2;22161:3;22102:67;:::i;:::-;22095:74;;22178:93;22267:3;22178:93;:::i;:::-;22296:2;22291:3;22287:12;22280:19;;21939:366;;;:::o;22311:419::-;22477:4;22515:2;22504:9;22500:18;22492:26;;22564:9;22558:4;22554:20;22550:1;22539:9;22535:17;22528:47;22592:131;22718:4;22592:131;:::i;:::-;22584:139;;22311:419;;;:::o;22736:241::-;22876:34;22872:1;22864:6;22860:14;22853:58;22945:24;22940:2;22932:6;22928:15;22921:49;22736:241;:::o;22983:366::-;23125:3;23146:67;23210:2;23205:3;23146:67;:::i;:::-;23139:74;;23222:93;23311:3;23222:93;:::i;:::-;23340:2;23335:3;23331:12;23324:19;;22983:366;;;:::o;23355:419::-;23521:4;23559:2;23548:9;23544:18;23536:26;;23608:9;23602:4;23598:20;23594:1;23583:9;23579:17;23572:47;23636:131;23762:4;23636:131;:::i;:::-;23628:139;;23355:419;;;:::o;23780:410::-;23820:7;23843:20;23861:1;23843:20;:::i;:::-;23838:25;;23877:20;23895:1;23877:20;:::i;:::-;23872:25;;23932:1;23929;23925:9;23954:30;23972:11;23954:30;:::i;:::-;23943:41;;24133:1;24124:7;24120:15;24117:1;24114:22;24094:1;24087:9;24067:83;24044:139;;24163:18;;:::i;:::-;24044:139;23828:362;23780:410;;;;:::o;24196:180::-;24244:77;24241:1;24234:88;24341:4;24338:1;24331:15;24365:4;24362:1;24355:15;24382:185;24422:1;24439:20;24457:1;24439:20;:::i;:::-;24434:25;;24473:20;24491:1;24473:20;:::i;:::-;24468:25;;24512:1;24502:35;;24517:18;;:::i;:::-;24502:35;24559:1;24556;24552:9;24547:14;;24382:185;;;;:::o;24573:194::-;24613:4;24633:20;24651:1;24633:20;:::i;:::-;24628:25;;24667:20;24685:1;24667:20;:::i;:::-;24662:25;;24711:1;24708;24704:9;24696:17;;24735:1;24729:4;24726:11;24723:37;;;24740:18;;:::i;:::-;24723:37;24573:194;;;;:::o;24773:180::-;24821:77;24818:1;24811:88;24918:4;24915:1;24908:15;24942:4;24939:1;24932:15;24959:180;25007:77;25004:1;24997:88;25104:4;25101:1;25094:15;25128:4;25125:1;25118:15;25145:143;25202:5;25233:6;25227:13;25218:22;;25249:33;25276:5;25249:33;:::i;:::-;25145:143;;;;:::o;25294:351::-;25364:6;25413:2;25401:9;25392:7;25388:23;25384:32;25381:119;;;25419:79;;:::i;:::-;25381:119;25539:1;25564:64;25620:7;25611:6;25600:9;25596:22;25564:64;:::i;:::-;25554:74;;25510:128;25294:351;;;;:::o;25651:85::-;25696:7;25725:5;25714:16;;25651:85;;;:::o;25742:158::-;25800:9;25833:61;25851:42;25860:32;25886:5;25860:32;:::i;:::-;25851:42;:::i;:::-;25833:61;:::i;:::-;25820:74;;25742:158;;;:::o;25906:147::-;26001:45;26040:5;26001:45;:::i;:::-;25996:3;25989:58;25906:147;;:::o;26059:114::-;26126:6;26160:5;26154:12;26144:22;;26059:114;;;:::o;26179:184::-;26278:11;26312:6;26307:3;26300:19;26352:4;26347:3;26343:14;26328:29;;26179:184;;;;:::o;26369:132::-;26436:4;26459:3;26451:11;;26489:4;26484:3;26480:14;26472:22;;26369:132;;;:::o;26507:108::-;26584:24;26602:5;26584:24;:::i;:::-;26579:3;26572:37;26507:108;;:::o;26621:179::-;26690:10;26711:46;26753:3;26745:6;26711:46;:::i;:::-;26789:4;26784:3;26780:14;26766:28;;26621:179;;;;:::o;26806:113::-;26876:4;26908;26903:3;26899:14;26891:22;;26806:113;;;:::o;26955:732::-;27074:3;27103:54;27151:5;27103:54;:::i;:::-;27173:86;27252:6;27247:3;27173:86;:::i;:::-;27166:93;;27283:56;27333:5;27283:56;:::i;:::-;27362:7;27393:1;27378:284;27403:6;27400:1;27397:13;27378:284;;;27479:6;27473:13;27506:63;27565:3;27550:13;27506:63;:::i;:::-;27499:70;;27592:60;27645:6;27592:60;:::i;:::-;27582:70;;27438:224;27425:1;27422;27418:9;27413:14;;27378:284;;;27382:14;27678:3;27671:10;;27079:608;;;26955:732;;;;:::o;27693:831::-;27956:4;27994:3;27983:9;27979:19;27971:27;;28008:71;28076:1;28065:9;28061:17;28052:6;28008:71;:::i;:::-;28089:80;28165:2;28154:9;28150:18;28141:6;28089:80;:::i;:::-;28216:9;28210:4;28206:20;28201:2;28190:9;28186:18;28179:48;28244:108;28347:4;28338:6;28244:108;:::i;:::-;28236:116;;28362:72;28430:2;28419:9;28415:18;28406:6;28362:72;:::i;:::-;28444:73;28512:3;28501:9;28497:19;28488:6;28444:73;:::i;:::-;27693:831;;;;;;;;:::o
Swarm Source
ipfs://a94b27267641016ccf9d7865cfbdfe3b17ce1747ff8d844a014a0f1ed7198ce7
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.