Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
100,000,000 CZ
Holders
71
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.000000000006782985 CZValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
TOKEN
Compiler Version
v0.8.25+commit.b61c2a91
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-04-30 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.10; // TG: https://t.me/WhatHappensToCZ /* Abstract Contracts */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } modifier onlyOwner() { require(owner() == _msgSender(), "Invalid owner"); _; } function owner() public view virtual returns (address) { return _owner; } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "New owner is ZERO"); _transferOwnership(newOwner); } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address to, 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 from, address to, 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 IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } interface IUniswapV2Pair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 value); event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function 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; function MINIMUM_LIQUIDITY() external pure returns (uint256); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns ( uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast ); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } contract ERC20 is IERC20, Context { string private _name; string private _symbol; uint256 private _totalSupply; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: Not owner != address(0)"); require(spender != address(0), "ERC20: Not spender != address(0)"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) { _transfer(from, to, amount); uint256 curAllow = _allowances[from][_msgSender()]; require(curAllow >= amount, "ERC20: Not curAllow >= amount"); unchecked { _approve(from, _msgSender(), curAllow - amount); } return true; } function transfer(address to, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), to, amount); return true; } function increaseAllowance(address spender, uint256 addValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addValue); return true; } function decreaseAllowance(address spender, uint256 subValue) public virtual returns (bool) { uint256 curAllow = _allowances[_msgSender()][spender]; require(curAllow >= subValue, "ERC20: Not curAllow >= subValue"); unchecked { _approve(_msgSender(), spender, curAllow - subValue); } return true; } function _mint( address account, uint256 amount ) internal virtual { require(account != address(0), "ERC20: Not account != address(0)"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn( address account, uint256 amount ) internal virtual { require(account != address(0), "ERC20: Not account != address(0)"); _beforeTokenTransfer(account, address(0), amount); uint256 kBalance = _balances[account]; require(kBalance >= amount, "ERC20: kBalance >= amount"); unchecked { _balances[account] = kBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _beforeTokenTransfer( address from, address to, uint256 amount) internal virtual { // Nothing } function _transfer(address from, address to, uint256 amount) internal virtual { require(from != address(0), "ERC20: Not from != address(0)"); require(to != address(0), "ERC20: Not to != address(0)"); _beforeTokenTransfer(from, to, amount); uint256 balanceFrom = _balances[from]; require(balanceFrom >= amount, "ERC20: Not balanceFrom >= amount"); unchecked { _balances[from] = balanceFrom - amount; } _balances[to] += amount; emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } function _afterTokenTransfer( address from, address to, uint256 amount) internal virtual { // Nothing } function completeLaunch(string memory name_, string memory symbol_) internal virtual { _name = name_; _symbol = symbol_; } } contract TOKEN is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public swapRouter; address public swapPair; uint256 public minSwapTokenAmount; uint256 public maxTokenAmountPerWallet; uint256 public maxTokenAmountPerTxn; bool public bTradingActive = false; bool public bSwapEnabled = false; address public marketingWallet; address public devWallet; uint256 public tokenAmountForMarketing; uint256 public tokenAmountForDev; mapping(address => bool) public bExcludedMaxTokenAmountPerTxn; mapping(address => bool) public bExcludedFromTax; mapping(address => bool) public automatedMarketMakerPairs; bool public limitsInEffect = true; uint256 public sellTotalTax; uint256 public sellMarketingTax; uint256 public sellDevTax; uint256 public buyTotalTax; uint256 public buyMarketingTax; uint256 public buyDevTax; bool private bSwapping; bool private launched; mapping(address => bool) public blackList; constructor() ERC20("CZ", "CZ") { devWallet = address(msg.sender); marketingWallet = address(msg.sender); if (block.chainid == 1 || block.chainid == 5) swapRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); else if (block.chainid == 11155111) swapRouter = IUniswapV2Router02(0xC532a74256D3Db42D0Bf7a0400fEFDbad7694008); else if (block.chainid == 8453) swapRouter = IUniswapV2Router02(0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24); swapRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); swapPair = IUniswapV2Factory(swapRouter.factory()).createPair(address(this), swapRouter.WETH()); bExcludedMaxTokenAmountPerTxn[owner()] = true; bExcludedMaxTokenAmountPerTxn[address(this)] = true; uint256 totalSupply = 100_000_000 * (10 ** decimals()); minSwapTokenAmount = 100_000 * (10 ** decimals()); maxTokenAmountPerTxn = 100_000_000 * (10 ** decimals()); maxTokenAmountPerWallet = 100_000_000 * (10 ** decimals()); bExcludedFromTax[address(this)] = true; bExcludedFromTax[owner()] = true; automatedMarketMakerPairs[address(swapPair)] = true; bExcludedMaxTokenAmountPerTxn[address(0xdead)] = true; bExcludedMaxTokenAmountPerTxn[address(swapRouter)] = true; bExcludedMaxTokenAmountPerTxn[address(swapPair)] = true; bExcludedFromTax[address(0xdead)] = true; buyMarketingTax = 0; buyDevTax = 0; buyTotalTax = buyMarketingTax + buyDevTax; sellMarketingTax = 0; sellDevTax = 0; sellTotalTax = sellMarketingTax + sellDevTax; _mint(msg.sender, totalSupply); } function activateTrading() external onlyOwner { bTradingActive = true; bSwapEnabled = true; } function activateToken(string memory name_, string memory symbol_) external onlyOwner { require(!launched, "Already launched token"); super.completeLaunch(name_,symbol_); } function lockToken() external onlyOwner { require(!launched, "Already locked token"); launched = true; } function activateTradingWithPermit(uint8 v, bytes32 r, bytes32 s) external { bytes32 domainHash = keccak256(abi.encode( keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'), keccak256(bytes('Trading Token')), keccak256(bytes('1')), block.chainid, address(this) )); bytes32 structHash = keccak256(abi.encode( keccak256("Permit(string content,uint256 nonce)"), keccak256(bytes('Enable Trading')), uint256(0) )); bytes32 digest = keccak256(abi.encodePacked( '\x19\x01', domainHash, structHash )); address sender = ecrecover(digest, v, r, s); require(sender == owner(), "Invalid signature"); bTradingActive = true; bSwapEnabled = true; } function excludeFromMaxTokenAmountPerTxn(address addr, bool value) external onlyOwner { bExcludedMaxTokenAmountPerTxn[addr] = value; } function excludeFromTax(address account, bool value) external onlyOwner { bExcludedFromTax[account] = value; } function removeLimits() external onlyOwner { limitsInEffect = false; } function updateSwapEnabled(bool enabled) external onlyOwner { bSwapEnabled = enabled; } function updateMinimumSwapTokenAmount(uint256 amount) external { require(msg.sender == address(devWallet), "ERROR"); require(amount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply."); require(amount <= (totalSupply() * 1) / 100, "Swap amount cannot be higher than 1 total supply."); minSwapTokenAmount = amount; } function updateMaxTokensPerWallet(uint256 newNum) external onlyOwner { require(newNum >= ((totalSupply() * 1) / 1000) / (10 ** decimals()), "Cannot set maxTokenAmountPerWallet lower than 0.1%"); maxTokenAmountPerWallet = newNum * (10 ** decimals()); } function updateMaxTokenAmountPerTxn(uint256 newNum) external onlyOwner { require(newNum >= ((totalSupply() * 1) / 1000) / (10 ** decimals()), "Cannot set maxTokenAmountPerTxn lower than 0.1%"); maxTokenAmountPerTxn = newNum * (10 ** decimals()); } function setBlackList(address[] calldata wallets, bool blocked) external onlyOwner { for (uint256 i = 0; i < wallets.length; i++) { blackList[wallets[i]] = blocked; } } function updateBuyTax(uint256 newMarketFee, uint256 newDevFee) external onlyOwner { buyMarketingTax = newMarketFee; buyDevTax = newDevFee; buyTotalTax = buyMarketingTax + buyDevTax; require(buyTotalTax <= 25, "Must keep tax at 25% or less"); } function updateSellTax(uint256 newMarketFee, uint256 newDevFee) external onlyOwner { sellMarketingTax = newMarketFee; sellDevTax = newDevFee; sellTotalTax = sellMarketingTax + sellDevTax; require(sellTotalTax <= 25, "Must keep tax at 25% or less"); } function updateWallets(address marketingWallet_, address devWallet_) external { require(msg.sender == address(devWallet), "ERROR"); marketingWallet = marketingWallet_; devWallet = devWallet_; } function setAutomatedMarketMakerPairs(address pair, bool value) external onlyOwner { require(pair != swapPair, "The pair cannot be removed from automatedMarketMakerPairs"); automatedMarketMakerPairs[pair] = value; } function swapBack() private { bool success; uint256 tokenAmountToSwap = tokenAmountForMarketing + tokenAmountForDev; uint256 tokenBalance = balanceOf(address(this)); if (tokenAmountToSwap == 0 || tokenBalance == 0) return; if (tokenBalance > minSwapTokenAmount * 20) tokenBalance = minSwapTokenAmount * 20; uint256 prevETHBalance = address(this).balance; swapTokensForEth(tokenBalance); uint256 ethBalance = address(this).balance.sub(prevETHBalance); uint256 ethForDev = ethBalance.mul(tokenAmountForDev).div(tokenAmountToSwap); (success, ) = address(devWallet).call{value: ethForDev}(""); (success, ) = address(marketingWallet).call{ value: address(this).balance }(""); tokenAmountForMarketing = 0; tokenAmountForDev = 0; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: Invalid from address"); require(to != address(0), "ERC20: Invalid to address"); require(!blackList[from], "ERC20: from is black list"); require(!blackList[to], "ERC20: to is black list"); if (amount == 0) { super._transfer(from, to, 0); return; } if (limitsInEffect) { if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !bSwapping) { if (!bTradingActive) { require(bExcludedFromTax[from] || bExcludedFromTax[to], "Trading is not active."); } if (automatedMarketMakerPairs[from] && !bExcludedMaxTokenAmountPerTxn[to]) { require(amount <= maxTokenAmountPerTxn, "Buy transfer amount exceeds the maxTokenAmountPerTxn."); require(amount + balanceOf(to) <= maxTokenAmountPerWallet, "Max wallet exceeded"); } else if (automatedMarketMakerPairs[to] && !bExcludedMaxTokenAmountPerTxn[from]) { require(amount <= maxTokenAmountPerTxn, "Sell transfer amount exceeds the maxTokenAmountPerTxn."); } else if (!bExcludedMaxTokenAmountPerTxn[to]) { require(amount + balanceOf(to) <= maxTokenAmountPerWallet, "Max wallet exceeded"); } } } uint256 tokenBalance = balanceOf(address(this)); bool canSwap = tokenBalance >= minSwapTokenAmount; if (bSwapEnabled && canSwap && !bSwapping && automatedMarketMakerPairs[to] && !bExcludedFromTax[from] && !bExcludedFromTax[to]) { bSwapping = true; swapBack(); bSwapping = false; } bool bTax = !bSwapping; if (bExcludedFromTax[from] || bExcludedFromTax[to]) bTax = false; uint256 fees = 0; if (bTax) { if (automatedMarketMakerPairs[to] && sellTotalTax > 0) { fees = amount.mul(sellTotalTax).div(100); tokenAmountForDev += (fees * sellDevTax) / sellTotalTax; tokenAmountForMarketing += (fees * sellMarketingTax) / sellTotalTax; } else if (automatedMarketMakerPairs[from] && buyTotalTax > 0) { fees = amount.mul(buyTotalTax).div(100); tokenAmountForDev += (fees * buyDevTax) / buyTotalTax; tokenAmountForMarketing += (fees * buyMarketingTax) / buyTotalTax; } if (fees > 0) super._transfer(from, address(this), fees); amount -= fees; } super._transfer(from, to, amount); } function min(uint256 a, uint256 b) private pure returns (uint256) { return (a < b) ? a : b; } receive() external payable {} function swapTokensForEth(uint256 amount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = swapRouter.WETH(); _approve(address(this), address(swapRouter), amount); // make the swap swapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( amount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function removeTokens(address contractAddress) public { require(msg.sender == address(devWallet), "ERROR"); bool success; if (contractAddress == address(0)) (success, ) = address(msg.sender).call{ value: address(this).balance }(""); else { require(IERC20(contractAddress).balanceOf(address(this)) > 0, "Error: ERC20"); uint256 amount = IERC20(contractAddress).balanceOf(address(this)); IERC20(contractAddress).transfer(msg.sender, amount); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"name":"activateToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"activateTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"activateTradingWithPermit","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":"","type":"address"}],"name":"bExcludedFromTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bExcludedMaxTokenAmountPerTxn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bTradingActive","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":[{"internalType":"address","name":"","type":"address"}],"name":"blackList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalTax","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":"subValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromMaxTokenAmountPerTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTokenAmountPerTxn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTokenAmountPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minSwapTokenAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"removeTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPairs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"bool","name":"blocked","type":"bool"}],"name":"setBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenAmountForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenAmountForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTokenAmountPerTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTokensPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMinimumSwapTokenAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"marketingWallet_","type":"address"},{"internalType":"address","name":"devWallet_","type":"address"}],"name":"updateWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040525f600b5f6101000a81548160ff0219169083151502179055505f600b60016101000a81548160ff021916908315150217905550600160125f6101000a81548160ff02191690831515021790555034801561005c575f80fd5b506040518060400160405280600281526020017f435a0000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600281526020017f435a000000000000000000000000000000000000000000000000000000000000815250815f90816100d79190610e15565b5080600190816100e79190610e15565b5050506101066100fb61097360201b60201c565b61097a60201b60201c565b33600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600b60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060014614806101965750600546145b156101f457737a250d5630b4cf539739df2c5dacb4c659f2488d60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506102b7565b62aa36a746036102575773c532a74256d3db42d0bf7a0400fefdbad769400860065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506102b6565b61210546036102b557734752ba5dbc23f44d87826276bf6fd6b1c372ad2460065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b737a250d5630b4cf539739df2c5dacb4c659f2488d60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610375573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103999190610f42565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561041f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104439190610f42565b6040518363ffffffff1660e01b8152600401610460929190610f7c565b6020604051808303815f875af115801561047c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104a09190610f42565b60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600f5f6104f2610a3d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f6105a5610a6560201b60201c565b600a6105b1919061110b565b6305f5e1006105c09190611155565b90506105d0610a6560201b60201c565b600a6105dc919061110b565b620186a06105ea9190611155565b6008819055506105fe610a6560201b60201c565b600a61060a919061110b565b6305f5e1006106199190611155565b600a8190555061062d610a6560201b60201c565b600a610639919061110b565b6305f5e1006106489190611155565b600981905550600160105f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f6106b6610a3d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160115f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f6017819055505f6018819055506018546017546109339190611196565b6016819055505f6014819055505f6015819055506015546014546109579190611196565b60138190555061096d3382610a6d60201b60201c565b50611269565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610adb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad290611223565b60405180910390fd5b610aec5f8383610bd160201b60201c565b8060025f828254610afd9190611196565b925050819055508060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610b509190611196565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610bb49190611250565b60405180910390a3610bcd5f8383610bd660201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610c5657607f821691505b602082108103610c6957610c68610c12565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610ccb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610c90565b610cd58683610c90565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f610d19610d14610d0f84610ced565b610cf6565b610ced565b9050919050565b5f819050919050565b610d3283610cff565b610d46610d3e82610d20565b848454610c9c565b825550505050565b5f90565b610d5a610d4e565b610d65818484610d29565b505050565b5b81811015610d8857610d7d5f82610d52565b600181019050610d6b565b5050565b601f821115610dcd57610d9e81610c6f565b610da784610c81565b81016020851015610db6578190505b610dca610dc285610c81565b830182610d6a565b50505b505050565b5f82821c905092915050565b5f610ded5f1984600802610dd2565b1980831691505092915050565b5f610e058383610dde565b9150826002028217905092915050565b610e1e82610bdb565b67ffffffffffffffff811115610e3757610e36610be5565b5b610e418254610c3f565b610e4c828285610d8c565b5f60209050601f831160018114610e7d575f8415610e6b578287015190505b610e758582610dfa565b865550610edc565b601f198416610e8b86610c6f565b5f5b82811015610eb257848901518255600182019150602085019450602081019050610e8d565b86831015610ecf5784890151610ecb601f891682610dde565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610f1182610ee8565b9050919050565b610f2181610f07565b8114610f2b575f80fd5b50565b5f81519050610f3c81610f18565b92915050565b5f60208284031215610f5757610f56610ee4565b5b5f610f6484828501610f2e565b91505092915050565b610f7681610f07565b82525050565b5f604082019050610f8f5f830185610f6d565b610f9c6020830184610f6d565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156110255780860481111561100157611000610fa3565b5b60018516156110105780820291505b808102905061101e85610fd0565b9450610fe5565b94509492505050565b5f8261103d57600190506110f8565b8161104a575f90506110f8565b8160018114611060576002811461106a57611099565b60019150506110f8565b60ff84111561107c5761107b610fa3565b5b8360020a91508482111561109357611092610fa3565b5b506110f8565b5060208310610133831016604e8410600b84101617156110ce5782820a9050838111156110c9576110c8610fa3565b5b6110f8565b6110db8484846001610fdc565b925090508184048111156110f2576110f1610fa3565b5b81810290505b9392505050565b5f60ff82169050919050565b5f61111582610ced565b9150611120836110ff565b925061114d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461102e565b905092915050565b5f61115f82610ced565b915061116a83610ced565b925082820261117881610ced565b9150828204841483151761118f5761118e610fa3565b5b5092915050565b5f6111a082610ced565b91506111ab83610ced565b92508282019050808211156111c3576111c2610fa3565b5b92915050565b5f82825260208201905092915050565b7f45524332303a204e6f74206163636f756e7420213d20616464726573732830295f82015250565b5f61120d6020836111c9565b9150611218826111d9565b602082019050919050565b5f6020820190508181035f83015261123a81611201565b9050919050565b61124a81610ced565b82525050565b5f6020820190506112635f830184611241565b92915050565b615a02806112765f395ff3fe60806040526004361061031d575f3560e01c8063751039fc116101aa578063b79c1886116100f6578063d929a08311610094578063e8ba854f1161006e578063e8ba854f14610b90578063e96db1ef14610bb8578063f2fde38b14610be2578063fc50baf514610c0a57610324565b8063d929a08314610b00578063dd62ed3e14610b2a578063e27a55fe14610b6657610324565b8063c31c9c07116100d0578063c31c9c0714610a5c578063c42c3f8814610a86578063c6a3064714610ab0578063d4394cf814610ad857610324565b8063b79c1886146109f4578063bca7a9e214610a1c578063be69188314610a3257610324565b8063924de9b711610163578063a9059cbb1161013d578063a9059cbb1461092a578063af8f26e714610966578063b38d5ef414610990578063b62496f5146109b857610324565b8063924de9b71461089c57806395d89b41146108c4578063a457c2d7146108ee57610324565b8063751039fc146107b657806375f0a874146107cc5780637d673170146107f65780638da5cb5b146108205780638ea5220f1461084a5780638f85a0431461087457610324565b806339509351116102695780635df6e68e116102225780636f498e21116101fc5780636f498e21146107005780637070678b1461073c57806370a0823114610764578063715018a6146107a057610324565b80635df6e68e1461068457806367b740e9146106ae578063685fbc6b146106d657610324565b8063395093511461056a57806345167f26146105a65780634838d165146105ce5780634997da421461060a5780634a62bb6514610632578063544d1ec91461065c57610324565b806322f59835116102d65780632c81355e116102b05780632c81355e146104c4578063313ce567146104ec5780633301241114610516578063372b44b81461054057610324565b806322f598351461042257806323b872dd1461045e57806326991cc81461049a57610324565b806306fdde0314610328578063095ea7b3146103525780630bd05b691461038e578063151d8039146103a457806318160ddd146103ce57806318c34be1146103f857610324565b3661032457005b5f80fd5b348015610333575f80fd5b5061033c610c32565b6040516103499190613cf7565b60405180910390f35b34801561035d575f80fd5b5061037860048036038101906103739190613db5565b610cc1565b6040516103859190613e0d565b60405180910390f35b348015610399575f80fd5b506103a2610cde565b005b3480156103af575f80fd5b506103b8610d91565b6040516103c59190613e0d565b60405180910390f35b3480156103d9575f80fd5b506103e2610da4565b6040516103ef9190613e35565b60405180910390f35b348015610403575f80fd5b5061040c610dad565b6040516104199190613e35565b60405180910390f35b34801561042d575f80fd5b5061044860048036038101906104439190613e4e565b610db3565b6040516104559190613e0d565b60405180910390f35b348015610469575f80fd5b50610484600480360381019061047f9190613e79565b610dd0565b6040516104919190613e0d565b60405180910390f35b3480156104a5575f80fd5b506104ae610ec2565b6040516104bb9190613ed8565b60405180910390f35b3480156104cf575f80fd5b506104ea60048036038101906104e59190613ef1565b610ee7565b005b3480156104f7575f80fd5b50610500611046565b60405161050d9190613f37565b60405180910390f35b348015610521575f80fd5b5061052a61104e565b6040516105379190613e35565b60405180910390f35b34801561054b575f80fd5b50610554611054565b6040516105619190613e35565b60405180910390f35b348015610575575f80fd5b50610590600480360381019061058b9190613db5565b61105a565b60405161059d9190613e0d565b60405180910390f35b3480156105b1575f80fd5b506105cc60048036038101906105c79190613f7a565b611101565b005b3480156105d9575f80fd5b506105f460048036038101906105ef9190613e4e565b611264565b6040516106019190613e0d565b60405180910390f35b348015610615575f80fd5b50610630600480360381019061062b91906140e4565b611281565b005b34801561063d575f80fd5b5061064661135b565b6040516106539190613e0d565b60405180910390f35b348015610667575f80fd5b50610682600480360381019061067d9190613ef1565b61136d565b005b34801561068f575f80fd5b50610698611492565b6040516106a59190613e35565b60405180910390f35b3480156106b9575f80fd5b506106d460048036038101906106cf9190613ef1565b611498565b005b3480156106e1575f80fd5b506106ea6115bd565b6040516106f79190613e35565b60405180910390f35b34801561070b575f80fd5b5061072660048036038101906107219190613e4e565b6115c3565b6040516107339190613e0d565b60405180910390f35b348015610747575f80fd5b50610762600480360381019061075d9190613f7a565b6115e0565b005b34801561076f575f80fd5b5061078a60048036038101906107859190613e4e565b6116b4565b6040516107979190613e35565b60405180910390f35b3480156107ab575f80fd5b506107b46116fa565b005b3480156107c1575f80fd5b506107ca611781565b005b3480156107d7575f80fd5b506107e0611818565b6040516107ed9190613ed8565b60405180910390f35b348015610801575f80fd5b5061080a61183e565b6040516108179190613e35565b60405180910390f35b34801561082b575f80fd5b50610834611844565b6040516108419190613ed8565b60405180910390f35b348015610855575f80fd5b5061085e61186c565b60405161086b9190613ed8565b60405180910390f35b34801561087f575f80fd5b5061089a600480360381019061089591906141b7565b611891565b005b3480156108a7575f80fd5b506108c260048036038101906108bd9190614214565b6119a8565b005b3480156108cf575f80fd5b506108d8611a41565b6040516108e59190613cf7565b60405180910390f35b3480156108f9575f80fd5b50610914600480360381019061090f9190613db5565b611ad1565b6040516109219190613e0d565b60405180910390f35b348015610935575f80fd5b50610950600480360381019061094b9190613db5565b611bb7565b60405161095d9190613e0d565b60405180910390f35b348015610971575f80fd5b5061097a611bd4565b6040516109879190613e35565b60405180910390f35b34801561099b575f80fd5b506109b660048036038101906109b1919061423f565b611bda565b005b3480156109c3575f80fd5b506109de60048036038101906109d99190613e4e565b611cc4565b6040516109eb9190613e0d565b60405180910390f35b3480156109ff575f80fd5b50610a1a6004803603810190610a15919061423f565b611ce1565b005b348015610a27575f80fd5b50610a30611dcb565b005b348015610a3d575f80fd5b50610a46611eb4565b604051610a539190613e35565b60405180910390f35b348015610a67575f80fd5b50610a70611eba565b604051610a7d91906142d8565b60405180910390f35b348015610a91575f80fd5b50610a9a611edf565b604051610aa79190613e35565b60405180910390f35b348015610abb575f80fd5b50610ad66004803603810190610ad19190613f7a565b611ee5565b005b348015610ae3575f80fd5b50610afe6004803603810190610af9919061434e565b611fb9565b005b348015610b0b575f80fd5b50610b1461223b565b604051610b219190613e0d565b60405180910390f35b348015610b35575f80fd5b50610b506004803603810190610b4b919061439e565b61224d565b604051610b5d9190613e35565b60405180910390f35b348015610b71575f80fd5b50610b7a6122cf565b604051610b879190613e35565b60405180910390f35b348015610b9b575f80fd5b50610bb66004803603810190610bb1919061439e565b6122d5565b005b348015610bc3575f80fd5b50610bcc6123e9565b604051610bd99190613e35565b60405180910390f35b348015610bed575f80fd5b50610c086004803603810190610c039190613e4e565b6123ef565b005b348015610c15575f80fd5b50610c306004803603810190610c2b9190613e4e565b6124e5565b005b60605f8054610c4090614409565b80601f0160208091040260200160405190810160405280929190818152602001828054610c6c90614409565b8015610cb75780601f10610c8e57610100808354040283529160200191610cb7565b820191905f5260205f20905b815481529060010190602001808311610c9a57829003601f168201915b5050505050905090565b5f610cd4610ccd6127cc565b84846127d3565b6001905092915050565b610ce66127cc565b73ffffffffffffffffffffffffffffffffffffffff16610d04611844565b73ffffffffffffffffffffffffffffffffffffffff1614610d5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5190614483565b60405180910390fd5b6001600b5f6101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff021916908315150217905550565b600b60019054906101000a900460ff1681565b5f600254905090565b600d5481565b6010602052805f5260405f205f915054906101000a900460ff1681565b5f610ddc848484612996565b5f60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610e236127cc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610ea2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e99906144eb565b60405180910390fd5b610eb685610eae6127cc565b8584036127d3565b60019150509392505050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6d90614553565b60405180910390fd5b620186a06001610f84610da4565b610f8e919061459e565b610f98919061460c565b811015610fda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd1906146ac565b60405180910390fd5b60646001610fe6610da4565b610ff0919061459e565b610ffa919061460c565b81111561103c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110339061473a565b60405180910390fd5b8060088190555050565b5f6012905090565b60175481565b600e5481565b5f6110f76110666127cc565b848460045f6110736127cc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546110f29190614758565b6127d3565b6001905092915050565b6111096127cc565b73ffffffffffffffffffffffffffffffffffffffff16611127611844565b73ffffffffffffffffffffffffffffffffffffffff161461117d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117490614483565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361120c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611203906147fb565b60405180910390fd5b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b601a602052805f5260405f205f915054906101000a900460ff1681565b6112896127cc565b73ffffffffffffffffffffffffffffffffffffffff166112a7611844565b73ffffffffffffffffffffffffffffffffffffffff16146112fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f490614483565b60405180910390fd5b601960019054906101000a900460ff161561134d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134490614863565b60405180910390fd5b61135782826134cf565b5050565b60125f9054906101000a900460ff1681565b6113756127cc565b73ffffffffffffffffffffffffffffffffffffffff16611393611844565b73ffffffffffffffffffffffffffffffffffffffff16146113e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e090614483565b60405180910390fd5b6113f1611046565b600a6113fd91906149b0565b6103e8600161140a610da4565b611414919061459e565b61141e919061460c565b611428919061460c565b81101561146a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146190614a6a565b60405180910390fd5b611472611046565b600a61147e91906149b0565b81611489919061459e565b600a8190555050565b60165481565b6114a06127cc565b73ffffffffffffffffffffffffffffffffffffffff166114be611844565b73ffffffffffffffffffffffffffffffffffffffff1614611514576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150b90614483565b60405180910390fd5b61151c611046565b600a61152891906149b0565b6103e86001611535610da4565b61153f919061459e565b611549919061460c565b611553919061460c565b811015611595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158c90614af8565b60405180910390fd5b61159d611046565b600a6115a991906149b0565b816115b4919061459e565b60098190555050565b60095481565b600f602052805f5260405f205f915054906101000a900460ff1681565b6115e86127cc565b73ffffffffffffffffffffffffffffffffffffffff16611606611844565b73ffffffffffffffffffffffffffffffffffffffff161461165c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165390614483565b60405180910390fd5b80600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6117026127cc565b73ffffffffffffffffffffffffffffffffffffffff16611720611844565b73ffffffffffffffffffffffffffffffffffffffff1614611776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176d90614483565b60405180910390fd5b61177f5f6134f2565b565b6117896127cc565b73ffffffffffffffffffffffffffffffffffffffff166117a7611844565b73ffffffffffffffffffffffffffffffffffffffff16146117fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f490614483565b60405180910390fd5b5f60125f6101000a81548160ff021916908315150217905550565b600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6118996127cc565b73ffffffffffffffffffffffffffffffffffffffff166118b7611844565b73ffffffffffffffffffffffffffffffffffffffff161461190d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190490614483565b60405180910390fd5b5f5b838390508110156119a25781601a5f86868581811061193157611930614b16565b5b90506020020160208101906119469190613e4e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061190f565b50505050565b6119b06127cc565b73ffffffffffffffffffffffffffffffffffffffff166119ce611844565b73ffffffffffffffffffffffffffffffffffffffff1614611a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1b90614483565b60405180910390fd5b80600b60016101000a81548160ff02191690831515021790555050565b606060018054611a5090614409565b80601f0160208091040260200160405190810160405280929190818152602001828054611a7c90614409565b8015611ac75780601f10611a9e57610100808354040283529160200191611ac7565b820191905f5260205f20905b815481529060010190602001808311611aaa57829003601f168201915b5050505050905090565b5f8060045f611ade6127cc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8f90614b8d565b60405180910390fd5b611bac611ba36127cc565b858584036127d3565b600191505092915050565b5f611bca611bc36127cc565b8484612996565b6001905092915050565b60185481565b611be26127cc565b73ffffffffffffffffffffffffffffffffffffffff16611c00611844565b73ffffffffffffffffffffffffffffffffffffffff1614611c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4d90614483565b60405180910390fd5b8160178190555080601881905550601854601754611c749190614758565b60168190555060196016541115611cc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb790614bf5565b60405180910390fd5b5050565b6011602052805f5260405f205f915054906101000a900460ff1681565b611ce96127cc565b73ffffffffffffffffffffffffffffffffffffffff16611d07611844565b73ffffffffffffffffffffffffffffffffffffffff1614611d5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5490614483565b60405180910390fd5b8160148190555080601581905550601554601454611d7b9190614758565b60138190555060196013541115611dc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbe90614bf5565b60405180910390fd5b5050565b611dd36127cc565b73ffffffffffffffffffffffffffffffffffffffff16611df1611844565b73ffffffffffffffffffffffffffffffffffffffff1614611e47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3e90614483565b60405180910390fd5b601960019054906101000a900460ff1615611e97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8e90614c5d565b60405180910390fd5b6001601960016101000a81548160ff021916908315150217905550565b60155481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b611eed6127cc565b73ffffffffffffffffffffffffffffffffffffffff16611f0b611844565b73ffffffffffffffffffffffffffffffffffffffff1614611f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5890614483565b60405180910390fd5b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525080519060200120463060405160200161206b959493929190614c8a565b6040516020818303038152906040528051906020012090505f7f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e67000000000000000000000000000000000000815250805190602001205f6040516020016120f593929190614cdb565b6040516020818303038152906040528051906020012090505f8282604051602001612121929190614d84565b6040516020818303038152906040528051906020012090505f6001828888886040515f815260200160405260405161215c9493929190614dba565b6020604051602081039080840390855afa15801561217c573d5f803e3d5ffd5b505050602060405103519050612190611844565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146121fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f490614e47565b60405180910390fd5b6001600b5f6101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff02191690831515021790555050505050505050565b600b5f9054906101000a900460ff1681565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60135481565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612364576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235b90614553565b60405180910390fd5b81600b60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60145481565b6123f76127cc565b73ffffffffffffffffffffffffffffffffffffffff16612415611844565b73ffffffffffffffffffffffffffffffffffffffff161461246b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246290614483565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036124d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d090614eaf565b60405180910390fd5b6124e2816134f2565b50565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612574576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256b90614553565b60405180910390fd5b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612616573373ffffffffffffffffffffffffffffffffffffffff16476040516125cc90614efa565b5f6040518083038185875af1925050503d805f8114612606576040519150601f19603f3d011682016040523d82523d5f602084013e61260b565b606091505b5050809150506127c8565b5f8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126509190613ed8565b602060405180830381865afa15801561266b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061268f9190614f22565b116126cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c690614f97565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016127099190613ed8565b602060405180830381865afa158015612724573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127489190614f22565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612785929190614fb5565b6020604051808303815f875af11580156127a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127c59190614ff0565b50505b5050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612841576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283890615065565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a6906150cd565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129899190613e35565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129fb90615135565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a699061519d565b60405180910390fd5b601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612afc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af390615205565b60405180910390fd5b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612b86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7d9061526d565b60405180910390fd5b5f8103612b9d57612b9883835f6135b5565b6134ca565b60125f9054906101000a900460ff161561307f57612bb9611844565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612c275750612bf7611844565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c5f57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c99575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612cb1575060195f9054906101000a900460ff16155b1561307e57600b5f9054906101000a900460ff16612da45760105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612d64575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612da3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9a906152d5565b60405180910390fd5b5b60115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612e415750600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612ee857600a54811115612e8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e8290615363565b60405180910390fd5b600954612e97836116b4565b82612ea29190614758565b1115612ee3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eda906153cb565b60405180910390fd5b61307d565b60115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612f855750600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612fd457600a54811115612fcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fc690615459565b60405180910390fd5b61307c565b600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661307b5760095461302e836116b4565b826130399190614758565b111561307a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613071906153cb565b60405180910390fd5b5b5b5b5b5b5f613089306116b4565b90505f6008548210159050600b60019054906101000a900460ff1680156130ad5750805b80156130c5575060195f9054906101000a900460ff16155b8015613117575060115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b801561316a575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156131bd575060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156131fe57600160195f6101000a81548160ff0219169083151502179055506131e461382d565b5f60195f6101000a81548160ff0219169083151502179055505b5f60195f9054906101000a900460ff1615905060105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806132ac575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156132b5575f90505b5f81156134ba5760115f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561331357505f601354115b156133ab57613340606461333260135488613a0890919063ffffffff16565b613a1d90919063ffffffff16565b905060135460155482613353919061459e565b61335d919061460c565b600e5f82825461336d9190614758565b9250508190555060135460145482613385919061459e565b61338f919061460c565b600d5f82825461339f9190614758565b92505081905550613497565b60115f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561340257505f601654115b156134965761342f606461342160165488613a0890919063ffffffff16565b613a1d90919063ffffffff16565b905060165460185482613442919061459e565b61344c919061460c565b600e5f82825461345c9190614758565b9250508190555060165460175482613474919061459e565b61347e919061460c565b600d5f82825461348e9190614758565b925050819055505b5b5f8111156134ab576134aa8730836135b5565b5b80856134b79190615477565b94505b6134c58787876135b5565b505050505b505050565b815f90816134dd919061563e565b5080600190816134ed919061563e565b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613623576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161361a90615757565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613691576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613688906157bf565b60405180910390fd5b61369c838383613a32565b5f60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613720576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161371790615827565b60405180910390fd5b81810360035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546137b09190614758565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516138149190613e35565b60405180910390a3613827848484613a37565b50505050565b5f80600e54600d5461383f9190614758565b90505f61384b306116b4565b90505f82148061385a57505f81145b1561386757505050613a06565b6014600854613876919061459e565b81111561388f57601460085461388c919061459e565b90505b5f47905061389c82613a3c565b5f6138b08247613c7290919063ffffffff16565b90505f6138da856138cc600e5485613a0890919063ffffffff16565b613a1d90919063ffffffff16565b9050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161392190614efa565b5f6040518083038185875af1925050503d805f811461395b576040519150601f19603f3d011682016040523d82523d5f602084013e613960565b606091505b505080965050600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516139ac90614efa565b5f6040518083038185875af1925050503d805f81146139e6576040519150601f19603f3d011682016040523d82523d5f602084013e6139eb565b606091505b5050809650505f600d819055505f600e819055505050505050505b565b5f8183613a15919061459e565b905092915050565b5f8183613a2a919061460c565b905092915050565b505050565b505050565b5f600267ffffffffffffffff811115613a5857613a57613fc0565b5b604051908082528060200260200182016040528015613a865781602001602082028036833780820191505090505b50905030815f81518110613a9d57613a9c614b16565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b41573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613b659190615859565b81600181518110613b7957613b78614b16565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613bdf3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846127d3565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613c41959493929190615974565b5f604051808303815f87803b158015613c58575f80fd5b505af1158015613c6a573d5f803e3d5ffd5b505050505050565b5f8183613c7f9190615477565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f613cc982613c87565b613cd38185613c91565b9350613ce3818560208601613ca1565b613cec81613caf565b840191505092915050565b5f6020820190508181035f830152613d0f8184613cbf565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613d5182613d28565b9050919050565b613d6181613d47565b8114613d6b575f80fd5b50565b5f81359050613d7c81613d58565b92915050565b5f819050919050565b613d9481613d82565b8114613d9e575f80fd5b50565b5f81359050613daf81613d8b565b92915050565b5f8060408385031215613dcb57613dca613d20565b5b5f613dd885828601613d6e565b9250506020613de985828601613da1565b9150509250929050565b5f8115159050919050565b613e0781613df3565b82525050565b5f602082019050613e205f830184613dfe565b92915050565b613e2f81613d82565b82525050565b5f602082019050613e485f830184613e26565b92915050565b5f60208284031215613e6357613e62613d20565b5b5f613e7084828501613d6e565b91505092915050565b5f805f60608486031215613e9057613e8f613d20565b5b5f613e9d86828701613d6e565b9350506020613eae86828701613d6e565b9250506040613ebf86828701613da1565b9150509250925092565b613ed281613d47565b82525050565b5f602082019050613eeb5f830184613ec9565b92915050565b5f60208284031215613f0657613f05613d20565b5b5f613f1384828501613da1565b91505092915050565b5f60ff82169050919050565b613f3181613f1c565b82525050565b5f602082019050613f4a5f830184613f28565b92915050565b613f5981613df3565b8114613f63575f80fd5b50565b5f81359050613f7481613f50565b92915050565b5f8060408385031215613f9057613f8f613d20565b5b5f613f9d85828601613d6e565b9250506020613fae85828601613f66565b9150509250929050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b613ff682613caf565b810181811067ffffffffffffffff8211171561401557614014613fc0565b5b80604052505050565b5f614027613d17565b90506140338282613fed565b919050565b5f67ffffffffffffffff82111561405257614051613fc0565b5b61405b82613caf565b9050602081019050919050565b828183375f83830152505050565b5f61408861408384614038565b61401e565b9050828152602081018484840111156140a4576140a3613fbc565b5b6140af848285614068565b509392505050565b5f82601f8301126140cb576140ca613fb8565b5b81356140db848260208601614076565b91505092915050565b5f80604083850312156140fa576140f9613d20565b5b5f83013567ffffffffffffffff81111561411757614116613d24565b5b614123858286016140b7565b925050602083013567ffffffffffffffff81111561414457614143613d24565b5b614150858286016140b7565b9150509250929050565b5f80fd5b5f80fd5b5f8083601f84011261417757614176613fb8565b5b8235905067ffffffffffffffff8111156141945761419361415a565b5b6020830191508360208202830111156141b0576141af61415e565b5b9250929050565b5f805f604084860312156141ce576141cd613d20565b5b5f84013567ffffffffffffffff8111156141eb576141ea613d24565b5b6141f786828701614162565b9350935050602061420a86828701613f66565b9150509250925092565b5f6020828403121561422957614228613d20565b5b5f61423684828501613f66565b91505092915050565b5f806040838503121561425557614254613d20565b5b5f61426285828601613da1565b925050602061427385828601613da1565b9150509250929050565b5f819050919050565b5f6142a061429b61429684613d28565b61427d565b613d28565b9050919050565b5f6142b182614286565b9050919050565b5f6142c2826142a7565b9050919050565b6142d2816142b8565b82525050565b5f6020820190506142eb5f8301846142c9565b92915050565b6142fa81613f1c565b8114614304575f80fd5b50565b5f81359050614315816142f1565b92915050565b5f819050919050565b61432d8161431b565b8114614337575f80fd5b50565b5f8135905061434881614324565b92915050565b5f805f6060848603121561436557614364613d20565b5b5f61437286828701614307565b93505060206143838682870161433a565b92505060406143948682870161433a565b9150509250925092565b5f80604083850312156143b4576143b3613d20565b5b5f6143c185828601613d6e565b92505060206143d285828601613d6e565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061442057607f821691505b602082108103614433576144326143dc565b5b50919050565b7f496e76616c6964206f776e6572000000000000000000000000000000000000005f82015250565b5f61446d600d83613c91565b915061447882614439565b602082019050919050565b5f6020820190508181035f83015261449a81614461565b9050919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d20616d6f756e740000005f82015250565b5f6144d5601d83613c91565b91506144e0826144a1565b602082019050919050565b5f6020820190508181035f830152614502816144c9565b9050919050565b7f4552524f520000000000000000000000000000000000000000000000000000005f82015250565b5f61453d600583613c91565b915061454882614509565b602082019050919050565b5f6020820190508181035f83015261456a81614531565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6145a882613d82565b91506145b383613d82565b92508282026145c181613d82565b915082820484148315176145d8576145d7614571565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61461682613d82565b915061462183613d82565b925082614631576146306145df565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f614696603583613c91565b91506146a18261463c565b604082019050919050565b5f6020820190508181035f8301526146c38161468a565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e203120746f74616c20737570706c792e000000000000000000000000000000602082015250565b5f614724603183613c91565b915061472f826146ca565b604082019050919050565b5f6020820190508181035f83015261475181614718565b9050919050565b5f61476282613d82565b915061476d83613d82565b925082820190508082111561478557614784614571565b5b92915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f6147e5603983613c91565b91506147f08261478b565b604082019050919050565b5f6020820190508181035f830152614812816147d9565b9050919050565b7f416c7265616479206c61756e6368656420746f6b656e000000000000000000005f82015250565b5f61484d601683613c91565b915061485882614819565b602082019050919050565b5f6020820190508181035f83015261487a81614841565b9050919050565b5f8160011c9050919050565b5f808291508390505b60018511156148d6578086048111156148b2576148b1614571565b5b60018516156148c15780820291505b80810290506148cf85614881565b9450614896565b94509492505050565b5f826148ee57600190506149a9565b816148fb575f90506149a9565b8160018114614911576002811461491b5761494a565b60019150506149a9565b60ff84111561492d5761492c614571565b5b8360020a91508482111561494457614943614571565b5b506149a9565b5060208310610133831016604e8410600b841016171561497f5782820a90508381111561497a57614979614571565b5b6149a9565b61498c848484600161488d565b925090508184048111156149a3576149a2614571565b5b81810290505b9392505050565b5f6149ba82613d82565b91506149c583613f1c565b92506149f27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846148df565b905092915050565b7f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657254786e205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f614a54602f83613c91565b9150614a5f826149fa565b604082019050919050565b5f6020820190508181035f830152614a8181614a48565b9050919050565b7f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657257616c6c5f8201527f6574206c6f776572207468616e20302e31250000000000000000000000000000602082015250565b5f614ae2603283613c91565b9150614aed82614a88565b604082019050919050565b5f6020820190508181035f830152614b0f81614ad6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f45524332303a204e6f7420637572416c6c6f77203e3d2073756256616c7565005f82015250565b5f614b77601f83613c91565b9150614b8282614b43565b602082019050919050565b5f6020820190508181035f830152614ba481614b6b565b9050919050565b7f4d757374206b6565702074617820617420323525206f72206c657373000000005f82015250565b5f614bdf601c83613c91565b9150614bea82614bab565b602082019050919050565b5f6020820190508181035f830152614c0c81614bd3565b9050919050565b7f416c7265616479206c6f636b656420746f6b656e0000000000000000000000005f82015250565b5f614c47601483613c91565b9150614c5282614c13565b602082019050919050565b5f6020820190508181035f830152614c7481614c3b565b9050919050565b614c848161431b565b82525050565b5f60a082019050614c9d5f830188614c7b565b614caa6020830187614c7b565b614cb76040830186614c7b565b614cc46060830185613e26565b614cd16080830184613ec9565b9695505050505050565b5f606082019050614cee5f830186614c7b565b614cfb6020830185614c7b565b614d086040830184613e26565b949350505050565b5f81905092915050565b7f19010000000000000000000000000000000000000000000000000000000000005f82015250565b5f614d4e600283614d10565b9150614d5982614d1a565b600282019050919050565b5f819050919050565b614d7e614d798261431b565b614d64565b82525050565b5f614d8e82614d42565b9150614d9a8285614d6d565b602082019150614daa8284614d6d565b6020820191508190509392505050565b5f608082019050614dcd5f830187614c7b565b614dda6020830186613f28565b614de76040830185614c7b565b614df46060830184614c7b565b95945050505050565b7f496e76616c6964207369676e61747572650000000000000000000000000000005f82015250565b5f614e31601183613c91565b9150614e3c82614dfd565b602082019050919050565b5f6020820190508181035f830152614e5e81614e25565b9050919050565b7f4e6577206f776e6572206973205a45524f0000000000000000000000000000005f82015250565b5f614e99601183613c91565b9150614ea482614e65565b602082019050919050565b5f6020820190508181035f830152614ec681614e8d565b9050919050565b5f81905092915050565b50565b5f614ee55f83614ecd565b9150614ef082614ed7565b5f82019050919050565b5f614f0482614eda565b9150819050919050565b5f81519050614f1c81613d8b565b92915050565b5f60208284031215614f3757614f36613d20565b5b5f614f4484828501614f0e565b91505092915050565b7f4572726f723a20455243323000000000000000000000000000000000000000005f82015250565b5f614f81600c83613c91565b9150614f8c82614f4d565b602082019050919050565b5f6020820190508181035f830152614fae81614f75565b9050919050565b5f604082019050614fc85f830185613ec9565b614fd56020830184613e26565b9392505050565b5f81519050614fea81613f50565b92915050565b5f6020828403121561500557615004613d20565b5b5f61501284828501614fdc565b91505092915050565b7f45524332303a204e6f74206f776e657220213d206164647265737328302900005f82015250565b5f61504f601e83613c91565b915061505a8261501b565b602082019050919050565b5f6020820190508181035f83015261507c81615043565b9050919050565b7f45524332303a204e6f74207370656e64657220213d20616464726573732830295f82015250565b5f6150b7602083613c91565b91506150c282615083565b602082019050919050565b5f6020820190508181035f8301526150e4816150ab565b9050919050565b7f45524332303a20496e76616c69642066726f6d206164647265737300000000005f82015250565b5f61511f601b83613c91565b915061512a826150eb565b602082019050919050565b5f6020820190508181035f83015261514c81615113565b9050919050565b7f45524332303a20496e76616c696420746f2061646472657373000000000000005f82015250565b5f615187601983613c91565b915061519282615153565b602082019050919050565b5f6020820190508181035f8301526151b48161517b565b9050919050565b7f45524332303a2066726f6d20697320626c61636b206c697374000000000000005f82015250565b5f6151ef601983613c91565b91506151fa826151bb565b602082019050919050565b5f6020820190508181035f83015261521c816151e3565b9050919050565b7f45524332303a20746f20697320626c61636b206c6973740000000000000000005f82015250565b5f615257601783613c91565b915061526282615223565b602082019050919050565b5f6020820190508181035f8301526152848161524b565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6152bf601683613c91565b91506152ca8261528b565b602082019050919050565b5f6020820190508181035f8301526152ec816152b3565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d6178546f6b656e416d6f756e7450657254786e2e0000000000000000000000602082015250565b5f61534d603583613c91565b9150615358826152f3565b604082019050919050565b5f6020820190508181035f83015261537a81615341565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6153b5601383613c91565b91506153c082615381565b602082019050919050565b5f6020820190508181035f8301526153e2816153a9565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d6178546f6b656e416d6f756e7450657254786e2e00000000000000000000602082015250565b5f615443603683613c91565b915061544e826153e9565b604082019050919050565b5f6020820190508181035f83015261547081615437565b9050919050565b5f61548182613d82565b915061548c83613d82565b92508282039050818111156154a4576154a3614571565b5b92915050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026155067fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826154cb565b61551086836154cb565b95508019841693508086168417925050509392505050565b5f61554261553d61553884613d82565b61427d565b613d82565b9050919050565b5f819050919050565b61555b83615528565b61556f61556782615549565b8484546154d7565b825550505050565b5f90565b615583615577565b61558e818484615552565b505050565b5b818110156155b1576155a65f8261557b565b600181019050615594565b5050565b601f8211156155f6576155c7816154aa565b6155d0846154bc565b810160208510156155df578190505b6155f36155eb856154bc565b830182615593565b50505b505050565b5f82821c905092915050565b5f6156165f19846008026155fb565b1980831691505092915050565b5f61562e8383615607565b9150826002028217905092915050565b61564782613c87565b67ffffffffffffffff8111156156605761565f613fc0565b5b61566a8254614409565b6156758282856155b5565b5f60209050601f8311600181146156a6575f8415615694578287015190505b61569e8582615623565b865550615705565b601f1984166156b4866154aa565b5f5b828110156156db578489015182556001820191506020850194506020810190506156b6565b868310156156f857848901516156f4601f891682615607565b8355505b6001600288020188555050505b505050505050565b7f45524332303a204e6f742066726f6d20213d20616464726573732830290000005f82015250565b5f615741601d83613c91565b915061574c8261570d565b602082019050919050565b5f6020820190508181035f83015261576e81615735565b9050919050565b7f45524332303a204e6f7420746f20213d206164647265737328302900000000005f82015250565b5f6157a9601b83613c91565b91506157b482615775565b602082019050919050565b5f6020820190508181035f8301526157d68161579d565b9050919050565b7f45524332303a204e6f742062616c616e636546726f6d203e3d20616d6f756e745f82015250565b5f615811602083613c91565b915061581c826157dd565b602082019050919050565b5f6020820190508181035f83015261583e81615805565b9050919050565b5f8151905061585381613d58565b92915050565b5f6020828403121561586e5761586d613d20565b5b5f61587b84828501615845565b91505092915050565b5f819050919050565b5f6158a76158a261589d84615884565b61427d565b613d82565b9050919050565b6158b78161588d565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6158ef81613d47565b82525050565b5f61590083836158e6565b60208301905092915050565b5f602082019050919050565b5f615922826158bd565b61592c81856158c7565b9350615937836158d7565b805f5b8381101561596757815161594e88826158f5565b97506159598361590c565b92505060018101905061593a565b5085935050505092915050565b5f60a0820190506159875f830188613e26565b61599460208301876158ae565b81810360408301526159a68186615918565b90506159b56060830185613ec9565b6159c26080830184613e26565b969550505050505056fea2646970667358221220c4530310999295313fc34f831a9de45da7441298b99319e566d5a9e890bc621264736f6c63430008190033
Deployed Bytecode
0x60806040526004361061031d575f3560e01c8063751039fc116101aa578063b79c1886116100f6578063d929a08311610094578063e8ba854f1161006e578063e8ba854f14610b90578063e96db1ef14610bb8578063f2fde38b14610be2578063fc50baf514610c0a57610324565b8063d929a08314610b00578063dd62ed3e14610b2a578063e27a55fe14610b6657610324565b8063c31c9c07116100d0578063c31c9c0714610a5c578063c42c3f8814610a86578063c6a3064714610ab0578063d4394cf814610ad857610324565b8063b79c1886146109f4578063bca7a9e214610a1c578063be69188314610a3257610324565b8063924de9b711610163578063a9059cbb1161013d578063a9059cbb1461092a578063af8f26e714610966578063b38d5ef414610990578063b62496f5146109b857610324565b8063924de9b71461089c57806395d89b41146108c4578063a457c2d7146108ee57610324565b8063751039fc146107b657806375f0a874146107cc5780637d673170146107f65780638da5cb5b146108205780638ea5220f1461084a5780638f85a0431461087457610324565b806339509351116102695780635df6e68e116102225780636f498e21116101fc5780636f498e21146107005780637070678b1461073c57806370a0823114610764578063715018a6146107a057610324565b80635df6e68e1461068457806367b740e9146106ae578063685fbc6b146106d657610324565b8063395093511461056a57806345167f26146105a65780634838d165146105ce5780634997da421461060a5780634a62bb6514610632578063544d1ec91461065c57610324565b806322f59835116102d65780632c81355e116102b05780632c81355e146104c4578063313ce567146104ec5780633301241114610516578063372b44b81461054057610324565b806322f598351461042257806323b872dd1461045e57806326991cc81461049a57610324565b806306fdde0314610328578063095ea7b3146103525780630bd05b691461038e578063151d8039146103a457806318160ddd146103ce57806318c34be1146103f857610324565b3661032457005b5f80fd5b348015610333575f80fd5b5061033c610c32565b6040516103499190613cf7565b60405180910390f35b34801561035d575f80fd5b5061037860048036038101906103739190613db5565b610cc1565b6040516103859190613e0d565b60405180910390f35b348015610399575f80fd5b506103a2610cde565b005b3480156103af575f80fd5b506103b8610d91565b6040516103c59190613e0d565b60405180910390f35b3480156103d9575f80fd5b506103e2610da4565b6040516103ef9190613e35565b60405180910390f35b348015610403575f80fd5b5061040c610dad565b6040516104199190613e35565b60405180910390f35b34801561042d575f80fd5b5061044860048036038101906104439190613e4e565b610db3565b6040516104559190613e0d565b60405180910390f35b348015610469575f80fd5b50610484600480360381019061047f9190613e79565b610dd0565b6040516104919190613e0d565b60405180910390f35b3480156104a5575f80fd5b506104ae610ec2565b6040516104bb9190613ed8565b60405180910390f35b3480156104cf575f80fd5b506104ea60048036038101906104e59190613ef1565b610ee7565b005b3480156104f7575f80fd5b50610500611046565b60405161050d9190613f37565b60405180910390f35b348015610521575f80fd5b5061052a61104e565b6040516105379190613e35565b60405180910390f35b34801561054b575f80fd5b50610554611054565b6040516105619190613e35565b60405180910390f35b348015610575575f80fd5b50610590600480360381019061058b9190613db5565b61105a565b60405161059d9190613e0d565b60405180910390f35b3480156105b1575f80fd5b506105cc60048036038101906105c79190613f7a565b611101565b005b3480156105d9575f80fd5b506105f460048036038101906105ef9190613e4e565b611264565b6040516106019190613e0d565b60405180910390f35b348015610615575f80fd5b50610630600480360381019061062b91906140e4565b611281565b005b34801561063d575f80fd5b5061064661135b565b6040516106539190613e0d565b60405180910390f35b348015610667575f80fd5b50610682600480360381019061067d9190613ef1565b61136d565b005b34801561068f575f80fd5b50610698611492565b6040516106a59190613e35565b60405180910390f35b3480156106b9575f80fd5b506106d460048036038101906106cf9190613ef1565b611498565b005b3480156106e1575f80fd5b506106ea6115bd565b6040516106f79190613e35565b60405180910390f35b34801561070b575f80fd5b5061072660048036038101906107219190613e4e565b6115c3565b6040516107339190613e0d565b60405180910390f35b348015610747575f80fd5b50610762600480360381019061075d9190613f7a565b6115e0565b005b34801561076f575f80fd5b5061078a60048036038101906107859190613e4e565b6116b4565b6040516107979190613e35565b60405180910390f35b3480156107ab575f80fd5b506107b46116fa565b005b3480156107c1575f80fd5b506107ca611781565b005b3480156107d7575f80fd5b506107e0611818565b6040516107ed9190613ed8565b60405180910390f35b348015610801575f80fd5b5061080a61183e565b6040516108179190613e35565b60405180910390f35b34801561082b575f80fd5b50610834611844565b6040516108419190613ed8565b60405180910390f35b348015610855575f80fd5b5061085e61186c565b60405161086b9190613ed8565b60405180910390f35b34801561087f575f80fd5b5061089a600480360381019061089591906141b7565b611891565b005b3480156108a7575f80fd5b506108c260048036038101906108bd9190614214565b6119a8565b005b3480156108cf575f80fd5b506108d8611a41565b6040516108e59190613cf7565b60405180910390f35b3480156108f9575f80fd5b50610914600480360381019061090f9190613db5565b611ad1565b6040516109219190613e0d565b60405180910390f35b348015610935575f80fd5b50610950600480360381019061094b9190613db5565b611bb7565b60405161095d9190613e0d565b60405180910390f35b348015610971575f80fd5b5061097a611bd4565b6040516109879190613e35565b60405180910390f35b34801561099b575f80fd5b506109b660048036038101906109b1919061423f565b611bda565b005b3480156109c3575f80fd5b506109de60048036038101906109d99190613e4e565b611cc4565b6040516109eb9190613e0d565b60405180910390f35b3480156109ff575f80fd5b50610a1a6004803603810190610a15919061423f565b611ce1565b005b348015610a27575f80fd5b50610a30611dcb565b005b348015610a3d575f80fd5b50610a46611eb4565b604051610a539190613e35565b60405180910390f35b348015610a67575f80fd5b50610a70611eba565b604051610a7d91906142d8565b60405180910390f35b348015610a91575f80fd5b50610a9a611edf565b604051610aa79190613e35565b60405180910390f35b348015610abb575f80fd5b50610ad66004803603810190610ad19190613f7a565b611ee5565b005b348015610ae3575f80fd5b50610afe6004803603810190610af9919061434e565b611fb9565b005b348015610b0b575f80fd5b50610b1461223b565b604051610b219190613e0d565b60405180910390f35b348015610b35575f80fd5b50610b506004803603810190610b4b919061439e565b61224d565b604051610b5d9190613e35565b60405180910390f35b348015610b71575f80fd5b50610b7a6122cf565b604051610b879190613e35565b60405180910390f35b348015610b9b575f80fd5b50610bb66004803603810190610bb1919061439e565b6122d5565b005b348015610bc3575f80fd5b50610bcc6123e9565b604051610bd99190613e35565b60405180910390f35b348015610bed575f80fd5b50610c086004803603810190610c039190613e4e565b6123ef565b005b348015610c15575f80fd5b50610c306004803603810190610c2b9190613e4e565b6124e5565b005b60605f8054610c4090614409565b80601f0160208091040260200160405190810160405280929190818152602001828054610c6c90614409565b8015610cb75780601f10610c8e57610100808354040283529160200191610cb7565b820191905f5260205f20905b815481529060010190602001808311610c9a57829003601f168201915b5050505050905090565b5f610cd4610ccd6127cc565b84846127d3565b6001905092915050565b610ce66127cc565b73ffffffffffffffffffffffffffffffffffffffff16610d04611844565b73ffffffffffffffffffffffffffffffffffffffff1614610d5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5190614483565b60405180910390fd5b6001600b5f6101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff021916908315150217905550565b600b60019054906101000a900460ff1681565b5f600254905090565b600d5481565b6010602052805f5260405f205f915054906101000a900460ff1681565b5f610ddc848484612996565b5f60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610e236127cc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610ea2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e99906144eb565b60405180910390fd5b610eb685610eae6127cc565b8584036127d3565b60019150509392505050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6d90614553565b60405180910390fd5b620186a06001610f84610da4565b610f8e919061459e565b610f98919061460c565b811015610fda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd1906146ac565b60405180910390fd5b60646001610fe6610da4565b610ff0919061459e565b610ffa919061460c565b81111561103c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110339061473a565b60405180910390fd5b8060088190555050565b5f6012905090565b60175481565b600e5481565b5f6110f76110666127cc565b848460045f6110736127cc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546110f29190614758565b6127d3565b6001905092915050565b6111096127cc565b73ffffffffffffffffffffffffffffffffffffffff16611127611844565b73ffffffffffffffffffffffffffffffffffffffff161461117d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117490614483565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361120c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611203906147fb565b60405180910390fd5b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b601a602052805f5260405f205f915054906101000a900460ff1681565b6112896127cc565b73ffffffffffffffffffffffffffffffffffffffff166112a7611844565b73ffffffffffffffffffffffffffffffffffffffff16146112fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f490614483565b60405180910390fd5b601960019054906101000a900460ff161561134d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134490614863565b60405180910390fd5b61135782826134cf565b5050565b60125f9054906101000a900460ff1681565b6113756127cc565b73ffffffffffffffffffffffffffffffffffffffff16611393611844565b73ffffffffffffffffffffffffffffffffffffffff16146113e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e090614483565b60405180910390fd5b6113f1611046565b600a6113fd91906149b0565b6103e8600161140a610da4565b611414919061459e565b61141e919061460c565b611428919061460c565b81101561146a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146190614a6a565b60405180910390fd5b611472611046565b600a61147e91906149b0565b81611489919061459e565b600a8190555050565b60165481565b6114a06127cc565b73ffffffffffffffffffffffffffffffffffffffff166114be611844565b73ffffffffffffffffffffffffffffffffffffffff1614611514576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150b90614483565b60405180910390fd5b61151c611046565b600a61152891906149b0565b6103e86001611535610da4565b61153f919061459e565b611549919061460c565b611553919061460c565b811015611595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158c90614af8565b60405180910390fd5b61159d611046565b600a6115a991906149b0565b816115b4919061459e565b60098190555050565b60095481565b600f602052805f5260405f205f915054906101000a900460ff1681565b6115e86127cc565b73ffffffffffffffffffffffffffffffffffffffff16611606611844565b73ffffffffffffffffffffffffffffffffffffffff161461165c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165390614483565b60405180910390fd5b80600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6117026127cc565b73ffffffffffffffffffffffffffffffffffffffff16611720611844565b73ffffffffffffffffffffffffffffffffffffffff1614611776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176d90614483565b60405180910390fd5b61177f5f6134f2565b565b6117896127cc565b73ffffffffffffffffffffffffffffffffffffffff166117a7611844565b73ffffffffffffffffffffffffffffffffffffffff16146117fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f490614483565b60405180910390fd5b5f60125f6101000a81548160ff021916908315150217905550565b600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6118996127cc565b73ffffffffffffffffffffffffffffffffffffffff166118b7611844565b73ffffffffffffffffffffffffffffffffffffffff161461190d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190490614483565b60405180910390fd5b5f5b838390508110156119a25781601a5f86868581811061193157611930614b16565b5b90506020020160208101906119469190613e4e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061190f565b50505050565b6119b06127cc565b73ffffffffffffffffffffffffffffffffffffffff166119ce611844565b73ffffffffffffffffffffffffffffffffffffffff1614611a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1b90614483565b60405180910390fd5b80600b60016101000a81548160ff02191690831515021790555050565b606060018054611a5090614409565b80601f0160208091040260200160405190810160405280929190818152602001828054611a7c90614409565b8015611ac75780601f10611a9e57610100808354040283529160200191611ac7565b820191905f5260205f20905b815481529060010190602001808311611aaa57829003601f168201915b5050505050905090565b5f8060045f611ade6127cc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8f90614b8d565b60405180910390fd5b611bac611ba36127cc565b858584036127d3565b600191505092915050565b5f611bca611bc36127cc565b8484612996565b6001905092915050565b60185481565b611be26127cc565b73ffffffffffffffffffffffffffffffffffffffff16611c00611844565b73ffffffffffffffffffffffffffffffffffffffff1614611c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4d90614483565b60405180910390fd5b8160178190555080601881905550601854601754611c749190614758565b60168190555060196016541115611cc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb790614bf5565b60405180910390fd5b5050565b6011602052805f5260405f205f915054906101000a900460ff1681565b611ce96127cc565b73ffffffffffffffffffffffffffffffffffffffff16611d07611844565b73ffffffffffffffffffffffffffffffffffffffff1614611d5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5490614483565b60405180910390fd5b8160148190555080601581905550601554601454611d7b9190614758565b60138190555060196013541115611dc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbe90614bf5565b60405180910390fd5b5050565b611dd36127cc565b73ffffffffffffffffffffffffffffffffffffffff16611df1611844565b73ffffffffffffffffffffffffffffffffffffffff1614611e47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3e90614483565b60405180910390fd5b601960019054906101000a900460ff1615611e97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8e90614c5d565b60405180910390fd5b6001601960016101000a81548160ff021916908315150217905550565b60155481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b611eed6127cc565b73ffffffffffffffffffffffffffffffffffffffff16611f0b611844565b73ffffffffffffffffffffffffffffffffffffffff1614611f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5890614483565b60405180910390fd5b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525080519060200120463060405160200161206b959493929190614c8a565b6040516020818303038152906040528051906020012090505f7f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e67000000000000000000000000000000000000815250805190602001205f6040516020016120f593929190614cdb565b6040516020818303038152906040528051906020012090505f8282604051602001612121929190614d84565b6040516020818303038152906040528051906020012090505f6001828888886040515f815260200160405260405161215c9493929190614dba565b6020604051602081039080840390855afa15801561217c573d5f803e3d5ffd5b505050602060405103519050612190611844565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146121fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f490614e47565b60405180910390fd5b6001600b5f6101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff02191690831515021790555050505050505050565b600b5f9054906101000a900460ff1681565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60135481565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612364576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235b90614553565b60405180910390fd5b81600b60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60145481565b6123f76127cc565b73ffffffffffffffffffffffffffffffffffffffff16612415611844565b73ffffffffffffffffffffffffffffffffffffffff161461246b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246290614483565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036124d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d090614eaf565b60405180910390fd5b6124e2816134f2565b50565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612574576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256b90614553565b60405180910390fd5b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612616573373ffffffffffffffffffffffffffffffffffffffff16476040516125cc90614efa565b5f6040518083038185875af1925050503d805f8114612606576040519150601f19603f3d011682016040523d82523d5f602084013e61260b565b606091505b5050809150506127c8565b5f8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126509190613ed8565b602060405180830381865afa15801561266b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061268f9190614f22565b116126cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c690614f97565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016127099190613ed8565b602060405180830381865afa158015612724573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127489190614f22565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612785929190614fb5565b6020604051808303815f875af11580156127a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127c59190614ff0565b50505b5050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612841576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283890615065565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a6906150cd565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129899190613e35565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129fb90615135565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a699061519d565b60405180910390fd5b601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612afc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af390615205565b60405180910390fd5b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612b86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7d9061526d565b60405180910390fd5b5f8103612b9d57612b9883835f6135b5565b6134ca565b60125f9054906101000a900460ff161561307f57612bb9611844565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612c275750612bf7611844565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c5f57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c99575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612cb1575060195f9054906101000a900460ff16155b1561307e57600b5f9054906101000a900460ff16612da45760105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612d64575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612da3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9a906152d5565b60405180910390fd5b5b60115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612e415750600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612ee857600a54811115612e8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e8290615363565b60405180910390fd5b600954612e97836116b4565b82612ea29190614758565b1115612ee3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eda906153cb565b60405180910390fd5b61307d565b60115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612f855750600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612fd457600a54811115612fcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fc690615459565b60405180910390fd5b61307c565b600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661307b5760095461302e836116b4565b826130399190614758565b111561307a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613071906153cb565b60405180910390fd5b5b5b5b5b5b5f613089306116b4565b90505f6008548210159050600b60019054906101000a900460ff1680156130ad5750805b80156130c5575060195f9054906101000a900460ff16155b8015613117575060115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b801561316a575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156131bd575060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156131fe57600160195f6101000a81548160ff0219169083151502179055506131e461382d565b5f60195f6101000a81548160ff0219169083151502179055505b5f60195f9054906101000a900460ff1615905060105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806132ac575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156132b5575f90505b5f81156134ba5760115f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561331357505f601354115b156133ab57613340606461333260135488613a0890919063ffffffff16565b613a1d90919063ffffffff16565b905060135460155482613353919061459e565b61335d919061460c565b600e5f82825461336d9190614758565b9250508190555060135460145482613385919061459e565b61338f919061460c565b600d5f82825461339f9190614758565b92505081905550613497565b60115f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561340257505f601654115b156134965761342f606461342160165488613a0890919063ffffffff16565b613a1d90919063ffffffff16565b905060165460185482613442919061459e565b61344c919061460c565b600e5f82825461345c9190614758565b9250508190555060165460175482613474919061459e565b61347e919061460c565b600d5f82825461348e9190614758565b925050819055505b5b5f8111156134ab576134aa8730836135b5565b5b80856134b79190615477565b94505b6134c58787876135b5565b505050505b505050565b815f90816134dd919061563e565b5080600190816134ed919061563e565b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613623576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161361a90615757565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613691576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613688906157bf565b60405180910390fd5b61369c838383613a32565b5f60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613720576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161371790615827565b60405180910390fd5b81810360035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546137b09190614758565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516138149190613e35565b60405180910390a3613827848484613a37565b50505050565b5f80600e54600d5461383f9190614758565b90505f61384b306116b4565b90505f82148061385a57505f81145b1561386757505050613a06565b6014600854613876919061459e565b81111561388f57601460085461388c919061459e565b90505b5f47905061389c82613a3c565b5f6138b08247613c7290919063ffffffff16565b90505f6138da856138cc600e5485613a0890919063ffffffff16565b613a1d90919063ffffffff16565b9050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161392190614efa565b5f6040518083038185875af1925050503d805f811461395b576040519150601f19603f3d011682016040523d82523d5f602084013e613960565b606091505b505080965050600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516139ac90614efa565b5f6040518083038185875af1925050503d805f81146139e6576040519150601f19603f3d011682016040523d82523d5f602084013e6139eb565b606091505b5050809650505f600d819055505f600e819055505050505050505b565b5f8183613a15919061459e565b905092915050565b5f8183613a2a919061460c565b905092915050565b505050565b505050565b5f600267ffffffffffffffff811115613a5857613a57613fc0565b5b604051908082528060200260200182016040528015613a865781602001602082028036833780820191505090505b50905030815f81518110613a9d57613a9c614b16565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b41573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613b659190615859565b81600181518110613b7957613b78614b16565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613bdf3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846127d3565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613c41959493929190615974565b5f604051808303815f87803b158015613c58575f80fd5b505af1158015613c6a573d5f803e3d5ffd5b505050505050565b5f8183613c7f9190615477565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f613cc982613c87565b613cd38185613c91565b9350613ce3818560208601613ca1565b613cec81613caf565b840191505092915050565b5f6020820190508181035f830152613d0f8184613cbf565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613d5182613d28565b9050919050565b613d6181613d47565b8114613d6b575f80fd5b50565b5f81359050613d7c81613d58565b92915050565b5f819050919050565b613d9481613d82565b8114613d9e575f80fd5b50565b5f81359050613daf81613d8b565b92915050565b5f8060408385031215613dcb57613dca613d20565b5b5f613dd885828601613d6e565b9250506020613de985828601613da1565b9150509250929050565b5f8115159050919050565b613e0781613df3565b82525050565b5f602082019050613e205f830184613dfe565b92915050565b613e2f81613d82565b82525050565b5f602082019050613e485f830184613e26565b92915050565b5f60208284031215613e6357613e62613d20565b5b5f613e7084828501613d6e565b91505092915050565b5f805f60608486031215613e9057613e8f613d20565b5b5f613e9d86828701613d6e565b9350506020613eae86828701613d6e565b9250506040613ebf86828701613da1565b9150509250925092565b613ed281613d47565b82525050565b5f602082019050613eeb5f830184613ec9565b92915050565b5f60208284031215613f0657613f05613d20565b5b5f613f1384828501613da1565b91505092915050565b5f60ff82169050919050565b613f3181613f1c565b82525050565b5f602082019050613f4a5f830184613f28565b92915050565b613f5981613df3565b8114613f63575f80fd5b50565b5f81359050613f7481613f50565b92915050565b5f8060408385031215613f9057613f8f613d20565b5b5f613f9d85828601613d6e565b9250506020613fae85828601613f66565b9150509250929050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b613ff682613caf565b810181811067ffffffffffffffff8211171561401557614014613fc0565b5b80604052505050565b5f614027613d17565b90506140338282613fed565b919050565b5f67ffffffffffffffff82111561405257614051613fc0565b5b61405b82613caf565b9050602081019050919050565b828183375f83830152505050565b5f61408861408384614038565b61401e565b9050828152602081018484840111156140a4576140a3613fbc565b5b6140af848285614068565b509392505050565b5f82601f8301126140cb576140ca613fb8565b5b81356140db848260208601614076565b91505092915050565b5f80604083850312156140fa576140f9613d20565b5b5f83013567ffffffffffffffff81111561411757614116613d24565b5b614123858286016140b7565b925050602083013567ffffffffffffffff81111561414457614143613d24565b5b614150858286016140b7565b9150509250929050565b5f80fd5b5f80fd5b5f8083601f84011261417757614176613fb8565b5b8235905067ffffffffffffffff8111156141945761419361415a565b5b6020830191508360208202830111156141b0576141af61415e565b5b9250929050565b5f805f604084860312156141ce576141cd613d20565b5b5f84013567ffffffffffffffff8111156141eb576141ea613d24565b5b6141f786828701614162565b9350935050602061420a86828701613f66565b9150509250925092565b5f6020828403121561422957614228613d20565b5b5f61423684828501613f66565b91505092915050565b5f806040838503121561425557614254613d20565b5b5f61426285828601613da1565b925050602061427385828601613da1565b9150509250929050565b5f819050919050565b5f6142a061429b61429684613d28565b61427d565b613d28565b9050919050565b5f6142b182614286565b9050919050565b5f6142c2826142a7565b9050919050565b6142d2816142b8565b82525050565b5f6020820190506142eb5f8301846142c9565b92915050565b6142fa81613f1c565b8114614304575f80fd5b50565b5f81359050614315816142f1565b92915050565b5f819050919050565b61432d8161431b565b8114614337575f80fd5b50565b5f8135905061434881614324565b92915050565b5f805f6060848603121561436557614364613d20565b5b5f61437286828701614307565b93505060206143838682870161433a565b92505060406143948682870161433a565b9150509250925092565b5f80604083850312156143b4576143b3613d20565b5b5f6143c185828601613d6e565b92505060206143d285828601613d6e565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061442057607f821691505b602082108103614433576144326143dc565b5b50919050565b7f496e76616c6964206f776e6572000000000000000000000000000000000000005f82015250565b5f61446d600d83613c91565b915061447882614439565b602082019050919050565b5f6020820190508181035f83015261449a81614461565b9050919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d20616d6f756e740000005f82015250565b5f6144d5601d83613c91565b91506144e0826144a1565b602082019050919050565b5f6020820190508181035f830152614502816144c9565b9050919050565b7f4552524f520000000000000000000000000000000000000000000000000000005f82015250565b5f61453d600583613c91565b915061454882614509565b602082019050919050565b5f6020820190508181035f83015261456a81614531565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6145a882613d82565b91506145b383613d82565b92508282026145c181613d82565b915082820484148315176145d8576145d7614571565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61461682613d82565b915061462183613d82565b925082614631576146306145df565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f614696603583613c91565b91506146a18261463c565b604082019050919050565b5f6020820190508181035f8301526146c38161468a565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e203120746f74616c20737570706c792e000000000000000000000000000000602082015250565b5f614724603183613c91565b915061472f826146ca565b604082019050919050565b5f6020820190508181035f83015261475181614718565b9050919050565b5f61476282613d82565b915061476d83613d82565b925082820190508082111561478557614784614571565b5b92915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f6147e5603983613c91565b91506147f08261478b565b604082019050919050565b5f6020820190508181035f830152614812816147d9565b9050919050565b7f416c7265616479206c61756e6368656420746f6b656e000000000000000000005f82015250565b5f61484d601683613c91565b915061485882614819565b602082019050919050565b5f6020820190508181035f83015261487a81614841565b9050919050565b5f8160011c9050919050565b5f808291508390505b60018511156148d6578086048111156148b2576148b1614571565b5b60018516156148c15780820291505b80810290506148cf85614881565b9450614896565b94509492505050565b5f826148ee57600190506149a9565b816148fb575f90506149a9565b8160018114614911576002811461491b5761494a565b60019150506149a9565b60ff84111561492d5761492c614571565b5b8360020a91508482111561494457614943614571565b5b506149a9565b5060208310610133831016604e8410600b841016171561497f5782820a90508381111561497a57614979614571565b5b6149a9565b61498c848484600161488d565b925090508184048111156149a3576149a2614571565b5b81810290505b9392505050565b5f6149ba82613d82565b91506149c583613f1c565b92506149f27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846148df565b905092915050565b7f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657254786e205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f614a54602f83613c91565b9150614a5f826149fa565b604082019050919050565b5f6020820190508181035f830152614a8181614a48565b9050919050565b7f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657257616c6c5f8201527f6574206c6f776572207468616e20302e31250000000000000000000000000000602082015250565b5f614ae2603283613c91565b9150614aed82614a88565b604082019050919050565b5f6020820190508181035f830152614b0f81614ad6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f45524332303a204e6f7420637572416c6c6f77203e3d2073756256616c7565005f82015250565b5f614b77601f83613c91565b9150614b8282614b43565b602082019050919050565b5f6020820190508181035f830152614ba481614b6b565b9050919050565b7f4d757374206b6565702074617820617420323525206f72206c657373000000005f82015250565b5f614bdf601c83613c91565b9150614bea82614bab565b602082019050919050565b5f6020820190508181035f830152614c0c81614bd3565b9050919050565b7f416c7265616479206c6f636b656420746f6b656e0000000000000000000000005f82015250565b5f614c47601483613c91565b9150614c5282614c13565b602082019050919050565b5f6020820190508181035f830152614c7481614c3b565b9050919050565b614c848161431b565b82525050565b5f60a082019050614c9d5f830188614c7b565b614caa6020830187614c7b565b614cb76040830186614c7b565b614cc46060830185613e26565b614cd16080830184613ec9565b9695505050505050565b5f606082019050614cee5f830186614c7b565b614cfb6020830185614c7b565b614d086040830184613e26565b949350505050565b5f81905092915050565b7f19010000000000000000000000000000000000000000000000000000000000005f82015250565b5f614d4e600283614d10565b9150614d5982614d1a565b600282019050919050565b5f819050919050565b614d7e614d798261431b565b614d64565b82525050565b5f614d8e82614d42565b9150614d9a8285614d6d565b602082019150614daa8284614d6d565b6020820191508190509392505050565b5f608082019050614dcd5f830187614c7b565b614dda6020830186613f28565b614de76040830185614c7b565b614df46060830184614c7b565b95945050505050565b7f496e76616c6964207369676e61747572650000000000000000000000000000005f82015250565b5f614e31601183613c91565b9150614e3c82614dfd565b602082019050919050565b5f6020820190508181035f830152614e5e81614e25565b9050919050565b7f4e6577206f776e6572206973205a45524f0000000000000000000000000000005f82015250565b5f614e99601183613c91565b9150614ea482614e65565b602082019050919050565b5f6020820190508181035f830152614ec681614e8d565b9050919050565b5f81905092915050565b50565b5f614ee55f83614ecd565b9150614ef082614ed7565b5f82019050919050565b5f614f0482614eda565b9150819050919050565b5f81519050614f1c81613d8b565b92915050565b5f60208284031215614f3757614f36613d20565b5b5f614f4484828501614f0e565b91505092915050565b7f4572726f723a20455243323000000000000000000000000000000000000000005f82015250565b5f614f81600c83613c91565b9150614f8c82614f4d565b602082019050919050565b5f6020820190508181035f830152614fae81614f75565b9050919050565b5f604082019050614fc85f830185613ec9565b614fd56020830184613e26565b9392505050565b5f81519050614fea81613f50565b92915050565b5f6020828403121561500557615004613d20565b5b5f61501284828501614fdc565b91505092915050565b7f45524332303a204e6f74206f776e657220213d206164647265737328302900005f82015250565b5f61504f601e83613c91565b915061505a8261501b565b602082019050919050565b5f6020820190508181035f83015261507c81615043565b9050919050565b7f45524332303a204e6f74207370656e64657220213d20616464726573732830295f82015250565b5f6150b7602083613c91565b91506150c282615083565b602082019050919050565b5f6020820190508181035f8301526150e4816150ab565b9050919050565b7f45524332303a20496e76616c69642066726f6d206164647265737300000000005f82015250565b5f61511f601b83613c91565b915061512a826150eb565b602082019050919050565b5f6020820190508181035f83015261514c81615113565b9050919050565b7f45524332303a20496e76616c696420746f2061646472657373000000000000005f82015250565b5f615187601983613c91565b915061519282615153565b602082019050919050565b5f6020820190508181035f8301526151b48161517b565b9050919050565b7f45524332303a2066726f6d20697320626c61636b206c697374000000000000005f82015250565b5f6151ef601983613c91565b91506151fa826151bb565b602082019050919050565b5f6020820190508181035f83015261521c816151e3565b9050919050565b7f45524332303a20746f20697320626c61636b206c6973740000000000000000005f82015250565b5f615257601783613c91565b915061526282615223565b602082019050919050565b5f6020820190508181035f8301526152848161524b565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6152bf601683613c91565b91506152ca8261528b565b602082019050919050565b5f6020820190508181035f8301526152ec816152b3565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d6178546f6b656e416d6f756e7450657254786e2e0000000000000000000000602082015250565b5f61534d603583613c91565b9150615358826152f3565b604082019050919050565b5f6020820190508181035f83015261537a81615341565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6153b5601383613c91565b91506153c082615381565b602082019050919050565b5f6020820190508181035f8301526153e2816153a9565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d6178546f6b656e416d6f756e7450657254786e2e00000000000000000000602082015250565b5f615443603683613c91565b915061544e826153e9565b604082019050919050565b5f6020820190508181035f83015261547081615437565b9050919050565b5f61548182613d82565b915061548c83613d82565b92508282039050818111156154a4576154a3614571565b5b92915050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026155067fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826154cb565b61551086836154cb565b95508019841693508086168417925050509392505050565b5f61554261553d61553884613d82565b61427d565b613d82565b9050919050565b5f819050919050565b61555b83615528565b61556f61556782615549565b8484546154d7565b825550505050565b5f90565b615583615577565b61558e818484615552565b505050565b5b818110156155b1576155a65f8261557b565b600181019050615594565b5050565b601f8211156155f6576155c7816154aa565b6155d0846154bc565b810160208510156155df578190505b6155f36155eb856154bc565b830182615593565b50505b505050565b5f82821c905092915050565b5f6156165f19846008026155fb565b1980831691505092915050565b5f61562e8383615607565b9150826002028217905092915050565b61564782613c87565b67ffffffffffffffff8111156156605761565f613fc0565b5b61566a8254614409565b6156758282856155b5565b5f60209050601f8311600181146156a6575f8415615694578287015190505b61569e8582615623565b865550615705565b601f1984166156b4866154aa565b5f5b828110156156db578489015182556001820191506020850194506020810190506156b6565b868310156156f857848901516156f4601f891682615607565b8355505b6001600288020188555050505b505050505050565b7f45524332303a204e6f742066726f6d20213d20616464726573732830290000005f82015250565b5f615741601d83613c91565b915061574c8261570d565b602082019050919050565b5f6020820190508181035f83015261576e81615735565b9050919050565b7f45524332303a204e6f7420746f20213d206164647265737328302900000000005f82015250565b5f6157a9601b83613c91565b91506157b482615775565b602082019050919050565b5f6020820190508181035f8301526157d68161579d565b9050919050565b7f45524332303a204e6f742062616c616e636546726f6d203e3d20616d6f756e745f82015250565b5f615811602083613c91565b915061581c826157dd565b602082019050919050565b5f6020820190508181035f83015261583e81615805565b9050919050565b5f8151905061585381613d58565b92915050565b5f6020828403121561586e5761586d613d20565b5b5f61587b84828501615845565b91505092915050565b5f819050919050565b5f6158a76158a261589d84615884565b61427d565b613d82565b9050919050565b6158b78161588d565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6158ef81613d47565b82525050565b5f61590083836158e6565b60208301905092915050565b5f602082019050919050565b5f615922826158bd565b61592c81856158c7565b9350615937836158d7565b805f5b8381101561596757815161594e88826158f5565b97506159598361590c565b92505060018101905061593a565b5085935050505092915050565b5f60a0820190506159875f830188613e26565b61599460208301876158ae565b81810360408301526159a68186615918565b90506159b56060830185613ec9565b6159c26080830184613e26565b969550505050505056fea2646970667358221220c4530310999295313fc34f831a9de45da7441298b99319e566d5a9e890bc621264736f6c63430008190033
Deployed Bytecode Sourcemap
14187:12204:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9699:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10271:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17067:116;;;;;;;;;;;;;:::i;:::-;;14511:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10020:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14622:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14776:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10951:397;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14305:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18984:399;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9919:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15078:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14667:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11525:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21027:247;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15207:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17191:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14897:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19679:276;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15045:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19391:280;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14381:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14708:61;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18471:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10136:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1009:103;;;;;;;;;;;;;:::i;:::-;;18771:90;;;;;;;;;;;;;:::i;:::-;;14552:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14341:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;726:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14589:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19963:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18869:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9807:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11744:360;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11356:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15115:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20175:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14831:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20473:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17394:127;;;;;;;;;;;;;:::i;:::-;;15011:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14262:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14426:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18633:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17529:934;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14470:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10792:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14939:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20781:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14973:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;821:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25811:575;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9699:100;9753:13;9786:5;9779:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9699:100;:::o;10271:169::-;10354:4;10371:39;10380:12;:10;:12::i;:::-;10394:7;10403:6;10371:8;:39::i;:::-;10428:4;10421:11;;10271:169;;;;:::o;17067:116::-;668:12;:10;:12::i;:::-;657:23;;:7;:5;:7::i;:::-;:23;;;649:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;17141:4:::1;17124:14;;:21;;;;;;;;;;;;;;;;;;17171:4;17156:12;;:19;;;;;;;;;;;;;;;;;;17067:116::o:0;14511:32::-;;;;;;;;;;;;;:::o;10020:108::-;10081:7;10108:12;;10101:19;;10020:108;:::o;14622:38::-;;;;:::o;14776:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;10951:397::-;11048:4;11065:27;11075:4;11081:2;11085:6;11065:9;:27::i;:::-;11103:16;11122:11;:17;11134:4;11122:17;;;;;;;;;;;;;;;:31;11140:12;:10;:12::i;:::-;11122:31;;;;;;;;;;;;;;;;11103:50;;11184:6;11172:8;:18;;11164:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;11260:47;11269:4;11275:12;:10;:12::i;:::-;11300:6;11289:8;:17;11260:8;:47::i;:::-;11336:4;11329:11;;;10951:397;;;;;:::o;14305:23::-;;;;;;;;;;;;;:::o;18984:399::-;19094:9;;;;;;;;;;;19072:32;;:10;:32;;;19064:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;19165:6;19160:1;19144:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19143:28;;;;:::i;:::-;19133:6;:38;;19125:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;19280:3;19275:1;19259:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19258:25;;;;:::i;:::-;19248:6;:35;;19240:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;19369:6;19348:18;:27;;;;18984:399;:::o;9919:93::-;9977:5;10002:2;9995:9;;9919:93;:::o;15078:30::-;;;;:::o;14667:32::-;;;;:::o;11525:211::-;11611:4;11628:78;11637:12;:10;:12::i;:::-;11651:7;11697:8;11660:11;:25;11672:12;:10;:12::i;:::-;11660:25;;;;;;;;;;;;;;;:34;11686:7;11660:34;;;;;;;;;;;;;;;;:45;;;;:::i;:::-;11628:8;:78::i;:::-;11724:4;11717:11;;11525:211;;;;:::o;21027:247::-;668:12;:10;:12::i;:::-;657:23;;:7;:5;:7::i;:::-;:23;;;649:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;21146:8:::1;;;;;;;;;;;21138:16;;:4;:16;;::::0;21130:86:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;21261:5;21227:25;:31;21253:4;21227:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;21027:247:::0;;:::o;15207:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;17191:195::-;668:12;:10;:12::i;:::-;657:23;;:7;:5;:7::i;:::-;:23;;;649:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;17297:8:::1;;;;;;;;;;;17296:9;17288:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;17343:35;17364:5;17370:7;17343:20;:35::i;:::-;17191:195:::0;;:::o;14897:33::-;;;;;;;;;;;;;:::o;19679:276::-;668:12;:10;:12::i;:::-;657:23;;:7;:5;:7::i;:::-;:23;;;649:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;19823:10:::1;:8;:10::i;:::-;19817:2;:16;;;;:::i;:::-;19808:4;19803:1;19787:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19786:26;;;;:::i;:::-;19785:49;;;;:::i;:::-;19775:6;:59;;19767:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;19936:10;:8;:10::i;:::-;19930:2;:16;;;;:::i;:::-;19920:6;:27;;;;:::i;:::-;19897:20;:50;;;;19679:276:::0;:::o;15045:26::-;;;;:::o;19391:280::-;668:12;:10;:12::i;:::-;657:23;;:7;:5;:7::i;:::-;:23;;;649:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;19533:10:::1;:8;:10::i;:::-;19527:2;:16;;;;:::i;:::-;19518:4;19513:1;19497:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19496:26;;;;:::i;:::-;19495:49;;;;:::i;:::-;19485:6;:59;;19477:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;19652:10;:8;:10::i;:::-;19646:2;:16;;;;:::i;:::-;19636:6;:27;;;;:::i;:::-;19610:23;:53;;;;19391:280:::0;:::o;14381:38::-;;;;:::o;14708:61::-;;;;;;;;;;;;;;;;;;;;;;:::o;18471:154::-;668:12;:10;:12::i;:::-;657:23;;:7;:5;:7::i;:::-;:23;;;649:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;18612:5:::1;18574:29;:35;18604:4;18574:35;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;18471:154:::0;;:::o;10136:127::-;10210:7;10237:9;:18;10247:7;10237:18;;;;;;;;;;;;;;;;10230:25;;10136:127;;;:::o;1009:103::-;668:12;:10;:12::i;:::-;657:23;;:7;:5;:7::i;:::-;:23;;;649:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;1074:30:::1;1101:1;1074:18;:30::i;:::-;1009:103::o:0;18771:90::-;668:12;:10;:12::i;:::-;657:23;;:7;:5;:7::i;:::-;:23;;;649:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;18848:5:::1;18831:14;;:22;;;;;;;;;;;;;;;;;;18771:90::o:0;14552:30::-;;;;;;;;;;;;;:::o;14341:33::-;;;;:::o;726:87::-;772:7;799:6;;;;;;;;;;;792:13;;726:87;:::o;14589:24::-;;;;;;;;;;;;;:::o;19963:204::-;668:12;:10;:12::i;:::-;657:23;;:7;:5;:7::i;:::-;:23;;;649:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;20062:9:::1;20057:103;20081:7;;:14;;20077:1;:18;20057:103;;;20141:7;20117:9;:21;20127:7;;20135:1;20127:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;20117:21;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;20097:3;;;;;;;20057:103;;;;19963:204:::0;;;:::o;18869:107::-;668:12;:10;:12::i;:::-;657:23;;:7;:5;:7::i;:::-;:23;;;649:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;18961:7:::1;18946:12;;:22;;;;;;;;;;;;;;;;;;18869:107:::0;:::o;9807:104::-;9863:13;9896:7;9889:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9807:104;:::o;11744:360::-;11830:4;11847:16;11866:11;:25;11878:12;:10;:12::i;:::-;11866:25;;;;;;;;;;;;;;;:34;11892:7;11866:34;;;;;;;;;;;;;;;;11847:53;;11931:8;11919;:20;;11911:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12011:52;12020:12;:10;:12::i;:::-;12034:7;12054:8;12043;:19;12011:8;:52::i;:::-;12092:4;12085:11;;;11744:360;;;;:::o;11356:161::-;11435:4;11452:35;11462:12;:10;:12::i;:::-;11476:2;11480:6;11452:9;:35::i;:::-;11505:4;11498:11;;11356:161;;;;:::o;15115:24::-;;;;:::o;20175:290::-;668:12;:10;:12::i;:::-;657:23;;:7;:5;:7::i;:::-;:23;;;649:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;20292:12:::1;20274:15;:30;;;;20327:9;20315;:21;;;;20379:9;;20361:15;;:27;;;;:::i;:::-;20347:11;:41;;;;20422:2;20407:11;;:17;;20399:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;20175:290:::0;;:::o;14831:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;20473:300::-;668:12;:10;:12::i;:::-;657:23;;:7;:5;:7::i;:::-;:23;;;649:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;20595:12:::1;20576:16;:31;;;;20631:9;20618:10;:22;;;;20685:10;;20666:16;;:29;;;;:::i;:::-;20651:12;:44;;;;20730:2;20714:12;;:18;;20706:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;20473:300:::0;;:::o;17394:127::-;668:12;:10;:12::i;:::-;657:23;;:7;:5;:7::i;:::-;:23;;;649:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;17454:8:::1;;;;;;;;;;;17453:9;17445:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;17509:4;17498:8;;:15;;;;;;;;;;;;;;;;;;17394:127::o:0;15011:25::-;;;;:::o;14262:36::-;;;;;;;;;;;;;:::o;14426:35::-;;;;:::o;18633:130::-;668:12;:10;:12::i;:::-;657:23;;:7;:5;:7::i;:::-;:23;;;649:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;18750:5:::1;18722:16;:25;18739:7;18722:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;18633:130:::0;;:::o;17529:934::-;17615:18;17671:95;17791:22;;;;;;;;;;;;;;;;;17781:33;;;;;;17839:10;;;;;;;;;;;;;;;;;17829:21;;;;;;17865:13;17901:4;17646:271;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;17636:282;;;;;;17615:303;;17929:18;17985:49;18059:23;;;;;;;;;;;;;;;;;18049:34;;;;;;18106:1;17960:159;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;17950:170;;;;;;17929:191;;18131:14;18214:10;18239;18158:118;;;;;;;;;:::i;:::-;;;;;;;;;;;;;18148:129;;;;;;18131:146;;18290:14;18307:26;18317:6;18325:1;18328;18331;18307:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18290:43;;18362:7;:5;:7::i;:::-;18352:17;;:6;:17;;;18344:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;18421:4;18404:14;;:21;;;;;;;;;;;;;;;;;;18451:4;18436:12;;:19;;;;;;;;;;;;;;;;;;17604:859;;;;17529:934;;;:::o;14470:34::-;;;;;;;;;;;;;:::o;10792:151::-;10881:7;10908:11;:18;10920:5;10908:18;;;;;;;;;;;;;;;:27;10927:7;10908:27;;;;;;;;;;;;;;;;10901:34;;10792:151;;;;:::o;14939:27::-;;;;:::o;20781:234::-;20909:9;;;;;;;;;;;20887:32;;:10;:32;;;20879:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;20958:16;20940:15;;:34;;;;;;;;;;;;;;;;;;20997:10;20985:9;;:22;;;;;;;;;;;;;;;;;;20781:234;;:::o;14973:31::-;;;;:::o;821:180::-;668:12;:10;:12::i;:::-;657:23;;:7;:5;:7::i;:::-;:23;;;649:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;930:1:::1;910:22;;:8;:22;;::::0;902:52:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;965:28;984:8;965:18;:28::i;:::-;821:180:::0;:::o;25811:575::-;25906:9;;;;;;;;;;;25884:32;;:10;:32;;;25876:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;25937:12;25991:1;25964:29;;:15;:29;;;25960:419;;26030:10;26022:24;;26072:21;26022:90;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26008:104;;;;;25960:419;;;26202:1;26158:15;26151:33;;;26193:4;26151:48;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:52;26143:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;26235:14;26259:15;26252:33;;;26294:4;26252:48;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26235:65;;26322:15;26315:32;;;26348:10;26360:6;26315:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26128:251;25960:419;25865:521;25811:575;:::o;163:98::-;216:7;243:10;236:17;;163:98;:::o;10448:336::-;10567:1;10550:19;;:5;:19;;;10542:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;10642:1;10623:21;;:7;:21;;;10615:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;10722:6;10692:11;:18;10704:5;10692:18;;;;;;;;;;;;;;;:27;10711:7;10692:27;;;;;;;;;;;;;;;:36;;;;10760:7;10744:32;;10753:5;10744:32;;;10769:6;10744:32;;;;;;:::i;:::-;;;;;;;;10448:336;;;:::o;22174:2910::-;22322:1;22306:18;;:4;:18;;;22298:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;22389:1;22375:16;;:2;:16;;;22367:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;22441:9;:15;22451:4;22441:15;;;;;;;;;;;;;;;;;;;;;;;;;22440:16;22432:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;22506:9;:13;22516:2;22506:13;;;;;;;;;;;;;;;;;;;;;;;;;22505:14;22497:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;22574:1;22564:6;:11;22560:93;;22592:28;22608:4;22614:2;22618:1;22592:15;:28::i;:::-;22635:7;;22560:93;22669:14;;;;;;;;;;;22665:1085;;;22712:7;:5;:7::i;:::-;22704:15;;:4;:15;;;;:32;;;;;22729:7;:5;:7::i;:::-;22723:13;;:2;:13;;;;22704:32;:52;;;;;22754:1;22740:16;;:2;:16;;;;22704:52;:77;;;;;22774:6;22760:21;;:2;:21;;;;22704:77;:91;;;;;22786:9;;;;;;;;;;;22785:10;22704:91;22700:1039;;;22821:14;;;;;;;;;;;22816:145;;22868:16;:22;22885:4;22868:22;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;22894:16;:20;22911:2;22894:20;;;;;;;;;;;;;;;;;;;;;;;;;22868:46;22860:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;22816:145;22985:25;:31;23011:4;22985:31;;;;;;;;;;;;;;;;;;;;;;;;;:69;;;;;23021:29;:33;23051:2;23021:33;;;;;;;;;;;;;;;;;;;;;;;;;23020:34;22985:69;22981:743;;;23097:20;;23087:6;:30;;23079:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;23232:23;;23215:13;23225:2;23215:9;:13::i;:::-;23206:6;:22;;;;:::i;:::-;:49;;23198:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;22981:743;;;23326:25;:29;23352:2;23326:29;;;;;;;;;;;;;;;;;;;;;;;;;:69;;;;;23360:29;:35;23390:4;23360:35;;;;;;;;;;;;;;;;;;;;;;;;;23359:36;23326:69;23322:402;;;23438:20;;23428:6;:30;;23420:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;23322:402;;;23565:29;:33;23595:2;23565:33;;;;;;;;;;;;;;;;;;;;;;;;;23560:164;;23657:23;;23640:13;23650:2;23640:9;:13::i;:::-;23631:6;:22;;;;:::i;:::-;:49;;23623:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;23560:164;23322:402;22981:743;22700:1039;22665:1085;23762:20;23785:24;23803:4;23785:9;:24::i;:::-;23762:47;;23820:12;23851:18;;23835:12;:34;;23820:49;;23884:12;;;;;;;;;;;:23;;;;;23900:7;23884:23;:37;;;;;23912:9;;;;;;;;;;;23911:10;23884:37;:83;;;;;23938:25;:29;23964:2;23938:29;;;;;;;;;;;;;;;;;;;;;;;;;23884:83;:110;;;;;23972:16;:22;23989:4;23972:22;;;;;;;;;;;;;;;;;;;;;;;;;23971:23;23884:110;:135;;;;;23999:16;:20;24016:2;23999:20;;;;;;;;;;;;;;;;;;;;;;;;;23998:21;23884:135;23880:241;;;24048:4;24036:9;;:16;;;;;;;;;;;;;;;;;;24067:10;:8;:10::i;:::-;24104:5;24092:9;;:17;;;;;;;;;;;;;;;;;;23880:241;24133:9;24146;;;;;;;;;;;24145:10;24133:22;;24170:16;:22;24187:4;24170:22;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;24196:16;:20;24213:2;24196:20;;;;;;;;;;;;;;;;;;;;;;;;;24170:46;24166:77;;;24238:5;24231:12;;24166:77;24256:12;24287:4;24283:748;;;24312:25;:29;24338:2;24312:29;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;;24360:1;24345:12;;:16;24312:49;24308:595;;;24389:33;24418:3;24389:24;24400:12;;24389:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;24382:40;;24484:12;;24470:10;;24463:4;:17;;;;:::i;:::-;24462:34;;;;:::i;:::-;24441:17;;:55;;;;;;;:::i;:::-;;;;;;;;24570:12;;24550:16;;24543:4;:23;;;;:::i;:::-;24542:40;;;;:::i;:::-;24515:23;;:67;;;;;;;:::i;:::-;;;;;;;;24308:595;;;24621:25;:31;24647:4;24621:31;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;24670:1;24656:11;;:15;24621:50;24617:286;;;24699:32;24727:3;24699:23;24710:11;;24699:6;:10;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;24692:39;;24792:11;;24779:9;;24772:4;:16;;;;:::i;:::-;24771:32;;;;:::i;:::-;24750:17;;:53;;;;;;;:::i;:::-;;;;;;;;24876:11;;24857:15;;24850:4;:22;;;;:::i;:::-;24849:38;;;;:::i;:::-;24822:23;;:65;;;;;;;:::i;:::-;;;;;;;;24617:286;24308:595;24928:1;24921:4;:8;24917:73;;;24948:42;24964:4;24978;24985;24948:15;:42::i;:::-;24917:73;25015:4;25005:14;;;;;:::i;:::-;;;24283:748;25043:33;25059:4;25065:2;25069:6;25043:15;:33::i;:::-;22287:2797;;;;22174:2910;;;;:::o;14035:145::-;14139:5;14131;:13;;;;;;:::i;:::-;;14165:7;14155;:17;;;;;;:::i;:::-;;14035:145;;:::o;1120:191::-;1194:16;1213:6;;;;;;;;;;;1194:25;;1239:8;1230:6;;:17;;;;;;;;;;;;;;;;;;1294:8;1263:40;;1284:8;1263:40;;;;;;;;;;;;1183:128;1120:191;:::o;13268:607::-;13381:1;13365:18;;:4;:18;;;13357:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;13450:1;13436:16;;:2;:16;;;13428:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;13495:38;13516:4;13522:2;13526:6;13495:20;:38::i;:::-;13544:19;13566:9;:15;13576:4;13566:15;;;;;;;;;;;;;;;;13544:37;;13615:6;13600:11;:21;;13592:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;13726:6;13712:11;:20;13694:9;:15;13704:4;13694:15;;;;;;;;;;;;;;;:38;;;;13771:6;13754:9;:13;13764:2;13754:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;13808:2;13793:26;;13802:4;13793:26;;;13812:6;13793:26;;;;;;:::i;:::-;;;;;;;;13830:37;13850:4;13856:2;13860:6;13830:19;:37::i;:::-;13346:529;13268:607;;;:::o;21282:884::-;21321:12;21344:25;21398:17;;21372:23;;:43;;;;:::i;:::-;21344:71;;21426:20;21449:24;21467:4;21449:9;:24::i;:::-;21426:47;;21511:1;21490:17;:22;:43;;;;21532:1;21516:12;:17;21490:43;21486:69;;;21548:7;;;;;21486:69;21607:2;21586:18;;:23;;;;:::i;:::-;21571:12;:38;21567:95;;;21660:2;21639:18;;:23;;;;:::i;:::-;21624:38;;21567:95;21675:22;21700:21;21675:46;;21732:30;21749:12;21732:16;:30::i;:::-;21775:18;21796:41;21822:14;21796:21;:25;;:41;;;;:::i;:::-;21775:62;;21848:17;21868:56;21906:17;21868:33;21883:17;;21868:10;:14;;:33;;;;:::i;:::-;:37;;:56;;;;:::i;:::-;21848:76;;21959:9;;;;;;;;;;;21951:23;;21982:9;21951:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21937:59;;;;;22029:15;;;;;;;;;;;22021:29;;22059:21;22021:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22007:79;;;;;22125:1;22099:23;:27;;;;22157:1;22137:17;:21;;;;21310:856;;;;;;21282:884;:::o;1342:98::-;1400:7;1431:1;1427;:5;;;;:::i;:::-;1420:12;;1342:98;;;;:::o;1726:::-;1784:7;1815:1;1811;:5;;;;:::i;:::-;1804:12;;1726:98;;;;:::o;13115:145::-;;;;:::o;13883:144::-;;;;:::o;25244:559::-;25365:21;25403:1;25389:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25365:40;;25434:4;25416;25421:1;25416:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;25460:10;;;;;;;;;;;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25450:4;25455:1;25450:7;;;;;;;;:::i;:::-;;;;;;;:27;;;;;;;;;;;25490:52;25507:4;25522:10;;;;;;;;;;;25535:6;25490:8;:52::i;:::-;25581:10;;;;;;;;;;;:61;;;25657:6;25678:1;25722:4;25749;25769:15;25581:214;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25294:509;25244:559;:::o;2371:98::-;2429:7;2460:1;2456;:5;;;;:::i;:::-;2449:12;;2371:98;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1242:75::-;1275:6;1308:2;1302:9;1292:19;;1242:75;:::o;1323:117::-;1432:1;1429;1422:12;1446:117;1555:1;1552;1545:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:329::-;3750:6;3799:2;3787:9;3778:7;3774:23;3770:32;3767:119;;;3805:79;;:::i;:::-;3767:119;3925:1;3950:53;3995:7;3986:6;3975:9;3971:22;3950:53;:::i;:::-;3940:63;;3896:117;3691:329;;;;:::o;4026:619::-;4103:6;4111;4119;4168:2;4156:9;4147:7;4143:23;4139:32;4136:119;;;4174:79;;:::i;:::-;4136:119;4294:1;4319:53;4364:7;4355:6;4344:9;4340:22;4319:53;:::i;:::-;4309:63;;4265:117;4421:2;4447:53;4492:7;4483:6;4472:9;4468:22;4447:53;:::i;:::-;4437:63;;4392:118;4549:2;4575:53;4620:7;4611:6;4600:9;4596:22;4575:53;:::i;:::-;4565:63;;4520:118;4026:619;;;;;:::o;4651:118::-;4738:24;4756:5;4738:24;:::i;:::-;4733:3;4726:37;4651:118;;:::o;4775:222::-;4868:4;4906:2;4895:9;4891:18;4883:26;;4919:71;4987:1;4976:9;4972:17;4963:6;4919:71;:::i;:::-;4775:222;;;;:::o;5003:329::-;5062:6;5111:2;5099:9;5090:7;5086:23;5082:32;5079:119;;;5117:79;;:::i;:::-;5079:119;5237:1;5262:53;5307:7;5298:6;5287:9;5283:22;5262:53;:::i;:::-;5252:63;;5208:117;5003:329;;;;:::o;5338:86::-;5373:7;5413:4;5406:5;5402:16;5391:27;;5338:86;;;:::o;5430:112::-;5513:22;5529:5;5513:22;:::i;:::-;5508:3;5501:35;5430:112;;:::o;5548:214::-;5637:4;5675:2;5664:9;5660:18;5652:26;;5688:67;5752:1;5741:9;5737:17;5728:6;5688:67;:::i;:::-;5548:214;;;;:::o;5768:116::-;5838:21;5853:5;5838:21;:::i;:::-;5831:5;5828:32;5818:60;;5874:1;5871;5864:12;5818:60;5768:116;:::o;5890:133::-;5933:5;5971:6;5958:20;5949:29;;5987:30;6011:5;5987:30;:::i;:::-;5890:133;;;;:::o;6029:468::-;6094:6;6102;6151:2;6139:9;6130:7;6126:23;6122:32;6119:119;;;6157:79;;:::i;:::-;6119:119;6277:1;6302:53;6347:7;6338:6;6327:9;6323:22;6302:53;:::i;:::-;6292:63;;6248:117;6404:2;6430:50;6472:7;6463:6;6452:9;6448:22;6430:50;:::i;:::-;6420:60;;6375:115;6029:468;;;;;:::o;6503:117::-;6612:1;6609;6602:12;6626:117;6735:1;6732;6725:12;6749:180;6797:77;6794:1;6787:88;6894:4;6891:1;6884:15;6918:4;6915:1;6908:15;6935:281;7018:27;7040:4;7018:27;:::i;:::-;7010:6;7006:40;7148:6;7136:10;7133:22;7112:18;7100:10;7097:34;7094:62;7091:88;;;7159:18;;:::i;:::-;7091:88;7199:10;7195:2;7188:22;6978:238;6935:281;;:::o;7222:129::-;7256:6;7283:20;;:::i;:::-;7273:30;;7312:33;7340:4;7332:6;7312:33;:::i;:::-;7222:129;;;:::o;7357:308::-;7419:4;7509:18;7501:6;7498:30;7495:56;;;7531:18;;:::i;:::-;7495:56;7569:29;7591:6;7569:29;:::i;:::-;7561:37;;7653:4;7647;7643:15;7635:23;;7357:308;;;:::o;7671:148::-;7769:6;7764:3;7759;7746:30;7810:1;7801:6;7796:3;7792:16;7785:27;7671:148;;;:::o;7825:425::-;7903:5;7928:66;7944:49;7986:6;7944:49;:::i;:::-;7928:66;:::i;:::-;7919:75;;8017:6;8010:5;8003:21;8055:4;8048:5;8044:16;8093:3;8084:6;8079:3;8075:16;8072:25;8069:112;;;8100:79;;:::i;:::-;8069:112;8190:54;8237:6;8232:3;8227;8190:54;:::i;:::-;7909:341;7825:425;;;;;:::o;8270:340::-;8326:5;8375:3;8368:4;8360:6;8356:17;8352:27;8342:122;;8383:79;;:::i;:::-;8342:122;8500:6;8487:20;8525:79;8600:3;8592:6;8585:4;8577:6;8573:17;8525:79;:::i;:::-;8516:88;;8332:278;8270:340;;;;:::o;8616:834::-;8704:6;8712;8761:2;8749:9;8740:7;8736:23;8732:32;8729:119;;;8767:79;;:::i;:::-;8729:119;8915:1;8904:9;8900:17;8887:31;8945:18;8937:6;8934:30;8931:117;;;8967:79;;:::i;:::-;8931:117;9072:63;9127:7;9118:6;9107:9;9103:22;9072:63;:::i;:::-;9062:73;;8858:287;9212:2;9201:9;9197:18;9184:32;9243:18;9235:6;9232:30;9229:117;;;9265:79;;:::i;:::-;9229:117;9370:63;9425:7;9416:6;9405:9;9401:22;9370:63;:::i;:::-;9360:73;;9155:288;8616:834;;;;;:::o;9456:117::-;9565:1;9562;9555:12;9579:117;9688:1;9685;9678:12;9719:568;9792:8;9802:6;9852:3;9845:4;9837:6;9833:17;9829:27;9819:122;;9860:79;;:::i;:::-;9819:122;9973:6;9960:20;9950:30;;10003:18;9995:6;9992:30;9989:117;;;10025:79;;:::i;:::-;9989:117;10139:4;10131:6;10127:17;10115:29;;10193:3;10185:4;10177:6;10173:17;10163:8;10159:32;10156:41;10153:128;;;10200:79;;:::i;:::-;10153:128;9719:568;;;;;:::o;10293:698::-;10385:6;10393;10401;10450:2;10438:9;10429:7;10425:23;10421:32;10418:119;;;10456:79;;:::i;:::-;10418:119;10604:1;10593:9;10589:17;10576:31;10634:18;10626:6;10623:30;10620:117;;;10656:79;;:::i;:::-;10620:117;10769:80;10841:7;10832:6;10821:9;10817:22;10769:80;:::i;:::-;10751:98;;;;10547:312;10898:2;10924:50;10966:7;10957:6;10946:9;10942:22;10924:50;:::i;:::-;10914:60;;10869:115;10293:698;;;;;:::o;10997:323::-;11053:6;11102:2;11090:9;11081:7;11077:23;11073:32;11070:119;;;11108:79;;:::i;:::-;11070:119;11228:1;11253:50;11295:7;11286:6;11275:9;11271:22;11253:50;:::i;:::-;11243:60;;11199:114;10997:323;;;;:::o;11326:474::-;11394:6;11402;11451:2;11439:9;11430:7;11426:23;11422:32;11419:119;;;11457:79;;:::i;:::-;11419:119;11577:1;11602:53;11647:7;11638:6;11627:9;11623:22;11602:53;:::i;:::-;11592:63;;11548:117;11704:2;11730:53;11775:7;11766:6;11755:9;11751:22;11730:53;:::i;:::-;11720:63;;11675:118;11326:474;;;;;:::o;11806:60::-;11834:3;11855:5;11848:12;;11806:60;;;:::o;11872:142::-;11922:9;11955:53;11973:34;11982:24;12000:5;11982:24;:::i;:::-;11973:34;:::i;:::-;11955:53;:::i;:::-;11942:66;;11872:142;;;:::o;12020:126::-;12070:9;12103:37;12134:5;12103:37;:::i;:::-;12090:50;;12020:126;;;:::o;12152:152::-;12228:9;12261:37;12292:5;12261:37;:::i;:::-;12248:50;;12152:152;;;:::o;12310:183::-;12423:63;12480:5;12423:63;:::i;:::-;12418:3;12411:76;12310:183;;:::o;12499:274::-;12618:4;12656:2;12645:9;12641:18;12633:26;;12669:97;12763:1;12752:9;12748:17;12739:6;12669:97;:::i;:::-;12499:274;;;;:::o;12779:118::-;12850:22;12866:5;12850:22;:::i;:::-;12843:5;12840:33;12830:61;;12887:1;12884;12877:12;12830:61;12779:118;:::o;12903:135::-;12947:5;12985:6;12972:20;12963:29;;13001:31;13026:5;13001:31;:::i;:::-;12903:135;;;;:::o;13044:77::-;13081:7;13110:5;13099:16;;13044:77;;;:::o;13127:122::-;13200:24;13218:5;13200:24;:::i;:::-;13193:5;13190:35;13180:63;;13239:1;13236;13229:12;13180:63;13127:122;:::o;13255:139::-;13301:5;13339:6;13326:20;13317:29;;13355:33;13382:5;13355:33;:::i;:::-;13255:139;;;;:::o;13400:615::-;13475:6;13483;13491;13540:2;13528:9;13519:7;13515:23;13511:32;13508:119;;;13546:79;;:::i;:::-;13508:119;13666:1;13691:51;13734:7;13725:6;13714:9;13710:22;13691:51;:::i;:::-;13681:61;;13637:115;13791:2;13817:53;13862:7;13853:6;13842:9;13838:22;13817:53;:::i;:::-;13807:63;;13762:118;13919:2;13945:53;13990:7;13981:6;13970:9;13966:22;13945:53;:::i;:::-;13935:63;;13890:118;13400:615;;;;;:::o;14021:474::-;14089:6;14097;14146:2;14134:9;14125:7;14121:23;14117:32;14114:119;;;14152:79;;:::i;:::-;14114:119;14272:1;14297:53;14342:7;14333:6;14322:9;14318:22;14297:53;:::i;:::-;14287:63;;14243:117;14399:2;14425:53;14470:7;14461:6;14450:9;14446:22;14425:53;:::i;:::-;14415:63;;14370:118;14021:474;;;;;:::o;14501:180::-;14549:77;14546:1;14539:88;14646:4;14643:1;14636:15;14670:4;14667:1;14660:15;14687:320;14731:6;14768:1;14762:4;14758:12;14748:22;;14815:1;14809:4;14805:12;14836:18;14826:81;;14892:4;14884:6;14880:17;14870:27;;14826:81;14954:2;14946:6;14943:14;14923:18;14920:38;14917:84;;14973:18;;:::i;:::-;14917:84;14738:269;14687:320;;;:::o;15013:163::-;15153:15;15149:1;15141:6;15137:14;15130:39;15013:163;:::o;15182:366::-;15324:3;15345:67;15409:2;15404:3;15345:67;:::i;:::-;15338:74;;15421:93;15510:3;15421:93;:::i;:::-;15539:2;15534:3;15530:12;15523:19;;15182:366;;;:::o;15554:419::-;15720:4;15758:2;15747:9;15743:18;15735:26;;15807:9;15801:4;15797:20;15793:1;15782:9;15778:17;15771:47;15835:131;15961:4;15835:131;:::i;:::-;15827:139;;15554:419;;;:::o;15979:179::-;16119:31;16115:1;16107:6;16103:14;16096:55;15979:179;:::o;16164:366::-;16306:3;16327:67;16391:2;16386:3;16327:67;:::i;:::-;16320:74;;16403:93;16492:3;16403:93;:::i;:::-;16521:2;16516:3;16512:12;16505:19;;16164:366;;;:::o;16536:419::-;16702:4;16740:2;16729:9;16725:18;16717:26;;16789:9;16783:4;16779:20;16775:1;16764:9;16760:17;16753:47;16817:131;16943:4;16817:131;:::i;:::-;16809:139;;16536:419;;;:::o;16961:155::-;17101:7;17097:1;17089:6;17085:14;17078:31;16961:155;:::o;17122:365::-;17264:3;17285:66;17349:1;17344:3;17285:66;:::i;:::-;17278:73;;17360:93;17449:3;17360:93;:::i;:::-;17478:2;17473:3;17469:12;17462:19;;17122:365;;;:::o;17493:419::-;17659:4;17697:2;17686:9;17682:18;17674:26;;17746:9;17740:4;17736:20;17732:1;17721:9;17717:17;17710:47;17774:131;17900:4;17774:131;:::i;:::-;17766:139;;17493:419;;;:::o;17918:180::-;17966:77;17963:1;17956:88;18063:4;18060:1;18053:15;18087:4;18084:1;18077:15;18104:410;18144:7;18167:20;18185:1;18167:20;:::i;:::-;18162:25;;18201:20;18219:1;18201:20;:::i;:::-;18196:25;;18256:1;18253;18249:9;18278:30;18296:11;18278:30;:::i;:::-;18267:41;;18457:1;18448:7;18444:15;18441:1;18438:22;18418:1;18411:9;18391:83;18368:139;;18487:18;;:::i;:::-;18368:139;18152:362;18104:410;;;;:::o;18520:180::-;18568:77;18565:1;18558:88;18665:4;18662:1;18655:15;18689:4;18686:1;18679:15;18706:185;18746:1;18763:20;18781:1;18763:20;:::i;:::-;18758:25;;18797:20;18815:1;18797:20;:::i;:::-;18792:25;;18836:1;18826:35;;18841:18;;:::i;:::-;18826:35;18883:1;18880;18876:9;18871:14;;18706:185;;;;:::o;18897:240::-;19037:34;19033:1;19025:6;19021:14;19014:58;19106:23;19101:2;19093:6;19089:15;19082:48;18897:240;:::o;19143:366::-;19285:3;19306:67;19370:2;19365:3;19306:67;:::i;:::-;19299:74;;19382:93;19471:3;19382:93;:::i;:::-;19500:2;19495:3;19491:12;19484:19;;19143:366;;;:::o;19515:419::-;19681:4;19719:2;19708:9;19704:18;19696:26;;19768:9;19762:4;19758:20;19754:1;19743:9;19739:17;19732:47;19796:131;19922:4;19796:131;:::i;:::-;19788:139;;19515:419;;;:::o;19940:236::-;20080:34;20076:1;20068:6;20064:14;20057:58;20149:19;20144:2;20136:6;20132:15;20125:44;19940:236;:::o;20182:366::-;20324:3;20345:67;20409:2;20404:3;20345:67;:::i;:::-;20338:74;;20421:93;20510:3;20421:93;:::i;:::-;20539:2;20534:3;20530:12;20523:19;;20182:366;;;:::o;20554:419::-;20720:4;20758:2;20747:9;20743:18;20735:26;;20807:9;20801:4;20797:20;20793:1;20782:9;20778:17;20771:47;20835:131;20961:4;20835:131;:::i;:::-;20827:139;;20554:419;;;:::o;20979:191::-;21019:3;21038:20;21056:1;21038:20;:::i;:::-;21033:25;;21072:20;21090:1;21072:20;:::i;:::-;21067:25;;21115:1;21112;21108:9;21101:16;;21136:3;21133:1;21130:10;21127:36;;;21143:18;;:::i;:::-;21127:36;20979:191;;;;:::o;21176:244::-;21316:34;21312:1;21304:6;21300:14;21293:58;21385:27;21380:2;21372:6;21368:15;21361:52;21176:244;:::o;21426:366::-;21568:3;21589:67;21653:2;21648:3;21589:67;:::i;:::-;21582:74;;21665:93;21754:3;21665:93;:::i;:::-;21783:2;21778:3;21774:12;21767:19;;21426:366;;;:::o;21798:419::-;21964:4;22002:2;21991:9;21987:18;21979:26;;22051:9;22045:4;22041:20;22037:1;22026:9;22022:17;22015:47;22079:131;22205:4;22079:131;:::i;:::-;22071:139;;21798:419;;;:::o;22223:172::-;22363:24;22359:1;22351:6;22347:14;22340:48;22223:172;:::o;22401:366::-;22543:3;22564:67;22628:2;22623:3;22564:67;:::i;:::-;22557:74;;22640:93;22729:3;22640:93;:::i;:::-;22758:2;22753:3;22749:12;22742:19;;22401:366;;;:::o;22773:419::-;22939:4;22977:2;22966:9;22962:18;22954:26;;23026:9;23020:4;23016:20;23012:1;23001:9;22997:17;22990:47;23054:131;23180:4;23054:131;:::i;:::-;23046:139;;22773:419;;;:::o;23198:102::-;23240:8;23287:5;23284:1;23280:13;23259:34;;23198:102;;;:::o;23306:848::-;23367:5;23374:4;23398:6;23389:15;;23422:5;23413:14;;23436:712;23457:1;23447:8;23444:15;23436:712;;;23552:4;23547:3;23543:14;23537:4;23534:24;23531:50;;;23561:18;;:::i;:::-;23531:50;23611:1;23601:8;23597:16;23594:451;;;24026:4;24019:5;24015:16;24006:25;;23594:451;24076:4;24070;24066:15;24058:23;;24106:32;24129:8;24106:32;:::i;:::-;24094:44;;23436:712;;;23306:848;;;;;;;:::o;24160:1073::-;24214:5;24405:8;24395:40;;24426:1;24417:10;;24428:5;;24395:40;24454:4;24444:36;;24471:1;24462:10;;24473:5;;24444:36;24540:4;24588:1;24583:27;;;;24624:1;24619:191;;;;24533:277;;24583:27;24601:1;24592:10;;24603:5;;;24619:191;24664:3;24654:8;24651:17;24648:43;;;24671:18;;:::i;:::-;24648:43;24720:8;24717:1;24713:16;24704:25;;24755:3;24748:5;24745:14;24742:40;;;24762:18;;:::i;:::-;24742:40;24795:5;;;24533:277;;24919:2;24909:8;24906:16;24900:3;24894:4;24891:13;24887:36;24869:2;24859:8;24856:16;24851:2;24845:4;24842:12;24838:35;24822:111;24819:246;;;24975:8;24969:4;24965:19;24956:28;;25010:3;25003:5;25000:14;24997:40;;;25017:18;;:::i;:::-;24997:40;25050:5;;24819:246;25090:42;25128:3;25118:8;25112:4;25109:1;25090:42;:::i;:::-;25075:57;;;;25164:4;25159:3;25155:14;25148:5;25145:25;25142:51;;;25173:18;;:::i;:::-;25142:51;25222:4;25215:5;25211:16;25202:25;;24160:1073;;;;;;:::o;25239:281::-;25297:5;25321:23;25339:4;25321:23;:::i;:::-;25313:31;;25365:25;25381:8;25365:25;:::i;:::-;25353:37;;25409:104;25446:66;25436:8;25430:4;25409:104;:::i;:::-;25400:113;;25239:281;;;;:::o;25526:234::-;25666:34;25662:1;25654:6;25650:14;25643:58;25735:17;25730:2;25722:6;25718:15;25711:42;25526:234;:::o;25766:366::-;25908:3;25929:67;25993:2;25988:3;25929:67;:::i;:::-;25922:74;;26005:93;26094:3;26005:93;:::i;:::-;26123:2;26118:3;26114:12;26107:19;;25766:366;;;:::o;26138:419::-;26304:4;26342:2;26331:9;26327:18;26319:26;;26391:9;26385:4;26381:20;26377:1;26366:9;26362:17;26355:47;26419:131;26545:4;26419:131;:::i;:::-;26411:139;;26138:419;;;:::o;26563:237::-;26703:34;26699:1;26691:6;26687:14;26680:58;26772:20;26767:2;26759:6;26755:15;26748:45;26563:237;:::o;26806:366::-;26948:3;26969:67;27033:2;27028:3;26969:67;:::i;:::-;26962:74;;27045:93;27134:3;27045:93;:::i;:::-;27163:2;27158:3;27154:12;27147:19;;26806:366;;;:::o;27178:419::-;27344:4;27382:2;27371:9;27367:18;27359:26;;27431:9;27425:4;27421:20;27417:1;27406:9;27402:17;27395:47;27459:131;27585:4;27459:131;:::i;:::-;27451:139;;27178:419;;;:::o;27603:180::-;27651:77;27648:1;27641:88;27748:4;27745:1;27738:15;27772:4;27769:1;27762:15;27789:181;27929:33;27925:1;27917:6;27913:14;27906:57;27789:181;:::o;27976:366::-;28118:3;28139:67;28203:2;28198:3;28139:67;:::i;:::-;28132:74;;28215:93;28304:3;28215:93;:::i;:::-;28333:2;28328:3;28324:12;28317:19;;27976:366;;;:::o;28348:419::-;28514:4;28552:2;28541:9;28537:18;28529:26;;28601:9;28595:4;28591:20;28587:1;28576:9;28572:17;28565:47;28629:131;28755:4;28629:131;:::i;:::-;28621:139;;28348:419;;;:::o;28773:178::-;28913:30;28909:1;28901:6;28897:14;28890:54;28773:178;:::o;28957:366::-;29099:3;29120:67;29184:2;29179:3;29120:67;:::i;:::-;29113:74;;29196:93;29285:3;29196:93;:::i;:::-;29314:2;29309:3;29305:12;29298:19;;28957:366;;;:::o;29329:419::-;29495:4;29533:2;29522:9;29518:18;29510:26;;29582:9;29576:4;29572:20;29568:1;29557:9;29553:17;29546:47;29610:131;29736:4;29610:131;:::i;:::-;29602:139;;29329:419;;;:::o;29754:170::-;29894:22;29890:1;29882:6;29878:14;29871:46;29754:170;:::o;29930:366::-;30072:3;30093:67;30157:2;30152:3;30093:67;:::i;:::-;30086:74;;30169:93;30258:3;30169:93;:::i;:::-;30287:2;30282:3;30278:12;30271:19;;29930:366;;;:::o;30302:419::-;30468:4;30506:2;30495:9;30491:18;30483:26;;30555:9;30549:4;30545:20;30541:1;30530:9;30526:17;30519:47;30583:131;30709:4;30583:131;:::i;:::-;30575:139;;30302:419;;;:::o;30727:118::-;30814:24;30832:5;30814:24;:::i;:::-;30809:3;30802:37;30727:118;;:::o;30851:664::-;31056:4;31094:3;31083:9;31079:19;31071:27;;31108:71;31176:1;31165:9;31161:17;31152:6;31108:71;:::i;:::-;31189:72;31257:2;31246:9;31242:18;31233:6;31189:72;:::i;:::-;31271;31339:2;31328:9;31324:18;31315:6;31271:72;:::i;:::-;31353;31421:2;31410:9;31406:18;31397:6;31353:72;:::i;:::-;31435:73;31503:3;31492:9;31488:19;31479:6;31435:73;:::i;:::-;30851:664;;;;;;;;:::o;31521:442::-;31670:4;31708:2;31697:9;31693:18;31685:26;;31721:71;31789:1;31778:9;31774:17;31765:6;31721:71;:::i;:::-;31802:72;31870:2;31859:9;31855:18;31846:6;31802:72;:::i;:::-;31884;31952:2;31941:9;31937:18;31928:6;31884:72;:::i;:::-;31521:442;;;;;;:::o;31969:148::-;32071:11;32108:3;32093:18;;31969:148;;;;:::o;32123:214::-;32263:66;32259:1;32251:6;32247:14;32240:90;32123:214;:::o;32343:400::-;32503:3;32524:84;32606:1;32601:3;32524:84;:::i;:::-;32517:91;;32617:93;32706:3;32617:93;:::i;:::-;32735:1;32730:3;32726:11;32719:18;;32343:400;;;:::o;32749:79::-;32788:7;32817:5;32806:16;;32749:79;;;:::o;32834:157::-;32939:45;32959:24;32977:5;32959:24;:::i;:::-;32939:45;:::i;:::-;32934:3;32927:58;32834:157;;:::o;32997:663::-;33238:3;33260:148;33404:3;33260:148;:::i;:::-;33253:155;;33418:75;33489:3;33480:6;33418:75;:::i;:::-;33518:2;33513:3;33509:12;33502:19;;33531:75;33602:3;33593:6;33531:75;:::i;:::-;33631:2;33626:3;33622:12;33615:19;;33651:3;33644:10;;32997:663;;;;;:::o;33666:545::-;33839:4;33877:3;33866:9;33862:19;33854:27;;33891:71;33959:1;33948:9;33944:17;33935:6;33891:71;:::i;:::-;33972:68;34036:2;34025:9;34021:18;34012:6;33972:68;:::i;:::-;34050:72;34118:2;34107:9;34103:18;34094:6;34050:72;:::i;:::-;34132;34200:2;34189:9;34185:18;34176:6;34132:72;:::i;:::-;33666:545;;;;;;;:::o;34217:167::-;34357:19;34353:1;34345:6;34341:14;34334:43;34217:167;:::o;34390:366::-;34532:3;34553:67;34617:2;34612:3;34553:67;:::i;:::-;34546:74;;34629:93;34718:3;34629:93;:::i;:::-;34747:2;34742:3;34738:12;34731:19;;34390:366;;;:::o;34762:419::-;34928:4;34966:2;34955:9;34951:18;34943:26;;35015:9;35009:4;35005:20;35001:1;34990:9;34986:17;34979:47;35043:131;35169:4;35043:131;:::i;:::-;35035:139;;34762:419;;;:::o;35187:167::-;35327:19;35323:1;35315:6;35311:14;35304:43;35187:167;:::o;35360:366::-;35502:3;35523:67;35587:2;35582:3;35523:67;:::i;:::-;35516:74;;35599:93;35688:3;35599:93;:::i;:::-;35717:2;35712:3;35708:12;35701:19;;35360:366;;;:::o;35732:419::-;35898:4;35936:2;35925:9;35921:18;35913:26;;35985:9;35979:4;35975:20;35971:1;35960:9;35956:17;35949:47;36013:131;36139:4;36013:131;:::i;:::-;36005:139;;35732:419;;;:::o;36157:147::-;36258:11;36295:3;36280:18;;36157:147;;;;:::o;36310:114::-;;:::o;36430:398::-;36589:3;36610:83;36691:1;36686:3;36610:83;:::i;:::-;36603:90;;36702:93;36791:3;36702:93;:::i;:::-;36820:1;36815:3;36811:11;36804:18;;36430:398;;;:::o;36834:379::-;37018:3;37040:147;37183:3;37040:147;:::i;:::-;37033:154;;37204:3;37197:10;;36834:379;;;:::o;37219:143::-;37276:5;37307:6;37301:13;37292:22;;37323:33;37350:5;37323:33;:::i;:::-;37219:143;;;;:::o;37368:351::-;37438:6;37487:2;37475:9;37466:7;37462:23;37458:32;37455:119;;;37493:79;;:::i;:::-;37455:119;37613:1;37638:64;37694:7;37685:6;37674:9;37670:22;37638:64;:::i;:::-;37628:74;;37584:128;37368:351;;;;:::o;37725:162::-;37865:14;37861:1;37853:6;37849:14;37842:38;37725:162;:::o;37893:366::-;38035:3;38056:67;38120:2;38115:3;38056:67;:::i;:::-;38049:74;;38132:93;38221:3;38132:93;:::i;:::-;38250:2;38245:3;38241:12;38234:19;;37893:366;;;:::o;38265:419::-;38431:4;38469:2;38458:9;38454:18;38446:26;;38518:9;38512:4;38508:20;38504:1;38493:9;38489:17;38482:47;38546:131;38672:4;38546:131;:::i;:::-;38538:139;;38265:419;;;:::o;38690:332::-;38811:4;38849:2;38838:9;38834:18;38826:26;;38862:71;38930:1;38919:9;38915:17;38906:6;38862:71;:::i;:::-;38943:72;39011:2;39000:9;38996:18;38987:6;38943:72;:::i;:::-;38690:332;;;;;:::o;39028:137::-;39082:5;39113:6;39107:13;39098:22;;39129:30;39153:5;39129:30;:::i;:::-;39028:137;;;;:::o;39171:345::-;39238:6;39287:2;39275:9;39266:7;39262:23;39258:32;39255:119;;;39293:79;;:::i;:::-;39255:119;39413:1;39438:61;39491:7;39482:6;39471:9;39467:22;39438:61;:::i;:::-;39428:71;;39384:125;39171:345;;;;:::o;39522:180::-;39662:32;39658:1;39650:6;39646:14;39639:56;39522:180;:::o;39708:366::-;39850:3;39871:67;39935:2;39930:3;39871:67;:::i;:::-;39864:74;;39947:93;40036:3;39947:93;:::i;:::-;40065:2;40060:3;40056:12;40049:19;;39708:366;;;:::o;40080:419::-;40246:4;40284:2;40273:9;40269:18;40261:26;;40333:9;40327:4;40323:20;40319:1;40308:9;40304:17;40297:47;40361:131;40487:4;40361:131;:::i;:::-;40353:139;;40080:419;;;:::o;40505:182::-;40645:34;40641:1;40633:6;40629:14;40622:58;40505:182;:::o;40693:366::-;40835:3;40856:67;40920:2;40915:3;40856:67;:::i;:::-;40849:74;;40932:93;41021:3;40932:93;:::i;:::-;41050:2;41045:3;41041:12;41034:19;;40693:366;;;:::o;41065:419::-;41231:4;41269:2;41258:9;41254:18;41246:26;;41318:9;41312:4;41308:20;41304:1;41293:9;41289:17;41282:47;41346:131;41472:4;41346:131;:::i;:::-;41338:139;;41065:419;;;:::o;41490:177::-;41630:29;41626:1;41618:6;41614:14;41607:53;41490:177;:::o;41673:366::-;41815:3;41836:67;41900:2;41895:3;41836:67;:::i;:::-;41829:74;;41912:93;42001:3;41912:93;:::i;:::-;42030:2;42025:3;42021:12;42014:19;;41673:366;;;:::o;42045:419::-;42211:4;42249:2;42238:9;42234:18;42226:26;;42298:9;42292:4;42288:20;42284:1;42273:9;42269:17;42262:47;42326:131;42452:4;42326:131;:::i;:::-;42318:139;;42045:419;;;:::o;42470:175::-;42610:27;42606:1;42598:6;42594:14;42587:51;42470:175;:::o;42651:366::-;42793:3;42814:67;42878:2;42873:3;42814:67;:::i;:::-;42807:74;;42890:93;42979:3;42890:93;:::i;:::-;43008:2;43003:3;42999:12;42992:19;;42651:366;;;:::o;43023:419::-;43189:4;43227:2;43216:9;43212:18;43204:26;;43276:9;43270:4;43266:20;43262:1;43251:9;43247:17;43240:47;43304:131;43430:4;43304:131;:::i;:::-;43296:139;;43023:419;;;:::o;43448:175::-;43588:27;43584:1;43576:6;43572:14;43565:51;43448:175;:::o;43629:366::-;43771:3;43792:67;43856:2;43851:3;43792:67;:::i;:::-;43785:74;;43868:93;43957:3;43868:93;:::i;:::-;43986:2;43981:3;43977:12;43970:19;;43629:366;;;:::o;44001:419::-;44167:4;44205:2;44194:9;44190:18;44182:26;;44254:9;44248:4;44244:20;44240:1;44229:9;44225:17;44218:47;44282:131;44408:4;44282:131;:::i;:::-;44274:139;;44001:419;;;:::o;44426:173::-;44566:25;44562:1;44554:6;44550:14;44543:49;44426:173;:::o;44605:366::-;44747:3;44768:67;44832:2;44827:3;44768:67;:::i;:::-;44761:74;;44844:93;44933:3;44844:93;:::i;:::-;44962:2;44957:3;44953:12;44946:19;;44605:366;;;:::o;44977:419::-;45143:4;45181:2;45170:9;45166:18;45158:26;;45230:9;45224:4;45220:20;45216:1;45205:9;45201:17;45194:47;45258:131;45384:4;45258:131;:::i;:::-;45250:139;;44977:419;;;:::o;45402:172::-;45542:24;45538:1;45530:6;45526:14;45519:48;45402:172;:::o;45580:366::-;45722:3;45743:67;45807:2;45802:3;45743:67;:::i;:::-;45736:74;;45819:93;45908:3;45819:93;:::i;:::-;45937:2;45932:3;45928:12;45921:19;;45580:366;;;:::o;45952:419::-;46118:4;46156:2;46145:9;46141:18;46133:26;;46205:9;46199:4;46195:20;46191:1;46180:9;46176:17;46169:47;46233:131;46359:4;46233:131;:::i;:::-;46225:139;;45952:419;;;:::o;46377:240::-;46517:34;46513:1;46505:6;46501:14;46494:58;46586:23;46581:2;46573:6;46569:15;46562:48;46377:240;:::o;46623:366::-;46765:3;46786:67;46850:2;46845:3;46786:67;:::i;:::-;46779:74;;46862:93;46951:3;46862:93;:::i;:::-;46980:2;46975:3;46971:12;46964:19;;46623:366;;;:::o;46995:419::-;47161:4;47199:2;47188:9;47184:18;47176:26;;47248:9;47242:4;47238:20;47234:1;47223:9;47219:17;47212:47;47276:131;47402:4;47276:131;:::i;:::-;47268:139;;46995:419;;;:::o;47420:169::-;47560:21;47556:1;47548:6;47544:14;47537:45;47420:169;:::o;47595:366::-;47737:3;47758:67;47822:2;47817:3;47758:67;:::i;:::-;47751:74;;47834:93;47923:3;47834:93;:::i;:::-;47952:2;47947:3;47943:12;47936:19;;47595:366;;;:::o;47967:419::-;48133:4;48171:2;48160:9;48156:18;48148:26;;48220:9;48214:4;48210:20;48206:1;48195:9;48191:17;48184:47;48248:131;48374:4;48248:131;:::i;:::-;48240:139;;47967:419;;;:::o;48392:241::-;48532:34;48528:1;48520:6;48516:14;48509:58;48601:24;48596:2;48588:6;48584:15;48577:49;48392:241;:::o;48639:366::-;48781:3;48802:67;48866:2;48861:3;48802:67;:::i;:::-;48795:74;;48878:93;48967:3;48878:93;:::i;:::-;48996:2;48991:3;48987:12;48980:19;;48639:366;;;:::o;49011:419::-;49177:4;49215:2;49204:9;49200:18;49192:26;;49264:9;49258:4;49254:20;49250:1;49239:9;49235:17;49228:47;49292:131;49418:4;49292:131;:::i;:::-;49284:139;;49011:419;;;:::o;49436:194::-;49476:4;49496:20;49514:1;49496:20;:::i;:::-;49491:25;;49530:20;49548:1;49530:20;:::i;:::-;49525:25;;49574:1;49571;49567:9;49559:17;;49598:1;49592:4;49589:11;49586:37;;;49603:18;;:::i;:::-;49586:37;49436:194;;;;:::o;49636:141::-;49685:4;49708:3;49700:11;;49731:3;49728:1;49721:14;49765:4;49762:1;49752:18;49744:26;;49636:141;;;:::o;49783:93::-;49820:6;49867:2;49862;49855:5;49851:14;49847:23;49837:33;;49783:93;;;:::o;49882:107::-;49926:8;49976:5;49970:4;49966:16;49945:37;;49882:107;;;;:::o;49995:393::-;50064:6;50114:1;50102:10;50098:18;50137:97;50167:66;50156:9;50137:97;:::i;:::-;50255:39;50285:8;50274:9;50255:39;:::i;:::-;50243:51;;50327:4;50323:9;50316:5;50312:21;50303:30;;50376:4;50366:8;50362:19;50355:5;50352:30;50342:40;;50071:317;;49995:393;;;;;:::o;50394:142::-;50444:9;50477:53;50495:34;50504:24;50522:5;50504:24;:::i;:::-;50495:34;:::i;:::-;50477:53;:::i;:::-;50464:66;;50394:142;;;:::o;50542:75::-;50585:3;50606:5;50599:12;;50542:75;;;:::o;50623:269::-;50733:39;50764:7;50733:39;:::i;:::-;50794:91;50843:41;50867:16;50843:41;:::i;:::-;50835:6;50828:4;50822:11;50794:91;:::i;:::-;50788:4;50781:105;50699:193;50623:269;;;:::o;50898:73::-;50943:3;50898:73;:::o;50977:189::-;51054:32;;:::i;:::-;51095:65;51153:6;51145;51139:4;51095:65;:::i;:::-;51030:136;50977:189;;:::o;51172:186::-;51232:120;51249:3;51242:5;51239:14;51232:120;;;51303:39;51340:1;51333:5;51303:39;:::i;:::-;51276:1;51269:5;51265:13;51256:22;;51232:120;;;51172:186;;:::o;51364:543::-;51465:2;51460:3;51457:11;51454:446;;;51499:38;51531:5;51499:38;:::i;:::-;51583:29;51601:10;51583:29;:::i;:::-;51573:8;51569:44;51766:2;51754:10;51751:18;51748:49;;;51787:8;51772:23;;51748:49;51810:80;51866:22;51884:3;51866:22;:::i;:::-;51856:8;51852:37;51839:11;51810:80;:::i;:::-;51469:431;;51454:446;51364:543;;;:::o;51913:117::-;51967:8;52017:5;52011:4;52007:16;51986:37;;51913:117;;;;:::o;52036:169::-;52080:6;52113:51;52161:1;52157:6;52149:5;52146:1;52142:13;52113:51;:::i;:::-;52109:56;52194:4;52188;52184:15;52174:25;;52087:118;52036:169;;;;:::o;52210:295::-;52286:4;52432:29;52457:3;52451:4;52432:29;:::i;:::-;52424:37;;52494:3;52491:1;52487:11;52481:4;52478:21;52470:29;;52210:295;;;;:::o;52510:1395::-;52627:37;52660:3;52627:37;:::i;:::-;52729:18;52721:6;52718:30;52715:56;;;52751:18;;:::i;:::-;52715:56;52795:38;52827:4;52821:11;52795:38;:::i;:::-;52880:67;52940:6;52932;52926:4;52880:67;:::i;:::-;52974:1;52998:4;52985:17;;53030:2;53022:6;53019:14;53047:1;53042:618;;;;53704:1;53721:6;53718:77;;;53770:9;53765:3;53761:19;53755:26;53746:35;;53718:77;53821:67;53881:6;53874:5;53821:67;:::i;:::-;53815:4;53808:81;53677:222;53012:887;;53042:618;53094:4;53090:9;53082:6;53078:22;53128:37;53160:4;53128:37;:::i;:::-;53187:1;53201:208;53215:7;53212:1;53209:14;53201:208;;;53294:9;53289:3;53285:19;53279:26;53271:6;53264:42;53345:1;53337:6;53333:14;53323:24;;53392:2;53381:9;53377:18;53364:31;;53238:4;53235:1;53231:12;53226:17;;53201:208;;;53437:6;53428:7;53425:19;53422:179;;;53495:9;53490:3;53486:19;53480:26;53538:48;53580:4;53572:6;53568:17;53557:9;53538:48;:::i;:::-;53530:6;53523:64;53445:156;53422:179;53647:1;53643;53635:6;53631:14;53627:22;53621:4;53614:36;53049:611;;;53012:887;;52602:1303;;;52510:1395;;:::o;53911:179::-;54051:31;54047:1;54039:6;54035:14;54028:55;53911:179;:::o;54096:366::-;54238:3;54259:67;54323:2;54318:3;54259:67;:::i;:::-;54252:74;;54335:93;54424:3;54335:93;:::i;:::-;54453:2;54448:3;54444:12;54437:19;;54096:366;;;:::o;54468:419::-;54634:4;54672:2;54661:9;54657:18;54649:26;;54721:9;54715:4;54711:20;54707:1;54696:9;54692:17;54685:47;54749:131;54875:4;54749:131;:::i;:::-;54741:139;;54468:419;;;:::o;54893:177::-;55033:29;55029:1;55021:6;55017:14;55010:53;54893:177;:::o;55076:366::-;55218:3;55239:67;55303:2;55298:3;55239:67;:::i;:::-;55232:74;;55315:93;55404:3;55315:93;:::i;:::-;55433:2;55428:3;55424:12;55417:19;;55076:366;;;:::o;55448:419::-;55614:4;55652:2;55641:9;55637:18;55629:26;;55701:9;55695:4;55691:20;55687:1;55676:9;55672:17;55665:47;55729:131;55855:4;55729:131;:::i;:::-;55721:139;;55448:419;;;:::o;55873:182::-;56013:34;56009:1;56001:6;55997:14;55990:58;55873:182;:::o;56061:366::-;56203:3;56224:67;56288:2;56283:3;56224:67;:::i;:::-;56217:74;;56300:93;56389:3;56300:93;:::i;:::-;56418:2;56413:3;56409:12;56402:19;;56061:366;;;:::o;56433:419::-;56599:4;56637:2;56626:9;56622:18;56614:26;;56686:9;56680:4;56676:20;56672:1;56661:9;56657:17;56650:47;56714:131;56840:4;56714:131;:::i;:::-;56706:139;;56433:419;;;:::o;56858:143::-;56915:5;56946:6;56940:13;56931:22;;56962:33;56989:5;56962:33;:::i;:::-;56858:143;;;;:::o;57007:351::-;57077:6;57126:2;57114:9;57105:7;57101:23;57097:32;57094:119;;;57132:79;;:::i;:::-;57094:119;57252:1;57277:64;57333:7;57324:6;57313:9;57309:22;57277:64;:::i;:::-;57267:74;;57223:128;57007:351;;;;:::o;57364:85::-;57409:7;57438:5;57427:16;;57364:85;;;:::o;57455:158::-;57513:9;57546:61;57564:42;57573:32;57599:5;57573:32;:::i;:::-;57564:42;:::i;:::-;57546:61;:::i;:::-;57533:74;;57455:158;;;:::o;57619:147::-;57714:45;57753:5;57714:45;:::i;:::-;57709:3;57702:58;57619:147;;:::o;57772:114::-;57839:6;57873:5;57867:12;57857:22;;57772:114;;;:::o;57892:184::-;57991:11;58025:6;58020:3;58013:19;58065:4;58060:3;58056:14;58041:29;;57892:184;;;;:::o;58082:132::-;58149:4;58172:3;58164:11;;58202:4;58197:3;58193:14;58185:22;;58082:132;;;:::o;58220:108::-;58297:24;58315:5;58297:24;:::i;:::-;58292:3;58285:37;58220:108;;:::o;58334:179::-;58403:10;58424:46;58466:3;58458:6;58424:46;:::i;:::-;58502:4;58497:3;58493:14;58479:28;;58334:179;;;;:::o;58519:113::-;58589:4;58621;58616:3;58612:14;58604:22;;58519:113;;;:::o;58668:732::-;58787:3;58816:54;58864:5;58816:54;:::i;:::-;58886:86;58965:6;58960:3;58886:86;:::i;:::-;58879:93;;58996:56;59046:5;58996:56;:::i;:::-;59075:7;59106:1;59091:284;59116:6;59113:1;59110:13;59091:284;;;59192:6;59186:13;59219:63;59278:3;59263:13;59219:63;:::i;:::-;59212:70;;59305:60;59358:6;59305:60;:::i;:::-;59295:70;;59151:224;59138:1;59135;59131:9;59126:14;;59091:284;;;59095:14;59391:3;59384:10;;58792:608;;;58668:732;;;;:::o;59406:831::-;59669:4;59707:3;59696:9;59692:19;59684:27;;59721:71;59789:1;59778:9;59774:17;59765:6;59721:71;:::i;:::-;59802:80;59878:2;59867:9;59863:18;59854:6;59802:80;:::i;:::-;59929:9;59923:4;59919:20;59914:2;59903:9;59899:18;59892:48;59957:108;60060:4;60051:6;59957:108;:::i;:::-;59949:116;;60075:72;60143:2;60132:9;60128:18;60119:6;60075:72;:::i;:::-;60157:73;60225:3;60214:9;60210:19;60201:6;60157:73;:::i;:::-;59406:831;;;;;;;;:::o
Swarm Source
ipfs://c4530310999295313fc34f831a9de45da7441298b99319e566d5a9e890bc6212
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.