Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000 RedCloak
Holders
5
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
8,790.067713592965991669 RedCloakValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
AkaManto
Compiler Version
v0.8.13+commit.abaa5c0e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-08-26 */ /* Don't be fooled into accepting his offerings, rejection, ignorance or departure are the only means of survival. */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.13; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } 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; 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; } } interface IBEP20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IBEP20Metadata is IBEP20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract BEP20 is Context, IBEP20, IBEP20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 internal _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "BEP20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "BEP20: decreased allowance below zero")); return true; } function _transfer(address sender, address recipient, uint256 amount) internal virtual { require(sender != address(0), "BEP20: transfer from the zero address"); require(recipient != address(0), "BEP20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount,"BEP20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "BEP20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "BEP20: approve from the zero address"); require(spender != address(0), "BEP20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {} } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint256 value); event Transfer(address indexed from, address indexed to, uint256 value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom(address from, address to, uint256 value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external; event Swap(address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) external returns (uint256 amountA, uint256 amountB, uint256 liquidity); function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external returns (uint256[] memory amounts); function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline) external returns (uint256[] memory amounts); function swapExactETHForTokens(uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external payable returns (uint256[] memory amounts); function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline) external returns (uint256[] memory amounts); function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external returns (uint256[] memory amounts); function swapETHForExactTokens(uint256 amountOut, address[] calldata path, address to, uint256 deadline) external payable returns (uint256[] memory amounts); function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) external pure returns (uint256 amountB); function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) external pure returns (uint256 amountOut); function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) external pure returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external; function swapExactETHForTokensSupportingFeeOnTransferTokens(uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external; } contract AkaManto is BEP20, Ownable { // using SafeMath for uint256; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private swapping; bool public tradingEnabled = false; uint256 public sellAmount = 0; uint256 public buyAmount = 0; uint256 private totalSellFees; uint256 private totalBuyFees; address payable public marketingWallet; address payable public devWallet; uint256 public maxWallet; bool public maxWalletEnabled = true; uint256 public swapTokensAtAmount; uint256 public sellMarketingFees; uint256 public sellLiquidityFee; uint256 public buyMarketingFees; uint256 public buyLiquidityFee; uint256 public buyDevFee; uint256 public sellDevFee; bool public swapAndLiquifyEnabled = true; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public automatedMarketMakerPairs; mapping(address => bool) private canTransferBeforeTradingIsEnabled; bool public limitsInEffect = false; uint256 private gasPriceLimit = 7 * 1 gwei; // MAX GWEI mapping(address => uint256) private _holderLastTransferBlock; // FOR 1TX PER BLOCK mapping(address => uint256) private _holderLastTransferTimestamp; // FOR COOLDOWN uint256 public launchblock; // FOR DEADBLOCKS uint256 public launchtimestamp; // FOR LAUNCH TIMESTAMP uint256 public cooldowntimer = 0; // DEFAULT COOLDOWN TIMER event EnableSwapAndLiquify(bool enabled); event SetPreSaleWallet(address wallet); event updateMarketingWallet(address wallet); event updateDevWallet(address wallet); event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); event TradingEnabled(); event UpdateFees(uint256 sellMarketingFees, uint256 sellLiquidityFee, uint256 buyMarketingFees, uint256 buyLiquidityFee, uint256 buyDevFee, uint256 sellDevFee); event Airdrop(address holder, uint256 amount); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity); event SendDividends(uint256 opAmount, bool success); constructor() BEP20("Aka Manto", "RedCloak") { marketingWallet = payable(0x1A26a25F9c430D7AaD3e3971b864e4E81a31429e); devWallet = payable(0x4D75185E10F7265bBf40480977077616E912116D); address router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; //INITIAL FEE VALUES HERE buyMarketingFees = 2; sellMarketingFees = 2; buyLiquidityFee = 4; sellLiquidityFee = 4; buyDevFee = 2; sellDevFee = 2; // TOTAL BUY AND TOTAL SELL FEE CALCS totalBuyFees = buyMarketingFees.add(buyLiquidityFee).add(buyDevFee); totalSellFees = sellMarketingFees.add(sellLiquidityFee).add(sellDevFee); uniswapV2Router = IUniswapV2Router02(router); uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair( address(this), uniswapV2Router.WETH()); _setAutomatedMarketMakerPair(uniswapV2Pair, true); _isExcludedFromFees[address(this)] = true; _isExcludedFromFees[msg.sender] = true; _isExcludedFromFees[marketingWallet] = true; uint256 _totalSupply = (1_000_000_000) * (10**18); // TOTAL SUPPLY IS SET HERE _mint(owner(), _totalSupply); // only time internal mint function is ever called is to create supply maxWallet = _totalSupply / 50; // 2% swapTokensAtAmount = _totalSupply / 100; // 1%; canTransferBeforeTradingIsEnabled[owner()] = true; canTransferBeforeTradingIsEnabled[address(this)] = true; } function decimals() public view virtual override returns (uint8) { return 18; } receive() external payable {} function enableTrading() external onlyOwner { require(!tradingEnabled); tradingEnabled = true; launchblock = block.number; launchtimestamp = block.timestamp; emit TradingEnabled(); } function setMarketingWallet(address wallet) external onlyOwner { _isExcludedFromFees[wallet] = true; marketingWallet = payable(wallet); emit updateMarketingWallet(wallet); } function setDevWallet(address wallet) external onlyOwner { _isExcludedFromFees[wallet] = true; devWallet = payable(wallet); emit updateDevWallet(wallet); } function setExcludeFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setCanTransferBefore(address wallet, bool enable) external onlyOwner { canTransferBeforeTradingIsEnabled[wallet] = enable; } function setLimitsInEffect(bool value) external onlyOwner { limitsInEffect = value; } function setMaxWalletEnabled(bool value) external onlyOwner { maxWalletEnabled = value; } function setcooldowntimer(uint256 value) external onlyOwner { require(value <= 300, "cooldown timer cannot exceed 5 minutes"); cooldowntimer = value; } function setmaxWallet(uint256 value) external onlyOwner { value = value * (10**18); require(value >= _totalSupply / 100, "max wallet cannot be set to less than 1%"); maxWallet = value; } // TAKES ALL BNB FROM THE CONTRACT ADDRESS AND SENDS IT TO OWNERS WALLET function Sweep() external onlyOwner { uint256 amountBNB = address(this).balance; payable(msg.sender).transfer(amountBNB); } function setSwapTriggerAmount(uint256 amount) public onlyOwner { swapTokensAtAmount = amount * (10**18); } function enableSwapAndLiquify(bool enabled) public onlyOwner { require(swapAndLiquifyEnabled != enabled); swapAndLiquifyEnabled = enabled; emit EnableSwapAndLiquify(enabled); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function transferAdmin(address newOwner) public onlyOwner { _isExcludedFromFees[newOwner] = true; canTransferBeforeTradingIsEnabled[newOwner] = true; transferOwnership(newOwner); } function updateFees(uint256 marketingBuy, uint256 marketingSell, uint256 liquidityBuy, uint256 liquiditySell, uint256 devBuy, uint256 devSell) public onlyOwner { buyMarketingFees = marketingBuy; buyLiquidityFee = liquidityBuy; sellMarketingFees = marketingSell; sellLiquidityFee = liquiditySell; buyDevFee = devBuy; sellDevFee = devSell; totalSellFees = sellMarketingFees.add(sellLiquidityFee).add(sellDevFee); totalBuyFees = buyMarketingFees.add(buyLiquidityFee).add(buyDevFee); // ABSOLUTE TAX LIMITS require(totalSellFees <= 10 && totalBuyFees <= 10, "total fees cannot be higher than 10%"); emit UpdateFees(sellMarketingFees, sellLiquidityFee, sellDevFee, buyMarketingFees, buyLiquidityFee, buyDevFee); } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } function _transfer(address from, address to, uint256 amount) internal override { require(from != address(0), "IBEP20: transfer from the zero address"); require(to != address(0), "IBEP20: transfer to the zero address"); uint256 marketingFees; uint256 liquidityFee; uint256 devFee; if (!canTransferBeforeTradingIsEnabled[from]) { require(tradingEnabled, "Trading has not yet been enabled"); } if (amount == 0) { super._transfer(from, to, 0); return; } else if ( !swapping && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { bool isSelling = automatedMarketMakerPairs[to]; if (isSelling) { marketingFees = sellMarketingFees; liquidityFee = sellLiquidityFee; devFee = sellDevFee; if (limitsInEffect) { require(block.timestamp >= _holderLastTransferTimestamp[tx.origin] + cooldowntimer, "cooldown period active"); _holderLastTransferTimestamp[tx.origin] = block.timestamp; } } else { marketingFees = buyMarketingFees; liquidityFee = buyLiquidityFee; devFee = buyDevFee; if (limitsInEffect) { require(block.number > launchblock + 2,"you shall not pass"); require(tx.gasprice <= gasPriceLimit,"Gas price exceeds limit."); require(_holderLastTransferBlock[tx.origin] != block.number,"Too many TX in block"); require(block.timestamp >= _holderLastTransferTimestamp[tx.origin] + cooldowntimer, "cooldown period active"); _holderLastTransferBlock[tx.origin] = block.number; _holderLastTransferTimestamp[tx.origin] = block.timestamp; } if (maxWalletEnabled) { uint256 contractBalanceRecipient = balanceOf(to); require(contractBalanceRecipient + amount <= maxWallet, "Exceeds maximum wallet token amount." ); } } uint256 totalFees = marketingFees.add(liquidityFee).add(devFee); uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if (canSwap && !automatedMarketMakerPairs[from]) { swapping = true; uint256 swapTokens; if (swapAndLiquifyEnabled && liquidityFee > 0) { uint256 totalBuySell = buyAmount.add(sellAmount); uint256 swapAmountBought = contractTokenBalance .mul(buyAmount) .div(totalBuySell); uint256 swapAmountSold = contractTokenBalance .mul(sellAmount) .div(totalBuySell); uint256 swapBuyTokens = swapAmountBought .mul(liquidityFee) .div(totalBuyFees); uint256 swapSellTokens = swapAmountSold .mul(liquidityFee) .div(totalSellFees); swapTokens = swapSellTokens.add(swapBuyTokens); swapAndLiquify(swapTokens); } uint256 remainingBalance = swapTokensAtAmount.sub(swapTokens); swapAndSendDividends(remainingBalance); buyAmount = 0; sellAmount = 0; swapping = false; } uint256 fees = amount.mul(totalFees).div(100); amount = amount.sub(fees); if (isSelling) { sellAmount = sellAmount.add(fees); } else { buyAmount = buyAmount.add(fees); } super._transfer(from, address(this), fees); } super._transfer(from, to, amount); } function swapAndLiquify(uint256 tokens) private { uint256 half = tokens.div(2); uint256 otherHalf = tokens.sub(half); uint256 initialBalance = address(this).balance; swapTokensForEth(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered uint256 newBalance = address(this).balance.sub(initialBalance); addLiquidity(otherHalf, newBalance); emit SwapAndLiquify(half, newBalance, otherHalf); } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } function forceSwapAndSendDividends(uint256 tokens) public onlyOwner { tokens = tokens * (10**18); uint256 totalAmount = buyAmount.add(sellAmount); uint256 fromBuy = tokens.mul(buyAmount).div(totalAmount); uint256 fromSell = tokens.mul(sellAmount).div(totalAmount); swapAndSendDividends(tokens); buyAmount = buyAmount.sub(fromBuy); sellAmount = sellAmount.sub(fromSell); } // TAX PAYOUT CODE function swapAndSendDividends(uint256 tokens) private { if (tokens == 0) { return; } swapTokensForEth(tokens); bool success = true; bool successOp1 = true; uint256 _marketDevTotal = sellMarketingFees.add(sellDevFee) + buyMarketingFees.add(buyDevFee); uint256 feePortions; if (_marketDevTotal > 0) { feePortions = address(this).balance.div(_marketDevTotal); } uint256 marketingPayout = buyMarketingFees.add(sellMarketingFees) * feePortions; uint256 devPayout = buyDevFee.add(sellDevFee) * feePortions; if (marketingPayout > 0) { (success, ) = address(marketingWallet).call{value: marketingPayout}(""); } if (devPayout > 0) { (successOp1, ) = address(devWallet).call{value: devPayout}(""); } emit SendDividends( marketingPayout, success && successOp1 ); } function airdropToWallets( address[] memory airdropWallets, uint256[] memory amount ) external onlyOwner { require(airdropWallets.length == amount.length, "Arrays must be the same length"); require(airdropWallets.length <= 200, "Wallets list length must be <= 200"); for (uint256 i = 0; i < airdropWallets.length; i++) { address wallet = airdropWallets[i]; uint256 airdropAmount = amount[i] * (10**18); super._transfer(msg.sender, wallet, airdropAmount); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Airdrop","type":"event"},{"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":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"EnableSwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"opAmount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"success","type":"bool"}],"name":"SendDividends","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"wallet","type":"address"}],"name":"SetPreSaleWallet","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":[],"name":"TradingEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"sellMarketingFees","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellLiquidityFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buyMarketingFees","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buyLiquidityFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buyDevFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellDevFee","type":"uint256"}],"name":"UpdateFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"wallet","type":"address"}],"name":"updateDevWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"wallet","type":"address"}],"name":"updateMarketingWallet","type":"event"},{"inputs":[],"name":"Sweep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"airdropWallets","type":"address[]"},{"internalType":"uint256[]","name":"amount","type":"uint256[]"}],"name":"airdropToWallets","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cooldowntimer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"enableSwapAndLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"forceSwapAndSendDividends","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchblock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchtimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"sellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setCanTransferBefore","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setLimitsInEffect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setMaxWalletEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapTriggerAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setcooldowntimer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setmaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingBuy","type":"uint256"},{"internalType":"uint256","name":"marketingSell","type":"uint256"},{"internalType":"uint256","name":"liquidityBuy","type":"uint256"},{"internalType":"uint256","name":"liquiditySell","type":"uint256"},{"internalType":"uint256","name":"devBuy","type":"uint256"},{"internalType":"uint256","name":"devSell","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526000600760156101000a81548160ff021916908315150217905550600060085560006009556001600f60006101000a81548160ff0219169083151502179055506001601760006101000a81548160ff0219169083151502179055506000601b60006101000a81548160ff0219169083151502179055506401a13b8600601c5560006021553480156200009557600080fd5b506040518060400160405280600981526020017f416b61204d616e746f00000000000000000000000000000000000000000000008152506040518060400160405280600881526020017f526564436c6f616b00000000000000000000000000000000000000000000000081525081600390805190602001906200011a92919062000aed565b5080600490805190602001906200013392919062000aed565b5050506000620001486200080460201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350731a26a25f9c430d7aad3e3971b864e4e81a31429e600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734d75185e10f7265bbf40480977077616e912116d600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060026013819055506002601181905550600460148190555060046012819055506002601581905550600260168190555062000313601554620002ff6014546013546200080c60201b620028f91790919060201c565b6200080c60201b620028f91790919060201c565b600b81905550620003526016546200033e6012546011546200080c60201b620028f91790919060201c565b6200080c60201b620028f91790919060201c565b600a8190555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000407573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042d919062000c07565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004dd919062000c07565b6040518363ffffffff1660e01b8152600401620004fc92919062000c4a565b6020604051808303816000875af11580156200051c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000542919062000c07565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005b7600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200086f60201b60201c565b6001601860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160186000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060006b033b2e3c9fd0803ce8000000905062000713620007066200091060201b60201c565b826200093a60201b60201c565b60328162000722919062000cdf565b600e8190555060648162000737919062000cdf565b6010819055506001601a6000620007536200091060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062000efb565b600033905090565b60008082846200081d919062000d17565b90508381101562000865576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200085c9062000dd5565b60405180910390fd5b8091505092915050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620009ac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009a39062000e47565b60405180910390fd5b620009c06000838362000ae860201b60201c565b620009dc816002546200080c60201b620028f91790919060201c565b60028190555062000a3a816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200080c60201b620028f91790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000adc919062000e7a565b60405180910390a35050565b505050565b82805462000afb9062000ec6565b90600052602060002090601f01602090048101928262000b1f576000855562000b6b565b82601f1062000b3a57805160ff191683800117855562000b6b565b8280016001018555821562000b6b579182015b8281111562000b6a57825182559160200191906001019062000b4d565b5b50905062000b7a919062000b7e565b5090565b5b8082111562000b9957600081600090555060010162000b7f565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000bcf8262000ba2565b9050919050565b62000be18162000bc2565b811462000bed57600080fd5b50565b60008151905062000c018162000bd6565b92915050565b60006020828403121562000c205762000c1f62000b9d565b5b600062000c308482850162000bf0565b91505092915050565b62000c448162000bc2565b82525050565b600060408201905062000c61600083018562000c39565b62000c70602083018462000c39565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000cec8262000c77565b915062000cf98362000c77565b92508262000d0c5762000d0b62000c81565b5b828204905092915050565b600062000d248262000c77565b915062000d318362000c77565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000d695762000d6862000cb0565b5b828201905092915050565b600082825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062000dbd601b8362000d74565b915062000dca8262000d85565b602082019050919050565b6000602082019050818103600083015262000df08162000dae565b9050919050565b7f42455032303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000e2f601f8362000d74565b915062000e3c8262000df7565b602082019050919050565b6000602082019050818103600083015262000e628162000e20565b9050919050565b62000e748162000c77565b82525050565b600060208201905062000e91600083018462000e69565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000edf57607f821691505b60208210810362000ef55762000ef462000e97565b5b50919050565b61584a8062000f0b6000396000f3fe6080604052600436106103395760003560e01c806375f0a874116101ab578063a614ff75116100f7578063dd62ed3e11610095578063f2fde38b1161006f578063f2fde38b14610bf5578063f637434214610c1e578063f8b45b0514610c49578063fc6b151c14610c7457610340565b8063dd62ed3e14610b62578063e2f4560514610b9f578063f11a24d314610bca57610340565b8063b62496f5116100d1578063b62496f514610aa8578063b74e3b1114610ae5578063d045a32914610b0e578063d5e3725114610b3957610340565b8063a614ff7514610a17578063a9059cbb14610a40578063b494298814610a7d57610340565b806395451c29116101645780639a7a23d61161013e5780639a7a23d61461095b5780639c3b4fdc14610984578063a0d82dc5146109af578063a457c2d7146109da57610340565b806395451c29146108dc57806395d89b4114610907578063992c58e41461093257610340565b806375f0a874146107f05780637fdde05c1461081b5780638a8c523c146108445780638c3c82b21461085b5780638da5cb5b146108865780638ea5220f146108b157610340565b80633f407b84116102855780635d098b38116102235780637088fb7f116101fd5780637088fb7f1461075c57806370a0823114610773578063715018a6146107b057806375829def146107c757610340565b80635d098b38146106e15780635eee4bae1461070a578063679ca6e91461073357610340565b80634a74bb021161025f5780634a74bb02146106235780634ada218b1461064e5780634fbee193146106795780635124f874146106b657610340565b80633f407b84146105a257806349bd5a5e146105cd5780634a62bb65146105f857610340565b80631d7b1fb4116102f25780632307b441116102cc5780632307b441146104d457806323b872dd146104fd578063313ce5671461053a578063395093511461056557610340565b80631d7b1fb4146104555780631f53ac02146104805780631fa70531146104a957610340565b806305ca5f081461034557806306fdde031461036e57806308dfe8a514610399578063095ea7b3146103c25780631694505e146103ff57806318160ddd1461042a57610340565b3661034057005b600080fd5b34801561035157600080fd5b5061036c60048036038101906103679190613fc2565b610c9d565b005b34801561037a57600080fd5b50610383610e00565b6040516103909190614088565b60405180910390f35b3480156103a557600080fd5b506103c060048036038101906103bb9190614140565b610e92565b005b3480156103ce57600080fd5b506103e960048036038101906103e49190614180565b610fd2565b6040516103f691906141cf565b60405180910390f35b34801561040b57600080fd5b50610414610ff0565b6040516104219190614249565b60405180910390f35b34801561043657600080fd5b5061043f611016565b60405161044c9190614273565b60405180910390f35b34801561046157600080fd5b5061046a611020565b6040516104779190614273565b60405180910390f35b34801561048c57600080fd5b506104a760048036038101906104a2919061428e565b611026565b005b3480156104b557600080fd5b506104be611190565b6040516104cb9190614273565b60405180910390f35b3480156104e057600080fd5b506104fb60048036038101906104f691906144c6565b611196565b005b34801561050957600080fd5b50610524600480360381019061051f919061453e565b611338565b60405161053191906141cf565b60405180910390f35b34801561054657600080fd5b5061054f611411565b60405161055c91906145ad565b60405180910390f35b34801561057157600080fd5b5061058c60048036038101906105879190614180565b61141a565b60405161059991906141cf565b60405180910390f35b3480156105ae57600080fd5b506105b76114cd565b6040516105c49190614273565b60405180910390f35b3480156105d957600080fd5b506105e26114d3565b6040516105ef91906145d7565b60405180910390f35b34801561060457600080fd5b5061060d6114f9565b60405161061a91906141cf565b60405180910390f35b34801561062f57600080fd5b5061063861150c565b60405161064591906141cf565b60405180910390f35b34801561065a57600080fd5b5061066361151f565b60405161067091906141cf565b60405180910390f35b34801561068557600080fd5b506106a0600480360381019061069b919061428e565b611532565b6040516106ad91906141cf565b60405180910390f35b3480156106c257600080fd5b506106cb611588565b6040516106d89190614273565b60405180910390f35b3480156106ed57600080fd5b506107086004803603810190610703919061428e565b61158e565b005b34801561071657600080fd5b50610731600480360381019061072c9190613fc2565b6116f8565b005b34801561073f57600080fd5b5061075a600480360381019061075591906145f2565b6117ac565b005b34801561076857600080fd5b50610771611860565b005b34801561077f57600080fd5b5061079a6004803603810190610795919061428e565b611946565b6040516107a79190614273565b60405180910390f35b3480156107bc57600080fd5b506107c561198e565b005b3480156107d357600080fd5b506107ee60048036038101906107e9919061428e565b611ae6565b005b3480156107fc57600080fd5b50610805611c39565b6040516108129190614640565b60405180910390f35b34801561082757600080fd5b50610842600480360381019061083d9190614140565b611c5f565b005b34801561085057600080fd5b50610859611d51565b005b34801561086757600080fd5b50610870611e59565b60405161087d9190614273565b60405180910390f35b34801561089257600080fd5b5061089b611e5f565b6040516108a891906145d7565b60405180910390f35b3480156108bd57600080fd5b506108c6611e89565b6040516108d39190614640565b60405180910390f35b3480156108e857600080fd5b506108f1611eaf565b6040516108fe9190614273565b60405180910390f35b34801561091357600080fd5b5061091c611eb5565b6040516109299190614088565b60405180910390f35b34801561093e57600080fd5b506109596004803603810190610954919061465b565b611f47565b005b34801561096757600080fd5b50610982600480360381019061097d9190614140565b612113565b005b34801561099057600080fd5b506109996121b8565b6040516109a69190614273565b60405180910390f35b3480156109bb57600080fd5b506109c46121be565b6040516109d19190614273565b60405180910390f35b3480156109e657600080fd5b50610a0160048036038101906109fc9190614180565b6121c4565b604051610a0e91906141cf565b60405180910390f35b348015610a2357600080fd5b50610a3e6004803603810190610a3991906145f2565b612291565b005b348015610a4c57600080fd5b50610a676004803603810190610a629190614180565b612345565b604051610a7491906141cf565b60405180910390f35b348015610a8957600080fd5b50610a92612363565b604051610a9f9190614273565b60405180910390f35b348015610ab457600080fd5b50610acf6004803603810190610aca919061428e565b612369565b604051610adc91906141cf565b60405180910390f35b348015610af157600080fd5b50610b0c6004803603810190610b079190613fc2565b612389565b005b348015610b1a57600080fd5b50610b2361246f565b604051610b3091906141cf565b60405180910390f35b348015610b4557600080fd5b50610b606004803603810190610b5b91906145f2565b612482565b005b348015610b6e57600080fd5b50610b896004803603810190610b8491906146e8565b61258c565b604051610b969190614273565b60405180910390f35b348015610bab57600080fd5b50610bb4612613565b604051610bc19190614273565b60405180910390f35b348015610bd657600080fd5b50610bdf612619565b604051610bec9190614273565b60405180910390f35b348015610c0157600080fd5b50610c1c6004803603810190610c17919061428e565b61261f565b005b348015610c2a57600080fd5b50610c336127e5565b604051610c409190614273565b60405180910390f35b348015610c5557600080fd5b50610c5e6127eb565b604051610c6b9190614273565b60405180910390f35b348015610c8057600080fd5b50610c9b6004803603810190610c969190613fc2565b6127f1565b005b610ca5612957565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2b90614774565b60405180910390fd5b670de0b6b3a764000081610d4891906147c3565b90506000610d636008546009546128f990919063ffffffff16565b90506000610d8e82610d806009548661295f90919063ffffffff16565b6129d990919063ffffffff16565b90506000610db983610dab6008548761295f90919063ffffffff16565b6129d990919063ffffffff16565b9050610dc484612a23565b610dd982600954612c6590919063ffffffff16565b600981905550610df481600854612c6590919063ffffffff16565b60088190555050505050565b606060038054610e0f9061484c565b80601f0160208091040260200160405190810160405280929190818152602001828054610e3b9061484c565b8015610e885780601f10610e5d57610100808354040283529160200191610e88565b820191906000526020600020905b815481529060010190602001808311610e6b57829003601f168201915b5050505050905090565b610e9a612957565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2090614774565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051610fc691906141cf565b60405180910390a25050565b6000610fe6610fdf612957565b8484612caf565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b60215481565b61102e612957565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b490614774565b60405180910390fd5b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1816467f4e41d8dd27500ca11dc471852ca93f9b624c4d8d4430b8c4fa6424fa8160405161118591906145d7565b60405180910390a150565b60095481565b61119e612957565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461122d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122490614774565b60405180910390fd5b8051825114611271576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611268906148c9565b60405180910390fd5b60c8825111156112b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ad9061495b565b60405180910390fd5b60005b82518110156113335760008382815181106112d7576112d661497b565b5b602002602001015190506000670de0b6b3a76400008484815181106112ff576112fe61497b565b5b602002602001015161131191906147c3565b905061131e338383612e78565b5050808061132b906149aa565b9150506112b9565b505050565b600061134584848461310b565b61140684611351612957565b611401856040518060600160405280602881526020016157a260289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113b7612957565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a439092919063ffffffff16565b612caf565b600190509392505050565b60006012905090565b60006114c3611427612957565b846114be8560016000611438612957565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128f990919063ffffffff16565b612caf565b6001905092915050565b60085481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b60009054906101000a900460ff1681565b601760009054906101000a900460ff1681565b600760159054906101000a900460ff1681565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60135481565b611596612957565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161c90614774565b60405180910390fd5b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507faacebbe32c0dbd14817cfb53e3cc8be68c7e133928317145be50a0d86c224433816040516116ed91906145d7565b60405180910390a150565b611700612957565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461178f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178690614774565b60405180910390fd5b670de0b6b3a7640000816117a391906147c3565b60108190555050565b6117b4612957565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183a90614774565b60405180910390fd5b80601b60006101000a81548160ff02191690831515021790555050565b611868612957565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ee90614774565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611942573d6000803e3d6000fd5b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611996612957565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1c90614774565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611aee612957565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7490614774565b60405180910390fd5b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611c368161261f565b50565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611c67612957565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ced90614774565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611d59612957565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddf90614774565b60405180910390fd5b600760159054906101000a900460ff1615611e0257600080fd5b6001600760156101000a81548160ff02191690831515021790555043601f81905550426020819055507f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c760405160405180910390a1565b60205481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b606060048054611ec49061484c565b80601f0160208091040260200160405190810160405280929190818152602001828054611ef09061484c565b8015611f3d5780601f10611f1257610100808354040283529160200191611f3d565b820191906000526020600020905b815481529060010190602001808311611f2057829003601f168201915b5050505050905090565b611f4f612957565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd590614774565b60405180910390fd5b8560138190555083601481905550846011819055508260128190555081601581905550806016819055506120336016546120256012546011546128f990919063ffffffff16565b6128f990919063ffffffff16565b600a819055506120646015546120566014546013546128f990919063ffffffff16565b6128f990919063ffffffff16565b600b81905550600a80541115801561207f5750600a600b5411155b6120be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b590614a64565b60405180910390fd5b7ffb0d6f48717e74b9ad8ae84d152197402ac50bd6431ea28437926861021948ff60115460125460165460135460145460155460405161210396959493929190614a84565b60405180910390a1505050505050565b61211b612957565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a190614774565b60405180910390fd5b6121b48282613aa7565b5050565b60155481565b60165481565b60006122876121d1612957565b84612282856040518060600160405280602581526020016157f060259139600160006121fb612957565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a439092919063ffffffff16565b612caf565b6001905092915050565b612299612957565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231f90614774565b60405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b6000612359612352612957565b848461310b565b6001905092915050565b601f5481565b60196020528060005260406000206000915054906101000a900460ff1681565b612391612957565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612420576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241790614774565b60405180910390fd5b61012c811115612465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245c90614b57565b60405180910390fd5b8060218190555050565b600f60009054906101000a900460ff1681565b61248a612957565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612519576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251090614774565b60405180910390fd5b801515601760009054906101000a900460ff1615150361253857600080fd5b80601760006101000a81548160ff0219169083151502179055507fff5917043f8453af413305b2dbd1ed9748a37df481beb71ba4b9b212a07b9bef8160405161258191906141cf565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60105481565b60145481565b612627612957565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ad90614774565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612725576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271c90614be9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b600e5481565b6127f9612957565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612888576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287f90614774565b60405180910390fd5b670de0b6b3a76400008161289c91906147c3565b905060646002546128ad9190614c38565b8110156128ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e690614cdb565b60405180910390fd5b80600e8190555050565b60008082846129089190614cfb565b90508381101561294d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294490614d9d565b60405180910390fd5b8091505092915050565b600033905090565b600080830361297157600090506129d3565b6000828461297f91906147c3565b905082848261298e9190614c38565b146129ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c590614e2f565b60405180910390fd5b809150505b92915050565b6000612a1b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613b48565b905092915050565b6000810315612c6257612a3581613bab565b6000600190506000600190506000612a5a6015546013546128f990919063ffffffff16565b612a716016546011546128f990919063ffffffff16565b612a7b9190614cfb565b9050600080821115612a9d57612a9a82476129d990919063ffffffff16565b90505b600081612ab76011546013546128f990919063ffffffff16565b612ac191906147c3565b9050600082612add6016546015546128f990919063ffffffff16565b612ae791906147c3565b90506000821115612b8157600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612b3890614e80565b60006040518083038185875af1925050503d8060008114612b75576040519150601f19603f3d011682016040523d82523d6000602084013e612b7a565b606091505b5050809650505b6000811115612c1957600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051612bd090614e80565b60006040518083038185875af1925050503d8060008114612c0d576040519150601f19603f3d011682016040523d82523d6000602084013e612c12565b606091505b5050809550505b7f31ea026303a62d39c4ad14716f9621f1afe3242309c2ed761d4e241ae4bf2ea982878015612c455750865b604051612c53929190614e95565b60405180910390a15050505050505b50565b6000612ca783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613a43565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1590614f30565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8490614fc2565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612e6b9190614273565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ee7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ede90615054565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612f56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4d906150e6565b60405180910390fd5b612f61838383613dee565b612fcc816040518060600160405280602681526020016157ca602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a439092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061305f816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128f990919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130fe9190614273565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361317a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161317190615178565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036131e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131e09061520a565b60405180910390fd5b6000806000601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661328f57600760159054906101000a900460ff1661328e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328590615276565b60405180910390fd5b5b600084036132ab576132a386866000612e78565b505050613a3e565b600760149054906101000a900460ff161580156133125750601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133685750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613a2f576000601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905080156134c157601154935060125492506016549150601b60009054906101000a900460ff16156134bc57602154601e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134359190614cfb565b421015613477576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161346e906152e2565b60405180910390fd5b42601e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b613788565b601354935060145492506015549150601b60009054906101000a900460ff1615613713576002601f546134f49190614cfb565b4311613535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161352c9061534e565b60405180910390fd5b601c543a111561357a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613571906153ba565b60405180910390fd5b43601d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036135fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135f290615426565b60405180910390fd5b602154601e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136489190614cfb565b42101561368a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613681906152e2565b60405180910390fd5b43601d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042601e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600f60009054906101000a900460ff161561378757600061373387611946565b9050600e5486826137449190614cfb565b1115613785576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161377c906154b8565b60405180910390fd5b505b5b60006137af836137a186886128f990919063ffffffff16565b6128f990919063ffffffff16565b905060006137bc30611946565b90506000601054821015905080801561381f5750601960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561399d576001600760146101000a81548160ff0219169083151502179055506000601760009054906101000a900460ff16801561385d5750600087115b1561394d57600061387b6008546009546128f990919063ffffffff16565b905060006138a6826138986009548861295f90919063ffffffff16565b6129d990919063ffffffff16565b905060006138d1836138c36008548961295f90919063ffffffff16565b6129d990919063ffffffff16565b905060006138fc600b546138ee8d8661295f90919063ffffffff16565b6129d990919063ffffffff16565b90506000613927600a546139198e8661295f90919063ffffffff16565b6129d990919063ffffffff16565b905061393c82826128f990919063ffffffff16565b955061394786613df3565b50505050505b600061396482601054612c6590919063ffffffff16565b905061396f81612a23565b600060098190555060006008819055506000600760146101000a81548160ff02191690831515021790555050505b60006139c560646139b7868c61295f90919063ffffffff16565b6129d990919063ffffffff16565b90506139da818a612c6590919063ffffffff16565b98508415613a02576139f7816008546128f990919063ffffffff16565b600881905550613a1e565b613a17816009546128f990919063ffffffff16565b6009819055505b613a298b3083612e78565b50505050505b613a3a868686612e78565b5050505b505050565b6000838311158290613a8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a829190614088565b60405180910390fd5b5060008385613a9a91906154d8565b9050809150509392505050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60008083118290613b8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b869190614088565b60405180910390fd5b5060008385613b9e9190614c38565b9050809150509392505050565b6000600267ffffffffffffffff811115613bc857613bc76142c0565b5b604051908082528060200260200182016040528015613bf65781602001602082028036833780820191505090505b5090503081600081518110613c0e57613c0d61497b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cd99190615521565b81600181518110613ced57613cec61497b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d5430600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612caf565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613db8959493929190615647565b600060405180830381600087803b158015613dd257600080fd5b505af1158015613de6573d6000803e3d6000fd5b505050505050565b505050565b6000613e096002836129d990919063ffffffff16565b90506000613e208284612c6590919063ffffffff16565b90506000479050613e3083613bab565b6000613e458247612c6590919063ffffffff16565b9050613e518382613e93565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561848285604051613e84939291906156a1565b60405180910390a15050505050565b613ec030600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612caf565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613f0c611e5f565b426040518863ffffffff1660e01b8152600401613f2e969594939291906156d8565b60606040518083038185885af1158015613f4c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613f71919061574e565b5050505050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b613f9f81613f8c565b8114613faa57600080fd5b50565b600081359050613fbc81613f96565b92915050565b600060208284031215613fd857613fd7613f82565b5b6000613fe684828501613fad565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561402957808201518184015260208101905061400e565b83811115614038576000848401525b50505050565b6000601f19601f8301169050919050565b600061405a82613fef565b6140648185613ffa565b935061407481856020860161400b565b61407d8161403e565b840191505092915050565b600060208201905081810360008301526140a2818461404f565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006140d5826140aa565b9050919050565b6140e5816140ca565b81146140f057600080fd5b50565b600081359050614102816140dc565b92915050565b60008115159050919050565b61411d81614108565b811461412857600080fd5b50565b60008135905061413a81614114565b92915050565b6000806040838503121561415757614156613f82565b5b6000614165858286016140f3565b92505060206141768582860161412b565b9150509250929050565b6000806040838503121561419757614196613f82565b5b60006141a5858286016140f3565b92505060206141b685828601613fad565b9150509250929050565b6141c981614108565b82525050565b60006020820190506141e460008301846141c0565b92915050565b6000819050919050565b600061420f61420a614205846140aa565b6141ea565b6140aa565b9050919050565b6000614221826141f4565b9050919050565b600061423382614216565b9050919050565b61424381614228565b82525050565b600060208201905061425e600083018461423a565b92915050565b61426d81613f8c565b82525050565b60006020820190506142886000830184614264565b92915050565b6000602082840312156142a4576142a3613f82565b5b60006142b2848285016140f3565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6142f88261403e565b810181811067ffffffffffffffff82111715614317576143166142c0565b5b80604052505050565b600061432a613f78565b905061433682826142ef565b919050565b600067ffffffffffffffff821115614356576143556142c0565b5b602082029050602081019050919050565b600080fd5b600061437f61437a8461433b565b614320565b905080838252602082019050602084028301858111156143a2576143a1614367565b5b835b818110156143cb57806143b788826140f3565b8452602084019350506020810190506143a4565b5050509392505050565b600082601f8301126143ea576143e96142bb565b5b81356143fa84826020860161436c565b91505092915050565b600067ffffffffffffffff82111561441e5761441d6142c0565b5b602082029050602081019050919050565b600061444261443d84614403565b614320565b9050808382526020820190506020840283018581111561446557614464614367565b5b835b8181101561448e578061447a8882613fad565b845260208401935050602081019050614467565b5050509392505050565b600082601f8301126144ad576144ac6142bb565b5b81356144bd84826020860161442f565b91505092915050565b600080604083850312156144dd576144dc613f82565b5b600083013567ffffffffffffffff8111156144fb576144fa613f87565b5b614507858286016143d5565b925050602083013567ffffffffffffffff81111561452857614527613f87565b5b61453485828601614498565b9150509250929050565b60008060006060848603121561455757614556613f82565b5b6000614565868287016140f3565b9350506020614576868287016140f3565b925050604061458786828701613fad565b9150509250925092565b600060ff82169050919050565b6145a781614591565b82525050565b60006020820190506145c2600083018461459e565b92915050565b6145d1816140ca565b82525050565b60006020820190506145ec60008301846145c8565b92915050565b60006020828403121561460857614607613f82565b5b60006146168482850161412b565b91505092915050565b600061462a826140aa565b9050919050565b61463a8161461f565b82525050565b60006020820190506146556000830184614631565b92915050565b60008060008060008060c0878903121561467857614677613f82565b5b600061468689828a01613fad565b965050602061469789828a01613fad565b95505060406146a889828a01613fad565b94505060606146b989828a01613fad565b93505060806146ca89828a01613fad565b92505060a06146db89828a01613fad565b9150509295509295509295565b600080604083850312156146ff576146fe613f82565b5b600061470d858286016140f3565b925050602061471e858286016140f3565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061475e602083613ffa565b915061476982614728565b602082019050919050565b6000602082019050818103600083015261478d81614751565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006147ce82613f8c565b91506147d983613f8c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561481257614811614794565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061486457607f821691505b6020821081036148775761487661481d565b5b50919050565b7f417272617973206d757374206265207468652073616d65206c656e6774680000600082015250565b60006148b3601e83613ffa565b91506148be8261487d565b602082019050919050565b600060208201905081810360008301526148e2816148a6565b9050919050565b7f57616c6c657473206c697374206c656e677468206d757374206265203c3d203260008201527f3030000000000000000000000000000000000000000000000000000000000000602082015250565b6000614945602283613ffa565b9150614950826148e9565b604082019050919050565b6000602082019050818103600083015261497481614938565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006149b582613f8c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036149e7576149e6614794565b5b600182019050919050565b7f746f74616c20666565732063616e6e6f7420626520686967686572207468616e60008201527f2031302500000000000000000000000000000000000000000000000000000000602082015250565b6000614a4e602483613ffa565b9150614a59826149f2565b604082019050919050565b60006020820190508181036000830152614a7d81614a41565b9050919050565b600060c082019050614a996000830189614264565b614aa66020830188614264565b614ab36040830187614264565b614ac06060830186614264565b614acd6080830185614264565b614ada60a0830184614264565b979650505050505050565b7f636f6f6c646f776e2074696d65722063616e6e6f74206578636565642035206d60008201527f696e757465730000000000000000000000000000000000000000000000000000602082015250565b6000614b41602683613ffa565b9150614b4c82614ae5565b604082019050919050565b60006020820190508181036000830152614b7081614b34565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614bd3602683613ffa565b9150614bde82614b77565b604082019050919050565b60006020820190508181036000830152614c0281614bc6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614c4382613f8c565b9150614c4e83613f8c565b925082614c5e57614c5d614c09565b5b828204905092915050565b7f6d61782077616c6c65742063616e6e6f742062652073657420746f206c65737360008201527f207468616e203125000000000000000000000000000000000000000000000000602082015250565b6000614cc5602883613ffa565b9150614cd082614c69565b604082019050919050565b60006020820190508181036000830152614cf481614cb8565b9050919050565b6000614d0682613f8c565b9150614d1183613f8c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614d4657614d45614794565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614d87601b83613ffa565b9150614d9282614d51565b602082019050919050565b60006020820190508181036000830152614db681614d7a565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614e19602183613ffa565b9150614e2482614dbd565b604082019050919050565b60006020820190508181036000830152614e4881614e0c565b9050919050565b600081905092915050565b50565b6000614e6a600083614e4f565b9150614e7582614e5a565b600082019050919050565b6000614e8b82614e5d565b9150819050919050565b6000604082019050614eaa6000830185614264565b614eb760208301846141c0565b9392505050565b7f42455032303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614f1a602483613ffa565b9150614f2582614ebe565b604082019050919050565b60006020820190508181036000830152614f4981614f0d565b9050919050565b7f42455032303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614fac602283613ffa565b9150614fb782614f50565b604082019050919050565b60006020820190508181036000830152614fdb81614f9f565b9050919050565b7f42455032303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061503e602583613ffa565b915061504982614fe2565b604082019050919050565b6000602082019050818103600083015261506d81615031565b9050919050565b7f42455032303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006150d0602383613ffa565b91506150db82615074565b604082019050919050565b600060208201905081810360008301526150ff816150c3565b9050919050565b7f4942455032303a207472616e736665722066726f6d20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615162602683613ffa565b915061516d82615106565b604082019050919050565b6000602082019050818103600083015261519181615155565b9050919050565b7f4942455032303a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006151f4602483613ffa565b91506151ff82615198565b604082019050919050565b60006020820190508181036000830152615223816151e7565b9050919050565b7f54726164696e6720686173206e6f7420796574206265656e20656e61626c6564600082015250565b6000615260602083613ffa565b915061526b8261522a565b602082019050919050565b6000602082019050818103600083015261528f81615253565b9050919050565b7f636f6f6c646f776e20706572696f642061637469766500000000000000000000600082015250565b60006152cc601683613ffa565b91506152d782615296565b602082019050919050565b600060208201905081810360008301526152fb816152bf565b9050919050565b7f796f75207368616c6c206e6f7420706173730000000000000000000000000000600082015250565b6000615338601283613ffa565b915061534382615302565b602082019050919050565b600060208201905081810360008301526153678161532b565b9050919050565b7f4761732070726963652065786365656473206c696d69742e0000000000000000600082015250565b60006153a4601883613ffa565b91506153af8261536e565b602082019050919050565b600060208201905081810360008301526153d381615397565b9050919050565b7f546f6f206d616e7920545820696e20626c6f636b000000000000000000000000600082015250565b6000615410601483613ffa565b915061541b826153da565b602082019050919050565b6000602082019050818103600083015261543f81615403565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f60008201527f756e742e00000000000000000000000000000000000000000000000000000000602082015250565b60006154a2602483613ffa565b91506154ad82615446565b604082019050919050565b600060208201905081810360008301526154d181615495565b9050919050565b60006154e382613f8c565b91506154ee83613f8c565b92508282101561550157615500614794565b5b828203905092915050565b60008151905061551b816140dc565b92915050565b60006020828403121561553757615536613f82565b5b60006155458482850161550c565b91505092915050565b6000819050919050565b600061557361556e6155698461554e565b6141ea565b613f8c565b9050919050565b61558381615558565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6155be816140ca565b82525050565b60006155d083836155b5565b60208301905092915050565b6000602082019050919050565b60006155f482615589565b6155fe8185615594565b9350615609836155a5565b8060005b8381101561563a57815161562188826155c4565b975061562c836155dc565b92505060018101905061560d565b5085935050505092915050565b600060a08201905061565c6000830188614264565b615669602083018761557a565b818103604083015261567b81866155e9565b905061568a60608301856145c8565b6156976080830184614264565b9695505050505050565b60006060820190506156b66000830186614264565b6156c36020830185614264565b6156d06040830184614264565b949350505050565b600060c0820190506156ed60008301896145c8565b6156fa6020830188614264565b615707604083018761557a565b615714606083018661557a565b61572160808301856145c8565b61572e60a0830184614264565b979650505050505050565b60008151905061574881613f96565b92915050565b60008060006060848603121561576757615766613f82565b5b600061577586828701615739565b935050602061578686828701615739565b925050604061579786828701615739565b915050925092509256fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a207472616e7366657220616d6f756e7420657863656564732062616c616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206560e26aff1ac3b5fb8a45f34fd8237cc30e964c588059c0f1472cdc8532288764736f6c634300080d0033
Deployed Bytecode
0x6080604052600436106103395760003560e01c806375f0a874116101ab578063a614ff75116100f7578063dd62ed3e11610095578063f2fde38b1161006f578063f2fde38b14610bf5578063f637434214610c1e578063f8b45b0514610c49578063fc6b151c14610c7457610340565b8063dd62ed3e14610b62578063e2f4560514610b9f578063f11a24d314610bca57610340565b8063b62496f5116100d1578063b62496f514610aa8578063b74e3b1114610ae5578063d045a32914610b0e578063d5e3725114610b3957610340565b8063a614ff7514610a17578063a9059cbb14610a40578063b494298814610a7d57610340565b806395451c29116101645780639a7a23d61161013e5780639a7a23d61461095b5780639c3b4fdc14610984578063a0d82dc5146109af578063a457c2d7146109da57610340565b806395451c29146108dc57806395d89b4114610907578063992c58e41461093257610340565b806375f0a874146107f05780637fdde05c1461081b5780638a8c523c146108445780638c3c82b21461085b5780638da5cb5b146108865780638ea5220f146108b157610340565b80633f407b84116102855780635d098b38116102235780637088fb7f116101fd5780637088fb7f1461075c57806370a0823114610773578063715018a6146107b057806375829def146107c757610340565b80635d098b38146106e15780635eee4bae1461070a578063679ca6e91461073357610340565b80634a74bb021161025f5780634a74bb02146106235780634ada218b1461064e5780634fbee193146106795780635124f874146106b657610340565b80633f407b84146105a257806349bd5a5e146105cd5780634a62bb65146105f857610340565b80631d7b1fb4116102f25780632307b441116102cc5780632307b441146104d457806323b872dd146104fd578063313ce5671461053a578063395093511461056557610340565b80631d7b1fb4146104555780631f53ac02146104805780631fa70531146104a957610340565b806305ca5f081461034557806306fdde031461036e57806308dfe8a514610399578063095ea7b3146103c25780631694505e146103ff57806318160ddd1461042a57610340565b3661034057005b600080fd5b34801561035157600080fd5b5061036c60048036038101906103679190613fc2565b610c9d565b005b34801561037a57600080fd5b50610383610e00565b6040516103909190614088565b60405180910390f35b3480156103a557600080fd5b506103c060048036038101906103bb9190614140565b610e92565b005b3480156103ce57600080fd5b506103e960048036038101906103e49190614180565b610fd2565b6040516103f691906141cf565b60405180910390f35b34801561040b57600080fd5b50610414610ff0565b6040516104219190614249565b60405180910390f35b34801561043657600080fd5b5061043f611016565b60405161044c9190614273565b60405180910390f35b34801561046157600080fd5b5061046a611020565b6040516104779190614273565b60405180910390f35b34801561048c57600080fd5b506104a760048036038101906104a2919061428e565b611026565b005b3480156104b557600080fd5b506104be611190565b6040516104cb9190614273565b60405180910390f35b3480156104e057600080fd5b506104fb60048036038101906104f691906144c6565b611196565b005b34801561050957600080fd5b50610524600480360381019061051f919061453e565b611338565b60405161053191906141cf565b60405180910390f35b34801561054657600080fd5b5061054f611411565b60405161055c91906145ad565b60405180910390f35b34801561057157600080fd5b5061058c60048036038101906105879190614180565b61141a565b60405161059991906141cf565b60405180910390f35b3480156105ae57600080fd5b506105b76114cd565b6040516105c49190614273565b60405180910390f35b3480156105d957600080fd5b506105e26114d3565b6040516105ef91906145d7565b60405180910390f35b34801561060457600080fd5b5061060d6114f9565b60405161061a91906141cf565b60405180910390f35b34801561062f57600080fd5b5061063861150c565b60405161064591906141cf565b60405180910390f35b34801561065a57600080fd5b5061066361151f565b60405161067091906141cf565b60405180910390f35b34801561068557600080fd5b506106a0600480360381019061069b919061428e565b611532565b6040516106ad91906141cf565b60405180910390f35b3480156106c257600080fd5b506106cb611588565b6040516106d89190614273565b60405180910390f35b3480156106ed57600080fd5b506107086004803603810190610703919061428e565b61158e565b005b34801561071657600080fd5b50610731600480360381019061072c9190613fc2565b6116f8565b005b34801561073f57600080fd5b5061075a600480360381019061075591906145f2565b6117ac565b005b34801561076857600080fd5b50610771611860565b005b34801561077f57600080fd5b5061079a6004803603810190610795919061428e565b611946565b6040516107a79190614273565b60405180910390f35b3480156107bc57600080fd5b506107c561198e565b005b3480156107d357600080fd5b506107ee60048036038101906107e9919061428e565b611ae6565b005b3480156107fc57600080fd5b50610805611c39565b6040516108129190614640565b60405180910390f35b34801561082757600080fd5b50610842600480360381019061083d9190614140565b611c5f565b005b34801561085057600080fd5b50610859611d51565b005b34801561086757600080fd5b50610870611e59565b60405161087d9190614273565b60405180910390f35b34801561089257600080fd5b5061089b611e5f565b6040516108a891906145d7565b60405180910390f35b3480156108bd57600080fd5b506108c6611e89565b6040516108d39190614640565b60405180910390f35b3480156108e857600080fd5b506108f1611eaf565b6040516108fe9190614273565b60405180910390f35b34801561091357600080fd5b5061091c611eb5565b6040516109299190614088565b60405180910390f35b34801561093e57600080fd5b506109596004803603810190610954919061465b565b611f47565b005b34801561096757600080fd5b50610982600480360381019061097d9190614140565b612113565b005b34801561099057600080fd5b506109996121b8565b6040516109a69190614273565b60405180910390f35b3480156109bb57600080fd5b506109c46121be565b6040516109d19190614273565b60405180910390f35b3480156109e657600080fd5b50610a0160048036038101906109fc9190614180565b6121c4565b604051610a0e91906141cf565b60405180910390f35b348015610a2357600080fd5b50610a3e6004803603810190610a3991906145f2565b612291565b005b348015610a4c57600080fd5b50610a676004803603810190610a629190614180565b612345565b604051610a7491906141cf565b60405180910390f35b348015610a8957600080fd5b50610a92612363565b604051610a9f9190614273565b60405180910390f35b348015610ab457600080fd5b50610acf6004803603810190610aca919061428e565b612369565b604051610adc91906141cf565b60405180910390f35b348015610af157600080fd5b50610b0c6004803603810190610b079190613fc2565b612389565b005b348015610b1a57600080fd5b50610b2361246f565b604051610b3091906141cf565b60405180910390f35b348015610b4557600080fd5b50610b606004803603810190610b5b91906145f2565b612482565b005b348015610b6e57600080fd5b50610b896004803603810190610b8491906146e8565b61258c565b604051610b969190614273565b60405180910390f35b348015610bab57600080fd5b50610bb4612613565b604051610bc19190614273565b60405180910390f35b348015610bd657600080fd5b50610bdf612619565b604051610bec9190614273565b60405180910390f35b348015610c0157600080fd5b50610c1c6004803603810190610c17919061428e565b61261f565b005b348015610c2a57600080fd5b50610c336127e5565b604051610c409190614273565b60405180910390f35b348015610c5557600080fd5b50610c5e6127eb565b604051610c6b9190614273565b60405180910390f35b348015610c8057600080fd5b50610c9b6004803603810190610c969190613fc2565b6127f1565b005b610ca5612957565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2b90614774565b60405180910390fd5b670de0b6b3a764000081610d4891906147c3565b90506000610d636008546009546128f990919063ffffffff16565b90506000610d8e82610d806009548661295f90919063ffffffff16565b6129d990919063ffffffff16565b90506000610db983610dab6008548761295f90919063ffffffff16565b6129d990919063ffffffff16565b9050610dc484612a23565b610dd982600954612c6590919063ffffffff16565b600981905550610df481600854612c6590919063ffffffff16565b60088190555050505050565b606060038054610e0f9061484c565b80601f0160208091040260200160405190810160405280929190818152602001828054610e3b9061484c565b8015610e885780601f10610e5d57610100808354040283529160200191610e88565b820191906000526020600020905b815481529060010190602001808311610e6b57829003601f168201915b5050505050905090565b610e9a612957565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2090614774565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051610fc691906141cf565b60405180910390a25050565b6000610fe6610fdf612957565b8484612caf565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b60215481565b61102e612957565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b490614774565b60405180910390fd5b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1816467f4e41d8dd27500ca11dc471852ca93f9b624c4d8d4430b8c4fa6424fa8160405161118591906145d7565b60405180910390a150565b60095481565b61119e612957565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461122d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122490614774565b60405180910390fd5b8051825114611271576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611268906148c9565b60405180910390fd5b60c8825111156112b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ad9061495b565b60405180910390fd5b60005b82518110156113335760008382815181106112d7576112d661497b565b5b602002602001015190506000670de0b6b3a76400008484815181106112ff576112fe61497b565b5b602002602001015161131191906147c3565b905061131e338383612e78565b5050808061132b906149aa565b9150506112b9565b505050565b600061134584848461310b565b61140684611351612957565b611401856040518060600160405280602881526020016157a260289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113b7612957565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a439092919063ffffffff16565b612caf565b600190509392505050565b60006012905090565b60006114c3611427612957565b846114be8560016000611438612957565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128f990919063ffffffff16565b612caf565b6001905092915050565b60085481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b60009054906101000a900460ff1681565b601760009054906101000a900460ff1681565b600760159054906101000a900460ff1681565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60135481565b611596612957565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161c90614774565b60405180910390fd5b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507faacebbe32c0dbd14817cfb53e3cc8be68c7e133928317145be50a0d86c224433816040516116ed91906145d7565b60405180910390a150565b611700612957565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461178f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178690614774565b60405180910390fd5b670de0b6b3a7640000816117a391906147c3565b60108190555050565b6117b4612957565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183a90614774565b60405180910390fd5b80601b60006101000a81548160ff02191690831515021790555050565b611868612957565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ee90614774565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611942573d6000803e3d6000fd5b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611996612957565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1c90614774565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611aee612957565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7490614774565b60405180910390fd5b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611c368161261f565b50565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611c67612957565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ced90614774565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611d59612957565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddf90614774565b60405180910390fd5b600760159054906101000a900460ff1615611e0257600080fd5b6001600760156101000a81548160ff02191690831515021790555043601f81905550426020819055507f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c760405160405180910390a1565b60205481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b606060048054611ec49061484c565b80601f0160208091040260200160405190810160405280929190818152602001828054611ef09061484c565b8015611f3d5780601f10611f1257610100808354040283529160200191611f3d565b820191906000526020600020905b815481529060010190602001808311611f2057829003601f168201915b5050505050905090565b611f4f612957565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd590614774565b60405180910390fd5b8560138190555083601481905550846011819055508260128190555081601581905550806016819055506120336016546120256012546011546128f990919063ffffffff16565b6128f990919063ffffffff16565b600a819055506120646015546120566014546013546128f990919063ffffffff16565b6128f990919063ffffffff16565b600b81905550600a80541115801561207f5750600a600b5411155b6120be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b590614a64565b60405180910390fd5b7ffb0d6f48717e74b9ad8ae84d152197402ac50bd6431ea28437926861021948ff60115460125460165460135460145460155460405161210396959493929190614a84565b60405180910390a1505050505050565b61211b612957565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a190614774565b60405180910390fd5b6121b48282613aa7565b5050565b60155481565b60165481565b60006122876121d1612957565b84612282856040518060600160405280602581526020016157f060259139600160006121fb612957565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a439092919063ffffffff16565b612caf565b6001905092915050565b612299612957565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231f90614774565b60405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b6000612359612352612957565b848461310b565b6001905092915050565b601f5481565b60196020528060005260406000206000915054906101000a900460ff1681565b612391612957565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612420576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241790614774565b60405180910390fd5b61012c811115612465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245c90614b57565b60405180910390fd5b8060218190555050565b600f60009054906101000a900460ff1681565b61248a612957565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612519576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251090614774565b60405180910390fd5b801515601760009054906101000a900460ff1615150361253857600080fd5b80601760006101000a81548160ff0219169083151502179055507fff5917043f8453af413305b2dbd1ed9748a37df481beb71ba4b9b212a07b9bef8160405161258191906141cf565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60105481565b60145481565b612627612957565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ad90614774565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612725576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271c90614be9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b600e5481565b6127f9612957565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612888576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287f90614774565b60405180910390fd5b670de0b6b3a76400008161289c91906147c3565b905060646002546128ad9190614c38565b8110156128ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e690614cdb565b60405180910390fd5b80600e8190555050565b60008082846129089190614cfb565b90508381101561294d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294490614d9d565b60405180910390fd5b8091505092915050565b600033905090565b600080830361297157600090506129d3565b6000828461297f91906147c3565b905082848261298e9190614c38565b146129ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c590614e2f565b60405180910390fd5b809150505b92915050565b6000612a1b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613b48565b905092915050565b6000810315612c6257612a3581613bab565b6000600190506000600190506000612a5a6015546013546128f990919063ffffffff16565b612a716016546011546128f990919063ffffffff16565b612a7b9190614cfb565b9050600080821115612a9d57612a9a82476129d990919063ffffffff16565b90505b600081612ab76011546013546128f990919063ffffffff16565b612ac191906147c3565b9050600082612add6016546015546128f990919063ffffffff16565b612ae791906147c3565b90506000821115612b8157600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612b3890614e80565b60006040518083038185875af1925050503d8060008114612b75576040519150601f19603f3d011682016040523d82523d6000602084013e612b7a565b606091505b5050809650505b6000811115612c1957600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051612bd090614e80565b60006040518083038185875af1925050503d8060008114612c0d576040519150601f19603f3d011682016040523d82523d6000602084013e612c12565b606091505b5050809550505b7f31ea026303a62d39c4ad14716f9621f1afe3242309c2ed761d4e241ae4bf2ea982878015612c455750865b604051612c53929190614e95565b60405180910390a15050505050505b50565b6000612ca783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613a43565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1590614f30565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8490614fc2565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612e6b9190614273565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ee7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ede90615054565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612f56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4d906150e6565b60405180910390fd5b612f61838383613dee565b612fcc816040518060600160405280602681526020016157ca602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a439092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061305f816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128f990919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130fe9190614273565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361317a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161317190615178565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036131e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131e09061520a565b60405180910390fd5b6000806000601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661328f57600760159054906101000a900460ff1661328e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328590615276565b60405180910390fd5b5b600084036132ab576132a386866000612e78565b505050613a3e565b600760149054906101000a900460ff161580156133125750601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133685750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613a2f576000601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905080156134c157601154935060125492506016549150601b60009054906101000a900460ff16156134bc57602154601e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134359190614cfb565b421015613477576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161346e906152e2565b60405180910390fd5b42601e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b613788565b601354935060145492506015549150601b60009054906101000a900460ff1615613713576002601f546134f49190614cfb565b4311613535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161352c9061534e565b60405180910390fd5b601c543a111561357a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613571906153ba565b60405180910390fd5b43601d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036135fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135f290615426565b60405180910390fd5b602154601e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136489190614cfb565b42101561368a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613681906152e2565b60405180910390fd5b43601d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042601e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600f60009054906101000a900460ff161561378757600061373387611946565b9050600e5486826137449190614cfb565b1115613785576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161377c906154b8565b60405180910390fd5b505b5b60006137af836137a186886128f990919063ffffffff16565b6128f990919063ffffffff16565b905060006137bc30611946565b90506000601054821015905080801561381f5750601960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561399d576001600760146101000a81548160ff0219169083151502179055506000601760009054906101000a900460ff16801561385d5750600087115b1561394d57600061387b6008546009546128f990919063ffffffff16565b905060006138a6826138986009548861295f90919063ffffffff16565b6129d990919063ffffffff16565b905060006138d1836138c36008548961295f90919063ffffffff16565b6129d990919063ffffffff16565b905060006138fc600b546138ee8d8661295f90919063ffffffff16565b6129d990919063ffffffff16565b90506000613927600a546139198e8661295f90919063ffffffff16565b6129d990919063ffffffff16565b905061393c82826128f990919063ffffffff16565b955061394786613df3565b50505050505b600061396482601054612c6590919063ffffffff16565b905061396f81612a23565b600060098190555060006008819055506000600760146101000a81548160ff02191690831515021790555050505b60006139c560646139b7868c61295f90919063ffffffff16565b6129d990919063ffffffff16565b90506139da818a612c6590919063ffffffff16565b98508415613a02576139f7816008546128f990919063ffffffff16565b600881905550613a1e565b613a17816009546128f990919063ffffffff16565b6009819055505b613a298b3083612e78565b50505050505b613a3a868686612e78565b5050505b505050565b6000838311158290613a8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a829190614088565b60405180910390fd5b5060008385613a9a91906154d8565b9050809150509392505050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60008083118290613b8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b869190614088565b60405180910390fd5b5060008385613b9e9190614c38565b9050809150509392505050565b6000600267ffffffffffffffff811115613bc857613bc76142c0565b5b604051908082528060200260200182016040528015613bf65781602001602082028036833780820191505090505b5090503081600081518110613c0e57613c0d61497b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cd99190615521565b81600181518110613ced57613cec61497b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d5430600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612caf565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613db8959493929190615647565b600060405180830381600087803b158015613dd257600080fd5b505af1158015613de6573d6000803e3d6000fd5b505050505050565b505050565b6000613e096002836129d990919063ffffffff16565b90506000613e208284612c6590919063ffffffff16565b90506000479050613e3083613bab565b6000613e458247612c6590919063ffffffff16565b9050613e518382613e93565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561848285604051613e84939291906156a1565b60405180910390a15050505050565b613ec030600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612caf565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613f0c611e5f565b426040518863ffffffff1660e01b8152600401613f2e969594939291906156d8565b60606040518083038185885af1158015613f4c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613f71919061574e565b5050505050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b613f9f81613f8c565b8114613faa57600080fd5b50565b600081359050613fbc81613f96565b92915050565b600060208284031215613fd857613fd7613f82565b5b6000613fe684828501613fad565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561402957808201518184015260208101905061400e565b83811115614038576000848401525b50505050565b6000601f19601f8301169050919050565b600061405a82613fef565b6140648185613ffa565b935061407481856020860161400b565b61407d8161403e565b840191505092915050565b600060208201905081810360008301526140a2818461404f565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006140d5826140aa565b9050919050565b6140e5816140ca565b81146140f057600080fd5b50565b600081359050614102816140dc565b92915050565b60008115159050919050565b61411d81614108565b811461412857600080fd5b50565b60008135905061413a81614114565b92915050565b6000806040838503121561415757614156613f82565b5b6000614165858286016140f3565b92505060206141768582860161412b565b9150509250929050565b6000806040838503121561419757614196613f82565b5b60006141a5858286016140f3565b92505060206141b685828601613fad565b9150509250929050565b6141c981614108565b82525050565b60006020820190506141e460008301846141c0565b92915050565b6000819050919050565b600061420f61420a614205846140aa565b6141ea565b6140aa565b9050919050565b6000614221826141f4565b9050919050565b600061423382614216565b9050919050565b61424381614228565b82525050565b600060208201905061425e600083018461423a565b92915050565b61426d81613f8c565b82525050565b60006020820190506142886000830184614264565b92915050565b6000602082840312156142a4576142a3613f82565b5b60006142b2848285016140f3565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6142f88261403e565b810181811067ffffffffffffffff82111715614317576143166142c0565b5b80604052505050565b600061432a613f78565b905061433682826142ef565b919050565b600067ffffffffffffffff821115614356576143556142c0565b5b602082029050602081019050919050565b600080fd5b600061437f61437a8461433b565b614320565b905080838252602082019050602084028301858111156143a2576143a1614367565b5b835b818110156143cb57806143b788826140f3565b8452602084019350506020810190506143a4565b5050509392505050565b600082601f8301126143ea576143e96142bb565b5b81356143fa84826020860161436c565b91505092915050565b600067ffffffffffffffff82111561441e5761441d6142c0565b5b602082029050602081019050919050565b600061444261443d84614403565b614320565b9050808382526020820190506020840283018581111561446557614464614367565b5b835b8181101561448e578061447a8882613fad565b845260208401935050602081019050614467565b5050509392505050565b600082601f8301126144ad576144ac6142bb565b5b81356144bd84826020860161442f565b91505092915050565b600080604083850312156144dd576144dc613f82565b5b600083013567ffffffffffffffff8111156144fb576144fa613f87565b5b614507858286016143d5565b925050602083013567ffffffffffffffff81111561452857614527613f87565b5b61453485828601614498565b9150509250929050565b60008060006060848603121561455757614556613f82565b5b6000614565868287016140f3565b9350506020614576868287016140f3565b925050604061458786828701613fad565b9150509250925092565b600060ff82169050919050565b6145a781614591565b82525050565b60006020820190506145c2600083018461459e565b92915050565b6145d1816140ca565b82525050565b60006020820190506145ec60008301846145c8565b92915050565b60006020828403121561460857614607613f82565b5b60006146168482850161412b565b91505092915050565b600061462a826140aa565b9050919050565b61463a8161461f565b82525050565b60006020820190506146556000830184614631565b92915050565b60008060008060008060c0878903121561467857614677613f82565b5b600061468689828a01613fad565b965050602061469789828a01613fad565b95505060406146a889828a01613fad565b94505060606146b989828a01613fad565b93505060806146ca89828a01613fad565b92505060a06146db89828a01613fad565b9150509295509295509295565b600080604083850312156146ff576146fe613f82565b5b600061470d858286016140f3565b925050602061471e858286016140f3565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061475e602083613ffa565b915061476982614728565b602082019050919050565b6000602082019050818103600083015261478d81614751565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006147ce82613f8c565b91506147d983613f8c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561481257614811614794565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061486457607f821691505b6020821081036148775761487661481d565b5b50919050565b7f417272617973206d757374206265207468652073616d65206c656e6774680000600082015250565b60006148b3601e83613ffa565b91506148be8261487d565b602082019050919050565b600060208201905081810360008301526148e2816148a6565b9050919050565b7f57616c6c657473206c697374206c656e677468206d757374206265203c3d203260008201527f3030000000000000000000000000000000000000000000000000000000000000602082015250565b6000614945602283613ffa565b9150614950826148e9565b604082019050919050565b6000602082019050818103600083015261497481614938565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006149b582613f8c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036149e7576149e6614794565b5b600182019050919050565b7f746f74616c20666565732063616e6e6f7420626520686967686572207468616e60008201527f2031302500000000000000000000000000000000000000000000000000000000602082015250565b6000614a4e602483613ffa565b9150614a59826149f2565b604082019050919050565b60006020820190508181036000830152614a7d81614a41565b9050919050565b600060c082019050614a996000830189614264565b614aa66020830188614264565b614ab36040830187614264565b614ac06060830186614264565b614acd6080830185614264565b614ada60a0830184614264565b979650505050505050565b7f636f6f6c646f776e2074696d65722063616e6e6f74206578636565642035206d60008201527f696e757465730000000000000000000000000000000000000000000000000000602082015250565b6000614b41602683613ffa565b9150614b4c82614ae5565b604082019050919050565b60006020820190508181036000830152614b7081614b34565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614bd3602683613ffa565b9150614bde82614b77565b604082019050919050565b60006020820190508181036000830152614c0281614bc6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614c4382613f8c565b9150614c4e83613f8c565b925082614c5e57614c5d614c09565b5b828204905092915050565b7f6d61782077616c6c65742063616e6e6f742062652073657420746f206c65737360008201527f207468616e203125000000000000000000000000000000000000000000000000602082015250565b6000614cc5602883613ffa565b9150614cd082614c69565b604082019050919050565b60006020820190508181036000830152614cf481614cb8565b9050919050565b6000614d0682613f8c565b9150614d1183613f8c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614d4657614d45614794565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614d87601b83613ffa565b9150614d9282614d51565b602082019050919050565b60006020820190508181036000830152614db681614d7a565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614e19602183613ffa565b9150614e2482614dbd565b604082019050919050565b60006020820190508181036000830152614e4881614e0c565b9050919050565b600081905092915050565b50565b6000614e6a600083614e4f565b9150614e7582614e5a565b600082019050919050565b6000614e8b82614e5d565b9150819050919050565b6000604082019050614eaa6000830185614264565b614eb760208301846141c0565b9392505050565b7f42455032303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614f1a602483613ffa565b9150614f2582614ebe565b604082019050919050565b60006020820190508181036000830152614f4981614f0d565b9050919050565b7f42455032303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614fac602283613ffa565b9150614fb782614f50565b604082019050919050565b60006020820190508181036000830152614fdb81614f9f565b9050919050565b7f42455032303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061503e602583613ffa565b915061504982614fe2565b604082019050919050565b6000602082019050818103600083015261506d81615031565b9050919050565b7f42455032303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006150d0602383613ffa565b91506150db82615074565b604082019050919050565b600060208201905081810360008301526150ff816150c3565b9050919050565b7f4942455032303a207472616e736665722066726f6d20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615162602683613ffa565b915061516d82615106565b604082019050919050565b6000602082019050818103600083015261519181615155565b9050919050565b7f4942455032303a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006151f4602483613ffa565b91506151ff82615198565b604082019050919050565b60006020820190508181036000830152615223816151e7565b9050919050565b7f54726164696e6720686173206e6f7420796574206265656e20656e61626c6564600082015250565b6000615260602083613ffa565b915061526b8261522a565b602082019050919050565b6000602082019050818103600083015261528f81615253565b9050919050565b7f636f6f6c646f776e20706572696f642061637469766500000000000000000000600082015250565b60006152cc601683613ffa565b91506152d782615296565b602082019050919050565b600060208201905081810360008301526152fb816152bf565b9050919050565b7f796f75207368616c6c206e6f7420706173730000000000000000000000000000600082015250565b6000615338601283613ffa565b915061534382615302565b602082019050919050565b600060208201905081810360008301526153678161532b565b9050919050565b7f4761732070726963652065786365656473206c696d69742e0000000000000000600082015250565b60006153a4601883613ffa565b91506153af8261536e565b602082019050919050565b600060208201905081810360008301526153d381615397565b9050919050565b7f546f6f206d616e7920545820696e20626c6f636b000000000000000000000000600082015250565b6000615410601483613ffa565b915061541b826153da565b602082019050919050565b6000602082019050818103600083015261543f81615403565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f60008201527f756e742e00000000000000000000000000000000000000000000000000000000602082015250565b60006154a2602483613ffa565b91506154ad82615446565b604082019050919050565b600060208201905081810360008301526154d181615495565b9050919050565b60006154e382613f8c565b91506154ee83613f8c565b92508282101561550157615500614794565b5b828203905092915050565b60008151905061551b816140dc565b92915050565b60006020828403121561553757615536613f82565b5b60006155458482850161550c565b91505092915050565b6000819050919050565b600061557361556e6155698461554e565b6141ea565b613f8c565b9050919050565b61558381615558565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6155be816140ca565b82525050565b60006155d083836155b5565b60208301905092915050565b6000602082019050919050565b60006155f482615589565b6155fe8185615594565b9350615609836155a5565b8060005b8381101561563a57815161562188826155c4565b975061562c836155dc565b92505060018101905061560d565b5085935050505092915050565b600060a08201905061565c6000830188614264565b615669602083018761557a565b818103604083015261567b81866155e9565b905061568a60608301856145c8565b6156976080830184614264565b9695505050505050565b60006060820190506156b66000830186614264565b6156c36020830185614264565b6156d06040830184614264565b949350505050565b600060c0820190506156ed60008301896145c8565b6156fa6020830188614264565b615707604083018761557a565b615714606083018661557a565b61572160808301856145c8565b61572e60a0830184614264565b979650505050505050565b60008151905061574881613f96565b92915050565b60008060006060848603121561576757615766613f82565b5b600061577586828701615739565b935050602061578686828701615739565b925050604061579786828701615739565b915050925092509256fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a207472616e7366657220616d6f756e7420657863656564732062616c616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206560e26aff1ac3b5fb8a45f34fd8237cc30e964c588059c0f1472cdc8532288764736f6c634300080d0033
Deployed Bytecode Sourcemap
15487:15676:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29090:443;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3370:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20197:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4284:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15569:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3691:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16925:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19998:187;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15761:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30599:561;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4461:345;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19403:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4814:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15725:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15619:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16534:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16287:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15682:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23195:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16147:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19785:205;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21405:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20541:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21251:146;;;;;;;;;;;;;:::i;:::-;;3807:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7262:148;;;;;;;;;;;;;:::i;:::-;;22096:212;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15871:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20386:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19541:232;;;;;;;;;;;;;:::i;:::-;;16863:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7048:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15916:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16070;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3478:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22316:871;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21749:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16222:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16253:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5040:286;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20648:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3942:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16812:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16395:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20759:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15988:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21533:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4125:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16030:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16185:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7418:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16109:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15957:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20947:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29090:443;7185:12;:10;:12::i;:::-;7175:22;;:6;;;;;;;;;;;:22;;;7167:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29188:6:::1;29178;:17;;;;:::i;:::-;29169:26;;29206:19;29228:25;29242:10;;29228:9;;:13;;:25;;;;:::i;:::-;29206:47;;29264:15;29282:38;29308:11;29282:21;29293:9;;29282:6;:10;;:21;;;;:::i;:::-;:25;;:38;;;;:::i;:::-;29264:56;;29331:16;29350:39;29377:11;29350:22;29361:10;;29350:6;:10;;:22;;;;:::i;:::-;:26;;:39;;;;:::i;:::-;29331:58;;29402:28;29423:6;29402:20;:28::i;:::-;29455:22;29469:7;29455:9;;:13;;:22;;;;:::i;:::-;29443:9;:34;;;;29501:24;29516:8;29501:10;;:14;;:24;;;;:::i;:::-;29488:10;:37;;;;29158:375;;;29090:443:::0;:::o;3370:100::-;3424:13;3457:5;3450:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3370:100;:::o;20197:181::-;7185:12;:10;:12::i;:::-;7175:22;;:6;;;;;;;;;;;:22;;;7167:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20312:8:::1;20281:19;:28;20301:7;20281:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20352:7;20336:34;;;20361:8;20336:34;;;;;;:::i;:::-;;;;;;;;20197:181:::0;;:::o;4284:169::-;4367:4;4384:39;4393:12;:10;:12::i;:::-;4407:7;4416:6;4384:8;:39::i;:::-;4441:4;4434:11;;4284:169;;;;:::o;15569:41::-;;;;;;;;;;;;;:::o;3691:108::-;3752:7;3779:12;;3772:19;;3691:108;:::o;16925:32::-;;;;:::o;19998:187::-;7185:12;:10;:12::i;:::-;7175:22;;:6;;;;;;;;;;;:22;;;7167:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20096:4:::1;20066:19;:27;20086:6;20066:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;20131:6;20111:9;;:27;;;;;;;;;;;;;;;;;;20154:23;20170:6;20154:23;;;;;;:::i;:::-;;;;;;;;19998:187:::0;:::o;15761:28::-;;;;:::o;30599:561::-;7185:12;:10;:12::i;:::-;7175:22;;:6;;;;;;;;;;;:22;;;7167:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30771:6:::1;:13;30746:14;:21;:38;30738:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;30863:3;30838:14;:21;:28;;30830:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;30921:9;30916:237;30940:14;:21;30936:1;:25;30916:237;;;30983:14;31000;31015:1;31000:17;;;;;;;;:::i;:::-;;;;;;;;30983:34;;31032:21;31069:6;31056;31063:1;31056:9;;;;;;;;:::i;:::-;;;;;;;;:20;;;;:::i;:::-;31032:44;;31091:50;31107:10;31119:6;31127:13;31091:15;:50::i;:::-;30968:185;;30963:3;;;;;:::i;:::-;;;;30916:237;;;;30599:561:::0;;:::o;4461:345::-;4574:4;4591:36;4601:6;4609:9;4620:6;4591:9;:36::i;:::-;4638:138;4647:6;4655:12;:10;:12::i;:::-;4669:106;4707:6;4669:106;;;;;;;;;;;;;;;;;:11;:19;4681:6;4669:19;;;;;;;;;;;;;;;:33;4689:12;:10;:12::i;:::-;4669:33;;;;;;;;;;;;;;;;:37;;:106;;;;;:::i;:::-;4638:8;:138::i;:::-;4794:4;4787:11;;4461:345;;;;;:::o;19403:93::-;19461:5;19486:2;19479:9;;19403:93;:::o;4814:218::-;4902:4;4919:83;4928:12;:10;:12::i;:::-;4942:7;4951:50;4990:10;4951:11;:25;4963:12;:10;:12::i;:::-;4951:25;;;;;;;;;;;;;;;:34;4977:7;4951:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;4919:8;:83::i;:::-;5020:4;5013:11;;4814:218;;;;:::o;15725:29::-;;;;:::o;15619:28::-;;;;;;;;;;;;;:::o;16534:34::-;;;;;;;;;;;;;:::o;16287:40::-;;;;;;;;;;;;;:::o;15682:34::-;;;;;;;;;;;;;:::o;23195:126::-;23261:4;23285:19;:28;23305:7;23285:28;;;;;;;;;;;;;;;;;;;;;;;;;23278:35;;23195:126;;;:::o;16147:31::-;;;;:::o;19785:205::-;7185:12;:10;:12::i;:::-;7175:22;;:6;;;;;;;;;;;:22;;;7167:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19889:4:::1;19859:19;:27;19879:6;19859:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;19930:6;19904:15;;:33;;;;;;;;;;;;;;;;;;19953:29;19975:6;19953:29;;;;;;:::i;:::-;;;;;;;;19785:205:::0;:::o;21405:120::-;7185:12;:10;:12::i;:::-;7175:22;;:6;;;;;;;;;;;:22;;;7167:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21510:6:::1;21500;:17;;;;:::i;:::-;21479:18;:38;;;;21405:120:::0;:::o;20541:99::-;7185:12;:10;:12::i;:::-;7175:22;;:6;;;;;;;;;;;:22;;;7167:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20627:5:::1;20610:14;;:22;;;;;;;;;;;;;;;;;;20541:99:::0;:::o;21251:146::-;7185:12;:10;:12::i;:::-;7175:22;;:6;;;;;;;;;;;:22;;;7167:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21298:17:::1;21318:21;21298:41;;21358:10;21350:28;;:39;21379:9;21350:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;21287:110;21251:146::o:0;3807:127::-;3881:7;3908:9;:18;3918:7;3908:18;;;;;;;;;;;;;;;;3901:25;;3807:127;;;:::o;7262:148::-;7185:12;:10;:12::i;:::-;7175:22;;:6;;;;;;;;;;;:22;;;7167:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7369:1:::1;7332:40;;7353:6;;;;;;;;;;;7332:40;;;;;;;;;;;;7400:1;7383:6;;:19;;;;;;;;;;;;;;;;;;7262:148::o:0;22096:212::-;7185:12;:10;:12::i;:::-;7175:22;;:6;;;;;;;;;;;:22;;;7167:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22197:4:::1;22165:19;:29;22185:8;22165:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;22258:4;22212:33;:43;22246:8;22212:43;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;22273:27;22291:8;22273:17;:27::i;:::-;22096:212:::0;:::o;15871:38::-;;;;;;;;;;;;;:::o;20386:147::-;7185:12;:10;:12::i;:::-;7175:22;;:6;;;;;;;;;;;:22;;;7167:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20519:6:::1;20475:33;:41;20509:6;20475:41;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;20386:147:::0;;:::o;19541:232::-;7185:12;:10;:12::i;:::-;7175:22;;:6;;;;;;;;;;;:22;;;7167:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19605:14:::1;;;;;;;;;;;19604:15;19596:24;;;::::0;::::1;;19648:4;19631:14;;:21;;;;;;;;;;;;;;;;;;19677:12;19663:11;:26;;;;19718:15;19700;:33;;;;19749:16;;;;;;;;;;19541:232::o:0;16863:30::-;;;;:::o;7048:79::-;7086:7;7113:6;;;;;;;;;;;7106:13;;7048:79;:::o;15916:32::-;;;;;;;;;;;;;:::o;16070:::-;;;;:::o;3478:104::-;3534:13;3567:7;3560:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3478:104;:::o;22316:871::-;7185:12;:10;:12::i;:::-;7175:22;;:6;;;;;;;;;;;:22;;;7167:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22533:12:::1;22514:16;:31;;;;22574:12;22556:15;:30;;;;22617:13;22597:17;:33;;;;22660:13;22641:16;:32;;;;22696:6;22684:9;:18;;;;22726:7;22713:10;:20;;;;22762:55;22806:10;;22762:39;22784:16;;22762:17;;:21;;:39;;;;:::i;:::-;:43;;:55;;;;:::i;:::-;22746:13;:71;;;;22843:52;22885:9;;22843:37;22864:15;;22843:16;;:20;;:37;;;;:::i;:::-;:41;;:52;;;;:::i;:::-;22828:12;:67;;;;22966:2;22949:13:::0;::::1;:19;;:41;;;;;22988:2;22972:12;;:18;;22949:41;22941:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;23049:130;23060:17;;23079:16;;23097:10;;23109:16;;23152:15;;23169:9;;23049:130;;;;;;;;;;;:::i;:::-;;;;;;;;22316:871:::0;;;;;;:::o;21749:140::-;7185:12;:10;:12::i;:::-;7175:22;;:6;;;;;;;;;;;:22;;;7167:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21840:41:::1;21869:4;21875:5;21840:28;:41::i;:::-;21749:140:::0;;:::o;16222:24::-;;;;:::o;16253:25::-;;;;:::o;5040:286::-;5133:4;5150:146;5159:12;:10;:12::i;:::-;5173:7;5182:113;5221:15;5182:113;;;;;;;;;;;;;;;;;:11;:25;5194:12;:10;:12::i;:::-;5182:25;;;;;;;;;;;;;;;:34;5208:7;5182:34;;;;;;;;;;;;;;;;:38;;:113;;;;;:::i;:::-;5150:8;:146::i;:::-;5314:4;5307:11;;5040:286;;;;:::o;20648:103::-;7185:12;:10;:12::i;:::-;7175:22;;:6;;;;;;;;;;;:22;;;7167:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20738:5:::1;20719:16;;:24;;;;;;;;;;;;;;;;;;20648:103:::0;:::o;3942:175::-;4028:4;4045:42;4055:12;:10;:12::i;:::-;4069:9;4080:6;4045:9;:42::i;:::-;4105:4;4098:11;;3942:175;;;;:::o;16812:26::-;;;;:::o;16395:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;20759:174::-;7185:12;:10;:12::i;:::-;7175:22;;:6;;;;;;;;;;;:22;;;7167:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20847:3:::1;20838:5;:12;;20830:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;20920:5;20904:13;:21;;;;20759:174:::0;:::o;15988:35::-;;;;;;;;;;;;;:::o;21533:208::-;7185:12;:10;:12::i;:::-;7175:22;;:6;;;;;;;;;;;:22;;;7167:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21638:7:::1;21613:32;;:21;;;;;;;;;;;:32;;::::0;21605:41:::1;;;::::0;::::1;;21681:7;21657:21;;:31;;;;;;;;;;;;;;;;;;21704:29;21725:7;21704:29;;;;;;:::i;:::-;;;;;;;;21533:208:::0;:::o;4125:151::-;4214:7;4241:11;:18;4253:5;4241:18;;;;;;;;;;;;;;;:27;4260:7;4241:27;;;;;;;;;;;;;;;;4234:34;;4125:151;;;;:::o;16030:33::-;;;;:::o;16185:30::-;;;;:::o;7418:244::-;7185:12;:10;:12::i;:::-;7175:22;;:6;;;;;;;;;;;:22;;;7167:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7527:1:::1;7507:22;;:8;:22;;::::0;7499:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7617:8;7588:38;;7609:6;;;;;;;;;;;7588:38;;;;;;;;;;;;7646:8;7637:6;;:17;;;;;;;;;;;;;;;;;;7418:244:::0;:::o;16109:31::-;;;;:::o;15957:24::-;;;;:::o;20947:218::-;7185:12;:10;:12::i;:::-;7175:22;;:6;;;;;;;;;;;:22;;;7167:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21031:6:::1;21022:5;:16;;;;:::i;:::-;21014:24;;21081:3;21066:12;;:18;;;;:::i;:::-;21057:5;:27;;21049:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;21152:5;21140:9;:17;;;;20947:218:::0;:::o;604:179::-;662:7;682:9;698:1;694;:5;;;;:::i;:::-;682:17;;723:1;718;:6;;710:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;774:1;767:8;;;604:179;;;;:::o;228:98::-;281:7;308:10;301:17;;228:98;:::o;1133:248::-;1191:7;1220:1;1215;:6;1211:47;;1245:1;1238:8;;;;1211:47;1270:9;1286:1;1282;:5;;;;:::i;:::-;1270:17;;1315:1;1310;1306;:5;;;;:::i;:::-;:10;1298:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1372:1;1365:8;;;1133:248;;;;;:::o;1389:132::-;1447:7;1474:39;1478:1;1481;1474:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1467:46;;1389:132;;;;:::o;29566:1025::-;29645:1;29635:6;:11;29631:50;29663:7;29631:50;29691:24;29708:6;29691:16;:24::i;:::-;29728:12;29743:4;29728:19;;29758:15;29776:4;29758:22;;29801:23;29863:31;29884:9;;29863:16;;:20;;:31;;;;:::i;:::-;29827:33;29849:10;;29827:17;;:21;;:33;;;;:::i;:::-;:67;;;;:::i;:::-;29801:93;;29907:19;29959:1;29941:15;:19;29937:108;;;29991:42;30017:15;29991:21;:25;;:42;;;;:::i;:::-;29977:56;;29937:108;30055:23;30123:11;30081:39;30102:17;;30081:16;;:20;;:39;;;;:::i;:::-;:53;;;;:::i;:::-;30055:79;;30145:17;30193:11;30165:25;30179:10;;30165:9;;:13;;:25;;;;:::i;:::-;:39;;;;:::i;:::-;30145:59;;30247:1;30229:15;:19;30225:123;;;30287:15;;;;;;;;;;;30279:29;;30316:15;30279:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30265:71;;;;;30225:123;30384:1;30372:9;:13;30368:108;;;30427:9;;;;;;;;;;;30419:23;;30450:9;30419:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30402:62;;;;;30368:108;30493:90;30521:15;30551:7;:21;;;;;30562:10;30551:21;30493:90;;;;;;;:::i;:::-;;;;;;;;29620:971;;;;;;29566:1025;;:::o;791:136::-;849:7;876:43;880:1;883;876:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;869:50;;791:136;;;;:::o;6266:346::-;6385:1;6368:19;;:5;:19;;;6360:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6466:1;6447:21;;:7;:21;;;6439:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6550:6;6520:11;:18;6532:5;6520:18;;;;;;;;;;;;;;;:27;6539:7;6520:27;;;;;;;;;;;;;;;:36;;;;6588:7;6572:32;;6581:5;6572:32;;;6597:6;6572:32;;;;;;:::i;:::-;;;;;;;;6266:346;;;:::o;5334:538::-;5458:1;5440:20;;:6;:20;;;5432:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5542:1;5521:23;;:9;:23;;;5513:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5597:47;5618:6;5626:9;5637:6;5597:20;:47::i;:::-;5677:70;5699:6;5677:70;;;;;;;;;;;;;;;;;:9;:17;5687:6;5677:17;;;;;;;;;;;;;;;;:21;;:70;;;;;:::i;:::-;5657:9;:17;5667:6;5657:17;;;;;;;;;;;;;;;:90;;;;5781:32;5806:6;5781:9;:20;5791:9;5781:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;5758:9;:20;5768:9;5758:20;;;;;;;;;;;;;;;:55;;;;5846:9;5829:35;;5838:6;5829:35;;;5857:6;5829:35;;;;;;:::i;:::-;;;;;;;;5334:538;;;:::o;23329:4235::-;23445:1;23429:18;;:4;:18;;;23421:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;23523:1;23509:16;;:2;:16;;;23501:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;23579:21;23611:20;23642:14;23674:33;:39;23708:4;23674:39;;;;;;;;;;;;;;;;;;;;;;;;;23669:142;;23738:14;;;;;;;;;;;23730:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;23669:142;23837:1;23827:6;:11;23823:3678;;23855:28;23871:4;23877:2;23881:1;23855:15;:28::i;:::-;23898:7;;;;;23823:3678;23961:8;;;;;;;;;;;23960:9;:39;;;;;23974:19;:25;23994:4;23974:25;;;;;;;;;;;;;;;;;;;;;;;;;23973:26;23960:39;:67;;;;;24004:19;:23;24024:2;24004:23;;;;;;;;;;;;;;;;;;;;;;;;;24003:24;23960:67;23942:3559;;;24054:14;24071:25;:29;24097:2;24071:29;;;;;;;;;;;;;;;;;;;;;;;;;24054:46;;24119:9;24115:1514;;;24165:17;;24149:33;;24216:16;;24201:31;;24260:10;;24251:19;;24295:14;;;;;;;;;;;24291:269;;;24399:13;;24357:28;:39;24386:9;24357:39;;;;;;;;;;;;;;;;:55;;;;:::i;:::-;24338:15;:74;;24330:134;;;;;;;;;;;;:::i;:::-;;;;;;;;;24525:15;24483:28;:39;24512:9;24483:39;;;;;;;;;;;;;;;:57;;;;24291:269;24115:1514;;;24644:16;;24628:32;;24694:15;;24679:30;;24737:9;;24728:18;;24771:14;;;;;;;;;;;24767:598;;;24843:1;24829:11;;:15;;;;:::i;:::-;24814:12;:30;24806:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;24908:13;;24893:11;:28;;24885:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;25015:12;24976:24;:35;25001:9;24976:35;;;;;;;;;;;;;;;;:51;24968:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;25139:13;;25097:28;:39;25126:9;25097:39;;;;;;;;;;;;;;;;:55;;;;:::i;:::-;25078:15;:74;;25070:134;;;;;;;;;;;;:::i;:::-;;;;;;;;;25261:12;25223:24;:35;25248:9;25223:35;;;;;;;;;;;;;;;:50;;;;25334:15;25292:28;:39;25321:9;25292:39;;;;;;;;;;;;;;;:57;;;;24767:598;25385:16;;;;;;;;;;;25381:233;;;25418:32;25453:13;25463:2;25453:9;:13::i;:::-;25418:48;;25526:9;;25516:6;25489:24;:33;;;;:::i;:::-;:46;;25481:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;25403:211;25381:233;24115:1514;25645:17;25665:43;25701:6;25665:31;25683:12;25665:13;:17;;:31;;;;:::i;:::-;:35;;:43;;;;:::i;:::-;25645:63;;25725:28;25756:24;25774:4;25756:9;:24::i;:::-;25725:55;;25797:12;25836:18;;25812:20;:42;;25797:57;;25875:7;:43;;;;;25887:25;:31;25913:4;25887:31;;;;;;;;;;;;;;;;;;;;;;;;;25886:32;25875:43;25871:1272;;;25950:4;25939:8;;:15;;;;;;;;;;;;;;;;;;25975:18;26018:21;;;;;;;;;;;:41;;;;;26058:1;26043:12;:16;26018:41;26014:875;;;26084:20;26107:25;26121:10;;26107:9;;:13;;:25;;;;:::i;:::-;26084:48;;26155:24;26182:105;26274:12;26182:61;26233:9;;26182:20;:50;;:61;;;;:::i;:::-;:91;;:105;;;;:::i;:::-;26155:132;;26310:22;26335:106;26428:12;26335:62;26386:10;;26335:20;:50;;:62;;;;:::i;:::-;:92;;:106;;;;:::i;:::-;26310:131;;26466:21;26490:104;26581:12;;26490:60;26537:12;26490:16;:46;;:60;;;;:::i;:::-;:90;;:104;;;;:::i;:::-;26466:128;;26619:22;26644:103;26733:13;;26644:58;26689:12;26644:14;:44;;:58;;;;:::i;:::-;:88;;:103;;;;:::i;:::-;26619:128;;26785:33;26804:13;26785:14;:18;;:33;;;;:::i;:::-;26772:46;;26843:26;26858:10;26843:14;:26::i;:::-;26061:828;;;;;26014:875;26909:24;26936:34;26959:10;26936:18;;:22;;:34;;;;:::i;:::-;26909:61;;26989:38;27010:16;26989:20;:38::i;:::-;27058:1;27046:9;:13;;;;27091:1;27078:10;:14;;;;27122:5;27111:8;;:16;;;;;;;;;;;;;;;;;;25920:1223;;25871:1272;27159:12;27174:30;27200:3;27174:21;27185:9;27174:6;:10;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;27159:45;;27230:16;27241:4;27230:6;:10;;:16;;;;:::i;:::-;27221:25;;27267:9;27263:155;;;27310:20;27325:4;27310:10;;:14;;:20;;;;:::i;:::-;27297:10;:33;;;;27263:155;;;27383:19;27397:4;27383:9;;:13;;:19;;;;:::i;:::-;27371:9;:31;;;;27263:155;27434:42;27450:4;27464;27471;27434:15;:42::i;:::-;24039:3462;;;;;23942:3559;27513:33;27529:4;27535:2;27539:6;27513:15;:33::i;:::-;23408:4156;;;23329:4235;;;;:::o;935:190::-;1021:7;1054:1;1049;:6;;1057:12;1041:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1081:9;1097:1;1093;:5;;;;:::i;:::-;1081:17;;1116:1;1109:8;;;935:190;;;;;:::o;21897:188::-;22014:5;21980:25;:31;22006:4;21980:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;22071:5;22037:40;;22065:4;22037:40;;;;;;;;;;;;21897:188;;:::o;1529:189::-;1615:7;1647:1;1643;:5;1650:12;1635:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1674:9;1690:1;1686;:5;;;;:::i;:::-;1674:17;;1709:1;1702:8;;;1529:189;;;;;:::o;28062:499::-;28128:21;28166:1;28152:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28128:40;;28197:4;28179;28184:1;28179:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;28223:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28213:4;28218:1;28213:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;28256:62;28273:4;28288:15;;;;;;;;;;;28306:11;28256:8;:62::i;:::-;28329:15;;;;;;;;;;;:66;;;28410:11;28436:1;28480:4;28507;28527:15;28329:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28117:444;28062:499;:::o;6620:91::-;;;;:::o;27574:480::-;27633:12;27648:13;27659:1;27648:6;:10;;:13;;;;:::i;:::-;27633:28;;27672:17;27692:16;27703:4;27692:6;:10;;:16;;;;:::i;:::-;27672:36;;27719:22;27744:21;27719:46;;27776:22;27793:4;27776:16;:22::i;:::-;27879:18;27900:41;27926:14;27900:21;:25;;:41;;;;:::i;:::-;27879:62;;27952:35;27965:9;27976:10;27952:12;:35::i;:::-;28003:43;28018:4;28024:10;28036:9;28003:43;;;;;;;;:::i;:::-;;;;;;;;27622:432;;;;27574:480;:::o;28569:513::-;28717:62;28734:4;28749:15;;;;;;;;;;;28767:11;28717:8;:62::i;:::-;28822:15;;;;;;;;;;;:31;;;28861:9;28894:4;28914:11;28940:1;28983;29026:7;:5;:7::i;:::-;29048:15;28822:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28569:513;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:99::-;1077:6;1111:5;1105:12;1095:22;;1025:99;;;:::o;1130:169::-;1214:11;1248:6;1243:3;1236:19;1288:4;1283:3;1279:14;1264:29;;1130:169;;;;:::o;1305:307::-;1373:1;1383:113;1397:6;1394:1;1391:13;1383:113;;;1482:1;1477:3;1473:11;1467:18;1463:1;1458:3;1454:11;1447:39;1419:2;1416:1;1412:10;1407:15;;1383:113;;;1514:6;1511:1;1508:13;1505:101;;;1594:1;1585:6;1580:3;1576:16;1569:27;1505:101;1354:258;1305:307;;;:::o;1618:102::-;1659:6;1710:2;1706:7;1701:2;1694:5;1690:14;1686:28;1676:38;;1618:102;;;:::o;1726:364::-;1814:3;1842:39;1875:5;1842:39;:::i;:::-;1897:71;1961:6;1956:3;1897:71;:::i;:::-;1890:78;;1977:52;2022:6;2017:3;2010:4;2003:5;1999:16;1977:52;:::i;:::-;2054:29;2076:6;2054:29;:::i;:::-;2049:3;2045:39;2038:46;;1818:272;1726:364;;;;:::o;2096:313::-;2209:4;2247:2;2236:9;2232:18;2224:26;;2296:9;2290:4;2286:20;2282:1;2271:9;2267:17;2260:47;2324:78;2397:4;2388:6;2324:78;:::i;:::-;2316:86;;2096:313;;;;:::o;2415:126::-;2452:7;2492:42;2485:5;2481:54;2470:65;;2415:126;;;:::o;2547:96::-;2584:7;2613:24;2631:5;2613:24;:::i;:::-;2602:35;;2547:96;;;:::o;2649:122::-;2722:24;2740:5;2722:24;:::i;:::-;2715:5;2712:35;2702:63;;2761:1;2758;2751:12;2702:63;2649:122;:::o;2777:139::-;2823:5;2861:6;2848:20;2839:29;;2877:33;2904:5;2877:33;:::i;:::-;2777:139;;;;:::o;2922:90::-;2956:7;2999:5;2992:13;2985:21;2974:32;;2922:90;;;:::o;3018:116::-;3088:21;3103:5;3088:21;:::i;:::-;3081:5;3078:32;3068:60;;3124:1;3121;3114:12;3068:60;3018:116;:::o;3140:133::-;3183:5;3221:6;3208:20;3199:29;;3237:30;3261:5;3237:30;:::i;:::-;3140:133;;;;:::o;3279:468::-;3344:6;3352;3401:2;3389:9;3380:7;3376:23;3372:32;3369:119;;;3407:79;;:::i;:::-;3369:119;3527:1;3552:53;3597:7;3588:6;3577:9;3573:22;3552:53;:::i;:::-;3542:63;;3498:117;3654:2;3680:50;3722:7;3713:6;3702:9;3698:22;3680:50;:::i;:::-;3670:60;;3625:115;3279:468;;;;;:::o;3753:474::-;3821:6;3829;3878:2;3866:9;3857:7;3853:23;3849:32;3846:119;;;3884:79;;:::i;:::-;3846:119;4004:1;4029:53;4074:7;4065:6;4054:9;4050:22;4029:53;:::i;:::-;4019:63;;3975:117;4131:2;4157:53;4202:7;4193:6;4182:9;4178:22;4157:53;:::i;:::-;4147:63;;4102:118;3753:474;;;;;:::o;4233:109::-;4314:21;4329:5;4314:21;:::i;:::-;4309:3;4302:34;4233:109;;:::o;4348:210::-;4435:4;4473:2;4462:9;4458:18;4450:26;;4486:65;4548:1;4537:9;4533:17;4524:6;4486:65;:::i;:::-;4348:210;;;;:::o;4564:60::-;4592:3;4613:5;4606:12;;4564:60;;;:::o;4630:142::-;4680:9;4713:53;4731:34;4740:24;4758:5;4740:24;:::i;:::-;4731:34;:::i;:::-;4713:53;:::i;:::-;4700:66;;4630:142;;;:::o;4778:126::-;4828:9;4861:37;4892:5;4861:37;:::i;:::-;4848:50;;4778:126;;;:::o;4910:153::-;4987:9;5020:37;5051:5;5020:37;:::i;:::-;5007:50;;4910:153;;;:::o;5069:185::-;5183:64;5241:5;5183:64;:::i;:::-;5178:3;5171:77;5069:185;;:::o;5260:276::-;5380:4;5418:2;5407:9;5403:18;5395:26;;5431:98;5526:1;5515:9;5511:17;5502:6;5431:98;:::i;:::-;5260:276;;;;:::o;5542:118::-;5629:24;5647:5;5629:24;:::i;:::-;5624:3;5617:37;5542:118;;:::o;5666:222::-;5759:4;5797:2;5786:9;5782:18;5774:26;;5810:71;5878:1;5867:9;5863:17;5854:6;5810:71;:::i;:::-;5666:222;;;;:::o;5894:329::-;5953:6;6002:2;5990:9;5981:7;5977:23;5973:32;5970:119;;;6008:79;;:::i;:::-;5970:119;6128:1;6153:53;6198:7;6189:6;6178:9;6174:22;6153:53;:::i;:::-;6143:63;;6099:117;5894:329;;;;:::o;6229:117::-;6338:1;6335;6328:12;6352:180;6400:77;6397:1;6390:88;6497:4;6494:1;6487:15;6521:4;6518:1;6511:15;6538:281;6621:27;6643:4;6621:27;:::i;:::-;6613:6;6609:40;6751:6;6739:10;6736:22;6715:18;6703:10;6700:34;6697:62;6694:88;;;6762:18;;:::i;:::-;6694:88;6802:10;6798:2;6791:22;6581:238;6538:281;;:::o;6825:129::-;6859:6;6886:20;;:::i;:::-;6876:30;;6915:33;6943:4;6935:6;6915:33;:::i;:::-;6825:129;;;:::o;6960:311::-;7037:4;7127:18;7119:6;7116:30;7113:56;;;7149:18;;:::i;:::-;7113:56;7199:4;7191:6;7187:17;7179:25;;7259:4;7253;7249:15;7241:23;;6960:311;;;:::o;7277:117::-;7386:1;7383;7376:12;7417:710;7513:5;7538:81;7554:64;7611:6;7554:64;:::i;:::-;7538:81;:::i;:::-;7529:90;;7639:5;7668:6;7661:5;7654:21;7702:4;7695:5;7691:16;7684:23;;7755:4;7747:6;7743:17;7735:6;7731:30;7784:3;7776:6;7773:15;7770:122;;;7803:79;;:::i;:::-;7770:122;7918:6;7901:220;7935:6;7930:3;7927:15;7901:220;;;8010:3;8039:37;8072:3;8060:10;8039:37;:::i;:::-;8034:3;8027:50;8106:4;8101:3;8097:14;8090:21;;7977:144;7961:4;7956:3;7952:14;7945:21;;7901:220;;;7905:21;7519:608;;7417:710;;;;;:::o;8150:370::-;8221:5;8270:3;8263:4;8255:6;8251:17;8247:27;8237:122;;8278:79;;:::i;:::-;8237:122;8395:6;8382:20;8420:94;8510:3;8502:6;8495:4;8487:6;8483:17;8420:94;:::i;:::-;8411:103;;8227:293;8150:370;;;;:::o;8526:311::-;8603:4;8693:18;8685:6;8682:30;8679:56;;;8715:18;;:::i;:::-;8679:56;8765:4;8757:6;8753:17;8745:25;;8825:4;8819;8815:15;8807:23;;8526:311;;;:::o;8860:710::-;8956:5;8981:81;8997:64;9054:6;8997:64;:::i;:::-;8981:81;:::i;:::-;8972:90;;9082:5;9111:6;9104:5;9097:21;9145:4;9138:5;9134:16;9127:23;;9198:4;9190:6;9186:17;9178:6;9174:30;9227:3;9219:6;9216:15;9213:122;;;9246:79;;:::i;:::-;9213:122;9361:6;9344:220;9378:6;9373:3;9370:15;9344:220;;;9453:3;9482:37;9515:3;9503:10;9482:37;:::i;:::-;9477:3;9470:50;9549:4;9544:3;9540:14;9533:21;;9420:144;9404:4;9399:3;9395:14;9388:21;;9344:220;;;9348:21;8962:608;;8860:710;;;;;:::o;9593:370::-;9664:5;9713:3;9706:4;9698:6;9694:17;9690:27;9680:122;;9721:79;;:::i;:::-;9680:122;9838:6;9825:20;9863:94;9953:3;9945:6;9938:4;9930:6;9926:17;9863:94;:::i;:::-;9854:103;;9670:293;9593:370;;;;:::o;9969:894::-;10087:6;10095;10144:2;10132:9;10123:7;10119:23;10115:32;10112:119;;;10150:79;;:::i;:::-;10112:119;10298:1;10287:9;10283:17;10270:31;10328:18;10320:6;10317:30;10314:117;;;10350:79;;:::i;:::-;10314:117;10455:78;10525:7;10516:6;10505:9;10501:22;10455:78;:::i;:::-;10445:88;;10241:302;10610:2;10599:9;10595:18;10582:32;10641:18;10633:6;10630:30;10627:117;;;10663:79;;:::i;:::-;10627:117;10768:78;10838:7;10829:6;10818:9;10814:22;10768:78;:::i;:::-;10758:88;;10553:303;9969:894;;;;;:::o;10869:619::-;10946:6;10954;10962;11011:2;10999:9;10990:7;10986:23;10982:32;10979:119;;;11017:79;;:::i;:::-;10979:119;11137:1;11162:53;11207:7;11198:6;11187:9;11183:22;11162:53;:::i;:::-;11152:63;;11108:117;11264:2;11290:53;11335:7;11326:6;11315:9;11311:22;11290:53;:::i;:::-;11280:63;;11235:118;11392:2;11418:53;11463:7;11454:6;11443:9;11439:22;11418:53;:::i;:::-;11408:63;;11363:118;10869:619;;;;;:::o;11494:86::-;11529:7;11569:4;11562:5;11558:16;11547:27;;11494:86;;;:::o;11586:112::-;11669:22;11685:5;11669:22;:::i;:::-;11664:3;11657:35;11586:112;;:::o;11704:214::-;11793:4;11831:2;11820:9;11816:18;11808:26;;11844:67;11908:1;11897:9;11893:17;11884:6;11844:67;:::i;:::-;11704:214;;;;:::o;11924:118::-;12011:24;12029:5;12011:24;:::i;:::-;12006:3;11999:37;11924:118;;:::o;12048:222::-;12141:4;12179:2;12168:9;12164:18;12156:26;;12192:71;12260:1;12249:9;12245:17;12236:6;12192:71;:::i;:::-;12048:222;;;;:::o;12276:323::-;12332:6;12381:2;12369:9;12360:7;12356:23;12352:32;12349:119;;;12387:79;;:::i;:::-;12349:119;12507:1;12532:50;12574:7;12565:6;12554:9;12550:22;12532:50;:::i;:::-;12522:60;;12478:114;12276:323;;;;:::o;12605:104::-;12650:7;12679:24;12697:5;12679:24;:::i;:::-;12668:35;;12605:104;;;:::o;12715:142::-;12818:32;12844:5;12818:32;:::i;:::-;12813:3;12806:45;12715:142;;:::o;12863:254::-;12972:4;13010:2;12999:9;12995:18;12987:26;;13023:87;13107:1;13096:9;13092:17;13083:6;13023:87;:::i;:::-;12863:254;;;;:::o;13123:1057::-;13227:6;13235;13243;13251;13259;13267;13316:3;13304:9;13295:7;13291:23;13287:33;13284:120;;;13323:79;;:::i;:::-;13284:120;13443:1;13468:53;13513:7;13504:6;13493:9;13489:22;13468:53;:::i;:::-;13458:63;;13414:117;13570:2;13596:53;13641:7;13632:6;13621:9;13617:22;13596:53;:::i;:::-;13586:63;;13541:118;13698:2;13724:53;13769:7;13760:6;13749:9;13745:22;13724:53;:::i;:::-;13714:63;;13669:118;13826:2;13852:53;13897:7;13888:6;13877:9;13873:22;13852:53;:::i;:::-;13842:63;;13797:118;13954:3;13981:53;14026:7;14017:6;14006:9;14002:22;13981:53;:::i;:::-;13971:63;;13925:119;14083:3;14110:53;14155:7;14146:6;14135:9;14131:22;14110:53;:::i;:::-;14100:63;;14054:119;13123:1057;;;;;;;;:::o;14186:474::-;14254:6;14262;14311:2;14299:9;14290:7;14286:23;14282:32;14279:119;;;14317:79;;:::i;:::-;14279:119;14437:1;14462:53;14507:7;14498:6;14487:9;14483:22;14462:53;:::i;:::-;14452:63;;14408:117;14564:2;14590:53;14635:7;14626:6;14615:9;14611:22;14590:53;:::i;:::-;14580:63;;14535:118;14186:474;;;;;:::o;14666:182::-;14806:34;14802:1;14794:6;14790:14;14783:58;14666:182;:::o;14854:366::-;14996:3;15017:67;15081:2;15076:3;15017:67;:::i;:::-;15010:74;;15093:93;15182:3;15093:93;:::i;:::-;15211:2;15206:3;15202:12;15195:19;;14854:366;;;:::o;15226:419::-;15392:4;15430:2;15419:9;15415:18;15407:26;;15479:9;15473:4;15469:20;15465:1;15454:9;15450:17;15443:47;15507:131;15633:4;15507:131;:::i;:::-;15499:139;;15226:419;;;:::o;15651:180::-;15699:77;15696:1;15689:88;15796:4;15793:1;15786:15;15820:4;15817:1;15810:15;15837:348;15877:7;15900:20;15918:1;15900:20;:::i;:::-;15895:25;;15934:20;15952:1;15934:20;:::i;:::-;15929:25;;16122:1;16054:66;16050:74;16047:1;16044:81;16039:1;16032:9;16025:17;16021:105;16018:131;;;16129:18;;:::i;:::-;16018:131;16177:1;16174;16170:9;16159:20;;15837:348;;;;:::o;16191:180::-;16239:77;16236:1;16229:88;16336:4;16333:1;16326:15;16360:4;16357:1;16350:15;16377:320;16421:6;16458:1;16452:4;16448:12;16438:22;;16505:1;16499:4;16495:12;16526:18;16516:81;;16582:4;16574:6;16570:17;16560:27;;16516:81;16644:2;16636:6;16633:14;16613:18;16610:38;16607:84;;16663:18;;:::i;:::-;16607:84;16428:269;16377:320;;;:::o;16703:180::-;16843:32;16839:1;16831:6;16827:14;16820:56;16703:180;:::o;16889:366::-;17031:3;17052:67;17116:2;17111:3;17052:67;:::i;:::-;17045:74;;17128:93;17217:3;17128:93;:::i;:::-;17246:2;17241:3;17237:12;17230:19;;16889:366;;;:::o;17261:419::-;17427:4;17465:2;17454:9;17450:18;17442:26;;17514:9;17508:4;17504:20;17500:1;17489:9;17485:17;17478:47;17542:131;17668:4;17542:131;:::i;:::-;17534:139;;17261:419;;;:::o;17686:221::-;17826:34;17822:1;17814:6;17810:14;17803:58;17895:4;17890:2;17882:6;17878:15;17871:29;17686:221;:::o;17913:366::-;18055:3;18076:67;18140:2;18135:3;18076:67;:::i;:::-;18069:74;;18152:93;18241:3;18152:93;:::i;:::-;18270:2;18265:3;18261:12;18254:19;;17913:366;;;:::o;18285:419::-;18451:4;18489:2;18478:9;18474:18;18466:26;;18538:9;18532:4;18528:20;18524:1;18513:9;18509:17;18502:47;18566:131;18692:4;18566:131;:::i;:::-;18558:139;;18285:419;;;:::o;18710:180::-;18758:77;18755:1;18748:88;18855:4;18852:1;18845:15;18879:4;18876:1;18869:15;18896:233;18935:3;18958:24;18976:5;18958:24;:::i;:::-;18949:33;;19004:66;18997:5;18994:77;18991:103;;19074:18;;:::i;:::-;18991:103;19121:1;19114:5;19110:13;19103:20;;18896:233;;;:::o;19135:223::-;19275:34;19271:1;19263:6;19259:14;19252:58;19344:6;19339:2;19331:6;19327:15;19320:31;19135:223;:::o;19364:366::-;19506:3;19527:67;19591:2;19586:3;19527:67;:::i;:::-;19520:74;;19603:93;19692:3;19603:93;:::i;:::-;19721:2;19716:3;19712:12;19705:19;;19364:366;;;:::o;19736:419::-;19902:4;19940:2;19929:9;19925:18;19917:26;;19989:9;19983:4;19979:20;19975:1;19964:9;19960:17;19953:47;20017:131;20143:4;20017:131;:::i;:::-;20009:139;;19736:419;;;:::o;20161:775::-;20394:4;20432:3;20421:9;20417:19;20409:27;;20446:71;20514:1;20503:9;20499:17;20490:6;20446:71;:::i;:::-;20527:72;20595:2;20584:9;20580:18;20571:6;20527:72;:::i;:::-;20609;20677:2;20666:9;20662:18;20653:6;20609:72;:::i;:::-;20691;20759:2;20748:9;20744:18;20735:6;20691:72;:::i;:::-;20773:73;20841:3;20830:9;20826:19;20817:6;20773:73;:::i;:::-;20856;20924:3;20913:9;20909:19;20900:6;20856:73;:::i;:::-;20161:775;;;;;;;;;:::o;20942:225::-;21082:34;21078:1;21070:6;21066:14;21059:58;21151:8;21146:2;21138:6;21134:15;21127:33;20942:225;:::o;21173:366::-;21315:3;21336:67;21400:2;21395:3;21336:67;:::i;:::-;21329:74;;21412:93;21501:3;21412:93;:::i;:::-;21530:2;21525:3;21521:12;21514:19;;21173:366;;;:::o;21545:419::-;21711:4;21749:2;21738:9;21734:18;21726:26;;21798:9;21792:4;21788:20;21784:1;21773:9;21769:17;21762:47;21826:131;21952:4;21826:131;:::i;:::-;21818:139;;21545:419;;;:::o;21970:225::-;22110:34;22106:1;22098:6;22094:14;22087:58;22179:8;22174:2;22166:6;22162:15;22155:33;21970:225;:::o;22201:366::-;22343:3;22364:67;22428:2;22423:3;22364:67;:::i;:::-;22357:74;;22440:93;22529:3;22440:93;:::i;:::-;22558:2;22553:3;22549:12;22542:19;;22201:366;;;:::o;22573:419::-;22739:4;22777:2;22766:9;22762:18;22754:26;;22826:9;22820:4;22816:20;22812:1;22801:9;22797:17;22790:47;22854:131;22980:4;22854:131;:::i;:::-;22846:139;;22573:419;;;:::o;22998:180::-;23046:77;23043:1;23036:88;23143:4;23140:1;23133:15;23167:4;23164:1;23157:15;23184:185;23224:1;23241:20;23259:1;23241:20;:::i;:::-;23236:25;;23275:20;23293:1;23275:20;:::i;:::-;23270:25;;23314:1;23304:35;;23319:18;;:::i;:::-;23304:35;23361:1;23358;23354:9;23349:14;;23184:185;;;;:::o;23375:227::-;23515:34;23511:1;23503:6;23499:14;23492:58;23584:10;23579:2;23571:6;23567:15;23560:35;23375:227;:::o;23608:366::-;23750:3;23771:67;23835:2;23830:3;23771:67;:::i;:::-;23764:74;;23847:93;23936:3;23847:93;:::i;:::-;23965:2;23960:3;23956:12;23949:19;;23608:366;;;:::o;23980:419::-;24146:4;24184:2;24173:9;24169:18;24161:26;;24233:9;24227:4;24223:20;24219:1;24208:9;24204:17;24197:47;24261:131;24387:4;24261:131;:::i;:::-;24253:139;;23980:419;;;:::o;24405:305::-;24445:3;24464:20;24482:1;24464:20;:::i;:::-;24459:25;;24498:20;24516:1;24498:20;:::i;:::-;24493:25;;24652:1;24584:66;24580:74;24577:1;24574:81;24571:107;;;24658:18;;:::i;:::-;24571:107;24702:1;24699;24695:9;24688:16;;24405:305;;;;:::o;24716:177::-;24856:29;24852:1;24844:6;24840:14;24833:53;24716:177;:::o;24899:366::-;25041:3;25062:67;25126:2;25121:3;25062:67;:::i;:::-;25055:74;;25138:93;25227:3;25138:93;:::i;:::-;25256:2;25251:3;25247:12;25240:19;;24899:366;;;:::o;25271:419::-;25437:4;25475:2;25464:9;25460:18;25452:26;;25524:9;25518:4;25514:20;25510:1;25499:9;25495:17;25488:47;25552:131;25678:4;25552:131;:::i;:::-;25544:139;;25271:419;;;:::o;25696:220::-;25836:34;25832:1;25824:6;25820:14;25813:58;25905:3;25900:2;25892:6;25888:15;25881:28;25696:220;:::o;25922:366::-;26064:3;26085:67;26149:2;26144:3;26085:67;:::i;:::-;26078:74;;26161:93;26250:3;26161:93;:::i;:::-;26279:2;26274:3;26270:12;26263:19;;25922:366;;;:::o;26294:419::-;26460:4;26498:2;26487:9;26483:18;26475:26;;26547:9;26541:4;26537:20;26533:1;26522:9;26518:17;26511:47;26575:131;26701:4;26575:131;:::i;:::-;26567:139;;26294:419;;;:::o;26719:147::-;26820:11;26857:3;26842:18;;26719:147;;;;:::o;26872:114::-;;:::o;26992:398::-;27151:3;27172:83;27253:1;27248:3;27172:83;:::i;:::-;27165:90;;27264:93;27353:3;27264:93;:::i;:::-;27382:1;27377:3;27373:11;27366:18;;26992:398;;;:::o;27396:379::-;27580:3;27602:147;27745:3;27602:147;:::i;:::-;27595:154;;27766:3;27759:10;;27396:379;;;:::o;27781:320::-;27896:4;27934:2;27923:9;27919:18;27911:26;;27947:71;28015:1;28004:9;28000:17;27991:6;27947:71;:::i;:::-;28028:66;28090:2;28079:9;28075:18;28066:6;28028:66;:::i;:::-;27781:320;;;;;:::o;28107:223::-;28247:34;28243:1;28235:6;28231:14;28224:58;28316:6;28311:2;28303:6;28299:15;28292:31;28107:223;:::o;28336:366::-;28478:3;28499:67;28563:2;28558:3;28499:67;:::i;:::-;28492:74;;28575:93;28664:3;28575:93;:::i;:::-;28693:2;28688:3;28684:12;28677:19;;28336:366;;;:::o;28708:419::-;28874:4;28912:2;28901:9;28897:18;28889:26;;28961:9;28955:4;28951:20;28947:1;28936:9;28932:17;28925:47;28989:131;29115:4;28989:131;:::i;:::-;28981:139;;28708:419;;;:::o;29133:221::-;29273:34;29269:1;29261:6;29257:14;29250:58;29342:4;29337:2;29329:6;29325:15;29318:29;29133:221;:::o;29360:366::-;29502:3;29523:67;29587:2;29582:3;29523:67;:::i;:::-;29516:74;;29599:93;29688:3;29599:93;:::i;:::-;29717:2;29712:3;29708:12;29701:19;;29360:366;;;:::o;29732:419::-;29898:4;29936:2;29925:9;29921:18;29913:26;;29985:9;29979:4;29975:20;29971:1;29960:9;29956:17;29949:47;30013:131;30139:4;30013:131;:::i;:::-;30005:139;;29732:419;;;:::o;30157:224::-;30297:34;30293:1;30285:6;30281:14;30274:58;30366:7;30361:2;30353:6;30349:15;30342:32;30157:224;:::o;30387:366::-;30529:3;30550:67;30614:2;30609:3;30550:67;:::i;:::-;30543:74;;30626:93;30715:3;30626:93;:::i;:::-;30744:2;30739:3;30735:12;30728:19;;30387:366;;;:::o;30759:419::-;30925:4;30963:2;30952:9;30948:18;30940:26;;31012:9;31006:4;31002:20;30998:1;30987:9;30983:17;30976:47;31040:131;31166:4;31040:131;:::i;:::-;31032:139;;30759:419;;;:::o;31184:222::-;31324:34;31320:1;31312:6;31308:14;31301:58;31393:5;31388:2;31380:6;31376:15;31369:30;31184:222;:::o;31412:366::-;31554:3;31575:67;31639:2;31634:3;31575:67;:::i;:::-;31568:74;;31651:93;31740:3;31651:93;:::i;:::-;31769:2;31764:3;31760:12;31753:19;;31412:366;;;:::o;31784:419::-;31950:4;31988:2;31977:9;31973:18;31965:26;;32037:9;32031:4;32027:20;32023:1;32012:9;32008:17;32001:47;32065:131;32191:4;32065:131;:::i;:::-;32057:139;;31784:419;;;:::o;32209:225::-;32349:34;32345:1;32337:6;32333:14;32326:58;32418:8;32413:2;32405:6;32401:15;32394:33;32209:225;:::o;32440:366::-;32582:3;32603:67;32667:2;32662:3;32603:67;:::i;:::-;32596:74;;32679:93;32768:3;32679:93;:::i;:::-;32797:2;32792:3;32788:12;32781:19;;32440:366;;;:::o;32812:419::-;32978:4;33016:2;33005:9;33001:18;32993:26;;33065:9;33059:4;33055:20;33051:1;33040:9;33036:17;33029:47;33093:131;33219:4;33093:131;:::i;:::-;33085:139;;32812:419;;;:::o;33237:223::-;33377:34;33373:1;33365:6;33361:14;33354:58;33446:6;33441:2;33433:6;33429:15;33422:31;33237:223;:::o;33466:366::-;33608:3;33629:67;33693:2;33688:3;33629:67;:::i;:::-;33622:74;;33705:93;33794:3;33705:93;:::i;:::-;33823:2;33818:3;33814:12;33807:19;;33466:366;;;:::o;33838:419::-;34004:4;34042:2;34031:9;34027:18;34019:26;;34091:9;34085:4;34081:20;34077:1;34066:9;34062:17;34055:47;34119:131;34245:4;34119:131;:::i;:::-;34111:139;;33838:419;;;:::o;34263:182::-;34403:34;34399:1;34391:6;34387:14;34380:58;34263:182;:::o;34451:366::-;34593:3;34614:67;34678:2;34673:3;34614:67;:::i;:::-;34607:74;;34690:93;34779:3;34690:93;:::i;:::-;34808:2;34803:3;34799:12;34792:19;;34451:366;;;:::o;34823:419::-;34989:4;35027:2;35016:9;35012:18;35004:26;;35076:9;35070:4;35066:20;35062:1;35051:9;35047:17;35040:47;35104:131;35230:4;35104:131;:::i;:::-;35096:139;;34823:419;;;:::o;35248:172::-;35388:24;35384:1;35376:6;35372:14;35365:48;35248:172;:::o;35426:366::-;35568:3;35589:67;35653:2;35648:3;35589:67;:::i;:::-;35582:74;;35665:93;35754:3;35665:93;:::i;:::-;35783:2;35778:3;35774:12;35767:19;;35426:366;;;:::o;35798:419::-;35964:4;36002:2;35991:9;35987:18;35979:26;;36051:9;36045:4;36041:20;36037:1;36026:9;36022:17;36015:47;36079:131;36205:4;36079:131;:::i;:::-;36071:139;;35798:419;;;:::o;36223:168::-;36363:20;36359:1;36351:6;36347:14;36340:44;36223:168;:::o;36397:366::-;36539:3;36560:67;36624:2;36619:3;36560:67;:::i;:::-;36553:74;;36636:93;36725:3;36636:93;:::i;:::-;36754:2;36749:3;36745:12;36738:19;;36397:366;;;:::o;36769:419::-;36935:4;36973:2;36962:9;36958:18;36950:26;;37022:9;37016:4;37012:20;37008:1;36997:9;36993:17;36986:47;37050:131;37176:4;37050:131;:::i;:::-;37042:139;;36769:419;;;:::o;37194:174::-;37334:26;37330:1;37322:6;37318:14;37311:50;37194:174;:::o;37374:366::-;37516:3;37537:67;37601:2;37596:3;37537:67;:::i;:::-;37530:74;;37613:93;37702:3;37613:93;:::i;:::-;37731:2;37726:3;37722:12;37715:19;;37374:366;;;:::o;37746:419::-;37912:4;37950:2;37939:9;37935:18;37927:26;;37999:9;37993:4;37989:20;37985:1;37974:9;37970:17;37963:47;38027:131;38153:4;38027:131;:::i;:::-;38019:139;;37746:419;;;:::o;38171:170::-;38311:22;38307:1;38299:6;38295:14;38288:46;38171:170;:::o;38347:366::-;38489:3;38510:67;38574:2;38569:3;38510:67;:::i;:::-;38503:74;;38586:93;38675:3;38586:93;:::i;:::-;38704:2;38699:3;38695:12;38688:19;;38347:366;;;:::o;38719:419::-;38885:4;38923:2;38912:9;38908:18;38900:26;;38972:9;38966:4;38962:20;38958:1;38947:9;38943:17;38936:47;39000:131;39126:4;39000:131;:::i;:::-;38992:139;;38719:419;;;:::o;39144:223::-;39284:34;39280:1;39272:6;39268:14;39261:58;39353:6;39348:2;39340:6;39336:15;39329:31;39144:223;:::o;39373:366::-;39515:3;39536:67;39600:2;39595:3;39536:67;:::i;:::-;39529:74;;39612:93;39701:3;39612:93;:::i;:::-;39730:2;39725:3;39721:12;39714:19;;39373:366;;;:::o;39745:419::-;39911:4;39949:2;39938:9;39934:18;39926:26;;39998:9;39992:4;39988:20;39984:1;39973:9;39969:17;39962:47;40026:131;40152:4;40026:131;:::i;:::-;40018:139;;39745:419;;;:::o;40170:191::-;40210:4;40230:20;40248:1;40230:20;:::i;:::-;40225:25;;40264:20;40282:1;40264:20;:::i;:::-;40259:25;;40303:1;40300;40297:8;40294:34;;;40308:18;;:::i;:::-;40294:34;40353:1;40350;40346:9;40338:17;;40170:191;;;;:::o;40367:143::-;40424:5;40455:6;40449:13;40440:22;;40471:33;40498:5;40471:33;:::i;:::-;40367:143;;;;:::o;40516:351::-;40586:6;40635:2;40623:9;40614:7;40610:23;40606:32;40603:119;;;40641:79;;:::i;:::-;40603:119;40761:1;40786:64;40842:7;40833:6;40822:9;40818:22;40786:64;:::i;:::-;40776:74;;40732:128;40516:351;;;;:::o;40873:85::-;40918:7;40947:5;40936:16;;40873:85;;;:::o;40964:158::-;41022:9;41055:61;41073:42;41082:32;41108:5;41082:32;:::i;:::-;41073:42;:::i;:::-;41055:61;:::i;:::-;41042:74;;40964:158;;;:::o;41128:147::-;41223:45;41262:5;41223:45;:::i;:::-;41218:3;41211:58;41128:147;;:::o;41281:114::-;41348:6;41382:5;41376:12;41366:22;;41281:114;;;:::o;41401:184::-;41500:11;41534:6;41529:3;41522:19;41574:4;41569:3;41565:14;41550:29;;41401:184;;;;:::o;41591:132::-;41658:4;41681:3;41673:11;;41711:4;41706:3;41702:14;41694:22;;41591:132;;;:::o;41729:108::-;41806:24;41824:5;41806:24;:::i;:::-;41801:3;41794:37;41729:108;;:::o;41843:179::-;41912:10;41933:46;41975:3;41967:6;41933:46;:::i;:::-;42011:4;42006:3;42002:14;41988:28;;41843:179;;;;:::o;42028:113::-;42098:4;42130;42125:3;42121:14;42113:22;;42028:113;;;:::o;42177:732::-;42296:3;42325:54;42373:5;42325:54;:::i;:::-;42395:86;42474:6;42469:3;42395:86;:::i;:::-;42388:93;;42505:56;42555:5;42505:56;:::i;:::-;42584:7;42615:1;42600:284;42625:6;42622:1;42619:13;42600:284;;;42701:6;42695:13;42728:63;42787:3;42772:13;42728:63;:::i;:::-;42721:70;;42814:60;42867:6;42814:60;:::i;:::-;42804:70;;42660:224;42647:1;42644;42640:9;42635:14;;42600:284;;;42604:14;42900:3;42893:10;;42301:608;;;42177:732;;;;:::o;42915:831::-;43178:4;43216:3;43205:9;43201:19;43193:27;;43230:71;43298:1;43287:9;43283:17;43274:6;43230:71;:::i;:::-;43311:80;43387:2;43376:9;43372:18;43363:6;43311:80;:::i;:::-;43438:9;43432:4;43428:20;43423:2;43412:9;43408:18;43401:48;43466:108;43569:4;43560:6;43466:108;:::i;:::-;43458:116;;43584:72;43652:2;43641:9;43637:18;43628:6;43584:72;:::i;:::-;43666:73;43734:3;43723:9;43719:19;43710:6;43666:73;:::i;:::-;42915:831;;;;;;;;:::o;43752:442::-;43901:4;43939:2;43928:9;43924:18;43916:26;;43952:71;44020:1;44009:9;44005:17;43996:6;43952:71;:::i;:::-;44033:72;44101:2;44090:9;44086:18;44077:6;44033:72;:::i;:::-;44115;44183:2;44172:9;44168:18;44159:6;44115:72;:::i;:::-;43752:442;;;;;;:::o;44200:807::-;44449:4;44487:3;44476:9;44472:19;44464:27;;44501:71;44569:1;44558:9;44554:17;44545:6;44501:71;:::i;:::-;44582:72;44650:2;44639:9;44635:18;44626:6;44582:72;:::i;:::-;44664:80;44740:2;44729:9;44725:18;44716:6;44664:80;:::i;:::-;44754;44830:2;44819:9;44815:18;44806:6;44754:80;:::i;:::-;44844:73;44912:3;44901:9;44897:19;44888:6;44844:73;:::i;:::-;44927;44995:3;44984:9;44980:19;44971:6;44927:73;:::i;:::-;44200:807;;;;;;;;;:::o;45013:143::-;45070:5;45101:6;45095:13;45086:22;;45117:33;45144:5;45117:33;:::i;:::-;45013:143;;;;:::o;45162:663::-;45250:6;45258;45266;45315:2;45303:9;45294:7;45290:23;45286:32;45283:119;;;45321:79;;:::i;:::-;45283:119;45441:1;45466:64;45522:7;45513:6;45502:9;45498:22;45466:64;:::i;:::-;45456:74;;45412:128;45579:2;45605:64;45661:7;45652:6;45641:9;45637:22;45605:64;:::i;:::-;45595:74;;45550:129;45718:2;45744:64;45800:7;45791:6;45780:9;45776:22;45744:64;:::i;:::-;45734:74;;45689:129;45162:663;;;;;:::o
Swarm Source
ipfs://6560e26aff1ac3b5fb8a45f34fd8237cc30e964c588059c0f1472cdc85322887
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.