ERC-20
Overview
Max Total Supply
1,000,000,000 ApeTools
Holders
89
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
ApeTools
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-02-05 */ /* ApeTools is Multi-utility DeFi project. All utilities will be developed for four blockchains(Eth,Sol,Bsc,Avax). DeFi tools that will enhance your trading techniques and level up your knowledge on what’s happening on multiple blockchains. Website : https://www.apetools.bot Telegram : https://t.me/Ape_Tools X. : https://twitter.com/Ape_tools */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.4; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { return msg.data; } } 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); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } 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(0x000000000000000000000000000000000000dEaD)); _owner = address(0x000000000000000000000000000000000000dEaD); } 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 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 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 Burn(address indexed sender, uint amount0, uint amount1, address indexed to); 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 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 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 ApeTools is Context, IERC20, Ownable { using SafeMath for uint256; string private _name = "ApeTools"; string private _symbol = "ApeTools"; uint8 private _decimals = 18; address payable public marketingWallet = payable(0x0D4EA2FEfF296d3F67a817229891EdE044Bcb0a9); address payable public DeveloperWallet = payable(0x0D4EA2FEfF296d3F67a817229891EdE044Bcb0a9); address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD; address public immutable zeroAddress = 0x0000000000000000000000000000000000000000; mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) public isExcludedFromFee; mapping (address => bool) public isMarketPair; mapping (address => bool) public blacklist; mapping (address => bool) public isWalletLimitExempt; mapping (address => bool) public isTxLimitExempt; uint256 public _buyLiquidityFee = 0; uint256 public _buyMarketingFee = 25; uint256 public _buyDeveloperFee = 0; uint256 public _sellLiquidityFee = 0; uint256 public _sellMarketingFee = 25; uint256 public _sellDeveloperFee = 0; uint256 public _totalTaxIfBuying; uint256 public _totalTaxIfSelling; uint256 private _totalSupply = 1000000000 * 10**_decimals; uint256 public minimumTokensBeforeSwap = _totalSupply.mul(1).div(100); //0.001% uint256 public _maxTxAmount = _totalSupply.mul(100).div(100); //100% uint256 public _walletMax = _totalSupply.mul(100).div(100); //100% IUniswapV2Router02 public uniswapV2Router; address public uniswapPair; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; bool public swapAndLiquifyByLimitOnly = false; bool public checkWalletLimit = true; bool public EnableTransactionLimit = true; event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); event SwapETHForTokens( uint256 amountIn, address[] path ); event SwapTokensForETH( uint256 amountIn, address[] path ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor () { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; _allowances[address(this)][address(uniswapV2Router)] = ~uint256(0); isExcludedFromFee[owner()] = true; isExcludedFromFee[marketingWallet] = true; isExcludedFromFee[DeveloperWallet] = true; isExcludedFromFee[address(this)] = true; isWalletLimitExempt[owner()] = true; isWalletLimitExempt[marketingWallet] = true; isWalletLimitExempt[DeveloperWallet] = true; isWalletLimitExempt[address(uniswapPair)] = true; isWalletLimitExempt[address(this)] = true; isTxLimitExempt[owner()] = true; isTxLimitExempt[marketingWallet] = true; isTxLimitExempt[DeveloperWallet] = true; isTxLimitExempt[address(this)] = true; _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee); _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee); isMarketPair[address(uniswapPair)] = true; _balances[_msgSender()] = _totalSupply; emit Transfer(address(0), _msgSender(), _totalSupply); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } 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 approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function _approve(address owner, address spender, uint256 amount) private { 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 setMarketPairStatus(address account, bool newValue) public onlyOwner { isMarketPair[account] = newValue; } function setIsExcludedFromFee(address account, bool newValue) public onlyOwner { isExcludedFromFee[account] = newValue; } function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner { isTxLimitExempt[holder] = exempt; } function setIsWalletLimitExempt(address holder, bool exempt) external onlyOwner { isWalletLimitExempt[holder] = exempt; } function enableTxLimit(bool _status) external onlyOwner { EnableTransactionLimit = _status; } function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() { _maxTxAmount = maxTxAmount; } function enableDisableWalletLimit(bool newValue) external onlyOwner { checkWalletLimit = newValue; } function setWalletLimit(uint256 newLimit) external onlyOwner { _walletMax = newLimit; } function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() { minimumTokensBeforeSwap = newLimit; } function setMarketingWalletAddress(address newAddress) external onlyOwner() { marketingWallet = payable(newAddress); } function setDeveloperWalletAddress(address newAddress) external onlyOwner() { DeveloperWallet = payable(newAddress); } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner { swapAndLiquifyByLimitOnly = newValue; } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(deadAddress)).sub(balanceOf(zeroAddress)); } function setBlacklist(address _adr, bool _status) external onlyOwner { blacklist[_adr] = _status; } function transferToAddressETH(address payable recipient, uint256 amount) private { recipient.transfer(amount); } function changeRouterVersion(address newRouterAddress) public onlyOwner returns(address newPairAddress) { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress); newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH()); if(newPairAddress == address(0)) //Create If Doesnt exist { newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); } uniswapPair = newPairAddress; //Set new pair address uniswapV2Router = _uniswapV2Router; //Set new router address isMarketPair[address(uniswapPair)] = true; } function setBuyTaxes(uint _Liquidity, uint _Marketing , uint _Developer) public onlyOwner { _buyLiquidityFee = _Liquidity; _buyMarketingFee = _Marketing; _buyDeveloperFee = _Developer; _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee); } function setSellTaxes(uint _Liquidity, uint _Marketing , uint _Developer) public onlyOwner { _sellLiquidityFee = _Liquidity; _sellMarketingFee = _Marketing; _sellDeveloperFee = _Developer; _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee); } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function _transfer(address sender, address recipient, uint256 amount) private returns (bool) { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(!blacklist[sender] && !blacklist[recipient], "Bot Enemy address Restricted!"); if(inSwapAndLiquify) { return _basicTransfer(sender, recipient, amount); } else { if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient] && EnableTransactionLimit) { require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); } uint256 contractTokenBalance = balanceOf(address(this)); bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap; if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled) { if(swapAndLiquifyByLimitOnly) contractTokenBalance = minimumTokensBeforeSwap; swapAndLiquify(contractTokenBalance); } _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ? amount : takeFee(sender, recipient, amount); if(checkWalletLimit && !isWalletLimitExempt[recipient]) { require(balanceOf(recipient).add(finalAmount) <= _walletMax,"Amount Exceed From Max Wallet Limit!!"); } _balances[recipient] = _balances[recipient].add(finalAmount); emit Transfer(sender, recipient, finalAmount); return true; } } function rescueStuckedToken(address _token, uint _amount) external onlyOwner { IERC20(_token).transfer(msg.sender,_amount); } function rescueFunds() external onlyOwner { (bool os,) = payable(msg.sender).call{value: address(this).balance}(""); require(os); } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function swapAndLiquify(uint256 tAmount) private lockTheSwap { uint256 totalShares = _totalTaxIfBuying.add(_totalTaxIfSelling); uint256 liquidityShare = _buyLiquidityFee.add(_sellLiquidityFee); uint256 MarketingShare = _buyMarketingFee.add(_sellMarketingFee); // uint256 DeveloperShare = _buyDeveloperFee.add(_sellDeveloperFee); uint256 tokenForLp = tAmount.mul(liquidityShare).div(totalShares).div(2); uint256 tokenForSwap = tAmount.sub(tokenForLp); uint256 initialBalance = address(this).balance; swapTokensForEth(tokenForSwap); uint256 recievedBalance = address(this).balance.sub(initialBalance); uint256 totalETHFee = totalShares.sub(liquidityShare.div(2)); uint256 amountETHLiquidity = recievedBalance.mul(liquidityShare).div(totalETHFee).div(2); uint256 amountETHMarketing = recievedBalance.mul(MarketingShare).div(totalETHFee); uint256 amountETHDeveloper = recievedBalance.sub(amountETHLiquidity).sub(amountETHMarketing); if(amountETHMarketing > 0) { payable(marketingWallet).transfer(amountETHMarketing); } if(amountETHDeveloper > 0) { payable(DeveloperWallet).transfer(amountETHDeveloper); } if(amountETHLiquidity > 0 && tokenForLp > 0) { addLiquidity(tokenForLp, amountETHLiquidity); } } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), // The contract block.timestamp ); emit SwapTokensForETH(tokenAmount, path); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) { uint256 feeAmount = 0; if(isMarketPair[sender]) { feeAmount = amount.mul(_totalTaxIfBuying).div(100); } else if(isMarketPair[recipient]) { feeAmount = amount.mul(_totalTaxIfSelling).div(100); } if(feeAmount > 0) { _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); } return amount.sub(feeAmount); } /* AirDrop Function*/ function airdrop(address[] calldata _address,uint[] calldata _tokens) external onlyOwner { address account = msg.sender; require(_address.length == _tokens.length,"Error: Mismatch Length"); uint tokenCount; for(uint i = 0; i < _tokens.length; i++) { tokenCount += _tokens[i]; } require(balanceOf(account) >= tokenCount,"Error: Insufficient Error!!"); _balances[account] = _balances[account].sub(tokenCount); for(uint j = 0; j < _address.length; j++) { _balances[_address[j]] = _balances[_address[j]].add(_tokens[j]); emit Transfer(account, _address[j], _tokens[j]); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DeveloperWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EnableTransactionLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyDeveloperFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellDeveloperFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_address","type":"address[]"},{"internalType":"uint256[]","name":"_tokens","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueStuckedToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Liquidity","type":"uint256"},{"internalType":"uint256","name":"_Marketing","type":"uint256"},{"internalType":"uint256","name":"_Developer","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setDeveloperWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Liquidity","type":"uint256"},{"internalType":"uint256","name":"_Marketing","type":"uint256"},{"internalType":"uint256","name":"_Developer","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zeroAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526040518060400160405280600881526020017f417065546f6f6c73000000000000000000000000000000000000000000000000815250600190805190602001906200005192919062001003565b506040518060400160405280600881526020017f417065546f6f6c73000000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062001003565b506012600360006101000a81548160ff021916908360ff160217905550730d4ea2feff296d3f67a817229891ede044bcb0a9600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550730d4ea2feff296d3f67a817229891ede044bcb0a9600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b815250600073ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff1660601b8152506000600c556019600d556000600e556000600f5560196010556000601155600360009054906101000a900460ff16600a62000211919062001365565b633b9aca00620002229190620014a2565b6014556200025c606462000248600160145462000e3160201b620031db1790919060201c565b62000eb560201b620032561790919060201c565b60155562000296606462000282606460145462000e3160201b620031db1790919060201c565b62000eb560201b620032561790919060201c565b601655620002d06064620002bc606460145462000e3160201b620031db1790919060201c565b62000eb560201b620032561790919060201c565b6017556001601960156101000a81548160ff0219169083151502179055506000601960166101000a81548160ff0219169083151502179055506001601960176101000a81548160ff0219169083151502179055506001601960186101000a81548160ff0219169083151502179055503480156200034c57600080fd5b5060006200035f62000f0760201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200045d57600080fd5b505afa15801562000472573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004989190620010ca565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620004fb57600080fd5b505afa15801562000510573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005369190620010ca565b6040518363ffffffff1660e01b815260040162000555929190620011a7565b602060405180830381600087803b1580156200057057600080fd5b505af115801562000585573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005ab9190620010ca565b601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160076000620006e762000f0f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60006200089a62000f0f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b600062000ac762000f0f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000c9d600e5462000c89600d54600c5462000f3860201b620032a01790919060201c565b62000f3860201b620032a01790919060201c565b60128190555062000cdc60115462000cc8601054600f5462000f3860201b620032a01790919060201c565b62000f3860201b620032a01790919060201c565b601381905550600160086000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506014546005600062000d7362000f0760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000dc162000f0760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60145460405162000e2291906200123c565b60405180910390a350620016f7565b60008083141562000e46576000905062000eaf565b6000828462000e569190620014a2565b905082848262000e679190620012d2565b1462000eaa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ea1906200121a565b60405180910390fd5b809150505b92915050565b600062000eff83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000f9b60201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828462000f49919062001275565b90508381101562000f91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000f8890620011f8565b60405180910390fd5b8091505092915050565b6000808311829062000fe5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000fdc9190620011d4565b60405180910390fd5b506000838562000ff69190620012d2565b9050809150509392505050565b828054620010119062001584565b90600052602060002090601f01602090048101928262001035576000855562001081565b82601f106200105057805160ff191683800117855562001081565b8280016001018555821562001081579182015b828111156200108057825182559160200191906001019062001063565b5b50905062001090919062001094565b5090565b5b80821115620010af57600081600090555060010162001095565b5090565b600081519050620010c481620016dd565b92915050565b600060208284031215620010dd57600080fd5b6000620010ed84828501620010b3565b91505092915050565b620011018162001503565b82525050565b6000620011148262001259565b62001120818562001264565b9350620011328185602086016200154e565b6200113d8162001647565b840191505092915050565b600062001157601b8362001264565b9150620011648262001665565b602082019050919050565b60006200117e60218362001264565b91506200118b826200168e565b604082019050919050565b620011a18162001537565b82525050565b6000604082019050620011be6000830185620010f6565b620011cd6020830184620010f6565b9392505050565b60006020820190508181036000830152620011f0818462001107565b905092915050565b60006020820190508181036000830152620012138162001148565b9050919050565b6000602082019050818103600083015262001235816200116f565b9050919050565b600060208201905062001253600083018462001196565b92915050565b600081519050919050565b600082825260208201905092915050565b6000620012828262001537565b91506200128f8362001537565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620012c757620012c6620015ba565b5b828201905092915050565b6000620012df8262001537565b9150620012ec8362001537565b925082620012ff57620012fe620015e9565b5b828204905092915050565b6000808291508390505b60018511156200135c57808604811115620013345762001333620015ba565b5b6001851615620013445780820291505b8081029050620013548562001658565b945062001314565b94509492505050565b6000620013728262001537565b91506200137f8362001541565b9250620013ae7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620013b6565b905092915050565b600082620013c857600190506200149b565b81620013d857600090506200149b565b8160018114620013f15760028114620013fc5762001432565b60019150506200149b565b60ff841115620014115762001410620015ba565b5b8360020a9150848211156200142b576200142a620015ba565b5b506200149b565b5060208310610133831016604e8410600b84101617156200146c5782820a905083811115620014665762001465620015ba565b5b6200149b565b6200147b84848460016200130a565b92509050818404811115620014955762001494620015ba565b5b81810290505b9392505050565b6000620014af8262001537565b9150620014bc8362001537565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620014f857620014f7620015ba565b5b828202905092915050565b6000620015108262001517565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156200156e57808201518184015260208101905062001551565b838111156200157e576000848401525b50505050565b600060028204905060018216806200159d57607f821691505b60208210811415620015b457620015b362001618565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b620016e88162001503565b8114620016f457600080fd5b50565b60805160601c60a05160601c6159d8620017316000396000818161100101526114f10152600081816114c5015261151d01526159d86000f3fe6080604052600436106103a65760003560e01c8063844d591c116101e7578063da00097d1161010d578063f1d5f517116100a0578063f872858a1161006f578063f872858a14610dd1578063f8f6329014610dfc578063f9f92be414610e27578063fb4b8e6c14610e64576103ad565b8063f1d5f51714610d2d578063f2fde38b14610d56578063f455444614610d7f578063f84ba65d14610da8576103ad565b8063ec28438a116100dc578063ec28438a14610c87578063ee828db314610cb0578063ef422a1814610cd9578063f0cd1dac14610d02576103ad565b8063da00097d14610bdd578063dc44b6a014610c08578063dd62ed3e14610c33578063e6b2603b14610c70576103ad565b8063a5d69d1f11610185578063c816841b11610154578063c816841b14610b1f578063c860795214610b4a578063c867d60b14610b75578063d2d7ad8314610bb2576103ad565b8063a5d69d1f14610a65578063a9059cbb14610a8e578063c49b9a8014610acb578063c5d2418914610af4576103ad565b80638b42507f116101c15780638b42507f146109955780638da5cb5b146109d257806395d89b41146109fd578063a457c2d714610a28576103ad565b8063844d591c14610916578063852614851461093f57806388790a681461096a576103ad565b806339509351116102cc5780635881f3ef1161026a57806375f0a8741161023957806375f0a8741461086a5780637d1db4a514610895578063807c2d9c146108c057806382eefb43146108eb576103ad565b80635881f3ef146107b057806367243482146107ed57806370a0823114610816578063715018a614610853576103ad565b80634a74bb02116102a65780634a74bb02146106f45780634cb80fd51461071f5780635194f9bf146107485780635342acb414610773576103ad565b806339509351146106515780633b97084a1461068e5780633ecad271146106b7576103ad565b80631870517a116103445780632563ae83116103135780632563ae83146105a757806327c8f835146105d05780632b112e49146105fb578063313ce56714610626576103ad565b80631870517a146104ed5780632198cf6c1461051657806323555d571461053f57806323b872dd1461056a576103ad565b8063095ea7b311610380578063095ea7b314610431578063153b0d1e1461046e5780631694505e1461049757806318160ddd146104c2576103ad565b806306fdde03146103b257806308733214146103dd5780630930907b14610406576103ad565b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610e8d565b6040516103d49190614fe8565b60405180910390f35b3480156103e957600080fd5b5061040460048036038101906103ff9190614b05565b610f1f565b005b34801561041257600080fd5b5061041b610fff565b6040516104289190614ec9565b60405180910390f35b34801561043d57600080fd5b50610458600480360381019061045391906149d9565b611023565b6040516104659190614fb2565b60405180910390f35b34801561047a57600080fd5b506104956004803603810190610490919061499d565b611041565b005b3480156104a357600080fd5b506104ac611131565b6040516104b99190614fcd565b60405180910390f35b3480156104ce57600080fd5b506104d7611157565b6040516104e491906151aa565b60405180910390f35b3480156104f957600080fd5b50610514600480360381019061050f9190614b05565b611161565b005b34801561052257600080fd5b5061053d6004803603810190610538919061499d565b611241565b005b34801561054b57600080fd5b50610554611331565b60405161056191906151aa565b60405180910390f35b34801561057657600080fd5b50610591600480360381019061058c919061494e565b611337565b60405161059e9190614fb2565b60405180910390f35b3480156105b357600080fd5b506105ce60048036038101906105c99190614a8a565b611411565b005b3480156105dc57600080fd5b506105e56114c3565b6040516105f29190614ec9565b60405180910390f35b34801561060757600080fd5b506106106114e7565b60405161061d91906151aa565b60405180910390f35b34801561063257600080fd5b5061063b611565565b604051610648919061524f565b60405180910390f35b34801561065d57600080fd5b50610678600480360381019061067391906149d9565b61157c565b6040516106859190614fb2565b60405180910390f35b34801561069a57600080fd5b506106b560048036038101906106b09190614adc565b61162f565b005b3480156106c357600080fd5b506106de60048036038101906106d991906148c0565b6116ce565b6040516106eb9190614fb2565b60405180910390f35b34801561070057600080fd5b506107096116ee565b6040516107169190614fb2565b60405180910390f35b34801561072b57600080fd5b50610746600480360381019061074191906148c0565b611701565b005b34801561075457600080fd5b5061075d6117da565b60405161076a91906151aa565b60405180910390f35b34801561077f57600080fd5b5061079a600480360381019061079591906148c0565b6117e0565b6040516107a79190614fb2565b60405180910390f35b3480156107bc57600080fd5b506107d760048036038101906107d291906148c0565b611800565b6040516107e49190614ec9565b60405180910390f35b3480156107f957600080fd5b50610814600480360381019061080f9190614a15565b611ce4565b005b34801561082257600080fd5b5061083d600480360381019061083891906148c0565b6121a3565b60405161084a91906151aa565b60405180910390f35b34801561085f57600080fd5b506108686121ec565b005b34801561087657600080fd5b5061087f612341565b60405161088c9190614ee4565b60405180910390f35b3480156108a157600080fd5b506108aa612367565b6040516108b791906151aa565b60405180910390f35b3480156108cc57600080fd5b506108d561236d565b6040516108e291906151aa565b60405180910390f35b3480156108f757600080fd5b50610900612373565b60405161090d91906151aa565b60405180910390f35b34801561092257600080fd5b5061093d6004803603810190610938919061499d565b612379565b005b34801561094b57600080fd5b50610954612469565b6040516109619190614fb2565b60405180910390f35b34801561097657600080fd5b5061097f61247c565b60405161098c91906151aa565b60405180910390f35b3480156109a157600080fd5b506109bc60048036038101906109b791906148c0565b612482565b6040516109c99190614fb2565b60405180910390f35b3480156109de57600080fd5b506109e76124a2565b6040516109f49190614ec9565b60405180910390f35b348015610a0957600080fd5b50610a126124cb565b604051610a1f9190614fe8565b60405180910390f35b348015610a3457600080fd5b50610a4f6004803603810190610a4a91906149d9565b61255d565b604051610a5c9190614fb2565b60405180910390f35b348015610a7157600080fd5b50610a8c6004803603810190610a879190614a8a565b61262a565b005b348015610a9a57600080fd5b50610ab56004803603810190610ab091906149d9565b6126dc565b604051610ac29190614fb2565b60405180910390f35b348015610ad757600080fd5b50610af26004803603810190610aed9190614a8a565b6126fb565b005b348015610b0057600080fd5b50610b096127e4565b604051610b1691906151aa565b60405180910390f35b348015610b2b57600080fd5b50610b346127ea565b604051610b419190614ec9565b60405180910390f35b348015610b5657600080fd5b50610b5f612810565b604051610b6c91906151aa565b60405180910390f35b348015610b8157600080fd5b50610b9c6004803603810190610b9791906148c0565b612816565b604051610ba99190614fb2565b60405180910390f35b348015610bbe57600080fd5b50610bc7612836565b604051610bd491906151aa565b60405180910390f35b348015610be957600080fd5b50610bf261283c565b604051610bff9190614fb2565b60405180910390f35b348015610c1457600080fd5b50610c1d61284f565b604051610c2a91906151aa565b60405180910390f35b348015610c3f57600080fd5b50610c5a6004803603810190610c559190614912565b612855565b604051610c6791906151aa565b60405180910390f35b348015610c7c57600080fd5b50610c856128dc565b005b348015610c9357600080fd5b50610cae6004803603810190610ca99190614adc565b6129ea565b005b348015610cbc57600080fd5b50610cd76004803603810190610cd29190614a8a565b612a89565b005b348015610ce557600080fd5b50610d006004803603810190610cfb919061499d565b612b3b565b005b348015610d0e57600080fd5b50610d17612c2b565b604051610d2491906151aa565b60405180910390f35b348015610d3957600080fd5b50610d546004803603810190610d4f9190614adc565b612c31565b005b348015610d6257600080fd5b50610d7d6004803603810190610d7891906148c0565b612cd0565b005b348015610d8b57600080fd5b50610da66004803603810190610da191906149d9565b612e92565b005b348015610db457600080fd5b50610dcf6004803603810190610dca919061499d565b612fb9565b005b348015610ddd57600080fd5b50610de66130a9565b604051610df39190614fb2565b60405180910390f35b348015610e0857600080fd5b50610e116130bc565b604051610e1e9190614ee4565b60405180910390f35b348015610e3357600080fd5b50610e4e6004803603810190610e4991906148c0565b6130e2565b604051610e5b9190614fb2565b60405180910390f35b348015610e7057600080fd5b50610e8b6004803603810190610e8691906148c0565b613102565b005b606060018054610e9c906154af565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec8906154af565b8015610f155780601f10610eea57610100808354040283529160200191610f15565b820191906000526020600020905b815481529060010190602001808311610ef857829003601f168201915b5050505050905090565b610f276132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fab9061514a565b60405180910390fd5b82600f819055508160108190555080601181905550610ff4601154610fe6601054600f546132a090919063ffffffff16565b6132a090919063ffffffff16565b601381905550505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006110376110306132fe565b8484613306565b6001905092915050565b6110496132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cd9061514a565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601454905090565b6111696132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ed9061514a565b60405180910390fd5b82600c8190555081600d8190555080600e81905550611236600e54611228600d54600c546132a090919063ffffffff16565b6132a090919063ffffffff16565b601281905550505050565b6112496132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cd9061514a565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e5481565b60006113448484846134d1565b50611406846113516132fe565b6114018560405180606001604052806028815260200161595660289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113b76132fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be79092919063ffffffff16565b613306565b600190509392505050565b6114196132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149d9061514a565b60405180910390fd5b80601960176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006115606115157f00000000000000000000000000000000000000000000000000000000000000006121a3565b6115526115417f00000000000000000000000000000000000000000000000000000000000000006121a3565b601454613c4b90919063ffffffff16565b613c4b90919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b60006116256115896132fe565b84611620856006600061159a6132fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a090919063ffffffff16565b613306565b6001905092915050565b6116376132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bb9061514a565b60405180910390fd5b8060158190555050565b60086020528060005260406000206000915054906101000a900460ff1681565b601960159054906101000a900460ff1681565b6117096132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178d9061514a565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60115481565b60076020528060005260406000206000915054906101000a900460ff1681565b600061180a6132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188e9061514a565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156118e257600080fd5b505afa1580156118f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191a91906148e9565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561197c57600080fd5b505afa158015611990573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b491906148e9565b6040518363ffffffff1660e01b81526004016119d1929190614eff565b60206040518083038186803b1580156119e957600080fd5b505afa1580156119fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2191906148e9565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611be2578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611a9e57600080fd5b505afa158015611ab2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad691906148e9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611b3857600080fd5b505afa158015611b4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7091906148e9565b6040518363ffffffff1660e01b8152600401611b8d929190614eff565b602060405180830381600087803b158015611ba757600080fd5b505af1158015611bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bdf91906148e9565b91505b81601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611cec6132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d709061514a565b60405180910390fd5b6000339050828290508585905014611dc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbd9061512a565b60405180910390fd5b600080600090505b84849050811015611e3957848482818110611e12577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002013582611e2491906152ca565b91508080611e31906154e1565b915050611dce565b5080611e44836121a3565b1015611e85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7c9061502a565b60405180910390fd5b611ed781600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c4b90919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060005b8686905081101561219a57612006858583818110611f64577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020135600560008a8a86818110611fa8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002016020810190611fbd91906148c0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a090919063ffffffff16565b60056000898985818110612043577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200201602081019061205891906148c0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508686828181106120cf577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906120e491906148c0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87878581811061216b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002013560405161217f91906151aa565b60405180910390a38080612192906154e1565b915050611f1d565b50505050505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6121f46132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612281576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122789061514a565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b60175481565b60135481565b6123816132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461240e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124059061514a565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960189054906101000a900460ff1681565b600f5481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546124da906154af565b80601f0160208091040260200160405190810160405280929190818152602001828054612506906154af565b80156125535780601f1061252857610100808354040283529160200191612553565b820191906000526020600020905b81548152906001019060200180831161253657829003601f168201915b5050505050905090565b600061262061256a6132fe565b8461261b8560405180606001604052806025815260200161597e60259139600660006125946132fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be79092919063ffffffff16565b613306565b6001905092915050565b6126326132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b69061514a565b60405180910390fd5b80601960166101000a81548160ff02191690831515021790555050565b60006126f06126e96132fe565b84846134d1565b506001905092915050565b6127036132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612790576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127879061514a565b60405180910390fd5b80601960156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516127d99190614fb2565b60405180910390a150565b600d5481565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b600a6020528060005260406000206000915054906101000a900460ff1681565b60155481565b601960169054906101000a900460ff1681565b600c5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6128e46132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612971576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129689061514a565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161299790614eb4565b60006040518083038185875af1925050503d80600081146129d4576040519150601f19603f3d011682016040523d82523d6000602084013e6129d9565b606091505b50509050806129e757600080fd5b50565b6129f26132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a769061514a565b60405180910390fd5b8060168190555050565b612a916132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b159061514a565b60405180910390fd5b80601960186101000a81548160ff02191690831515021790555050565b612b436132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc79061514a565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60125481565b612c396132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612cc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cbd9061514a565b60405180910390fd5b8060178190555050565b612cd86132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5c9061514a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dcc9061504a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612e9a6132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1e9061514a565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612f62929190614f28565b602060405180830381600087803b158015612f7c57600080fd5b505af1158015612f90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fb49190614ab3565b505050565b612fc16132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461304e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130459061514a565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960179054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b61310a6132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613197576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161318e9061514a565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808314156131ee5760009050613250565b600082846131fc9190615351565b905082848261320b9190615320565b1461324b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132429061510a565b60405180910390fd5b809150505b92915050565b600061329883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c95565b905092915050565b60008082846132af91906152ca565b9050838110156132f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132eb9061508a565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161336d9061518a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156133e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133dd9061506a565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516134c491906151aa565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415613542576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135399061516a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156135b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135a99061500a565b60405180910390fd5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156136565750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b613695576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161368c906150ca565b60405180910390fd5b601960149054906101000a900460ff16156136bc576136b5848484613cf8565b9050613be0565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156137605750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137785750601960189054906101000a900460ff165b156137c3576016548211156137c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137b9906150ea565b60405180910390fd5b5b60006137ce306121a3565b9050600060155482101590508080156137f45750601960149054906101000a900460ff16155b801561384a5750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138625750601960159054906101000a900460ff165b1561388c57601960169054906101000a900460ff16156138825760155491505b61388b82613ecb565b5b613915846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be79092919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139fb5750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613a0f57613a0a878787614196565b613a11565b845b9050601960179054906101000a900460ff168015613a795750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613ade57601754613a9c82613a8e896121a3565b6132a090919063ffffffff16565b1115613add576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ad4906150aa565b60405180910390fd5b5b613b3081600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a090919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613bd091906151aa565b60405180910390a3600193505050505b9392505050565b6000838311158290613c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c269190614fe8565b60405180910390fd5b5060008385613c3e91906153ab565b9050809150509392505050565b6000613c8d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613be7565b905092915050565b60008083118290613cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cd39190614fe8565b60405180910390fd5b5060008385613ceb9190615320565b9050809150509392505050565b6000613d83826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be79092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e1882600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a090919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613eb891906151aa565b60405180910390a3600190509392505050565b6001601960146101000a81548160ff0219169083151502179055506000613eff6013546012546132a090919063ffffffff16565b90506000613f1a600f54600c546132a090919063ffffffff16565b90506000613f35601054600d546132a090919063ffffffff16565b90506000613f716002613f6386613f55878a6131db90919063ffffffff16565b61325690919063ffffffff16565b61325690919063ffffffff16565b90506000613f888287613c4b90919063ffffffff16565b90506000479050613f98826143bd565b6000613fad8247613c4b90919063ffffffff16565b90506000613fd7613fc860028961325690919063ffffffff16565b89613c4b90919063ffffffff16565b90506000614013600261400584613ff78c886131db90919063ffffffff16565b61325690919063ffffffff16565b61325690919063ffffffff16565b9050600061403c8361402e8a876131db90919063ffffffff16565b61325690919063ffffffff16565b90506000614065826140578588613c4b90919063ffffffff16565b613c4b90919063ffffffff16565b905060008211156140da57600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156140d8573d6000803e3d6000fd5b505b600081111561414d57600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561414b573d6000803e3d6000fd5b505b60008311801561415d5750600088115b1561416d5761416c88846146ba565b5b50505050505050505050506000601960146101000a81548160ff02191690831515021790555050565b60008060009050600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561421e576142176064614209601254866131db90919063ffffffff16565b61325690919063ffffffff16565b905061429c565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561429b57614298606461428a601354866131db90919063ffffffff16565b61325690919063ffffffff16565b90505b5b60008111156143a0576142f781600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a090919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161439791906151aa565b60405180910390a35b6143b38184613c4b90919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff811115614400577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561442e5781602001602082028036833780820191505090505b509050308160008151811061446c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561450e57600080fd5b505afa158015614522573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061454691906148e9565b81600181518110614580577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506145e730601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613306565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161464b9594939291906151f5565b600060405180830381600087803b15801561466557600080fd5b505af1158015614679573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516146ae9291906151c5565b60405180910390a15050565b6146e730601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613306565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806147336124a2565b426040518863ffffffff1660e01b815260040161475596959493929190614f51565b6060604051808303818588803b15801561476e57600080fd5b505af1158015614782573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906147a79190614b54565b5050505050565b6000813590506147bd81615910565b92915050565b6000815190506147d281615910565b92915050565b60008083601f8401126147ea57600080fd5b8235905067ffffffffffffffff81111561480357600080fd5b60208301915083602082028301111561481b57600080fd5b9250929050565b60008083601f84011261483457600080fd5b8235905067ffffffffffffffff81111561484d57600080fd5b60208301915083602082028301111561486557600080fd5b9250929050565b60008135905061487b81615927565b92915050565b60008151905061489081615927565b92915050565b6000813590506148a58161593e565b92915050565b6000815190506148ba8161593e565b92915050565b6000602082840312156148d257600080fd5b60006148e0848285016147ae565b91505092915050565b6000602082840312156148fb57600080fd5b6000614909848285016147c3565b91505092915050565b6000806040838503121561492557600080fd5b6000614933858286016147ae565b9250506020614944858286016147ae565b9150509250929050565b60008060006060848603121561496357600080fd5b6000614971868287016147ae565b9350506020614982868287016147ae565b925050604061499386828701614896565b9150509250925092565b600080604083850312156149b057600080fd5b60006149be858286016147ae565b92505060206149cf8582860161486c565b9150509250929050565b600080604083850312156149ec57600080fd5b60006149fa858286016147ae565b9250506020614a0b85828601614896565b9150509250929050565b60008060008060408587031215614a2b57600080fd5b600085013567ffffffffffffffff811115614a4557600080fd5b614a51878288016147d8565b9450945050602085013567ffffffffffffffff811115614a7057600080fd5b614a7c87828801614822565b925092505092959194509250565b600060208284031215614a9c57600080fd5b6000614aaa8482850161486c565b91505092915050565b600060208284031215614ac557600080fd5b6000614ad384828501614881565b91505092915050565b600060208284031215614aee57600080fd5b6000614afc84828501614896565b91505092915050565b600080600060608486031215614b1a57600080fd5b6000614b2886828701614896565b9350506020614b3986828701614896565b9250506040614b4a86828701614896565b9150509250925092565b600080600060608486031215614b6957600080fd5b6000614b77868287016148ab565b9350506020614b88868287016148ab565b9250506040614b99868287016148ab565b9150509250925092565b6000614baf8383614bca565b60208301905092915050565b614bc4816153f1565b82525050565b614bd3816153df565b82525050565b614be2816153df565b82525050565b6000614bf38261527a565b614bfd818561529d565b9350614c088361526a565b8060005b83811015614c39578151614c208882614ba3565b9750614c2b83615290565b925050600181019050614c0c565b5085935050505092915050565b614c4f81615403565b82525050565b614c5e81615446565b82525050565b614c6d8161546a565b82525050565b6000614c7e82615285565b614c8881856152b9565b9350614c9881856020860161547c565b614ca1816155b7565b840191505092915050565b6000614cb96023836152b9565b9150614cc4826155c8565b604082019050919050565b6000614cdc601b836152b9565b9150614ce782615617565b602082019050919050565b6000614cff6026836152b9565b9150614d0a82615640565b604082019050919050565b6000614d226022836152b9565b9150614d2d8261568f565b604082019050919050565b6000614d45601b836152b9565b9150614d50826156de565b602082019050919050565b6000614d686025836152b9565b9150614d7382615707565b604082019050919050565b6000614d8b601d836152b9565b9150614d9682615756565b602082019050919050565b6000614dae6028836152b9565b9150614db98261577f565b604082019050919050565b6000614dd16021836152b9565b9150614ddc826157ce565b604082019050919050565b6000614df46016836152b9565b9150614dff8261581d565b602082019050919050565b6000614e176020836152b9565b9150614e2282615846565b602082019050919050565b6000614e3a6025836152b9565b9150614e458261586f565b604082019050919050565b6000614e5d6000836152ae565b9150614e68826158be565b600082019050919050565b6000614e806024836152b9565b9150614e8b826158c1565b604082019050919050565b614e9f8161542f565b82525050565b614eae81615439565b82525050565b6000614ebf82614e50565b9150819050919050565b6000602082019050614ede6000830184614bd9565b92915050565b6000602082019050614ef96000830184614bbb565b92915050565b6000604082019050614f146000830185614bd9565b614f216020830184614bd9565b9392505050565b6000604082019050614f3d6000830185614bd9565b614f4a6020830184614e96565b9392505050565b600060c082019050614f666000830189614bd9565b614f736020830188614e96565b614f806040830187614c64565b614f8d6060830186614c64565b614f9a6080830185614bd9565b614fa760a0830184614e96565b979650505050505050565b6000602082019050614fc76000830184614c46565b92915050565b6000602082019050614fe26000830184614c55565b92915050565b600060208201905081810360008301526150028184614c73565b905092915050565b6000602082019050818103600083015261502381614cac565b9050919050565b6000602082019050818103600083015261504381614ccf565b9050919050565b6000602082019050818103600083015261506381614cf2565b9050919050565b6000602082019050818103600083015261508381614d15565b9050919050565b600060208201905081810360008301526150a381614d38565b9050919050565b600060208201905081810360008301526150c381614d5b565b9050919050565b600060208201905081810360008301526150e381614d7e565b9050919050565b6000602082019050818103600083015261510381614da1565b9050919050565b6000602082019050818103600083015261512381614dc4565b9050919050565b6000602082019050818103600083015261514381614de7565b9050919050565b6000602082019050818103600083015261516381614e0a565b9050919050565b6000602082019050818103600083015261518381614e2d565b9050919050565b600060208201905081810360008301526151a381614e73565b9050919050565b60006020820190506151bf6000830184614e96565b92915050565b60006040820190506151da6000830185614e96565b81810360208301526151ec8184614be8565b90509392505050565b600060a08201905061520a6000830188614e96565b6152176020830187614c64565b81810360408301526152298186614be8565b90506152386060830185614bd9565b6152456080830184614e96565b9695505050505050565b60006020820190506152646000830184614ea5565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006152d58261542f565b91506152e08361542f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156153155761531461552a565b5b828201905092915050565b600061532b8261542f565b91506153368361542f565b92508261534657615345615559565b5b828204905092915050565b600061535c8261542f565b91506153678361542f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156153a05761539f61552a565b5b828202905092915050565b60006153b68261542f565b91506153c18361542f565b9250828210156153d4576153d361552a565b5b828203905092915050565b60006153ea8261540f565b9050919050565b60006153fc8261540f565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061545182615458565b9050919050565b60006154638261540f565b9050919050565b60006154758261542f565b9050919050565b60005b8381101561549a57808201518184015260208101905061547f565b838111156154a9576000848401525b50505050565b600060028204905060018216806154c757607f821691505b602082108114156154db576154da615588565b5b50919050565b60006154ec8261542f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561551f5761551e61552a565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a20496e73756666696369656e74204572726f7221210000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c6960008201527f6d69742121000000000000000000000000000000000000000000000000000000602082015250565b7f426f7420456e656d792061646472657373205265737472696374656421000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a204d69736d61746368204c656e67746800000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b615919816153df565b811461592457600080fd5b50565b61593081615403565b811461593b57600080fd5b50565b6159478161542f565b811461595257600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d74b9ad62f495d9c5de962a720e5fd8f4743b3210dc665ab855eae7cfd71a14164736f6c63430008040033
Deployed Bytecode
0x6080604052600436106103a65760003560e01c8063844d591c116101e7578063da00097d1161010d578063f1d5f517116100a0578063f872858a1161006f578063f872858a14610dd1578063f8f6329014610dfc578063f9f92be414610e27578063fb4b8e6c14610e64576103ad565b8063f1d5f51714610d2d578063f2fde38b14610d56578063f455444614610d7f578063f84ba65d14610da8576103ad565b8063ec28438a116100dc578063ec28438a14610c87578063ee828db314610cb0578063ef422a1814610cd9578063f0cd1dac14610d02576103ad565b8063da00097d14610bdd578063dc44b6a014610c08578063dd62ed3e14610c33578063e6b2603b14610c70576103ad565b8063a5d69d1f11610185578063c816841b11610154578063c816841b14610b1f578063c860795214610b4a578063c867d60b14610b75578063d2d7ad8314610bb2576103ad565b8063a5d69d1f14610a65578063a9059cbb14610a8e578063c49b9a8014610acb578063c5d2418914610af4576103ad565b80638b42507f116101c15780638b42507f146109955780638da5cb5b146109d257806395d89b41146109fd578063a457c2d714610a28576103ad565b8063844d591c14610916578063852614851461093f57806388790a681461096a576103ad565b806339509351116102cc5780635881f3ef1161026a57806375f0a8741161023957806375f0a8741461086a5780637d1db4a514610895578063807c2d9c146108c057806382eefb43146108eb576103ad565b80635881f3ef146107b057806367243482146107ed57806370a0823114610816578063715018a614610853576103ad565b80634a74bb02116102a65780634a74bb02146106f45780634cb80fd51461071f5780635194f9bf146107485780635342acb414610773576103ad565b806339509351146106515780633b97084a1461068e5780633ecad271146106b7576103ad565b80631870517a116103445780632563ae83116103135780632563ae83146105a757806327c8f835146105d05780632b112e49146105fb578063313ce56714610626576103ad565b80631870517a146104ed5780632198cf6c1461051657806323555d571461053f57806323b872dd1461056a576103ad565b8063095ea7b311610380578063095ea7b314610431578063153b0d1e1461046e5780631694505e1461049757806318160ddd146104c2576103ad565b806306fdde03146103b257806308733214146103dd5780630930907b14610406576103ad565b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610e8d565b6040516103d49190614fe8565b60405180910390f35b3480156103e957600080fd5b5061040460048036038101906103ff9190614b05565b610f1f565b005b34801561041257600080fd5b5061041b610fff565b6040516104289190614ec9565b60405180910390f35b34801561043d57600080fd5b50610458600480360381019061045391906149d9565b611023565b6040516104659190614fb2565b60405180910390f35b34801561047a57600080fd5b506104956004803603810190610490919061499d565b611041565b005b3480156104a357600080fd5b506104ac611131565b6040516104b99190614fcd565b60405180910390f35b3480156104ce57600080fd5b506104d7611157565b6040516104e491906151aa565b60405180910390f35b3480156104f957600080fd5b50610514600480360381019061050f9190614b05565b611161565b005b34801561052257600080fd5b5061053d6004803603810190610538919061499d565b611241565b005b34801561054b57600080fd5b50610554611331565b60405161056191906151aa565b60405180910390f35b34801561057657600080fd5b50610591600480360381019061058c919061494e565b611337565b60405161059e9190614fb2565b60405180910390f35b3480156105b357600080fd5b506105ce60048036038101906105c99190614a8a565b611411565b005b3480156105dc57600080fd5b506105e56114c3565b6040516105f29190614ec9565b60405180910390f35b34801561060757600080fd5b506106106114e7565b60405161061d91906151aa565b60405180910390f35b34801561063257600080fd5b5061063b611565565b604051610648919061524f565b60405180910390f35b34801561065d57600080fd5b50610678600480360381019061067391906149d9565b61157c565b6040516106859190614fb2565b60405180910390f35b34801561069a57600080fd5b506106b560048036038101906106b09190614adc565b61162f565b005b3480156106c357600080fd5b506106de60048036038101906106d991906148c0565b6116ce565b6040516106eb9190614fb2565b60405180910390f35b34801561070057600080fd5b506107096116ee565b6040516107169190614fb2565b60405180910390f35b34801561072b57600080fd5b50610746600480360381019061074191906148c0565b611701565b005b34801561075457600080fd5b5061075d6117da565b60405161076a91906151aa565b60405180910390f35b34801561077f57600080fd5b5061079a600480360381019061079591906148c0565b6117e0565b6040516107a79190614fb2565b60405180910390f35b3480156107bc57600080fd5b506107d760048036038101906107d291906148c0565b611800565b6040516107e49190614ec9565b60405180910390f35b3480156107f957600080fd5b50610814600480360381019061080f9190614a15565b611ce4565b005b34801561082257600080fd5b5061083d600480360381019061083891906148c0565b6121a3565b60405161084a91906151aa565b60405180910390f35b34801561085f57600080fd5b506108686121ec565b005b34801561087657600080fd5b5061087f612341565b60405161088c9190614ee4565b60405180910390f35b3480156108a157600080fd5b506108aa612367565b6040516108b791906151aa565b60405180910390f35b3480156108cc57600080fd5b506108d561236d565b6040516108e291906151aa565b60405180910390f35b3480156108f757600080fd5b50610900612373565b60405161090d91906151aa565b60405180910390f35b34801561092257600080fd5b5061093d6004803603810190610938919061499d565b612379565b005b34801561094b57600080fd5b50610954612469565b6040516109619190614fb2565b60405180910390f35b34801561097657600080fd5b5061097f61247c565b60405161098c91906151aa565b60405180910390f35b3480156109a157600080fd5b506109bc60048036038101906109b791906148c0565b612482565b6040516109c99190614fb2565b60405180910390f35b3480156109de57600080fd5b506109e76124a2565b6040516109f49190614ec9565b60405180910390f35b348015610a0957600080fd5b50610a126124cb565b604051610a1f9190614fe8565b60405180910390f35b348015610a3457600080fd5b50610a4f6004803603810190610a4a91906149d9565b61255d565b604051610a5c9190614fb2565b60405180910390f35b348015610a7157600080fd5b50610a8c6004803603810190610a879190614a8a565b61262a565b005b348015610a9a57600080fd5b50610ab56004803603810190610ab091906149d9565b6126dc565b604051610ac29190614fb2565b60405180910390f35b348015610ad757600080fd5b50610af26004803603810190610aed9190614a8a565b6126fb565b005b348015610b0057600080fd5b50610b096127e4565b604051610b1691906151aa565b60405180910390f35b348015610b2b57600080fd5b50610b346127ea565b604051610b419190614ec9565b60405180910390f35b348015610b5657600080fd5b50610b5f612810565b604051610b6c91906151aa565b60405180910390f35b348015610b8157600080fd5b50610b9c6004803603810190610b9791906148c0565b612816565b604051610ba99190614fb2565b60405180910390f35b348015610bbe57600080fd5b50610bc7612836565b604051610bd491906151aa565b60405180910390f35b348015610be957600080fd5b50610bf261283c565b604051610bff9190614fb2565b60405180910390f35b348015610c1457600080fd5b50610c1d61284f565b604051610c2a91906151aa565b60405180910390f35b348015610c3f57600080fd5b50610c5a6004803603810190610c559190614912565b612855565b604051610c6791906151aa565b60405180910390f35b348015610c7c57600080fd5b50610c856128dc565b005b348015610c9357600080fd5b50610cae6004803603810190610ca99190614adc565b6129ea565b005b348015610cbc57600080fd5b50610cd76004803603810190610cd29190614a8a565b612a89565b005b348015610ce557600080fd5b50610d006004803603810190610cfb919061499d565b612b3b565b005b348015610d0e57600080fd5b50610d17612c2b565b604051610d2491906151aa565b60405180910390f35b348015610d3957600080fd5b50610d546004803603810190610d4f9190614adc565b612c31565b005b348015610d6257600080fd5b50610d7d6004803603810190610d7891906148c0565b612cd0565b005b348015610d8b57600080fd5b50610da66004803603810190610da191906149d9565b612e92565b005b348015610db457600080fd5b50610dcf6004803603810190610dca919061499d565b612fb9565b005b348015610ddd57600080fd5b50610de66130a9565b604051610df39190614fb2565b60405180910390f35b348015610e0857600080fd5b50610e116130bc565b604051610e1e9190614ee4565b60405180910390f35b348015610e3357600080fd5b50610e4e6004803603810190610e4991906148c0565b6130e2565b604051610e5b9190614fb2565b60405180910390f35b348015610e7057600080fd5b50610e8b6004803603810190610e8691906148c0565b613102565b005b606060018054610e9c906154af565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec8906154af565b8015610f155780601f10610eea57610100808354040283529160200191610f15565b820191906000526020600020905b815481529060010190602001808311610ef857829003601f168201915b5050505050905090565b610f276132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fab9061514a565b60405180910390fd5b82600f819055508160108190555080601181905550610ff4601154610fe6601054600f546132a090919063ffffffff16565b6132a090919063ffffffff16565b601381905550505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006110376110306132fe565b8484613306565b6001905092915050565b6110496132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cd9061514a565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601454905090565b6111696132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ed9061514a565b60405180910390fd5b82600c8190555081600d8190555080600e81905550611236600e54611228600d54600c546132a090919063ffffffff16565b6132a090919063ffffffff16565b601281905550505050565b6112496132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cd9061514a565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e5481565b60006113448484846134d1565b50611406846113516132fe565b6114018560405180606001604052806028815260200161595660289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113b76132fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be79092919063ffffffff16565b613306565b600190509392505050565b6114196132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149d9061514a565b60405180910390fd5b80601960176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b60006115606115157f00000000000000000000000000000000000000000000000000000000000000006121a3565b6115526115417f000000000000000000000000000000000000000000000000000000000000dead6121a3565b601454613c4b90919063ffffffff16565b613c4b90919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b60006116256115896132fe565b84611620856006600061159a6132fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a090919063ffffffff16565b613306565b6001905092915050565b6116376132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bb9061514a565b60405180910390fd5b8060158190555050565b60086020528060005260406000206000915054906101000a900460ff1681565b601960159054906101000a900460ff1681565b6117096132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178d9061514a565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60115481565b60076020528060005260406000206000915054906101000a900460ff1681565b600061180a6132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188e9061514a565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156118e257600080fd5b505afa1580156118f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191a91906148e9565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561197c57600080fd5b505afa158015611990573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b491906148e9565b6040518363ffffffff1660e01b81526004016119d1929190614eff565b60206040518083038186803b1580156119e957600080fd5b505afa1580156119fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2191906148e9565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611be2578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611a9e57600080fd5b505afa158015611ab2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad691906148e9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611b3857600080fd5b505afa158015611b4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7091906148e9565b6040518363ffffffff1660e01b8152600401611b8d929190614eff565b602060405180830381600087803b158015611ba757600080fd5b505af1158015611bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bdf91906148e9565b91505b81601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611cec6132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d709061514a565b60405180910390fd5b6000339050828290508585905014611dc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbd9061512a565b60405180910390fd5b600080600090505b84849050811015611e3957848482818110611e12577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002013582611e2491906152ca565b91508080611e31906154e1565b915050611dce565b5080611e44836121a3565b1015611e85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7c9061502a565b60405180910390fd5b611ed781600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c4b90919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060005b8686905081101561219a57612006858583818110611f64577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020135600560008a8a86818110611fa8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002016020810190611fbd91906148c0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a090919063ffffffff16565b60056000898985818110612043577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200201602081019061205891906148c0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508686828181106120cf577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906120e491906148c0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87878581811061216b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002013560405161217f91906151aa565b60405180910390a38080612192906154e1565b915050611f1d565b50505050505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6121f46132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612281576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122789061514a565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b60175481565b60135481565b6123816132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461240e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124059061514a565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960189054906101000a900460ff1681565b600f5481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546124da906154af565b80601f0160208091040260200160405190810160405280929190818152602001828054612506906154af565b80156125535780601f1061252857610100808354040283529160200191612553565b820191906000526020600020905b81548152906001019060200180831161253657829003601f168201915b5050505050905090565b600061262061256a6132fe565b8461261b8560405180606001604052806025815260200161597e60259139600660006125946132fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be79092919063ffffffff16565b613306565b6001905092915050565b6126326132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b69061514a565b60405180910390fd5b80601960166101000a81548160ff02191690831515021790555050565b60006126f06126e96132fe565b84846134d1565b506001905092915050565b6127036132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612790576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127879061514a565b60405180910390fd5b80601960156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516127d99190614fb2565b60405180910390a150565b600d5481565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b600a6020528060005260406000206000915054906101000a900460ff1681565b60155481565b601960169054906101000a900460ff1681565b600c5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6128e46132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612971576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129689061514a565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161299790614eb4565b60006040518083038185875af1925050503d80600081146129d4576040519150601f19603f3d011682016040523d82523d6000602084013e6129d9565b606091505b50509050806129e757600080fd5b50565b6129f26132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a769061514a565b60405180910390fd5b8060168190555050565b612a916132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b159061514a565b60405180910390fd5b80601960186101000a81548160ff02191690831515021790555050565b612b436132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc79061514a565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60125481565b612c396132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612cc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cbd9061514a565b60405180910390fd5b8060178190555050565b612cd86132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5c9061514a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dcc9061504a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612e9a6132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1e9061514a565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612f62929190614f28565b602060405180830381600087803b158015612f7c57600080fd5b505af1158015612f90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fb49190614ab3565b505050565b612fc16132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461304e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130459061514a565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960179054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b61310a6132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613197576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161318e9061514a565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808314156131ee5760009050613250565b600082846131fc9190615351565b905082848261320b9190615320565b1461324b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132429061510a565b60405180910390fd5b809150505b92915050565b600061329883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c95565b905092915050565b60008082846132af91906152ca565b9050838110156132f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132eb9061508a565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161336d9061518a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156133e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133dd9061506a565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516134c491906151aa565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415613542576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135399061516a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156135b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135a99061500a565b60405180910390fd5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156136565750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b613695576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161368c906150ca565b60405180910390fd5b601960149054906101000a900460ff16156136bc576136b5848484613cf8565b9050613be0565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156137605750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137785750601960189054906101000a900460ff165b156137c3576016548211156137c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137b9906150ea565b60405180910390fd5b5b60006137ce306121a3565b9050600060155482101590508080156137f45750601960149054906101000a900460ff16155b801561384a5750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138625750601960159054906101000a900460ff165b1561388c57601960169054906101000a900460ff16156138825760155491505b61388b82613ecb565b5b613915846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be79092919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139fb5750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613a0f57613a0a878787614196565b613a11565b845b9050601960179054906101000a900460ff168015613a795750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613ade57601754613a9c82613a8e896121a3565b6132a090919063ffffffff16565b1115613add576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ad4906150aa565b60405180910390fd5b5b613b3081600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a090919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613bd091906151aa565b60405180910390a3600193505050505b9392505050565b6000838311158290613c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c269190614fe8565b60405180910390fd5b5060008385613c3e91906153ab565b9050809150509392505050565b6000613c8d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613be7565b905092915050565b60008083118290613cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cd39190614fe8565b60405180910390fd5b5060008385613ceb9190615320565b9050809150509392505050565b6000613d83826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be79092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e1882600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a090919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613eb891906151aa565b60405180910390a3600190509392505050565b6001601960146101000a81548160ff0219169083151502179055506000613eff6013546012546132a090919063ffffffff16565b90506000613f1a600f54600c546132a090919063ffffffff16565b90506000613f35601054600d546132a090919063ffffffff16565b90506000613f716002613f6386613f55878a6131db90919063ffffffff16565b61325690919063ffffffff16565b61325690919063ffffffff16565b90506000613f888287613c4b90919063ffffffff16565b90506000479050613f98826143bd565b6000613fad8247613c4b90919063ffffffff16565b90506000613fd7613fc860028961325690919063ffffffff16565b89613c4b90919063ffffffff16565b90506000614013600261400584613ff78c886131db90919063ffffffff16565b61325690919063ffffffff16565b61325690919063ffffffff16565b9050600061403c8361402e8a876131db90919063ffffffff16565b61325690919063ffffffff16565b90506000614065826140578588613c4b90919063ffffffff16565b613c4b90919063ffffffff16565b905060008211156140da57600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156140d8573d6000803e3d6000fd5b505b600081111561414d57600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561414b573d6000803e3d6000fd5b505b60008311801561415d5750600088115b1561416d5761416c88846146ba565b5b50505050505050505050506000601960146101000a81548160ff02191690831515021790555050565b60008060009050600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561421e576142176064614209601254866131db90919063ffffffff16565b61325690919063ffffffff16565b905061429c565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561429b57614298606461428a601354866131db90919063ffffffff16565b61325690919063ffffffff16565b90505b5b60008111156143a0576142f781600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a090919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161439791906151aa565b60405180910390a35b6143b38184613c4b90919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff811115614400577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561442e5781602001602082028036833780820191505090505b509050308160008151811061446c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561450e57600080fd5b505afa158015614522573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061454691906148e9565b81600181518110614580577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506145e730601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613306565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161464b9594939291906151f5565b600060405180830381600087803b15801561466557600080fd5b505af1158015614679573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516146ae9291906151c5565b60405180910390a15050565b6146e730601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613306565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806147336124a2565b426040518863ffffffff1660e01b815260040161475596959493929190614f51565b6060604051808303818588803b15801561476e57600080fd5b505af1158015614782573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906147a79190614b54565b5050505050565b6000813590506147bd81615910565b92915050565b6000815190506147d281615910565b92915050565b60008083601f8401126147ea57600080fd5b8235905067ffffffffffffffff81111561480357600080fd5b60208301915083602082028301111561481b57600080fd5b9250929050565b60008083601f84011261483457600080fd5b8235905067ffffffffffffffff81111561484d57600080fd5b60208301915083602082028301111561486557600080fd5b9250929050565b60008135905061487b81615927565b92915050565b60008151905061489081615927565b92915050565b6000813590506148a58161593e565b92915050565b6000815190506148ba8161593e565b92915050565b6000602082840312156148d257600080fd5b60006148e0848285016147ae565b91505092915050565b6000602082840312156148fb57600080fd5b6000614909848285016147c3565b91505092915050565b6000806040838503121561492557600080fd5b6000614933858286016147ae565b9250506020614944858286016147ae565b9150509250929050565b60008060006060848603121561496357600080fd5b6000614971868287016147ae565b9350506020614982868287016147ae565b925050604061499386828701614896565b9150509250925092565b600080604083850312156149b057600080fd5b60006149be858286016147ae565b92505060206149cf8582860161486c565b9150509250929050565b600080604083850312156149ec57600080fd5b60006149fa858286016147ae565b9250506020614a0b85828601614896565b9150509250929050565b60008060008060408587031215614a2b57600080fd5b600085013567ffffffffffffffff811115614a4557600080fd5b614a51878288016147d8565b9450945050602085013567ffffffffffffffff811115614a7057600080fd5b614a7c87828801614822565b925092505092959194509250565b600060208284031215614a9c57600080fd5b6000614aaa8482850161486c565b91505092915050565b600060208284031215614ac557600080fd5b6000614ad384828501614881565b91505092915050565b600060208284031215614aee57600080fd5b6000614afc84828501614896565b91505092915050565b600080600060608486031215614b1a57600080fd5b6000614b2886828701614896565b9350506020614b3986828701614896565b9250506040614b4a86828701614896565b9150509250925092565b600080600060608486031215614b6957600080fd5b6000614b77868287016148ab565b9350506020614b88868287016148ab565b9250506040614b99868287016148ab565b9150509250925092565b6000614baf8383614bca565b60208301905092915050565b614bc4816153f1565b82525050565b614bd3816153df565b82525050565b614be2816153df565b82525050565b6000614bf38261527a565b614bfd818561529d565b9350614c088361526a565b8060005b83811015614c39578151614c208882614ba3565b9750614c2b83615290565b925050600181019050614c0c565b5085935050505092915050565b614c4f81615403565b82525050565b614c5e81615446565b82525050565b614c6d8161546a565b82525050565b6000614c7e82615285565b614c8881856152b9565b9350614c9881856020860161547c565b614ca1816155b7565b840191505092915050565b6000614cb96023836152b9565b9150614cc4826155c8565b604082019050919050565b6000614cdc601b836152b9565b9150614ce782615617565b602082019050919050565b6000614cff6026836152b9565b9150614d0a82615640565b604082019050919050565b6000614d226022836152b9565b9150614d2d8261568f565b604082019050919050565b6000614d45601b836152b9565b9150614d50826156de565b602082019050919050565b6000614d686025836152b9565b9150614d7382615707565b604082019050919050565b6000614d8b601d836152b9565b9150614d9682615756565b602082019050919050565b6000614dae6028836152b9565b9150614db98261577f565b604082019050919050565b6000614dd16021836152b9565b9150614ddc826157ce565b604082019050919050565b6000614df46016836152b9565b9150614dff8261581d565b602082019050919050565b6000614e176020836152b9565b9150614e2282615846565b602082019050919050565b6000614e3a6025836152b9565b9150614e458261586f565b604082019050919050565b6000614e5d6000836152ae565b9150614e68826158be565b600082019050919050565b6000614e806024836152b9565b9150614e8b826158c1565b604082019050919050565b614e9f8161542f565b82525050565b614eae81615439565b82525050565b6000614ebf82614e50565b9150819050919050565b6000602082019050614ede6000830184614bd9565b92915050565b6000602082019050614ef96000830184614bbb565b92915050565b6000604082019050614f146000830185614bd9565b614f216020830184614bd9565b9392505050565b6000604082019050614f3d6000830185614bd9565b614f4a6020830184614e96565b9392505050565b600060c082019050614f666000830189614bd9565b614f736020830188614e96565b614f806040830187614c64565b614f8d6060830186614c64565b614f9a6080830185614bd9565b614fa760a0830184614e96565b979650505050505050565b6000602082019050614fc76000830184614c46565b92915050565b6000602082019050614fe26000830184614c55565b92915050565b600060208201905081810360008301526150028184614c73565b905092915050565b6000602082019050818103600083015261502381614cac565b9050919050565b6000602082019050818103600083015261504381614ccf565b9050919050565b6000602082019050818103600083015261506381614cf2565b9050919050565b6000602082019050818103600083015261508381614d15565b9050919050565b600060208201905081810360008301526150a381614d38565b9050919050565b600060208201905081810360008301526150c381614d5b565b9050919050565b600060208201905081810360008301526150e381614d7e565b9050919050565b6000602082019050818103600083015261510381614da1565b9050919050565b6000602082019050818103600083015261512381614dc4565b9050919050565b6000602082019050818103600083015261514381614de7565b9050919050565b6000602082019050818103600083015261516381614e0a565b9050919050565b6000602082019050818103600083015261518381614e2d565b9050919050565b600060208201905081810360008301526151a381614e73565b9050919050565b60006020820190506151bf6000830184614e96565b92915050565b60006040820190506151da6000830185614e96565b81810360208301526151ec8184614be8565b90509392505050565b600060a08201905061520a6000830188614e96565b6152176020830187614c64565b81810360408301526152298186614be8565b90506152386060830185614bd9565b6152456080830184614e96565b9695505050505050565b60006020820190506152646000830184614ea5565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006152d58261542f565b91506152e08361542f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156153155761531461552a565b5b828201905092915050565b600061532b8261542f565b91506153368361542f565b92508261534657615345615559565b5b828204905092915050565b600061535c8261542f565b91506153678361542f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156153a05761539f61552a565b5b828202905092915050565b60006153b68261542f565b91506153c18361542f565b9250828210156153d4576153d361552a565b5b828203905092915050565b60006153ea8261540f565b9050919050565b60006153fc8261540f565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061545182615458565b9050919050565b60006154638261540f565b9050919050565b60006154758261542f565b9050919050565b60005b8381101561549a57808201518184015260208101905061547f565b838111156154a9576000848401525b50505050565b600060028204905060018216806154c757607f821691505b602082108114156154db576154da615588565b5b50919050565b60006154ec8261542f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561551f5761551e61552a565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a20496e73756666696369656e74204572726f7221210000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c6960008201527f6d69742121000000000000000000000000000000000000000000000000000000602082015250565b7f426f7420456e656d792061646472657373205265737472696374656421000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a204d69736d61746368204c656e67746800000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b615919816153df565b811461592457600080fd5b50565b61593081615403565b811461593b57600080fd5b50565b6159478161542f565b811461595257600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d74b9ad62f495d9c5de962a720e5fd8f4743b3210dc665ab855eae7cfd71a14164736f6c63430008040033
Deployed Bytecode Sourcemap
11812:16343:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15745:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20676:317;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12321:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16911:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19344:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13467:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16022:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20359:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17844:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12897:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21270:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18221:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12233:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19180:156;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15931:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16408:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18452:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12595:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13582:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18584:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13032:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12538:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19603:748;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27447:697;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16130:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3489:230;;;;;;;;;;;;;:::i;:::-;;12029:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13313:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13389:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13116:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17425:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13725:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12945:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12755:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3264:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15836:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16634:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19043:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21095:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18864:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12854:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13515:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12988:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12696:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13224:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13629:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12812:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16257:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23632:154;;;;;;;;;;;;;:::i;:::-;;18102:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17987:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17562:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13077:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18342:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3727:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23485:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17705:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13683:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12128:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12647:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18724:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15745:83;15782:13;15815:5;15808:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15745:83;:::o;20676:317::-;3408:12;:10;:12::i;:::-;3398:22;;:6;;;;;;;;;;:22;;;3390:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20798:10:::1;20778:17;:30;;;;20839:10;20819:17;:30;;;;20880:10;20860:17;:30;;;;20922:63;20967:17;;20922:40;20944:17;;20922;;:21;;:40;;;;:::i;:::-;:44;;:63;;;;:::i;:::-;20901:18;:84;;;;20676:317:::0;;;:::o;12321:81::-;;;:::o;16911:161::-;16986:4;17003:39;17012:12;:10;:12::i;:::-;17026:7;17035:6;17003:8;:39::i;:::-;17060:4;17053:11;;16911:161;;;;:::o;19344:113::-;3408:12;:10;:12::i;:::-;3398:22;;:6;;;;;;;;;;:22;;;3390:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19442:7:::1;19424:9;:15;19434:4;19424:15;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;19344:113:::0;;:::o;13467:41::-;;;;;;;;;;;;;:::o;16022:100::-;16075:7;16102:12;;16095:19;;16022:100;:::o;20359:309::-;3408:12;:10;:12::i;:::-;3398:22;;:6;;;;;;;;;;:22;;;3390:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20479:10:::1;20460:16;:29;;;;20519:10;20500:16;:29;;;;20559:10;20540:16;:29;;;;20600:60;20643:16;;20600:38;20621:16;;20600;;:20;;:38;;;;:::i;:::-;:42;;:60;;;;:::i;:::-;20580:17;:80;;;;20359:309:::0;;;:::o;17844:135::-;3408:12;:10;:12::i;:::-;3398:22;;:6;;;;;;;;;;:22;;;3390:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17965:6:::1;17935:19;:27;17955:6;17935:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;17844:135:::0;;:::o;12897:35::-;;;;:::o;21270:313::-;21368:4;21385:36;21395:6;21403:9;21414:6;21385:9;:36::i;:::-;;21432:121;21441:6;21449:12;:10;:12::i;:::-;21463:89;21501:6;21463:89;;;;;;;;;;;;;;;;;:11;:19;21475:6;21463:19;;;;;;;;;;;;;;;:33;21483:12;:10;:12::i;:::-;21463:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;21432:8;:121::i;:::-;21571:4;21564:11;;21270:313;;;;;:::o;18221:113::-;3408:12;:10;:12::i;:::-;3398:22;;:6;;;;;;;;;;:22;;;3390:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18318:8:::1;18299:16;;:27;;;;;;;;;;;;;;;;;;18221:113:::0;:::o;12233:81::-;;;:::o;19180:156::-;19233:7;19260:68;19305:22;19315:11;19305:9;:22::i;:::-;19260:40;19277:22;19287:11;19277:9;:22::i;:::-;19260:12;;:16;;:40;;;;:::i;:::-;:44;;:68;;;;:::i;:::-;19253:75;;19180:156;:::o;15931:83::-;15972:5;15997:9;;;;;;;;;;;15990:16;;15931:83;:::o;16408:218::-;16496:4;16513:83;16522:12;:10;:12::i;:::-;16536:7;16545:50;16584:10;16545:11;:25;16557:12;:10;:12::i;:::-;16545:25;;;;;;;;;;;;;;;:34;16571:7;16545:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;16513:8;:83::i;:::-;16614:4;16607:11;;16408:218;;;;:::o;18452:124::-;3408:12;:10;:12::i;:::-;3398:22;;:6;;;;;;;;;;:22;;;3390:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18560:8:::1;18534:23;:34;;;;18452:124:::0;:::o;12595:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;13582:40::-;;;;;;;;;;;;;:::o;18584:132::-;3408:12;:10;:12::i;:::-;3398:22;;:6;;;;;;;;;;:22;;;3390:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18697:10:::1;18671:15;;:37;;;;;;;;;;;;;;;;;;18584:132:::0;:::o;13032:36::-;;;;:::o;12538:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;19603:748::-;19683:22;3408:12;:10;:12::i;:::-;3398:22;;:6;;;;;;;;;;:22;;;3390:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19720:35:::1;19777:16;19720:74;;19843:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19825:53;;;19887:4;19894:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19825:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19808:110;;19960:1;19934:28;;:14;:28;;;19931:225;;;20048:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20030:74;;;20113:4;20120:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20030:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20013:131;;19931:225;20182:14;20168:11;;:28;;;;;;;;;;;;;;;;;;20248:16;20230:15;;:34;;;;;;;;;;;;;;;;;;20339:4;20302:12;:34;20323:11;;;;;;;;;;;20302:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;3468:1;19603:748:::0;;;:::o;27447:697::-;3408:12;:10;:12::i;:::-;3398:22;;:6;;;;;;;;;;:22;;;3390:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27547:15:::1;27565:10;27547:28;;27613:7;;:14;;27594:8;;:15;;:33;27586:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27664:15;27694:6:::0;27703:1:::1;27694:10;;27690:92;27710:7;;:14;;27706:1;:18;27690:92;;;27760:7;;27768:1;27760:10;;;;;;;;;;;;;;;;;;;;;27746:24;;;;;:::i;:::-;;;27726:3;;;;;:::i;:::-;;;;27690:92;;;;27822:10;27800:18;27810:7;27800:9;:18::i;:::-;:32;;27792:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;27895:34;27918:10;27895:9;:18;27905:7;27895:18;;;;;;;;;;;;;;;;:22;;:34;;;;:::i;:::-;27874:9;:18;27884:7;27874:18;;;;;;;;;;;;;;;:55;;;;27945:6;27941:194;27961:8;;:15;;27957:1;:19;27941:194;;;28023:38;28050:7;;28058:1;28050:10;;;;;;;;;;;;;;;;;;;;;28023:9;:22;28033:8;;28042:1;28033:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28023:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;27998:9;:22;28008:8;;28017:1;28008:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27998:22;;;;;;;;;;;;;;;:63;;;;28099:8;;28108:1;28099:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28081:42;;28090:7;28081:42;;;28112:7;;28120:1;28112:10;;;;;;;;;;;;;;;;;;;;;28081:42;;;;;;:::i;:::-;;;;;;;;27978:3;;;;;:::i;:::-;;;;27941:194;;;;3468:1;;27447:697:::0;;;;:::o;16130:119::-;16196:7;16223:9;:18;16233:7;16223:18;;;;;;;;;;;;;;;;16216:25;;16130:119;;;:::o;3489:230::-;3408:12;:10;:12::i;:::-;3398:22;;:6;;;;;;;;;;:22;;;3390:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3596:42:::1;3559:81;;3580:6;::::0;::::1;;;;;;;;3559:81;;;;;;;;;;;;3668:42;3651:6;::::0;:60:::1;;;;;;;;;;;;;;;;;;3489:230::o:0;12029:92::-;;;;;;;;;;;;;:::o;13313:61::-;;;;:::o;13389:60::-;;;;:::o;13116:33::-;;;;:::o;17425:129::-;3408:12;:10;:12::i;:::-;3398:22;;:6;;;;;;;;;;:22;;;3390:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17538:8:::1;17514:12;:21;17527:7;17514:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;17425:129:::0;;:::o;13725:41::-;;;;;;;;;;;;;:::o;12945:36::-;;;;:::o;12755:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;3264:79::-;3302:7;3329:6;;;;;;;;;;;3322:13;;3264:79;:::o;15836:87::-;15875:13;15908:7;15901:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15836:87;:::o;16634:269::-;16727:4;16744:129;16753:12;:10;:12::i;:::-;16767:7;16776:96;16815:15;16776:96;;;;;;;;;;;;;;;;;:11;:25;16788:12;:10;:12::i;:::-;16776:25;;;;;;;;;;;;;;;:34;16802:7;16776:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;16744:8;:129::i;:::-;16891:4;16884:11;;16634:269;;;;:::o;19043:125::-;3408:12;:10;:12::i;:::-;3398:22;;:6;;;;;;;;;;:22;;;3390:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19152:8:::1;19124:25;;:36;;;;;;;;;;;;;;;;;;19043:125:::0;:::o;21095:167::-;21173:4;21190:42;21200:12;:10;:12::i;:::-;21214:9;21225:6;21190:9;:42::i;:::-;;21250:4;21243:11;;21095:167;;;;:::o;18864:171::-;3408:12;:10;:12::i;:::-;3398:22;;:6;;;;;;;;;;:22;;;3390:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18965:8:::1;18941:21;;:32;;;;;;;;;;;;;;;;;;18989:38;19018:8;18989:38;;;;;;:::i;:::-;;;;;;;;18864:171:::0;:::o;12854:36::-;;;;:::o;13515:26::-;;;;;;;;;;;;;:::o;12988:37::-;;;;:::o;12696:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;13224:69::-;;;;:::o;13629:45::-;;;;;;;;;;;;;:::o;12812:35::-;;;;:::o;16257:143::-;16338:7;16365:11;:18;16377:5;16365:18;;;;;;;;;;;;;;;:27;16384:7;16365:27;;;;;;;;;;;;;;;;16358:34;;16257:143;;;;:::o;23632:154::-;3408:12;:10;:12::i;:::-;3398:22;;:6;;;;;;;;;;:22;;;3390:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23686:7:::1;23706:10;23698:24;;23730:21;23698:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23685:71;;;23775:2;23767:11;;;::::0;::::1;;3468:1;23632:154::o:0;18102:111::-;3408:12;:10;:12::i;:::-;3398:22;;:6;;;;;;;;;;:22;;;3390:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18194:11:::1;18179:12;:26;;;;18102:111:::0;:::o;17987:107::-;3408:12;:10;:12::i;:::-;3398:22;;:6;;;;;;;;;;:22;;;3390:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18079:7:::1;18054:22;;:32;;;;;;;;;;;;;;;;;;17987:107:::0;:::o;17562:135::-;3408:12;:10;:12::i;:::-;3398:22;;:6;;;;;;;;;;:22;;;3390:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17681:8:::1;17652:17;:26;17670:7;17652:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;17562:135:::0;;:::o;13077:32::-;;;;:::o;18342:102::-;3408:12;:10;:12::i;:::-;3398:22;;:6;;;;;;;;;;:22;;;3390:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18428:8:::1;18414:10;:22;;;;18342:102:::0;:::o;3727:244::-;3408:12;:10;:12::i;:::-;3398:22;;:6;;;;;;;;;;:22;;;3390:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3836:1:::1;3816:22;;:8;:22;;;;3808:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3926:8;3897:38;;3918:6;::::0;::::1;;;;;;;;3897:38;;;;;;;;;;;;3955:8;3946:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3727:244:::0;:::o;23485:139::-;3408:12;:10;:12::i;:::-;3398:22;;:6;;;;;;;;;;:22;;;3390:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23580:6:::1;23573:23;;;23597:10;23608:7;23573:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23485:139:::0;;:::o;17705:127::-;3408:12;:10;:12::i;:::-;3398:22;;:6;;;;;;;;;;:22;;;3390:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17818:6:::1;17792:15;:23;17808:6;17792:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;17705:127:::0;;:::o;13683:35::-;;;;;;;;;;;;;:::o;12128:92::-;;;;;;;;;;;;;:::o;12647:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;18724:132::-;3408:12;:10;:12::i;:::-;3398:22;;:6;;;;;;;;;;:22;;;3390:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18837:10:::1;18811:15;;:37;;;;;;;;;;;;;;;;;;18724:132:::0;:::o;1949:250::-;2007:7;2036:1;2031;:6;2027:47;;;2061:1;2054:8;;;;2027:47;2086:9;2102:1;2098;:5;;;;:::i;:::-;2086:17;;2131:1;2126;2122;:5;;;;:::i;:::-;:10;2114:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2190:1;2183:8;;;1949:250;;;;;:::o;2207:132::-;2265:7;2292:39;2296:1;2299;2292:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2285:46;;2207:132;;;;:::o;1416:181::-;1474:7;1494:9;1510:1;1506;:5;;;;:::i;:::-;1494:17;;1535:1;1530;:6;;1522:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1588:1;1581:8;;;1416:181;;;;:::o;474:115::-;527:15;570:10;555:26;;474:115;:::o;17080:337::-;17190:1;17173:19;;:5;:19;;;;17165:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17271:1;17252:21;;:7;:21;;;;17244:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17355:6;17325:11;:18;17337:5;17325:18;;;;;;;;;;;;;;;:27;17344:7;17325:27;;;;;;;;;;;;;;;:36;;;;17393:7;17377:32;;17386:5;17377:32;;;17402:6;17377:32;;;;;;:::i;:::-;;;;;;;;17080:337;;;:::o;21591:1886::-;21678:4;21723:1;21705:20;;:6;:20;;;;21697:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;21807:1;21786:23;;:9;:23;;;;21778:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;21869:9;:17;21879:6;21869:17;;;;;;;;;;;;;;;;;;;;;;;;;21868:18;:43;;;;;21891:9;:20;21901:9;21891:20;;;;;;;;;;;;;;;;;;;;;;;;;21890:21;21868:43;21860:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;21961:16;;;;;;;;;;;21958:1502;;;22011:41;22026:6;22034:9;22045:6;22011:14;:41::i;:::-;22004:48;;;;21958:1502;22110:15;:23;22126:6;22110:23;;;;;;;;;;;;;;;;;;;;;;;;;22109:24;:55;;;;;22138:15;:26;22154:9;22138:26;;;;;;;;;;;;;;;;;;;;;;;;;22137:27;22109:55;:81;;;;;22168:22;;;;;;;;;;;22109:81;22106:196;;;22229:12;;22219:6;:22;;22211:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;22106:196;22318:28;22349:24;22367:4;22349:9;:24::i;:::-;22318:55;;22388:28;22443:23;;22419:20;:47;;22388:78;;22499:23;:44;;;;;22527:16;;;;;;;;;;;22526:17;22499:44;:69;;;;;22548:12;:20;22561:6;22548:20;;;;;;;;;;;;;;;;;;;;;;;;;22547:21;22499:69;:94;;;;;22572:21;;;;;;;;;;;22499:94;22495:305;;;22631:25;;;;;;;;;;;22628:97;;;22702:23;;22679:46;;22628:97;22744:36;22759:20;22744:14;:36::i;:::-;22495:305;22836:53;22858:6;22836:53;;;;;;;;;;;;;;;;;:9;:17;22846:6;22836:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;22816:9;:17;22826:6;22816:17;;;;;;;;;;;;;;;:73;;;;22906:19;22929:17;:25;22947:6;22929:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;22958:17;:28;22976:9;22958:28;;;;;;;;;;;;;;;;;;;;;;;;;22929:57;22928:148;;23042:34;23050:6;23058:9;23069:6;23042:7;:34::i;:::-;22928:148;;;23033:6;22928:148;22906:170;;23096:16;;;;;;;;;;;:51;;;;;23117:19;:30;23137:9;23117:30;;;;;;;;;;;;;;;;;;;;;;;;;23116:31;23096:51;23093:191;;;23217:10;;23176:37;23201:11;23176:20;23186:9;23176;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;23168:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;23093:191;23323:37;23348:11;23323:9;:20;23333:9;23323:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;23300:9;:20;23310:9;23300:20;;;;;;;;;;;;;;;:60;;;;23399:9;23382:40;;23391:6;23382:40;;;23410:11;23382:40;;;;;;:::i;:::-;;;;;;;;23444:4;23437:11;;;;;21591:1886;;;;;;:::o;1749:192::-;1835:7;1868:1;1863;:6;;1871:12;1855:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1895:9;1911:1;1907;:5;;;;:::i;:::-;1895:17;;1932:1;1925:8;;;1749:192;;;;;:::o;1605:136::-;1663:7;1690:43;1694:1;1697;1690:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1683:50;;1605:136;;;;:::o;2347:278::-;2433:7;2465:1;2461;:5;2468:12;2453:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2492:9;2508:1;2504;:5;;;;:::i;:::-;2492:17;;2616:1;2609:8;;;2347:278;;;;;:::o;23794:330::-;23887:4;23924:53;23946:6;23924:53;;;;;;;;;;;;;;;;;:9;:17;23934:6;23924:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;23904:9;:17;23914:6;23904:17;;;;;;;;;;;;;;;:73;;;;24011:32;24036:6;24011:9;:20;24021:9;24011:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;23988:9;:20;23998:9;23988:20;;;;;;;;;;;;;;;:55;;;;24076:9;24059:35;;24068:6;24059:35;;;24087:6;24059:35;;;;;;:::i;:::-;;;;;;;;24112:4;24105:11;;23794:330;;;;;:::o;24132:1449::-;14210:4;14191:16;;:23;;;;;;;;;;;;;;;;;;24206:19:::1;24228:41;24250:18;;24228:17;;:21;;:41;;;;:::i;:::-;24206:63;;24282:22;24307:39;24328:17;;24307:16;;:20;;:39;;;;:::i;:::-;24282:64;;24357:22;24382:39;24403:17;;24382:16;;:20;;:39;;;;:::i;:::-;24357:64;;24520:18;24541:51;24590:1;24541:44;24573:11;24541:27;24553:14;24541:7;:11;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;24520:72;;24603:20;24626:23;24638:10;24626:7;:11;;:23;;;;:::i;:::-;24603:46;;24662:22;24688:21;24662:47;;24720:30;24737:12;24720:16;:30::i;:::-;24761:23;24788:41;24814:14;24788:21;:25;;:41;;;;:::i;:::-;24761:68;;24842:19;24864:38;24880:21;24899:1;24880:14;:18;;:21;;;;:::i;:::-;24864:11;:15;;:38;;;;:::i;:::-;24842:60;;24915:26;24944:59;25001:1;24944:52;24984:11;24944:35;24964:14;24944:15;:19;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;24915:88;;25014:26;25043:52;25083:11;25043:35;25063:14;25043:15;:19;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;25014:81;;25106:26;25135:63;25179:18;25135:39;25155:18;25135:15;:19;;:39;;;;:::i;:::-;:43;;:63;;;;:::i;:::-;25106:92;;25235:1;25214:18;:22;25211:107;;;25261:15;;;;;;;;;;;25253:33;;:53;25287:18;25253:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;25211:107;25354:1;25333:18;:22;25330:107;;;25380:15;;;;;;;;;;;25372:33;;:53;25406:18;25372:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;25330:107;25482:1;25461:18;:22;:40;;;;;25500:1;25487:10;:14;25461:40;25458:116;;;25518:44;25531:10;25543:18;25518:12;:44::i;:::-;25458:116;14225:1;;;;;;;;;;;14256:5:::0;14237:16;;:24;;;;;;;;;;;;;;;;;;24132:1449;:::o;26788:622::-;26874:7;26904:17;26924:1;26904:21;;26949:12;:20;26962:6;26949:20;;;;;;;;;;;;;;;;;;;;;;;;;26946:223;;;26998:38;27032:3;26998:29;27009:17;;26998:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;26986:50;;26946:223;;;27066:12;:23;27079:9;27066:23;;;;;;;;;;;;;;;;;;;;;;;;;27063:106;;;27118:39;27153:3;27118:30;27129:18;;27118:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;27106:51;;27063:106;26946:223;27204:1;27192:9;:13;27189:173;;;27249:39;27278:9;27249;:24;27267:4;27249:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;27222:9;:24;27240:4;27222:24;;;;;;;;;;;;;;;:66;;;;27333:4;27308:42;;27317:6;27308:42;;;27340:9;27308:42;;;;;;:::i;:::-;;;;;;;;27189:173;27381:21;27392:9;27381:6;:10;;:21;;;;:::i;:::-;27374:28;;;26788:622;;;;;:::o;25593:666::-;25719:21;25757:1;25743:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25719:40;;25788:4;25770;25775:1;25770:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;25814:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25804:4;25809:1;25804:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;25849:62;25866:4;25881:15;;;;;;;;;;;25899:11;25849:8;:62::i;:::-;25950:15;;;;;;;;;;;:66;;;26031:11;26057:1;26101:4;26128;26164:15;25950:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26216:35;26233:11;26246:4;26216:35;;;;;;;:::i;:::-;;;;;;;;25593:666;;:::o;26267:513::-;26415:62;26432:4;26447:15;;;;;;;;;;;26465:11;26415:8;:62::i;:::-;26520:15;;;;;;;;;;;:31;;;26559:9;26592:4;26612:11;26638:1;26681;26724:7;:5;:7::i;:::-;26746:15;26520:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;26267:513;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;318:367::-;391:8;401:6;451:3;444:4;436:6;432:17;428:27;418:2;;469:1;466;459:12;418:2;505:6;492:20;482:30;;535:18;527:6;524:30;521:2;;;567:1;564;557:12;521:2;604:4;596:6;592:17;580:29;;658:3;650:4;642:6;638:17;628:8;624:32;621:41;618:2;;;675:1;672;665:12;618:2;408:277;;;;;:::o;708:367::-;781:8;791:6;841:3;834:4;826:6;822:17;818:27;808:2;;859:1;856;849:12;808:2;895:6;882:20;872:30;;925:18;917:6;914:30;911:2;;;957:1;954;947:12;911:2;994:4;986:6;982:17;970:29;;1048:3;1040:4;1032:6;1028:17;1018:8;1014:32;1011:41;1008:2;;;1065:1;1062;1055:12;1008:2;798:277;;;;;:::o;1081:133::-;1124:5;1162:6;1149:20;1140:29;;1178:30;1202:5;1178:30;:::i;:::-;1130:84;;;;:::o;1220:137::-;1274:5;1305:6;1299:13;1290:22;;1321:30;1345:5;1321:30;:::i;:::-;1280:77;;;;:::o;1363:139::-;1409:5;1447:6;1434:20;1425:29;;1463:33;1490:5;1463:33;:::i;:::-;1415:87;;;;:::o;1508:143::-;1565:5;1596:6;1590:13;1581:22;;1612:33;1639:5;1612:33;:::i;:::-;1571:80;;;;:::o;1657:262::-;1716:6;1765:2;1753:9;1744:7;1740:23;1736:32;1733:2;;;1781:1;1778;1771:12;1733:2;1824:1;1849:53;1894:7;1885:6;1874:9;1870:22;1849:53;:::i;:::-;1839:63;;1795:117;1723:196;;;;:::o;1925:284::-;1995:6;2044:2;2032:9;2023:7;2019:23;2015:32;2012:2;;;2060:1;2057;2050:12;2012:2;2103:1;2128:64;2184:7;2175:6;2164:9;2160:22;2128:64;:::i;:::-;2118:74;;2074:128;2002:207;;;;:::o;2215:407::-;2283:6;2291;2340:2;2328:9;2319:7;2315:23;2311:32;2308:2;;;2356:1;2353;2346:12;2308:2;2399:1;2424:53;2469:7;2460:6;2449:9;2445:22;2424:53;:::i;:::-;2414:63;;2370:117;2526:2;2552:53;2597:7;2588:6;2577:9;2573:22;2552:53;:::i;:::-;2542:63;;2497:118;2298:324;;;;;:::o;2628:552::-;2705:6;2713;2721;2770:2;2758:9;2749:7;2745:23;2741:32;2738:2;;;2786:1;2783;2776:12;2738:2;2829:1;2854:53;2899:7;2890:6;2879:9;2875:22;2854:53;:::i;:::-;2844:63;;2800:117;2956:2;2982:53;3027:7;3018:6;3007:9;3003:22;2982:53;:::i;:::-;2972:63;;2927:118;3084:2;3110:53;3155:7;3146:6;3135:9;3131:22;3110:53;:::i;:::-;3100:63;;3055:118;2728:452;;;;;:::o;3186:401::-;3251:6;3259;3308:2;3296:9;3287:7;3283:23;3279:32;3276:2;;;3324:1;3321;3314:12;3276:2;3367:1;3392:53;3437:7;3428:6;3417:9;3413:22;3392:53;:::i;:::-;3382:63;;3338:117;3494:2;3520:50;3562:7;3553:6;3542:9;3538:22;3520:50;:::i;:::-;3510:60;;3465:115;3266:321;;;;;:::o;3593:407::-;3661:6;3669;3718:2;3706:9;3697:7;3693:23;3689:32;3686:2;;;3734:1;3731;3724:12;3686:2;3777:1;3802:53;3847:7;3838:6;3827:9;3823:22;3802:53;:::i;:::-;3792:63;;3748:117;3904:2;3930:53;3975:7;3966:6;3955:9;3951:22;3930:53;:::i;:::-;3920:63;;3875:118;3676:324;;;;;:::o;4006:733::-;4128:6;4136;4144;4152;4201:2;4189:9;4180:7;4176:23;4172:32;4169:2;;;4217:1;4214;4207:12;4169:2;4288:1;4277:9;4273:17;4260:31;4318:18;4310:6;4307:30;4304:2;;;4350:1;4347;4340:12;4304:2;4386:80;4458:7;4449:6;4438:9;4434:22;4386:80;:::i;:::-;4368:98;;;;4231:245;4543:2;4532:9;4528:18;4515:32;4574:18;4566:6;4563:30;4560:2;;;4606:1;4603;4596:12;4560:2;4642:80;4714:7;4705:6;4694:9;4690:22;4642:80;:::i;:::-;4624:98;;;;4486:246;4159:580;;;;;;;:::o;4745:256::-;4801:6;4850:2;4838:9;4829:7;4825:23;4821:32;4818:2;;;4866:1;4863;4856:12;4818:2;4909:1;4934:50;4976:7;4967:6;4956:9;4952:22;4934:50;:::i;:::-;4924:60;;4880:114;4808:193;;;;:::o;5007:278::-;5074:6;5123:2;5111:9;5102:7;5098:23;5094:32;5091:2;;;5139:1;5136;5129:12;5091:2;5182:1;5207:61;5260:7;5251:6;5240:9;5236:22;5207:61;:::i;:::-;5197:71;;5153:125;5081:204;;;;:::o;5291:262::-;5350:6;5399:2;5387:9;5378:7;5374:23;5370:32;5367:2;;;5415:1;5412;5405:12;5367:2;5458:1;5483:53;5528:7;5519:6;5508:9;5504:22;5483:53;:::i;:::-;5473:63;;5429:117;5357:196;;;;:::o;5559:552::-;5636:6;5644;5652;5701:2;5689:9;5680:7;5676:23;5672:32;5669:2;;;5717:1;5714;5707:12;5669:2;5760:1;5785:53;5830:7;5821:6;5810:9;5806:22;5785:53;:::i;:::-;5775:63;;5731:117;5887:2;5913:53;5958:7;5949:6;5938:9;5934:22;5913:53;:::i;:::-;5903:63;;5858:118;6015:2;6041:53;6086:7;6077:6;6066:9;6062:22;6041:53;:::i;:::-;6031:63;;5986:118;5659:452;;;;;:::o;6117:596::-;6205:6;6213;6221;6270:2;6258:9;6249:7;6245:23;6241:32;6238:2;;;6286:1;6283;6276:12;6238:2;6329:1;6354:64;6410:7;6401:6;6390:9;6386:22;6354:64;:::i;:::-;6344:74;;6300:128;6467:2;6493:64;6549:7;6540:6;6529:9;6525:22;6493:64;:::i;:::-;6483:74;;6438:129;6606:2;6632:64;6688:7;6679:6;6668:9;6664:22;6632:64;:::i;:::-;6622:74;;6577:129;6228:485;;;;;:::o;6719:179::-;6788:10;6809:46;6851:3;6843:6;6809:46;:::i;:::-;6887:4;6882:3;6878:14;6864:28;;6799:99;;;;:::o;6904:142::-;7007:32;7033:5;7007:32;:::i;:::-;7002:3;6995:45;6985:61;;:::o;7052:108::-;7129:24;7147:5;7129:24;:::i;:::-;7124:3;7117:37;7107:53;;:::o;7166:118::-;7253:24;7271:5;7253:24;:::i;:::-;7248:3;7241:37;7231:53;;:::o;7320:732::-;7439:3;7468:54;7516:5;7468:54;:::i;:::-;7538:86;7617:6;7612:3;7538:86;:::i;:::-;7531:93;;7648:56;7698:5;7648:56;:::i;:::-;7727:7;7758:1;7743:284;7768:6;7765:1;7762:13;7743:284;;;7844:6;7838:13;7871:63;7930:3;7915:13;7871:63;:::i;:::-;7864:70;;7957:60;8010:6;7957:60;:::i;:::-;7947:70;;7803:224;7790:1;7787;7783:9;7778:14;;7743:284;;;7747:14;8043:3;8036:10;;7444:608;;;;;;;:::o;8058:109::-;8139:21;8154:5;8139:21;:::i;:::-;8134:3;8127:34;8117:50;;:::o;8173:185::-;8287:64;8345:5;8287:64;:::i;:::-;8282:3;8275:77;8265:93;;:::o;8364:147::-;8459:45;8498:5;8459:45;:::i;:::-;8454:3;8447:58;8437:74;;:::o;8517:364::-;8605:3;8633:39;8666:5;8633:39;:::i;:::-;8688:71;8752:6;8747:3;8688:71;:::i;:::-;8681:78;;8768:52;8813:6;8808:3;8801:4;8794:5;8790:16;8768:52;:::i;:::-;8845:29;8867:6;8845:29;:::i;:::-;8840:3;8836:39;8829:46;;8609:272;;;;;:::o;8887:366::-;9029:3;9050:67;9114:2;9109:3;9050:67;:::i;:::-;9043:74;;9126:93;9215:3;9126:93;:::i;:::-;9244:2;9239:3;9235:12;9228:19;;9033:220;;;:::o;9259:366::-;9401:3;9422:67;9486:2;9481:3;9422:67;:::i;:::-;9415:74;;9498:93;9587:3;9498:93;:::i;:::-;9616:2;9611:3;9607:12;9600:19;;9405:220;;;:::o;9631:366::-;9773:3;9794:67;9858:2;9853:3;9794:67;:::i;:::-;9787:74;;9870:93;9959:3;9870:93;:::i;:::-;9988:2;9983:3;9979:12;9972:19;;9777:220;;;:::o;10003:366::-;10145:3;10166:67;10230:2;10225:3;10166:67;:::i;:::-;10159:74;;10242:93;10331:3;10242:93;:::i;:::-;10360:2;10355:3;10351:12;10344:19;;10149:220;;;:::o;10375:366::-;10517:3;10538:67;10602:2;10597:3;10538:67;:::i;:::-;10531:74;;10614:93;10703:3;10614:93;:::i;:::-;10732:2;10727:3;10723:12;10716:19;;10521:220;;;:::o;10747:366::-;10889:3;10910:67;10974:2;10969:3;10910:67;:::i;:::-;10903:74;;10986:93;11075:3;10986:93;:::i;:::-;11104:2;11099:3;11095:12;11088:19;;10893:220;;;:::o;11119:366::-;11261:3;11282:67;11346:2;11341:3;11282:67;:::i;:::-;11275:74;;11358:93;11447:3;11358:93;:::i;:::-;11476:2;11471:3;11467:12;11460:19;;11265:220;;;:::o;11491:366::-;11633:3;11654:67;11718:2;11713:3;11654:67;:::i;:::-;11647:74;;11730:93;11819:3;11730:93;:::i;:::-;11848:2;11843:3;11839:12;11832:19;;11637:220;;;:::o;11863:366::-;12005:3;12026:67;12090:2;12085:3;12026:67;:::i;:::-;12019:74;;12102:93;12191:3;12102:93;:::i;:::-;12220:2;12215:3;12211:12;12204:19;;12009:220;;;:::o;12235:366::-;12377:3;12398:67;12462:2;12457:3;12398:67;:::i;:::-;12391:74;;12474:93;12563:3;12474:93;:::i;:::-;12592:2;12587:3;12583:12;12576:19;;12381:220;;;:::o;12607:366::-;12749:3;12770:67;12834:2;12829:3;12770:67;:::i;:::-;12763:74;;12846:93;12935:3;12846:93;:::i;:::-;12964:2;12959:3;12955:12;12948:19;;12753:220;;;:::o;12979:366::-;13121:3;13142:67;13206:2;13201:3;13142:67;:::i;:::-;13135:74;;13218:93;13307:3;13218:93;:::i;:::-;13336:2;13331:3;13327:12;13320:19;;13125:220;;;:::o;13351:398::-;13510:3;13531:83;13612:1;13607:3;13531:83;:::i;:::-;13524:90;;13623:93;13712:3;13623:93;:::i;:::-;13741:1;13736:3;13732:11;13725:18;;13514:235;;;:::o;13755:366::-;13897:3;13918:67;13982:2;13977:3;13918:67;:::i;:::-;13911:74;;13994:93;14083:3;13994:93;:::i;:::-;14112:2;14107:3;14103:12;14096:19;;13901:220;;;:::o;14127:118::-;14214:24;14232:5;14214:24;:::i;:::-;14209:3;14202:37;14192:53;;:::o;14251:112::-;14334:22;14350:5;14334:22;:::i;:::-;14329:3;14322:35;14312:51;;:::o;14369:379::-;14553:3;14575:147;14718:3;14575:147;:::i;:::-;14568:154;;14739:3;14732:10;;14557:191;;;:::o;14754:222::-;14847:4;14885:2;14874:9;14870:18;14862:26;;14898:71;14966:1;14955:9;14951:17;14942:6;14898:71;:::i;:::-;14852:124;;;;:::o;14982:254::-;15091:4;15129:2;15118:9;15114:18;15106:26;;15142:87;15226:1;15215:9;15211:17;15202:6;15142:87;:::i;:::-;15096:140;;;;:::o;15242:332::-;15363:4;15401:2;15390:9;15386:18;15378:26;;15414:71;15482:1;15471:9;15467:17;15458:6;15414:71;:::i;:::-;15495:72;15563:2;15552:9;15548:18;15539:6;15495:72;:::i;:::-;15368:206;;;;;:::o;15580:332::-;15701:4;15739:2;15728:9;15724:18;15716:26;;15752:71;15820:1;15809:9;15805:17;15796:6;15752:71;:::i;:::-;15833:72;15901:2;15890:9;15886:18;15877:6;15833:72;:::i;:::-;15706:206;;;;;:::o;15918:807::-;16167:4;16205:3;16194:9;16190:19;16182:27;;16219:71;16287:1;16276:9;16272:17;16263:6;16219:71;:::i;:::-;16300:72;16368:2;16357:9;16353:18;16344:6;16300:72;:::i;:::-;16382:80;16458:2;16447:9;16443:18;16434:6;16382:80;:::i;:::-;16472;16548:2;16537:9;16533:18;16524:6;16472:80;:::i;:::-;16562:73;16630:3;16619:9;16615:19;16606:6;16562:73;:::i;:::-;16645;16713:3;16702:9;16698:19;16689:6;16645:73;:::i;:::-;16172:553;;;;;;;;;:::o;16731:210::-;16818:4;16856:2;16845:9;16841:18;16833:26;;16869:65;16931:1;16920:9;16916:17;16907:6;16869:65;:::i;:::-;16823:118;;;;:::o;16947:276::-;17067:4;17105:2;17094:9;17090:18;17082:26;;17118:98;17213:1;17202:9;17198:17;17189:6;17118:98;:::i;:::-;17072:151;;;;:::o;17229:313::-;17342:4;17380:2;17369:9;17365:18;17357:26;;17429:9;17423:4;17419:20;17415:1;17404:9;17400:17;17393:47;17457:78;17530:4;17521:6;17457:78;:::i;:::-;17449:86;;17347:195;;;;:::o;17548:419::-;17714:4;17752:2;17741:9;17737:18;17729:26;;17801:9;17795:4;17791:20;17787:1;17776:9;17772:17;17765:47;17829:131;17955:4;17829:131;:::i;:::-;17821:139;;17719:248;;;:::o;17973:419::-;18139:4;18177:2;18166:9;18162:18;18154:26;;18226:9;18220:4;18216:20;18212:1;18201:9;18197:17;18190:47;18254:131;18380:4;18254:131;:::i;:::-;18246:139;;18144:248;;;:::o;18398:419::-;18564:4;18602:2;18591:9;18587:18;18579:26;;18651:9;18645:4;18641:20;18637:1;18626:9;18622:17;18615:47;18679:131;18805:4;18679:131;:::i;:::-;18671:139;;18569:248;;;:::o;18823:419::-;18989:4;19027:2;19016:9;19012:18;19004:26;;19076:9;19070:4;19066:20;19062:1;19051:9;19047:17;19040:47;19104:131;19230:4;19104:131;:::i;:::-;19096:139;;18994:248;;;:::o;19248:419::-;19414:4;19452:2;19441:9;19437:18;19429:26;;19501:9;19495:4;19491:20;19487:1;19476:9;19472:17;19465:47;19529:131;19655:4;19529:131;:::i;:::-;19521:139;;19419:248;;;:::o;19673:419::-;19839:4;19877:2;19866:9;19862:18;19854:26;;19926:9;19920:4;19916:20;19912:1;19901:9;19897:17;19890:47;19954:131;20080:4;19954:131;:::i;:::-;19946:139;;19844:248;;;:::o;20098:419::-;20264:4;20302:2;20291:9;20287:18;20279:26;;20351:9;20345:4;20341:20;20337:1;20326:9;20322:17;20315:47;20379:131;20505:4;20379:131;:::i;:::-;20371:139;;20269:248;;;:::o;20523:419::-;20689:4;20727:2;20716:9;20712:18;20704:26;;20776:9;20770:4;20766:20;20762:1;20751:9;20747:17;20740:47;20804:131;20930:4;20804:131;:::i;:::-;20796:139;;20694:248;;;:::o;20948:419::-;21114:4;21152:2;21141:9;21137:18;21129:26;;21201:9;21195:4;21191:20;21187:1;21176:9;21172:17;21165:47;21229:131;21355:4;21229:131;:::i;:::-;21221:139;;21119:248;;;:::o;21373:419::-;21539:4;21577:2;21566:9;21562:18;21554:26;;21626:9;21620:4;21616:20;21612:1;21601:9;21597:17;21590:47;21654:131;21780:4;21654:131;:::i;:::-;21646:139;;21544:248;;;:::o;21798:419::-;21964:4;22002:2;21991:9;21987:18;21979:26;;22051:9;22045:4;22041:20;22037:1;22026:9;22022:17;22015:47;22079:131;22205:4;22079:131;:::i;:::-;22071:139;;21969:248;;;:::o;22223:419::-;22389:4;22427:2;22416:9;22412:18;22404:26;;22476:9;22470:4;22466:20;22462:1;22451:9;22447:17;22440:47;22504:131;22630:4;22504:131;:::i;:::-;22496:139;;22394:248;;;:::o;22648:419::-;22814:4;22852:2;22841:9;22837:18;22829:26;;22901:9;22895:4;22891:20;22887:1;22876:9;22872:17;22865:47;22929:131;23055:4;22929:131;:::i;:::-;22921:139;;22819:248;;;:::o;23073:222::-;23166:4;23204:2;23193:9;23189:18;23181:26;;23217:71;23285:1;23274:9;23270:17;23261:6;23217:71;:::i;:::-;23171:124;;;;:::o;23301:483::-;23472:4;23510:2;23499:9;23495:18;23487:26;;23523:71;23591:1;23580:9;23576:17;23567:6;23523:71;:::i;:::-;23641:9;23635:4;23631:20;23626:2;23615:9;23611:18;23604:48;23669:108;23772:4;23763:6;23669:108;:::i;:::-;23661:116;;23477:307;;;;;:::o;23790:831::-;24053:4;24091:3;24080:9;24076:19;24068:27;;24105:71;24173:1;24162:9;24158:17;24149:6;24105:71;:::i;:::-;24186:80;24262:2;24251:9;24247:18;24238:6;24186:80;:::i;:::-;24313:9;24307:4;24303:20;24298:2;24287:9;24283:18;24276:48;24341:108;24444:4;24435:6;24341:108;:::i;:::-;24333:116;;24459:72;24527:2;24516:9;24512:18;24503:6;24459:72;:::i;:::-;24541:73;24609:3;24598:9;24594:19;24585:6;24541:73;:::i;:::-;24058:563;;;;;;;;:::o;24627:214::-;24716:4;24754:2;24743:9;24739:18;24731:26;;24767:67;24831:1;24820:9;24816:17;24807:6;24767:67;:::i;:::-;24721:120;;;;:::o;24847:132::-;24914:4;24937:3;24929:11;;24967:4;24962:3;24958:14;24950:22;;24919:60;;;:::o;24985:114::-;25052:6;25086:5;25080:12;25070:22;;25059:40;;;:::o;25105:99::-;25157:6;25191:5;25185:12;25175:22;;25164:40;;;:::o;25210:113::-;25280:4;25312;25307:3;25303:14;25295:22;;25285:38;;;:::o;25329:184::-;25428:11;25462:6;25457:3;25450:19;25502:4;25497:3;25493:14;25478:29;;25440:73;;;;:::o;25519:147::-;25620:11;25657:3;25642:18;;25632:34;;;;:::o;25672:169::-;25756:11;25790:6;25785:3;25778:19;25830:4;25825:3;25821:14;25806:29;;25768:73;;;;:::o;25847:305::-;25887:3;25906:20;25924:1;25906:20;:::i;:::-;25901:25;;25940:20;25958:1;25940:20;:::i;:::-;25935:25;;26094:1;26026:66;26022:74;26019:1;26016:81;26013:2;;;26100:18;;:::i;:::-;26013:2;26144:1;26141;26137:9;26130:16;;25891:261;;;;:::o;26158:185::-;26198:1;26215:20;26233:1;26215:20;:::i;:::-;26210:25;;26249:20;26267:1;26249:20;:::i;:::-;26244:25;;26288:1;26278:2;;26293:18;;:::i;:::-;26278:2;26335:1;26332;26328:9;26323:14;;26200:143;;;;:::o;26349:348::-;26389:7;26412:20;26430:1;26412:20;:::i;:::-;26407:25;;26446:20;26464:1;26446:20;:::i;:::-;26441:25;;26634:1;26566:66;26562:74;26559:1;26556:81;26551:1;26544:9;26537:17;26533:105;26530:2;;;26641:18;;:::i;:::-;26530:2;26689:1;26686;26682:9;26671:20;;26397:300;;;;:::o;26703:191::-;26743:4;26763:20;26781:1;26763:20;:::i;:::-;26758:25;;26797:20;26815:1;26797:20;:::i;:::-;26792:25;;26836:1;26833;26830:8;26827:2;;;26841:18;;:::i;:::-;26827:2;26886:1;26883;26879:9;26871:17;;26748:146;;;;:::o;26900:96::-;26937:7;26966:24;26984:5;26966:24;:::i;:::-;26955:35;;26945:51;;;:::o;27002:104::-;27047:7;27076:24;27094:5;27076:24;:::i;:::-;27065:35;;27055:51;;;:::o;27112:90::-;27146:7;27189:5;27182:13;27175:21;27164:32;;27154:48;;;:::o;27208:126::-;27245:7;27285:42;27278:5;27274:54;27263:65;;27253:81;;;:::o;27340:77::-;27377:7;27406:5;27395:16;;27385:32;;;:::o;27423:86::-;27458:7;27498:4;27491:5;27487:16;27476:27;;27466:43;;;:::o;27515:180::-;27592:9;27625:64;27683:5;27625:64;:::i;:::-;27612:77;;27602:93;;;:::o;27701:140::-;27778:9;27811:24;27829:5;27811:24;:::i;:::-;27798:37;;27788:53;;;:::o;27847:121::-;27905:9;27938:24;27956:5;27938:24;:::i;:::-;27925:37;;27915:53;;;:::o;27974:307::-;28042:1;28052:113;28066:6;28063:1;28060:13;28052:113;;;28151:1;28146:3;28142:11;28136:18;28132:1;28127:3;28123:11;28116:39;28088:2;28085:1;28081:10;28076:15;;28052:113;;;28183:6;28180:1;28177:13;28174:2;;;28263:1;28254:6;28249:3;28245:16;28238:27;28174:2;28023:258;;;;:::o;28287:320::-;28331:6;28368:1;28362:4;28358:12;28348:22;;28415:1;28409:4;28405:12;28436:18;28426:2;;28492:4;28484:6;28480:17;28470:27;;28426:2;28554;28546:6;28543:14;28523:18;28520:38;28517:2;;;28573:18;;:::i;:::-;28517:2;28338:269;;;;:::o;28613:233::-;28652:3;28675:24;28693:5;28675:24;:::i;:::-;28666:33;;28721:66;28714:5;28711:77;28708:2;;;28791:18;;:::i;:::-;28708:2;28838:1;28831:5;28827:13;28820:20;;28656:190;;;:::o;28852:180::-;28900:77;28897:1;28890:88;28997:4;28994:1;28987:15;29021:4;29018:1;29011:15;29038:180;29086:77;29083:1;29076:88;29183:4;29180:1;29173:15;29207:4;29204:1;29197:15;29224:180;29272:77;29269:1;29262:88;29369:4;29366:1;29359:15;29393:4;29390:1;29383:15;29410:102;29451:6;29502:2;29498:7;29493:2;29486:5;29482:14;29478:28;29468:38;;29458:54;;;:::o;29518:222::-;29658:34;29654:1;29646:6;29642:14;29635:58;29727:5;29722:2;29714:6;29710:15;29703:30;29624:116;:::o;29746:177::-;29886:29;29882:1;29874:6;29870:14;29863:53;29852:71;:::o;29929:225::-;30069:34;30065:1;30057:6;30053:14;30046:58;30138:8;30133:2;30125:6;30121:15;30114:33;30035:119;:::o;30160:221::-;30300:34;30296:1;30288:6;30284:14;30277:58;30369:4;30364:2;30356:6;30352:15;30345:29;30266:115;:::o;30387:177::-;30527:29;30523:1;30515:6;30511:14;30504:53;30493:71;:::o;30570:224::-;30710:34;30706:1;30698:6;30694:14;30687:58;30779:7;30774:2;30766:6;30762:15;30755:32;30676:118;:::o;30800:179::-;30940:31;30936:1;30928:6;30924:14;30917:55;30906:73;:::o;30985:227::-;31125:34;31121:1;31113:6;31109:14;31102:58;31194:10;31189:2;31181:6;31177:15;31170:35;31091:121;:::o;31218:220::-;31358:34;31354:1;31346:6;31342:14;31335:58;31427:3;31422:2;31414:6;31410:15;31403:28;31324:114;:::o;31444:172::-;31584:24;31580:1;31572:6;31568:14;31561:48;31550:66;:::o;31622:182::-;31762:34;31758:1;31750:6;31746:14;31739:58;31728:76;:::o;31810:224::-;31950:34;31946:1;31938:6;31934:14;31927:58;32019:7;32014:2;32006:6;32002:15;31995:32;31916:118;:::o;32040:114::-;32146:8;:::o;32160:223::-;32300:34;32296:1;32288:6;32284:14;32277:58;32369:6;32364:2;32356:6;32352:15;32345:31;32266:117;:::o;32389:122::-;32462:24;32480:5;32462:24;:::i;:::-;32455:5;32452:35;32442:2;;32501:1;32498;32491:12;32442:2;32432:79;:::o;32517:116::-;32587:21;32602:5;32587:21;:::i;:::-;32580:5;32577:32;32567:2;;32623:1;32620;32613:12;32567:2;32557:76;:::o;32639:122::-;32712:24;32730:5;32712:24;:::i;:::-;32705:5;32702:35;32692:2;;32751:1;32748;32741:12;32692:2;32682:79;:::o
Swarm Source
ipfs://d74b9ad62f495d9c5de962a720e5fd8f4743b3210dc665ab855eae7cfd71a141
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.