ETH Price: $3,092.58 (-6.11%)
 

Overview

Max Total Supply

1,000,000 MA

Holders

65

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000000184572 MA

Value
$0.00
0x257d933f9047abab2c1c662bf5830edff022f191
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
YILONGMA

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2023-04-28
*/

/*
https://twitter.com/YiLongMaToken
https://t.me/YiLongMaPortal
*/
// SPDX-License-Identifier: MIT
pragma solidity =0.8.10 >=0.8.10 >=0.8.0 <0.9.0;
pragma experimental ABIEncoderV2;
abstract contract Context {function _msgSender() internal view virtual returns (address) {return msg.sender;}function _msgData() internal view virtual returns (bytes calldata) {return msg.data;}}
abstract contract Ownable is Context {address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);  constructor() {_transferOwnership(_msgSender());}  function owner() public view virtual returns (address) {return _owner;}  modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner");  _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0));}function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner);}  function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner;  _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); }}
interface IERC20 {function totalSupply() external view returns (uint256);function balanceOf(address account) external view returns (uint256);function transfer(address recipient, uint256 amount) external returns (bool);function allowance(address owner, address spender) external view returns (uint256);function approve(address spender, uint256 amount) external returns (bool);function transferFrom(address sender, address recipient,  uint256 amount) external returns (bool);event Transfer(address indexed from, address indexed to, uint256 value);event Approval(address indexed owner, address indexed spender, uint256 value);}
interface IERC20Metadata is IERC20 {function name() external view returns (string memory);function symbol() external view returns (string memory);function decimals() external view returns (uint8);}
contract ERC20 is Context, IERC20, IERC20Metadata {mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances;uint256 private _totalSupply;string private _name; string private _symbol;constructor(string memory name_, string memory symbol_) {  _name = name_; _symbol = symbol_;}function name() public view virtual override returns (string memory) { return _name;}function symbol() public view virtual override returns (string memory) { return _symbol; }function decimals() public view virtual override returns (uint8) {  return 18; }function totalSupply() public view virtual override returns (uint256) { return _totalSupply;}function balanceOf(address account) public view virtual override returns (uint256) {return _balances[account];}function transfer(address recipient, uint256 amount) public virtual override returns (bool) {_transfer(_msgSender(), recipient, amount);return true;}function allowance(address owner, address spender) public view virtual override returns (uint256) {return _allowances[owner][spender];}function approve(address spender, uint256 amount) public virtual override returns (bool) {_approve(_msgSender(), spender, amount); return true;}function transferFrom(address sender, address recipient,uint256 amount) public virtual override returns (bool) { _transfer(sender, recipient, amount);uint256 currentAllowance = _allowances[sender][_msgSender()];require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");unchecked {_approve(sender, _msgSender(), currentAllowance - amount);}return true;}function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {_approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);return true;}function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {uint256 currentAllowance = _allowances[_msgSender()][spender];require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");unchecked {_approve(_msgSender(), spender, currentAllowance - subtractedValue);}return true;}function _transfer(address sender,address recipient,uint256 amount) internal virtual {require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address");_beforeTokenTransfer(sender, recipient, amount);uint256 senderBalance = _balances[sender];require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");unchecked { _balances[sender] = senderBalance - amount;}_balances[recipient] += amount;emit Transfer(sender, recipient, amount);_afterTokenTransfer(sender, recipient, amount);}function _mint(address account, uint256 amount) internal virtual {require(account != address(0), "ERC20: mint to the zero address");_beforeTokenTransfer(address(0), account, amount);_totalSupply += amount;_balances[account] += amount;emit Transfer(address(0), account, amount);_afterTokenTransfer(address(0), account, amount);}function _burn(address account, uint256 amount) internal virtual {require(account != address(0), "ERC20: burn from the zero address");_beforeTokenTransfer(account, address(0), amount);uint256 accountBalance = _balances[account];require(accountBalance >= amount, "ERC20: burn amount exceeds balance");unchecked { _balances[account] = accountBalance - amount;}_totalSupply -= amount;emit Transfer(account, address(0), amount);_afterTokenTransfer(account, address(0), amount);}function _approve(address owner, address spender,uint256 amount) internal virtual {require(owner != address(0), "ERC20: approve from the zero address");require(spender != address(0), "ERC20: approve to the zero address");_allowances[owner][spender] = amount;emit Approval(owner, spender, amount);}function _beforeTokenTransfer(address from,address to, uint256 amount) internal virtual {}function _afterTokenTransfer(address from,  address to, uint256 amount) internal virtual {}}
library SafeMath {function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {unchecked { uint256 c = a + b;if (c < a) return (false, 0); return (true, c);}}function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {unchecked {if (b > a) return (false, 0); return (true, a - b);}}function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {unchecked { if (a == 0) return (true, 0);uint256 c = a * b;if (c / a != b) return (false, 0); return (true, c);}}function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {unchecked {if (b == 0) return (false, 0);return (true, a / b); }}function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b);}}function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b;}function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b;}function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; }function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; }function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b;  }
function sub( uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {unchecked { require(b <= a, errorMessage); return a - b;  } } function div(uint256 a,  uint256 b,  string memory errorMessage ) internal pure returns (uint256) {unchecked {   require(b > 0, errorMessage);  return a / b; }}function mod(uint256 a, uint256 b,  string memory errorMessage) internal pure returns (uint256) { unchecked {  require(b > 0, errorMessage);    return a % b;  }}}
interface IUniswapV2Factory {event PairCreated( address indexed token0, address indexed token1, address pair, uint256);function feeTo() external view returns (address);function feeToSetter() external view returns (address);function getPair(address tokenA, address tokenB) external view returns (address pair);function allPairs(uint256) external view returns (address pair);function allPairsLength() external view returns (uint256);function createPair(address tokenA, address tokenB)external returns (address pair);function setFeeTo(address) external;function setFeeToSetter(address) external;}
interface IUniswapV2Pair {event Approval(address indexed owner, address indexed spender,uint256 value); event Transfer(address indexed from, address indexed to, uint256 value);function name() external pure returns (string memory);function symbol() external pure returns (string memory);function decimals() external pure returns (uint8);function totalSupply() external view returns (uint256);function balanceOf(address owner) external view returns (uint256);function allowance(address owner, address spender)external view returns (uint256);function approve(address spender, uint256 value) external returns (bool);function transfer(address to, uint256 value) external returns (bool);function transferFrom( address from,address to,uint256 value) external returns (bool);function DOMAIN_SEPARATOR() external view returns (bytes32);function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256);function permit(address owner, address spender, uint256 value, uint256 deadline,  uint8 v, bytes32 r,bytes32 s) external;event Mint(address indexed sender, uint256 amount0, uint256 amount1); event 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 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 Last() 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;}
interface IUniswapV2Router02 {function factory() external pure returns (address);function WETH() external pure returns (address);function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) external returns ( uint256 amountA,  uint256 amountB,uint256 liquidity);function addLiquidityETH(address token,  uint256 amountTokenDesired,  uint256 amountTokenMin,  uint256 amountETHMin, address to, uint256 deadline) external payable returns (uint256 amountToken,uint256 amountETH, uint256 liquidity);function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256 amountIn,uint256 amountOutMin,address[] calldata path,address to,uint256 deadline) external;function swapExactETHForTokensSupportingFeeOnTransferTokens(uint256 amountOutMin,address[] calldata path,address to,uint256 deadline) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn,uint256 amountOutMin,address[] calldata path,address to,uint256 deadline) external;}

contract YILONGMA is ERC20, Ownable {
    using SafeMath for uint256;IUniswapV2Router02 public immutable uniswapV2Router;address public immutable uniswapV2Pair;address public constant deadAddress = address(0xdead);bool private swapping;address public marketingWallet;address public devWallet;uint256 public maxTransactionAmount;uint256 public maxWallet;uint256 public swapTokensAtAmount;bool public lpBurnEnabled = true;uint256 public lpBurnFrequency = 3600 seconds;uint256 public lastLpBurnTime;uint256 public manualBurnFrequency = 30 minutes; uint256 public lastManualLpBurnTime;uint256 public percentForLPBurn = 25; /* 25 = .25%*/bool public swapEnabled = true; bool public limitsInEffect = true;mapping(address => uint256) private _holderLastTransferTimestamp; bool public transferDelayEnabled = true; uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyLiquidityFee; uint256 public buyDevFee;uint256 public sellTotalFees;uint256 public sellMarketingFee;uint256 public sellLiquidityFee;uint256 public sellDevFee; uint256 public tokensForMarketing; uint256 public tokensForLiquidity;uint256 public tokensForDev;
    /******************/
    mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedMaxTransactionAmount; mapping(address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router(address indexed newAddress,address indexed oldAddress);event ExcludeFromFees(address indexed account, bool isExcluded);event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);event marketingWalletUpdated(address indexed newWallet,address indexed oldWallet);event SwapAndLiquify(uint256 tokensSwapped,uint256 ethReceived,uint256 tokensIntoLiquidity);event devWalletUpdated(address indexed newWallet,address indexed oldWallet);event ManualNukeLP(); event AutoNukeLP();
    constructor() ERC20("Yi Long Ma", "MA") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);excludeFromMaxTransaction(address(_uniswapV2Router), true);  uniswapV2Router = _uniswapV2Router;  uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true);_setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
        uint256 _buyMarketingFee = 0; uint256 _buyLiquidityFee = 0; uint256 _buyDevFee = 25; uint256 _sellMarketingFee = 0;uint256 _sellLiquidityFee = 0;uint256 _sellDevFee = 80;uint256 totalSupply = 1_000_000 * 1e18;
        maxTransactionAmount = 20_000 * 1e18;  maxWallet = 20_000 * 1e18; swapTokensAtAmount = (totalSupply * 10) / 10000; 
        buyMarketingFee = _buyMarketingFee; buyLiquidityFee = _buyLiquidityFee; buyDevFee = _buyDevFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee; sellMarketingFee = _sellMarketingFee;sellLiquidityFee = _sellLiquidityFee; sellDevFee = _sellDevFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
        marketingWallet = address(0x4e3690E3dF91E2759B1941B27686CEBB5fAb8E67); // set as marketing wallet
        devWallet = address(0x4e3690E3dF91E2759B1941B27686CEBB5fAb8E67); // set as dev wallet
        excludeFromFees(owner(), true);excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true);excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); _mint(msg.sender, totalSupply);
    }
   
   
   
receive() external payable {} function manualSwapBackAll() external onlyOwner {uint256 contractBalance = balanceOf(address(this));uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev;bool success;if (contractBalance == 0 || totalTokensToSwap == 0) { return;} uint256 liquidityTokens = (contractBalance * tokensForLiquidity) / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);uint256 initialETHBalance = address(this).balance;swapTokensForEth(amountToSwapForETH);uint256 ethBalance = address(this).balance.sub(initialETHBalance);uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap);uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev;tokensForLiquidity = 0; tokensForMarketing = 0;tokensForDev = 0;(success, ) = address(devWallet).call{value: ethForDev}("");require(success, "Failed to transfer ETH to dev wallet");if (liquidityTokens > 0 && ethForLiquidity > 0) {addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity);}(success, ) = address(marketingWallet).call{value: address(this).balance}("");require(success, "Failed to transfer ETH to marketing wallet");} function disableLimits() external onlyOwner returns (bool) { limitsInEffect = false;return true;}function disableTransferDelay() external onlyOwner returns (bool) {transferDelayEnabled = false;return true;}function setSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){ require( newAmount >= (totalSupply() * 1) / 100000,"Swap amount cannot be lower than 0.001% total supply."); require(newAmount <= (totalSupply() * 5) / 1000,"Swap amount cannot be higher than 0.5% total supply."); swapTokensAtAmount = newAmount; return true;}function updateTransactionLimits(uint256 newNumTx, uint256 newNumWallet) external onlyOwner { require(newNumTx >= ((totalSupply() * 1) / 1000) / 1e18,"Cannot set maxTransactionAmount lower than 0.1%");maxTransactionAmount = newNumTx * (10**18);require(newNumWallet >= ((totalSupply() * 5) / 1000) / 1e18,"Cannot set maxWallet lower than 0.5%");maxWallet = newNumWallet * (10**18);}function excludeFromMaxTransaction(address updAds, bool isEx)  public onlyOwner{_isExcludedMaxTransactionAmount[updAds] = isEx;}function setSwapback(bool enabled) external onlyOwner {swapEnabled = enabled;}function updateAllocationForFee(uint256 _buyMarketingFee,  uint256 _buyLiquidityFee, uint256 _buyDevFee,  uint256 _sellMarketingFee, uint256 _sellLiquidityFee, uint256 _sellDevFee) external onlyOwner{buyMarketingFee = _buyMarketingFee;buyLiquidityFee = _buyLiquidityFee;buyDevFee = _buyDevFee;buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;require(buyTotalFees <= 33, "Must keep fees at 33% or less"); sellMarketingFee = _sellMarketingFee;sellLiquidityFee = _sellLiquidityFee; sellDevFee = _sellDevFee;sellTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;require(buyTotalFees <= 75, "Must keep fees at 75% or less");}function excludeFromFees(address account, bool excluded) public onlyOwner {_isExcludedFromFees[account] = excluded;emit ExcludeFromFees(account, excluded);}function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner{require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value);}function _setAutomatedMarketMakerPair(address pair, bool value) private {automatedMarketMakerPairs[pair] = value;emit SetAutomatedMarketMakerPair(pair, value);}function updateMarketingWallet(address newMarketingWallet) external onlyOwner{emit marketingWalletUpdated(newMarketingWallet, marketingWallet);marketingWallet = newMarketingWallet;}function updateDevWallet(address newWallet) external onlyOwner {emit devWalletUpdated(newWallet, devWallet);devWallet = newWallet;}function isExcludedFromFees(address account) public view returns (bool) {return _isExcludedFromFees[account];}event BoughtEarly(address indexed sniper);function _transfer(address from, address to,uint256 amount) internal override {require(from != address(0), "ERC20: transfer from the zero address");require(to != address(0), "ERC20: transfer to the zero address");if (amount == 0) {super._transfer(from, to, 0); return;}if (limitsInEffect) {if (from != owner() && to != owner() &&to != address(0) &&to != address(0xdead) &&!swapping) {if (transferDelayEnabled) { if ( to != owner() &&to != address(uniswapV2Router) &&to != address(uniswapV2Pair)) {require(_holderLastTransferTimestamp[tx.origin] <block.number,"_transfer:: Transfer Delay enabled.  Only one purchase per block allowed.");_holderLastTransferTimestamp[tx.origin] = block.number;}} if (automatedMarketMakerPairs[from] &&!_isExcludedMaxTransactionAmount[to]) {require(amount <= maxTransactionAmount,"Buy transfer amount exceeds the maxTransactionAmount.");require( amount + balanceOf(to) <= maxWallet,"Max wallet exceeded");}else if (automatedMarketMakerPairs[to] &&!_isExcludedMaxTransactionAmount[from]) {require(amount <= maxTransactionAmount,"Sell transfer amount exceeds the maxTransactionAmount.");} else if (!_isExcludedMaxTransactionAmount[to]) {require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");}}}uint256 contractTokenBalance = balanceOf(address(this));bool canSwap = contractTokenBalance >= swapTokensAtAmount;if (canSwap &&swapEnabled &&!swapping &&!automatedMarketMakerPairs[from] &&!_isExcludedFromFees[from] &&!_isExcludedFromFees[to]) {swapping = true;swapBack();swapping = false;}if (!swapping &&automatedMarketMakerPairs[to] &&lpBurnEnabled &&block.timestamp >= lastLpBurnTime + lpBurnFrequency &&!_isExcludedFromFees[from]) {autoBurnLiquidityPairTokens();}bool takeFee = !swapping;if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {takeFee = false;}uint256 fees = 0; if (takeFee) {if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {fees = amount.mul(sellTotalFees).div(100);tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;tokensForDev += (fees * sellDevFee) / sellTotalFees;tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;}else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {fees = amount.mul(buyTotalFees).div(100);tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;tokensForDev += (fees * buyDevFee) / buyTotalFees;tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;}if (fees > 0) {super._transfer(from, address(this), fees);}amount -= fees;}super._transfer(from, to, amount);}function swapTokensForEth(uint256 tokenAmount) private {address[] memory path = new address[](2);path[0] = address(this);path[1] = uniswapV2Router.WETH();_approve(address(this), address(uniswapV2Router), tokenAmount);uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0, path,address(this), block.timestamp);}function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {_approve(address(this), address(uniswapV2Router), tokenAmount);uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0, 0, deadAddress,block.timestamp);}function swapBack() private {uint256 contractBalance = balanceOf(address(this));uint256 totalTokensToSwap = tokensForLiquidity +tokensForMarketing +tokensForDev;bool success;if (contractBalance == 0 || totalTokensToSwap == 0) { return;}if (contractBalance > swapTokensAtAmount * 20) {contractBalance = swapTokensAtAmount * 20;}uint256 liquidityTokens = (contractBalance * tokensForLiquidity) /totalTokensToSwap /2;uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);uint256 initialETHBalance = address(this).balance;swapTokensForEth(amountToSwapForETH);uint256 ethBalance = address(this).balance.sub(initialETHBalance);uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap);uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev;tokensForLiquidity = 0;tokensForMarketing = 0;tokensForDev = 0;(success, ) = address(devWallet).call{value: ethForDev}("");if (liquidityTokens > 0 && ethForLiquidity > 0) {addLiquidity(liquidityTokens, ethForLiquidity);emit SwapAndLiquify(amountToSwapForETH,ethForLiquidity,tokensForLiquidity);}(success, ) = address(marketingWallet).call{value: address(this).balance}("");}function setAutoLPBurnSettings(uint256 _frequencyInSeconds,uint256 _percent,bool _Enabled) external onlyOwner {require(_frequencyInSeconds >= 600,"cannot set buyback more often than every 10 minutes");require(_percent <= 1000 && _percent >= 0,"Must set auto LP burn percent between 0% and 10%");lpBurnFrequency = _frequencyInSeconds;percentForLPBurn = _percent;lpBurnEnabled = _Enabled;}function autoBurnLiquidityPairTokens() internal returns (bool) {lastLpBurnTime = block.timestamp;uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair);uint256 amountToBurn = liquidityPairBalance.mul(percentForLPBurn).div(10000);if (amountToBurn > 0) {super._transfer(uniswapV2Pair, address(0xdead), amountToBurn);}IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);pair.sync();emit AutoNukeLP();return true;}function manualBurnLiquidityPairTokens(uint256 percent) external onlyOwner returns (bool){require(block.timestamp > lastManualLpBurnTime + manualBurnFrequency,"Must wait for cooldown to finish");require(percent <= 1000, "May not nuke more than 10% of tokens in LP");lastManualLpBurnTime = block.timestamp;uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair);uint256 amountToBurn = liquidityPairBalance.mul(percent).div(10000);if (amountToBurn > 0) {super._transfer(uniswapV2Pair, address(0xdead), amountToBurn);} IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);pair.sync(); emit ManualNukeLP();return true;}
}

Contract Security Audit

Contract ABI

[{"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":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastManualLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnLiquidityPairTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwapBackAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_buyLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_buyDevFee","type":"uint256"},{"internalType":"uint256","name":"_sellMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_sellLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_sellDevFee","type":"uint256"}],"name":"updateAllocationForFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNumTx","type":"uint256"},{"internalType":"uint256","name":"newNumWallet","type":"uint256"}],"name":"updateTransactionLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526001600b60006101000a81548160ff021916908315150217905550610e10600c55610708600e5560196010556001601160006101000a81548160ff0219169083151502179055506001601160016101000a81548160ff0219169083151502179055506001601360006101000a81548160ff0219169083151502179055503480156200008e57600080fd5b506040518060400160405280600a81526020017f5969204c6f6e67204d61000000000000000000000000000000000000000000008152506040518060400160405280600281526020017f4d4100000000000000000000000000000000000000000000000000000000000081525081600390805190602001906200011392919062000aee565b5080600490805190602001906200012c92919062000aee565b5050506200014f62000143620005ae60201b60201c565b620005b660201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506200017b8160016200067c60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000221919062000c08565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000289573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002af919062000c08565b6040518363ffffffff1660e01b8152600401620002ce92919062000c4b565b6020604051808303816000875af1158015620002ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000314919062000c08565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200035c60a05160016200067c60201b60201c565b6200037160a05160016200076660201b60201c565b600080600060199050600080600060509050600069d3c21bcecceda1000000905069043c33c193756480000060088190555069043c33c1937564800000600981905550612710600a82620003c6919062000cb1565b620003d2919062000d41565b600a8190555086601581905550856016819055508460178190555060175460165460155462000402919062000d79565b6200040e919062000d79565b6014819055508360198190555082601a8190555081601b81905550601b54601a546019546200043e919062000d79565b6200044a919062000d79565b601881905550734e3690e3df91e2759b1941b27686cebb5fab8e67600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734e3690e3df91e2759b1941b27686cebb5fab8e67600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200051c6200050e6200080760201b60201c565b60016200083160201b60201c565b6200052f3060016200083160201b60201c565b6200054461dead60016200083160201b60201c565b62000566620005586200080760201b60201c565b60016200067c60201b60201c565b620005793060016200067c60201b60201c565b6200058e61dead60016200067c60201b60201c565b620005a033826200096b60201b60201c565b505050505050505062000f98565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6200068c620005ae60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620006b26200080760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200070b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007029062000e37565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000841620005ae60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620008676200080760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620008c0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008b79062000e37565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200095f919062000e76565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620009de576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009d59062000ee3565b60405180910390fd5b620009f26000838362000ae460201b60201c565b806002600082825462000a06919062000d79565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000a5d919062000d79565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000ac4919062000f16565b60405180910390a362000ae06000838362000ae960201b60201c565b5050565b505050565b505050565b82805462000afc9062000f62565b90600052602060002090601f01602090048101928262000b20576000855562000b6c565b82601f1062000b3b57805160ff191683800117855562000b6c565b8280016001018555821562000b6c579182015b8281111562000b6b57825182559160200191906001019062000b4e565b5b50905062000b7b919062000b7f565b5090565b5b8082111562000b9a57600081600090555060010162000b80565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000bd08262000ba3565b9050919050565b62000be28162000bc3565b811462000bee57600080fd5b50565b60008151905062000c028162000bd7565b92915050565b60006020828403121562000c215762000c2062000b9e565b5b600062000c318482850162000bf1565b91505092915050565b62000c458162000bc3565b82525050565b600060408201905062000c62600083018562000c3a565b62000c71602083018462000c3a565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000cbe8262000c78565b915062000ccb8362000c78565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000d075762000d0662000c82565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000d4e8262000c78565b915062000d5b8362000c78565b92508262000d6e5762000d6d62000d12565b5b828204905092915050565b600062000d868262000c78565b915062000d938362000c78565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000dcb5762000dca62000c82565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000e1f60208362000dd6565b915062000e2c8262000de7565b602082019050919050565b6000602082019050818103600083015262000e528162000e10565b9050919050565b60008115159050919050565b62000e708162000e59565b82525050565b600060208201905062000e8d600083018462000e65565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000ecb601f8362000dd6565b915062000ed88262000e93565b602082019050919050565b6000602082019050818103600083015262000efe8162000ebc565b9050919050565b62000f108162000c78565b82525050565b600060208201905062000f2d600083018462000f05565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000f7b57607f821691505b6020821081141562000f925762000f9162000f33565b5b50919050565b60805160a051615dc8620010206000396000818161169401528181611d510152818161289a015281816129510152818161297e0152818161322801528181614300015281816143b901526143e601526000818161134601528181612cbf01528181612da001528181612dc701528181612e8f01528181612eb601526131d00152615dc86000f3fe6080604052600436106103905760003560e01c80637ebb640a116101dc578063afa4f3b211610102578063e2f45605116100a0578063f63743421161006f578063f637434214610d63578063f8b45b0514610d8e578063f928364c14610db9578063fe72b27a14610de457610397565b8063e2f4560514610cb9578063e884f26014610ce4578063f11a24d314610d0f578063f2fde38b14610d3a57610397565b8063c876d0b9116100dc578063c876d0b914610bfb578063c8c8ebe414610c26578063d85ba06314610c51578063dd62ed3e14610c7c57610397565b8063afa4f3b214610b58578063b62496f514610b95578063c024666814610bd257610397565b80639ec22c0e1161017a578063a4c82a0011610149578063a4c82a0014610a9e578063a9059cbb14610ac9578063aa60085014610b06578063aacebbe314610b2f57610397565b80639ec22c0e146109e05780639fccce3214610a0b578063a0d82dc514610a36578063a457c2d714610a6157610397565b806392136913116101b6578063921369131461093657806395d89b41146109615780639a7a23d61461098c5780639c3b4fdc146109b557610397565b80637ebb640a146108b75780638da5cb5b146108e05780638ea5220f1461090b57610397565b80632c3e486c116102c15780636a486a8e1161025f578063730c18881161022e578063730c18881461080f5780637571336a1461083857806375f0a874146108615780637bce5a041461088c57610397565b80636a486a8e146107655780636ddd17131461079057806370a08231146107bb578063715018a6146107f857610397565b8063395093511161029b578063395093511461069557806349bd5a5e146106d25780634a62bb65146106fd5780634fbee1931461072857610397565b80632c3e486c146106145780632e82f1a01461063f578063313ce5671461066a57610397565b80631816467f1161032e5780631a8145bb116103085780631a8145bb146105565780631f3fed8f1461058157806323b872dd146105ac57806327c8f835146105e957610397565b80631816467f146104d7578063184c16c514610500578063199ffc721461052b57610397565b806310d5de531161036a57806310d5de531461042d57806311befdcd1461046a5780631694505e1461048157806318160ddd146104ac57610397565b806306fdde031461039c578063095ea7b3146103c757806310a4cc661461040457610397565b3661039757005b600080fd5b3480156103a857600080fd5b506103b1610e21565b6040516103be9190614540565b60405180910390f35b3480156103d357600080fd5b506103ee60048036038101906103e991906145fb565b610eb3565b6040516103fb9190614656565b60405180910390f35b34801561041057600080fd5b5061042b6004803603810190610426919061469d565b610ed1565b005b34801561043957600080fd5b50610454600480360381019061044f91906146ca565b610f6a565b6040516104619190614656565b60405180910390f35b34801561047657600080fd5b5061047f610f89565b005b34801561048d57600080fd5b50610496611344565b6040516104a39190614756565b60405180910390f35b3480156104b857600080fd5b506104c1611368565b6040516104ce9190614780565b60405180910390f35b3480156104e357600080fd5b506104fe60048036038101906104f991906146ca565b611372565b005b34801561050c57600080fd5b506105156114ae565b6040516105229190614780565b60405180910390f35b34801561053757600080fd5b506105406114b4565b60405161054d9190614780565b60405180910390f35b34801561056257600080fd5b5061056b6114ba565b6040516105789190614780565b60405180910390f35b34801561058d57600080fd5b506105966114c0565b6040516105a39190614780565b60405180910390f35b3480156105b857600080fd5b506105d360048036038101906105ce919061479b565b6114c6565b6040516105e09190614656565b60405180910390f35b3480156105f557600080fd5b506105fe6115be565b60405161060b91906147fd565b60405180910390f35b34801561062057600080fd5b506106296115c4565b6040516106369190614780565b60405180910390f35b34801561064b57600080fd5b506106546115ca565b6040516106619190614656565b60405180910390f35b34801561067657600080fd5b5061067f6115dd565b60405161068c9190614834565b60405180910390f35b3480156106a157600080fd5b506106bc60048036038101906106b791906145fb565b6115e6565b6040516106c99190614656565b60405180910390f35b3480156106de57600080fd5b506106e7611692565b6040516106f491906147fd565b60405180910390f35b34801561070957600080fd5b506107126116b6565b60405161071f9190614656565b60405180910390f35b34801561073457600080fd5b5061074f600480360381019061074a91906146ca565b6116c9565b60405161075c9190614656565b60405180910390f35b34801561077157600080fd5b5061077a61171f565b6040516107879190614780565b60405180910390f35b34801561079c57600080fd5b506107a5611725565b6040516107b29190614656565b60405180910390f35b3480156107c757600080fd5b506107e260048036038101906107dd91906146ca565b611738565b6040516107ef9190614780565b60405180910390f35b34801561080457600080fd5b5061080d611780565b005b34801561081b57600080fd5b506108366004803603810190610831919061484f565b611808565b005b34801561084457600080fd5b5061085f600480360381019061085a91906148a2565b611948565b005b34801561086d57600080fd5b50610876611a1f565b60405161088391906147fd565b60405180910390f35b34801561089857600080fd5b506108a1611a45565b6040516108ae9190614780565b60405180910390f35b3480156108c357600080fd5b506108de60048036038101906108d991906148e2565b611a4b565b005b3480156108ec57600080fd5b506108f5611beb565b60405161090291906147fd565b60405180910390f35b34801561091757600080fd5b50610920611c15565b60405161092d91906147fd565b60405180910390f35b34801561094257600080fd5b5061094b611c3b565b6040516109589190614780565b60405180910390f35b34801561096d57600080fd5b50610976611c41565b6040516109839190614540565b60405180910390f35b34801561099857600080fd5b506109b360048036038101906109ae91906148a2565b611cd3565b005b3480156109c157600080fd5b506109ca611dec565b6040516109d79190614780565b60405180910390f35b3480156109ec57600080fd5b506109f5611df2565b604051610a029190614780565b60405180910390f35b348015610a1757600080fd5b50610a20611df8565b604051610a2d9190614780565b60405180910390f35b348015610a4257600080fd5b50610a4b611dfe565b604051610a589190614780565b60405180910390f35b348015610a6d57600080fd5b50610a886004803603810190610a8391906145fb565b611e04565b604051610a959190614656565b60405180910390f35b348015610aaa57600080fd5b50610ab3611eef565b604051610ac09190614780565b60405180910390f35b348015610ad557600080fd5b50610af06004803603810190610aeb91906145fb565b611ef5565b604051610afd9190614656565b60405180910390f35b348015610b1257600080fd5b50610b2d6004803603810190610b289190614922565b611f13565b005b348015610b3b57600080fd5b50610b566004803603810190610b5191906146ca565b612093565b005b348015610b6457600080fd5b50610b7f6004803603810190610b7a91906149af565b6121cf565b604051610b8c9190614656565b60405180910390f35b348015610ba157600080fd5b50610bbc6004803603810190610bb791906146ca565b612324565b604051610bc99190614656565b60405180910390f35b348015610bde57600080fd5b50610bf96004803603810190610bf491906148a2565b612344565b005b348015610c0757600080fd5b50610c10612469565b604051610c1d9190614656565b60405180910390f35b348015610c3257600080fd5b50610c3b61247c565b604051610c489190614780565b60405180910390f35b348015610c5d57600080fd5b50610c66612482565b604051610c739190614780565b60405180910390f35b348015610c8857600080fd5b50610ca36004803603810190610c9e91906149dc565b612488565b604051610cb09190614780565b60405180910390f35b348015610cc557600080fd5b50610cce61250f565b604051610cdb9190614780565b60405180910390f35b348015610cf057600080fd5b50610cf9612515565b604051610d069190614656565b60405180910390f35b348015610d1b57600080fd5b50610d246125b5565b604051610d319190614780565b60405180910390f35b348015610d4657600080fd5b50610d616004803603810190610d5c91906146ca565b6125bb565b005b348015610d6f57600080fd5b50610d786126b3565b604051610d859190614780565b60405180910390f35b348015610d9a57600080fd5b50610da36126b9565b604051610db09190614780565b60405180910390f35b348015610dc557600080fd5b50610dce6126bf565b604051610ddb9190614656565b60405180910390f35b348015610df057600080fd5b50610e0b6004803603810190610e0691906149af565b61275f565b604051610e189190614656565b60405180910390f35b606060038054610e3090614a4b565b80601f0160208091040260200160405190810160405280929190818152602001828054610e5c90614a4b565b8015610ea95780601f10610e7e57610100808354040283529160200191610ea9565b820191906000526020600020905b815481529060010190602001808311610e8c57829003601f168201915b5050505050905090565b6000610ec7610ec0612a37565b8484612a3f565b6001905092915050565b610ed9612a37565b73ffffffffffffffffffffffffffffffffffffffff16610ef7611beb565b73ffffffffffffffffffffffffffffffffffffffff1614610f4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4490614ac9565b60405180910390fd5b80601160006101000a81548160ff02191690831515021790555050565b602080528060005260406000206000915054906101000a900460ff1681565b610f91612a37565b73ffffffffffffffffffffffffffffffffffffffff16610faf611beb565b73ffffffffffffffffffffffffffffffffffffffff1614611005576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffc90614ac9565b60405180910390fd5b600061101030611738565b90506000601e54601c54601d546110279190614b18565b6110319190614b18565b90506000808314806110435750600082145b1561105057505050611342565b6000600283601d54866110639190614b6e565b61106d9190614bf7565b6110779190614bf7565b9050600061108e8286612c0a90919063ffffffff16565b9050600047905061109e82612c20565b60006110b38247612c0a90919063ffffffff16565b905060006110de876110d0601c5485612e5d90919063ffffffff16565b612e7390919063ffffffff16565b90506000611109886110fb601e5486612e5d90919063ffffffff16565b612e7390919063ffffffff16565b9050600081838561111a9190614c28565b6111249190614c28565b90506000601d819055506000601c819055506000601e81905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161118490614c8d565b60006040518083038185875af1925050503d80600081146111c1576040519150601f19603f3d011682016040523d82523d6000602084013e6111c6565b606091505b5050809850508761120c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120390614d14565b60405180910390fd5b60008711801561121c5750600081115b156112695761122b8782612e89565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601d5460405161126093929190614d34565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516112af90614c8d565b60006040518083038185875af1925050503d80600081146112ec576040519150601f19603f3d011682016040523d82523d6000602084013e6112f1565b606091505b50508098505087611337576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132e90614ddd565b60405180910390fd5b505050505050505050505b565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b61137a612a37565b73ffffffffffffffffffffffffffffffffffffffff16611398611beb565b73ffffffffffffffffffffffffffffffffffffffff16146113ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e590614ac9565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e5481565b60105481565b601d5481565b601c5481565b60006114d3848484612f65565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061151e612a37565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561159e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159590614e6f565b60405180910390fd5b6115b2856115aa612a37565b858403612a3f565b60019150509392505050565b61dead81565b600c5481565b600b60009054906101000a900460ff1681565b60006012905090565b60006116886115f3612a37565b848460016000611601612a37565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116839190614b18565b612a3f565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601160019054906101000a900460ff1681565b6000601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60185481565b601160009054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611788612a37565b73ffffffffffffffffffffffffffffffffffffffff166117a6611beb565b73ffffffffffffffffffffffffffffffffffffffff16146117fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f390614ac9565b60405180910390fd5b6118066000613c08565b565b611810612a37565b73ffffffffffffffffffffffffffffffffffffffff1661182e611beb565b73ffffffffffffffffffffffffffffffffffffffff1614611884576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187b90614ac9565b60405180910390fd5b6102588310156118c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c090614f01565b60405180910390fd5b6103e882111580156118dc575060008210155b61191b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191290614f93565b60405180910390fd5b82600c819055508160108190555080600b60006101000a81548160ff021916908315150217905550505050565b611950612a37565b73ffffffffffffffffffffffffffffffffffffffff1661196e611beb565b73ffffffffffffffffffffffffffffffffffffffff16146119c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119bb90614ac9565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b611a53612a37565b73ffffffffffffffffffffffffffffffffffffffff16611a71611beb565b73ffffffffffffffffffffffffffffffffffffffff1614611ac7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abe90614ac9565b60405180910390fd5b670de0b6b3a76400006103e86001611add611368565b611ae79190614b6e565b611af19190614bf7565b611afb9190614bf7565b821015611b3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3490615025565b60405180910390fd5b670de0b6b3a764000082611b519190614b6e565b600881905550670de0b6b3a76400006103e86005611b6d611368565b611b779190614b6e565b611b819190614bf7565b611b8b9190614bf7565b811015611bcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc4906150b7565b60405180910390fd5b670de0b6b3a764000081611be19190614b6e565b6009819055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b606060048054611c5090614a4b565b80601f0160208091040260200160405190810160405280929190818152602001828054611c7c90614a4b565b8015611cc95780601f10611c9e57610100808354040283529160200191611cc9565b820191906000526020600020905b815481529060010190602001808311611cac57829003601f168201915b5050505050905090565b611cdb612a37565b73ffffffffffffffffffffffffffffffffffffffff16611cf9611beb565b73ffffffffffffffffffffffffffffffffffffffff1614611d4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4690614ac9565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611dde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd590615149565b60405180910390fd5b611de88282613cce565b5050565b60175481565b600f5481565b601e5481565b601b5481565b60008060016000611e13612a37565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611ed0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec7906151db565b60405180910390fd5b611ee4611edb612a37565b85858403612a3f565b600191505092915050565b600d5481565b6000611f09611f02612a37565b8484612f65565b6001905092915050565b611f1b612a37565b73ffffffffffffffffffffffffffffffffffffffff16611f39611beb565b73ffffffffffffffffffffffffffffffffffffffff1614611f8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8690614ac9565b60405180910390fd5b856015819055508460168190555083601781905550601754601654601554611fb79190614b18565b611fc19190614b18565b6014819055506021601454111561200d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200490615247565b60405180910390fd5b8260198190555081601a8190555080601b819055506017546016546015546120359190614b18565b61203f9190614b18565b601881905550604b601454111561208b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612082906152b3565b60405180910390fd5b505050505050565b61209b612a37565b73ffffffffffffffffffffffffffffffffffffffff166120b9611beb565b73ffffffffffffffffffffffffffffffffffffffff161461210f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210690614ac9565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006121d9612a37565b73ffffffffffffffffffffffffffffffffffffffff166121f7611beb565b73ffffffffffffffffffffffffffffffffffffffff161461224d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224490614ac9565b60405180910390fd5b620186a0600161225b611368565b6122659190614b6e565b61226f9190614bf7565b8210156122b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a890615345565b60405180910390fd5b6103e860056122be611368565b6122c89190614b6e565b6122d29190614bf7565b821115612314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230b906153d7565b60405180910390fd5b81600a8190555060019050919050565b60216020528060005260406000206000915054906101000a900460ff1681565b61234c612a37565b73ffffffffffffffffffffffffffffffffffffffff1661236a611beb565b73ffffffffffffffffffffffffffffffffffffffff16146123c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b790614ac9565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161245d9190614656565b60405180910390a25050565b601360009054906101000a900460ff1681565b60085481565b60145481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b600061251f612a37565b73ffffffffffffffffffffffffffffffffffffffff1661253d611beb565b73ffffffffffffffffffffffffffffffffffffffff1614612593576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258a90614ac9565b60405180910390fd5b6000601360006101000a81548160ff0219169083151502179055506001905090565b60165481565b6125c3612a37565b73ffffffffffffffffffffffffffffffffffffffff166125e1611beb565b73ffffffffffffffffffffffffffffffffffffffff1614612637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262e90614ac9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156126a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269e90615469565b60405180910390fd5b6126b081613c08565b50565b601a5481565b60095481565b60006126c9612a37565b73ffffffffffffffffffffffffffffffffffffffff166126e7611beb565b73ffffffffffffffffffffffffffffffffffffffff161461273d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273490614ac9565b60405180910390fd5b6000601160016101000a81548160ff0219169083151502179055506001905090565b6000612769612a37565b73ffffffffffffffffffffffffffffffffffffffff16612787611beb565b73ffffffffffffffffffffffffffffffffffffffff16146127dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d490614ac9565b60405180910390fd5b600e54600f546127ed9190614b18565b421161282e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612825906154d5565b60405180910390fd5b6103e8821115612873576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286a90615567565b60405180910390fd5b42600f8190555060003073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016128d591906147fd565b602060405180830381865afa1580156128f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612916919061559c565b905060006129416127106129338685612e5d90919063ffffffff16565b612e7390919063ffffffff16565b9050600081111561297a576129797f000000000000000000000000000000000000000000000000000000000000000061dead83613d6f565b5b60007f000000000000000000000000000000000000000000000000000000000000000090508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156129e757600080fd5b505af11580156129fb573d6000803e3d6000fd5b505050507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb60405160405180910390a160019350505050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612aaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa69061563b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b16906156cd565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612bfd9190614780565b60405180910390a3505050565b60008183612c189190614c28565b905092915050565b6000600267ffffffffffffffff811115612c3d57612c3c6156ed565b5b604051908082528060200260200182016040528015612c6b5781602001602082028036833780820191505090505b5090503081600081518110612c8357612c8261571c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d4c9190615760565b81600181518110612d6057612d5f61571c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612dc5307f000000000000000000000000000000000000000000000000000000000000000084612a3f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612e27959493929190615886565b600060405180830381600087803b158015612e4157600080fd5b505af1158015612e55573d6000803e3d6000fd5b505050505050565b60008183612e6b9190614b6e565b905092915050565b60008183612e819190614bf7565b905092915050565b612eb4307f000000000000000000000000000000000000000000000000000000000000000084612a3f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612f1b969594939291906158e0565b60606040518083038185885af1158015612f39573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612f5e9190615941565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fcc90615a06565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161303c90615a98565b60405180910390fd5b600081141561305f5761305a83836000613d6f565b613c03565b601160019054906101000a900460ff161561362d5761307c611beb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156130ea57506130ba611beb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156131235750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561315d575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156131765750600560149054906101000a900460ff16155b1561362c57601360009054906101000a900460ff161561334357613198611beb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561321f57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561327757507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156133425743601260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106132fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132f490615b50565b60405180910390fd5b43601260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133e65750602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561348d57600854811115613430576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161342790615be2565b60405180910390fd5b60095461343c83611738565b826134479190614b18565b1115613488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161347f90615c4e565b60405180910390fd5b61362b565b602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156135305750602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561357f5760085481111561357a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161357190615ce0565b60405180910390fd5b61362a565b602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613629576009546135dc83611738565b826135e79190614b18565b1115613628576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161361f90615c4e565b60405180910390fd5b5b5b5b5b5b600061363830611738565b90506000600a54821015905080801561365d5750601160009054906101000a900460ff165b80156136765750600560149054906101000a900460ff16155b80156136cc5750602160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137225750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137785750601f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156137bc576001600560146101000a81548160ff0219169083151502179055506137a0613ff0565b6000600560146101000a81548160ff0219169083151502179055505b600560149054906101000a900460ff161580156138225750602160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561383a5750600b60009054906101000a900460ff165b80156138555750600c54600d546138519190614b18565b4210155b80156138ab5750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156138ba576138b86142d7565b505b6000600560149054906101000a900460ff16159050601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139705750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561397a57600090505b60008115613bf357602160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156139dd57506000601854115b15613aaa57613a0a60646139fc60185488612e5d90919063ffffffff16565b612e7390919063ffffffff16565b9050601854601a5482613a1d9190614b6e565b613a279190614bf7565b601d6000828254613a389190614b18565b92505081905550601854601b5482613a509190614b6e565b613a5a9190614bf7565b601e6000828254613a6b9190614b18565b9250508190555060185460195482613a839190614b6e565b613a8d9190614bf7565b601c6000828254613a9e9190614b18565b92505081905550613bcf565b602160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613b0557506000601454115b15613bce57613b326064613b2460145488612e5d90919063ffffffff16565b612e7390919063ffffffff16565b905060145460165482613b459190614b6e565b613b4f9190614bf7565b601d6000828254613b609190614b18565b9250508190555060145460175482613b789190614b6e565b613b829190614bf7565b601e6000828254613b939190614b18565b9250508190555060145460155482613bab9190614b6e565b613bb59190614bf7565b601c6000828254613bc69190614b18565b925050819055505b5b6000811115613be457613be3873083613d6f565b5b8085613bf09190614c28565b94505b613bfe878787613d6f565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613ddf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613dd690615a06565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613e4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e4690615a98565b60405180910390fd5b613e5a83838361449d565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613ee0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ed790615d72565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613f739190614b18565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613fd79190614780565b60405180910390a3613fea8484846144a2565b50505050565b6000613ffb30611738565b90506000601e54601c54601d546140129190614b18565b61401c9190614b18565b905060008083148061402e5750600082145b1561403b575050506142d5565b6014600a5461404a9190614b6e565b831115614063576014600a546140609190614b6e565b92505b6000600283601d54866140769190614b6e565b6140809190614bf7565b61408a9190614bf7565b905060006140a18286612c0a90919063ffffffff16565b905060004790506140b182612c20565b60006140c68247612c0a90919063ffffffff16565b905060006140f1876140e3601c5485612e5d90919063ffffffff16565b612e7390919063ffffffff16565b9050600061411c8861410e601e5486612e5d90919063ffffffff16565b612e7390919063ffffffff16565b9050600081838561412d9190614c28565b6141379190614c28565b90506000601d819055506000601c819055506000601e81905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161419790614c8d565b60006040518083038185875af1925050503d80600081146141d4576040519150601f19603f3d011682016040523d82523d6000602084013e6141d9565b606091505b5050809850506000871180156141ef5750600081115b1561423c576141fe8782612e89565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601d5460405161423393929190614d34565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161428290614c8d565b60006040518083038185875af1925050503d80600081146142bf576040519150601f19603f3d011682016040523d82523d6000602084013e6142c4565b606091505b505080985050505050505050505050505b565b600042600d8190555060003073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040161433b91906147fd565b602060405180830381865afa158015614358573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061437c919061559c565b905060006143a961271061439b60105485612e5d90919063ffffffff16565b612e7390919063ffffffff16565b905060008111156143e2576143e17f000000000000000000000000000000000000000000000000000000000000000061dead83613d6f565b5b60007f000000000000000000000000000000000000000000000000000000000000000090508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561444f57600080fd5b505af1158015614463573d6000803e3d6000fd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a16001935050505090565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156144e15780820151818401526020810190506144c6565b838111156144f0576000848401525b50505050565b6000601f19601f8301169050919050565b6000614512826144a7565b61451c81856144b2565b935061452c8185602086016144c3565b614535816144f6565b840191505092915050565b6000602082019050818103600083015261455a8184614507565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061459282614567565b9050919050565b6145a281614587565b81146145ad57600080fd5b50565b6000813590506145bf81614599565b92915050565b6000819050919050565b6145d8816145c5565b81146145e357600080fd5b50565b6000813590506145f5816145cf565b92915050565b6000806040838503121561461257614611614562565b5b6000614620858286016145b0565b9250506020614631858286016145e6565b9150509250929050565b60008115159050919050565b6146508161463b565b82525050565b600060208201905061466b6000830184614647565b92915050565b61467a8161463b565b811461468557600080fd5b50565b60008135905061469781614671565b92915050565b6000602082840312156146b3576146b2614562565b5b60006146c184828501614688565b91505092915050565b6000602082840312156146e0576146df614562565b5b60006146ee848285016145b0565b91505092915050565b6000819050919050565b600061471c61471761471284614567565b6146f7565b614567565b9050919050565b600061472e82614701565b9050919050565b600061474082614723565b9050919050565b61475081614735565b82525050565b600060208201905061476b6000830184614747565b92915050565b61477a816145c5565b82525050565b60006020820190506147956000830184614771565b92915050565b6000806000606084860312156147b4576147b3614562565b5b60006147c2868287016145b0565b93505060206147d3868287016145b0565b92505060406147e4868287016145e6565b9150509250925092565b6147f781614587565b82525050565b600060208201905061481260008301846147ee565b92915050565b600060ff82169050919050565b61482e81614818565b82525050565b60006020820190506148496000830184614825565b92915050565b60008060006060848603121561486857614867614562565b5b6000614876868287016145e6565b9350506020614887868287016145e6565b925050604061489886828701614688565b9150509250925092565b600080604083850312156148b9576148b8614562565b5b60006148c7858286016145b0565b92505060206148d885828601614688565b9150509250929050565b600080604083850312156148f9576148f8614562565b5b6000614907858286016145e6565b9250506020614918858286016145e6565b9150509250929050565b60008060008060008060c0878903121561493f5761493e614562565b5b600061494d89828a016145e6565b965050602061495e89828a016145e6565b955050604061496f89828a016145e6565b945050606061498089828a016145e6565b935050608061499189828a016145e6565b92505060a06149a289828a016145e6565b9150509295509295509295565b6000602082840312156149c5576149c4614562565b5b60006149d3848285016145e6565b91505092915050565b600080604083850312156149f3576149f2614562565b5b6000614a01858286016145b0565b9250506020614a12858286016145b0565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614a6357607f821691505b60208210811415614a7757614a76614a1c565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614ab36020836144b2565b9150614abe82614a7d565b602082019050919050565b60006020820190508181036000830152614ae281614aa6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614b23826145c5565b9150614b2e836145c5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614b6357614b62614ae9565b5b828201905092915050565b6000614b79826145c5565b9150614b84836145c5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614bbd57614bbc614ae9565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614c02826145c5565b9150614c0d836145c5565b925082614c1d57614c1c614bc8565b5b828204905092915050565b6000614c33826145c5565b9150614c3e836145c5565b925082821015614c5157614c50614ae9565b5b828203905092915050565b600081905092915050565b50565b6000614c77600083614c5c565b9150614c8282614c67565b600082019050919050565b6000614c9882614c6a565b9150819050919050565b7f4661696c656420746f207472616e736665722045544820746f2064657620776160008201527f6c6c657400000000000000000000000000000000000000000000000000000000602082015250565b6000614cfe6024836144b2565b9150614d0982614ca2565b604082019050919050565b60006020820190508181036000830152614d2d81614cf1565b9050919050565b6000606082019050614d496000830186614771565b614d566020830185614771565b614d636040830184614771565b949350505050565b7f4661696c656420746f207472616e736665722045544820746f206d61726b657460008201527f696e672077616c6c657400000000000000000000000000000000000000000000602082015250565b6000614dc7602a836144b2565b9150614dd282614d6b565b604082019050919050565b60006020820190508181036000830152614df681614dba565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614e596028836144b2565b9150614e6482614dfd565b604082019050919050565b60006020820190508181036000830152614e8881614e4c565b9050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b6000614eeb6033836144b2565b9150614ef682614e8f565b604082019050919050565b60006020820190508181036000830152614f1a81614ede565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b6000614f7d6030836144b2565b9150614f8882614f21565b604082019050919050565b60006020820190508181036000830152614fac81614f70565b9050919050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b600061500f602f836144b2565b915061501a82614fb3565b604082019050919050565b6000602082019050818103600083015261503e81615002565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b60006150a16024836144b2565b91506150ac82615045565b604082019050919050565b600060208201905081810360008301526150d081615094565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006151336039836144b2565b915061513e826150d7565b604082019050919050565b6000602082019050818103600083015261516281615126565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006151c56025836144b2565b91506151d082615169565b604082019050919050565b600060208201905081810360008301526151f4816151b8565b9050919050565b7f4d757374206b656570206665657320617420333325206f72206c657373000000600082015250565b6000615231601d836144b2565b915061523c826151fb565b602082019050919050565b6000602082019050818103600083015261526081615224565b9050919050565b7f4d757374206b656570206665657320617420373525206f72206c657373000000600082015250565b600061529d601d836144b2565b91506152a882615267565b602082019050919050565b600060208201905081810360008301526152cc81615290565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061532f6035836144b2565b915061533a826152d3565b604082019050919050565b6000602082019050818103600083015261535e81615322565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006153c16034836144b2565b91506153cc82615365565b604082019050919050565b600060208201905081810360008301526153f0816153b4565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006154536026836144b2565b915061545e826153f7565b604082019050919050565b6000602082019050818103600083015261548281615446565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b60006154bf6020836144b2565b91506154ca82615489565b602082019050919050565b600060208201905081810360008301526154ee816154b2565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b6000615551602a836144b2565b915061555c826154f5565b604082019050919050565b6000602082019050818103600083015261558081615544565b9050919050565b600081519050615596816145cf565b92915050565b6000602082840312156155b2576155b1614562565b5b60006155c084828501615587565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006156256024836144b2565b9150615630826155c9565b604082019050919050565b6000602082019050818103600083015261565481615618565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006156b76022836144b2565b91506156c28261565b565b604082019050919050565b600060208201905081810360008301526156e6816156aa565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061575a81614599565b92915050565b60006020828403121561577657615775614562565b5b60006157848482850161574b565b91505092915050565b6000819050919050565b60006157b26157ad6157a88461578d565b6146f7565b6145c5565b9050919050565b6157c281615797565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6157fd81614587565b82525050565b600061580f83836157f4565b60208301905092915050565b6000602082019050919050565b6000615833826157c8565b61583d81856157d3565b9350615848836157e4565b8060005b838110156158795781516158608882615803565b975061586b8361581b565b92505060018101905061584c565b5085935050505092915050565b600060a08201905061589b6000830188614771565b6158a860208301876157b9565b81810360408301526158ba8186615828565b90506158c960608301856147ee565b6158d66080830184614771565b9695505050505050565b600060c0820190506158f560008301896147ee565b6159026020830188614771565b61590f60408301876157b9565b61591c60608301866157b9565b61592960808301856147ee565b61593660a0830184614771565b979650505050505050565b60008060006060848603121561595a57615959614562565b5b600061596886828701615587565b935050602061597986828701615587565b925050604061598a86828701615587565b9150509250925092565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006159f06025836144b2565b91506159fb82615994565b604082019050919050565b60006020820190508181036000830152615a1f816159e3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000615a826023836144b2565b9150615a8d82615a26565b604082019050919050565b60006020820190508181036000830152615ab181615a75565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000615b3a6049836144b2565b9150615b4582615ab8565b606082019050919050565b60006020820190508181036000830152615b6981615b2d565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000615bcc6035836144b2565b9150615bd782615b70565b604082019050919050565b60006020820190508181036000830152615bfb81615bbf565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000615c386013836144b2565b9150615c4382615c02565b602082019050919050565b60006020820190508181036000830152615c6781615c2b565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615cca6036836144b2565b9150615cd582615c6e565b604082019050919050565b60006020820190508181036000830152615cf981615cbd565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615d5c6026836144b2565b9150615d6782615d00565b604082019050919050565b60006020820190508181036000830152615d8b81615d4f565b905091905056fea26469706673582212205cdbc7cdced2a5b4e24c476174881c5b669658841c78c77a16e07d5f15b6258c64736f6c634300080a0033

Deployed Bytecode

0x6080604052600436106103905760003560e01c80637ebb640a116101dc578063afa4f3b211610102578063e2f45605116100a0578063f63743421161006f578063f637434214610d63578063f8b45b0514610d8e578063f928364c14610db9578063fe72b27a14610de457610397565b8063e2f4560514610cb9578063e884f26014610ce4578063f11a24d314610d0f578063f2fde38b14610d3a57610397565b8063c876d0b9116100dc578063c876d0b914610bfb578063c8c8ebe414610c26578063d85ba06314610c51578063dd62ed3e14610c7c57610397565b8063afa4f3b214610b58578063b62496f514610b95578063c024666814610bd257610397565b80639ec22c0e1161017a578063a4c82a0011610149578063a4c82a0014610a9e578063a9059cbb14610ac9578063aa60085014610b06578063aacebbe314610b2f57610397565b80639ec22c0e146109e05780639fccce3214610a0b578063a0d82dc514610a36578063a457c2d714610a6157610397565b806392136913116101b6578063921369131461093657806395d89b41146109615780639a7a23d61461098c5780639c3b4fdc146109b557610397565b80637ebb640a146108b75780638da5cb5b146108e05780638ea5220f1461090b57610397565b80632c3e486c116102c15780636a486a8e1161025f578063730c18881161022e578063730c18881461080f5780637571336a1461083857806375f0a874146108615780637bce5a041461088c57610397565b80636a486a8e146107655780636ddd17131461079057806370a08231146107bb578063715018a6146107f857610397565b8063395093511161029b578063395093511461069557806349bd5a5e146106d25780634a62bb65146106fd5780634fbee1931461072857610397565b80632c3e486c146106145780632e82f1a01461063f578063313ce5671461066a57610397565b80631816467f1161032e5780631a8145bb116103085780631a8145bb146105565780631f3fed8f1461058157806323b872dd146105ac57806327c8f835146105e957610397565b80631816467f146104d7578063184c16c514610500578063199ffc721461052b57610397565b806310d5de531161036a57806310d5de531461042d57806311befdcd1461046a5780631694505e1461048157806318160ddd146104ac57610397565b806306fdde031461039c578063095ea7b3146103c757806310a4cc661461040457610397565b3661039757005b600080fd5b3480156103a857600080fd5b506103b1610e21565b6040516103be9190614540565b60405180910390f35b3480156103d357600080fd5b506103ee60048036038101906103e991906145fb565b610eb3565b6040516103fb9190614656565b60405180910390f35b34801561041057600080fd5b5061042b6004803603810190610426919061469d565b610ed1565b005b34801561043957600080fd5b50610454600480360381019061044f91906146ca565b610f6a565b6040516104619190614656565b60405180910390f35b34801561047657600080fd5b5061047f610f89565b005b34801561048d57600080fd5b50610496611344565b6040516104a39190614756565b60405180910390f35b3480156104b857600080fd5b506104c1611368565b6040516104ce9190614780565b60405180910390f35b3480156104e357600080fd5b506104fe60048036038101906104f991906146ca565b611372565b005b34801561050c57600080fd5b506105156114ae565b6040516105229190614780565b60405180910390f35b34801561053757600080fd5b506105406114b4565b60405161054d9190614780565b60405180910390f35b34801561056257600080fd5b5061056b6114ba565b6040516105789190614780565b60405180910390f35b34801561058d57600080fd5b506105966114c0565b6040516105a39190614780565b60405180910390f35b3480156105b857600080fd5b506105d360048036038101906105ce919061479b565b6114c6565b6040516105e09190614656565b60405180910390f35b3480156105f557600080fd5b506105fe6115be565b60405161060b91906147fd565b60405180910390f35b34801561062057600080fd5b506106296115c4565b6040516106369190614780565b60405180910390f35b34801561064b57600080fd5b506106546115ca565b6040516106619190614656565b60405180910390f35b34801561067657600080fd5b5061067f6115dd565b60405161068c9190614834565b60405180910390f35b3480156106a157600080fd5b506106bc60048036038101906106b791906145fb565b6115e6565b6040516106c99190614656565b60405180910390f35b3480156106de57600080fd5b506106e7611692565b6040516106f491906147fd565b60405180910390f35b34801561070957600080fd5b506107126116b6565b60405161071f9190614656565b60405180910390f35b34801561073457600080fd5b5061074f600480360381019061074a91906146ca565b6116c9565b60405161075c9190614656565b60405180910390f35b34801561077157600080fd5b5061077a61171f565b6040516107879190614780565b60405180910390f35b34801561079c57600080fd5b506107a5611725565b6040516107b29190614656565b60405180910390f35b3480156107c757600080fd5b506107e260048036038101906107dd91906146ca565b611738565b6040516107ef9190614780565b60405180910390f35b34801561080457600080fd5b5061080d611780565b005b34801561081b57600080fd5b506108366004803603810190610831919061484f565b611808565b005b34801561084457600080fd5b5061085f600480360381019061085a91906148a2565b611948565b005b34801561086d57600080fd5b50610876611a1f565b60405161088391906147fd565b60405180910390f35b34801561089857600080fd5b506108a1611a45565b6040516108ae9190614780565b60405180910390f35b3480156108c357600080fd5b506108de60048036038101906108d991906148e2565b611a4b565b005b3480156108ec57600080fd5b506108f5611beb565b60405161090291906147fd565b60405180910390f35b34801561091757600080fd5b50610920611c15565b60405161092d91906147fd565b60405180910390f35b34801561094257600080fd5b5061094b611c3b565b6040516109589190614780565b60405180910390f35b34801561096d57600080fd5b50610976611c41565b6040516109839190614540565b60405180910390f35b34801561099857600080fd5b506109b360048036038101906109ae91906148a2565b611cd3565b005b3480156109c157600080fd5b506109ca611dec565b6040516109d79190614780565b60405180910390f35b3480156109ec57600080fd5b506109f5611df2565b604051610a029190614780565b60405180910390f35b348015610a1757600080fd5b50610a20611df8565b604051610a2d9190614780565b60405180910390f35b348015610a4257600080fd5b50610a4b611dfe565b604051610a589190614780565b60405180910390f35b348015610a6d57600080fd5b50610a886004803603810190610a8391906145fb565b611e04565b604051610a959190614656565b60405180910390f35b348015610aaa57600080fd5b50610ab3611eef565b604051610ac09190614780565b60405180910390f35b348015610ad557600080fd5b50610af06004803603810190610aeb91906145fb565b611ef5565b604051610afd9190614656565b60405180910390f35b348015610b1257600080fd5b50610b2d6004803603810190610b289190614922565b611f13565b005b348015610b3b57600080fd5b50610b566004803603810190610b5191906146ca565b612093565b005b348015610b6457600080fd5b50610b7f6004803603810190610b7a91906149af565b6121cf565b604051610b8c9190614656565b60405180910390f35b348015610ba157600080fd5b50610bbc6004803603810190610bb791906146ca565b612324565b604051610bc99190614656565b60405180910390f35b348015610bde57600080fd5b50610bf96004803603810190610bf491906148a2565b612344565b005b348015610c0757600080fd5b50610c10612469565b604051610c1d9190614656565b60405180910390f35b348015610c3257600080fd5b50610c3b61247c565b604051610c489190614780565b60405180910390f35b348015610c5d57600080fd5b50610c66612482565b604051610c739190614780565b60405180910390f35b348015610c8857600080fd5b50610ca36004803603810190610c9e91906149dc565b612488565b604051610cb09190614780565b60405180910390f35b348015610cc557600080fd5b50610cce61250f565b604051610cdb9190614780565b60405180910390f35b348015610cf057600080fd5b50610cf9612515565b604051610d069190614656565b60405180910390f35b348015610d1b57600080fd5b50610d246125b5565b604051610d319190614780565b60405180910390f35b348015610d4657600080fd5b50610d616004803603810190610d5c91906146ca565b6125bb565b005b348015610d6f57600080fd5b50610d786126b3565b604051610d859190614780565b60405180910390f35b348015610d9a57600080fd5b50610da36126b9565b604051610db09190614780565b60405180910390f35b348015610dc557600080fd5b50610dce6126bf565b604051610ddb9190614656565b60405180910390f35b348015610df057600080fd5b50610e0b6004803603810190610e0691906149af565b61275f565b604051610e189190614656565b60405180910390f35b606060038054610e3090614a4b565b80601f0160208091040260200160405190810160405280929190818152602001828054610e5c90614a4b565b8015610ea95780601f10610e7e57610100808354040283529160200191610ea9565b820191906000526020600020905b815481529060010190602001808311610e8c57829003601f168201915b5050505050905090565b6000610ec7610ec0612a37565b8484612a3f565b6001905092915050565b610ed9612a37565b73ffffffffffffffffffffffffffffffffffffffff16610ef7611beb565b73ffffffffffffffffffffffffffffffffffffffff1614610f4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4490614ac9565b60405180910390fd5b80601160006101000a81548160ff02191690831515021790555050565b602080528060005260406000206000915054906101000a900460ff1681565b610f91612a37565b73ffffffffffffffffffffffffffffffffffffffff16610faf611beb565b73ffffffffffffffffffffffffffffffffffffffff1614611005576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffc90614ac9565b60405180910390fd5b600061101030611738565b90506000601e54601c54601d546110279190614b18565b6110319190614b18565b90506000808314806110435750600082145b1561105057505050611342565b6000600283601d54866110639190614b6e565b61106d9190614bf7565b6110779190614bf7565b9050600061108e8286612c0a90919063ffffffff16565b9050600047905061109e82612c20565b60006110b38247612c0a90919063ffffffff16565b905060006110de876110d0601c5485612e5d90919063ffffffff16565b612e7390919063ffffffff16565b90506000611109886110fb601e5486612e5d90919063ffffffff16565b612e7390919063ffffffff16565b9050600081838561111a9190614c28565b6111249190614c28565b90506000601d819055506000601c819055506000601e81905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161118490614c8d565b60006040518083038185875af1925050503d80600081146111c1576040519150601f19603f3d011682016040523d82523d6000602084013e6111c6565b606091505b5050809850508761120c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120390614d14565b60405180910390fd5b60008711801561121c5750600081115b156112695761122b8782612e89565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601d5460405161126093929190614d34565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516112af90614c8d565b60006040518083038185875af1925050503d80600081146112ec576040519150601f19603f3d011682016040523d82523d6000602084013e6112f1565b606091505b50508098505087611337576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132e90614ddd565b60405180910390fd5b505050505050505050505b565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b61137a612a37565b73ffffffffffffffffffffffffffffffffffffffff16611398611beb565b73ffffffffffffffffffffffffffffffffffffffff16146113ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e590614ac9565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e5481565b60105481565b601d5481565b601c5481565b60006114d3848484612f65565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061151e612a37565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561159e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159590614e6f565b60405180910390fd5b6115b2856115aa612a37565b858403612a3f565b60019150509392505050565b61dead81565b600c5481565b600b60009054906101000a900460ff1681565b60006012905090565b60006116886115f3612a37565b848460016000611601612a37565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116839190614b18565b612a3f565b6001905092915050565b7f00000000000000000000000024a562f89bb485730e59594c4b6b742a4f1653d081565b601160019054906101000a900460ff1681565b6000601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60185481565b601160009054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611788612a37565b73ffffffffffffffffffffffffffffffffffffffff166117a6611beb565b73ffffffffffffffffffffffffffffffffffffffff16146117fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f390614ac9565b60405180910390fd5b6118066000613c08565b565b611810612a37565b73ffffffffffffffffffffffffffffffffffffffff1661182e611beb565b73ffffffffffffffffffffffffffffffffffffffff1614611884576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187b90614ac9565b60405180910390fd5b6102588310156118c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c090614f01565b60405180910390fd5b6103e882111580156118dc575060008210155b61191b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191290614f93565b60405180910390fd5b82600c819055508160108190555080600b60006101000a81548160ff021916908315150217905550505050565b611950612a37565b73ffffffffffffffffffffffffffffffffffffffff1661196e611beb565b73ffffffffffffffffffffffffffffffffffffffff16146119c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119bb90614ac9565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b611a53612a37565b73ffffffffffffffffffffffffffffffffffffffff16611a71611beb565b73ffffffffffffffffffffffffffffffffffffffff1614611ac7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abe90614ac9565b60405180910390fd5b670de0b6b3a76400006103e86001611add611368565b611ae79190614b6e565b611af19190614bf7565b611afb9190614bf7565b821015611b3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3490615025565b60405180910390fd5b670de0b6b3a764000082611b519190614b6e565b600881905550670de0b6b3a76400006103e86005611b6d611368565b611b779190614b6e565b611b819190614bf7565b611b8b9190614bf7565b811015611bcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc4906150b7565b60405180910390fd5b670de0b6b3a764000081611be19190614b6e565b6009819055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b606060048054611c5090614a4b565b80601f0160208091040260200160405190810160405280929190818152602001828054611c7c90614a4b565b8015611cc95780601f10611c9e57610100808354040283529160200191611cc9565b820191906000526020600020905b815481529060010190602001808311611cac57829003601f168201915b5050505050905090565b611cdb612a37565b73ffffffffffffffffffffffffffffffffffffffff16611cf9611beb565b73ffffffffffffffffffffffffffffffffffffffff1614611d4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4690614ac9565b60405180910390fd5b7f00000000000000000000000024a562f89bb485730e59594c4b6b742a4f1653d073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611dde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd590615149565b60405180910390fd5b611de88282613cce565b5050565b60175481565b600f5481565b601e5481565b601b5481565b60008060016000611e13612a37565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611ed0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec7906151db565b60405180910390fd5b611ee4611edb612a37565b85858403612a3f565b600191505092915050565b600d5481565b6000611f09611f02612a37565b8484612f65565b6001905092915050565b611f1b612a37565b73ffffffffffffffffffffffffffffffffffffffff16611f39611beb565b73ffffffffffffffffffffffffffffffffffffffff1614611f8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8690614ac9565b60405180910390fd5b856015819055508460168190555083601781905550601754601654601554611fb79190614b18565b611fc19190614b18565b6014819055506021601454111561200d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200490615247565b60405180910390fd5b8260198190555081601a8190555080601b819055506017546016546015546120359190614b18565b61203f9190614b18565b601881905550604b601454111561208b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612082906152b3565b60405180910390fd5b505050505050565b61209b612a37565b73ffffffffffffffffffffffffffffffffffffffff166120b9611beb565b73ffffffffffffffffffffffffffffffffffffffff161461210f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210690614ac9565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006121d9612a37565b73ffffffffffffffffffffffffffffffffffffffff166121f7611beb565b73ffffffffffffffffffffffffffffffffffffffff161461224d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224490614ac9565b60405180910390fd5b620186a0600161225b611368565b6122659190614b6e565b61226f9190614bf7565b8210156122b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a890615345565b60405180910390fd5b6103e860056122be611368565b6122c89190614b6e565b6122d29190614bf7565b821115612314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230b906153d7565b60405180910390fd5b81600a8190555060019050919050565b60216020528060005260406000206000915054906101000a900460ff1681565b61234c612a37565b73ffffffffffffffffffffffffffffffffffffffff1661236a611beb565b73ffffffffffffffffffffffffffffffffffffffff16146123c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b790614ac9565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161245d9190614656565b60405180910390a25050565b601360009054906101000a900460ff1681565b60085481565b60145481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b600061251f612a37565b73ffffffffffffffffffffffffffffffffffffffff1661253d611beb565b73ffffffffffffffffffffffffffffffffffffffff1614612593576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258a90614ac9565b60405180910390fd5b6000601360006101000a81548160ff0219169083151502179055506001905090565b60165481565b6125c3612a37565b73ffffffffffffffffffffffffffffffffffffffff166125e1611beb565b73ffffffffffffffffffffffffffffffffffffffff1614612637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262e90614ac9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156126a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269e90615469565b60405180910390fd5b6126b081613c08565b50565b601a5481565b60095481565b60006126c9612a37565b73ffffffffffffffffffffffffffffffffffffffff166126e7611beb565b73ffffffffffffffffffffffffffffffffffffffff161461273d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273490614ac9565b60405180910390fd5b6000601160016101000a81548160ff0219169083151502179055506001905090565b6000612769612a37565b73ffffffffffffffffffffffffffffffffffffffff16612787611beb565b73ffffffffffffffffffffffffffffffffffffffff16146127dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d490614ac9565b60405180910390fd5b600e54600f546127ed9190614b18565b421161282e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612825906154d5565b60405180910390fd5b6103e8821115612873576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286a90615567565b60405180910390fd5b42600f8190555060003073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000024a562f89bb485730e59594c4b6b742a4f1653d06040518263ffffffff1660e01b81526004016128d591906147fd565b602060405180830381865afa1580156128f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612916919061559c565b905060006129416127106129338685612e5d90919063ffffffff16565b612e7390919063ffffffff16565b9050600081111561297a576129797f00000000000000000000000024a562f89bb485730e59594c4b6b742a4f1653d061dead83613d6f565b5b60007f00000000000000000000000024a562f89bb485730e59594c4b6b742a4f1653d090508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156129e757600080fd5b505af11580156129fb573d6000803e3d6000fd5b505050507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb60405160405180910390a160019350505050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612aaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa69061563b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b16906156cd565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612bfd9190614780565b60405180910390a3505050565b60008183612c189190614c28565b905092915050565b6000600267ffffffffffffffff811115612c3d57612c3c6156ed565b5b604051908082528060200260200182016040528015612c6b5781602001602082028036833780820191505090505b5090503081600081518110612c8357612c8261571c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d4c9190615760565b81600181518110612d6057612d5f61571c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612dc5307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612a3f565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612e27959493929190615886565b600060405180830381600087803b158015612e4157600080fd5b505af1158015612e55573d6000803e3d6000fd5b505050505050565b60008183612e6b9190614b6e565b905092915050565b60008183612e819190614bf7565b905092915050565b612eb4307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612a3f565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612f1b969594939291906158e0565b60606040518083038185885af1158015612f39573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612f5e9190615941565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fcc90615a06565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161303c90615a98565b60405180910390fd5b600081141561305f5761305a83836000613d6f565b613c03565b601160019054906101000a900460ff161561362d5761307c611beb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156130ea57506130ba611beb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156131235750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561315d575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156131765750600560149054906101000a900460ff16155b1561362c57601360009054906101000a900460ff161561334357613198611beb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561321f57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561327757507f00000000000000000000000024a562f89bb485730e59594c4b6b742a4f1653d073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156133425743601260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106132fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132f490615b50565b60405180910390fd5b43601260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133e65750602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561348d57600854811115613430576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161342790615be2565b60405180910390fd5b60095461343c83611738565b826134479190614b18565b1115613488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161347f90615c4e565b60405180910390fd5b61362b565b602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156135305750602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561357f5760085481111561357a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161357190615ce0565b60405180910390fd5b61362a565b602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613629576009546135dc83611738565b826135e79190614b18565b1115613628576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161361f90615c4e565b60405180910390fd5b5b5b5b5b5b600061363830611738565b90506000600a54821015905080801561365d5750601160009054906101000a900460ff165b80156136765750600560149054906101000a900460ff16155b80156136cc5750602160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137225750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137785750601f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156137bc576001600560146101000a81548160ff0219169083151502179055506137a0613ff0565b6000600560146101000a81548160ff0219169083151502179055505b600560149054906101000a900460ff161580156138225750602160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561383a5750600b60009054906101000a900460ff165b80156138555750600c54600d546138519190614b18565b4210155b80156138ab5750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156138ba576138b86142d7565b505b6000600560149054906101000a900460ff16159050601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139705750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561397a57600090505b60008115613bf357602160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156139dd57506000601854115b15613aaa57613a0a60646139fc60185488612e5d90919063ffffffff16565b612e7390919063ffffffff16565b9050601854601a5482613a1d9190614b6e565b613a279190614bf7565b601d6000828254613a389190614b18565b92505081905550601854601b5482613a509190614b6e565b613a5a9190614bf7565b601e6000828254613a6b9190614b18565b9250508190555060185460195482613a839190614b6e565b613a8d9190614bf7565b601c6000828254613a9e9190614b18565b92505081905550613bcf565b602160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613b0557506000601454115b15613bce57613b326064613b2460145488612e5d90919063ffffffff16565b612e7390919063ffffffff16565b905060145460165482613b459190614b6e565b613b4f9190614bf7565b601d6000828254613b609190614b18565b9250508190555060145460175482613b789190614b6e565b613b829190614bf7565b601e6000828254613b939190614b18565b9250508190555060145460155482613bab9190614b6e565b613bb59190614bf7565b601c6000828254613bc69190614b18565b925050819055505b5b6000811115613be457613be3873083613d6f565b5b8085613bf09190614c28565b94505b613bfe878787613d6f565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613ddf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613dd690615a06565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613e4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e4690615a98565b60405180910390fd5b613e5a83838361449d565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613ee0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ed790615d72565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613f739190614b18565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613fd79190614780565b60405180910390a3613fea8484846144a2565b50505050565b6000613ffb30611738565b90506000601e54601c54601d546140129190614b18565b61401c9190614b18565b905060008083148061402e5750600082145b1561403b575050506142d5565b6014600a5461404a9190614b6e565b831115614063576014600a546140609190614b6e565b92505b6000600283601d54866140769190614b6e565b6140809190614bf7565b61408a9190614bf7565b905060006140a18286612c0a90919063ffffffff16565b905060004790506140b182612c20565b60006140c68247612c0a90919063ffffffff16565b905060006140f1876140e3601c5485612e5d90919063ffffffff16565b612e7390919063ffffffff16565b9050600061411c8861410e601e5486612e5d90919063ffffffff16565b612e7390919063ffffffff16565b9050600081838561412d9190614c28565b6141379190614c28565b90506000601d819055506000601c819055506000601e81905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161419790614c8d565b60006040518083038185875af1925050503d80600081146141d4576040519150601f19603f3d011682016040523d82523d6000602084013e6141d9565b606091505b5050809850506000871180156141ef5750600081115b1561423c576141fe8782612e89565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601d5460405161423393929190614d34565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161428290614c8d565b60006040518083038185875af1925050503d80600081146142bf576040519150601f19603f3d011682016040523d82523d6000602084013e6142c4565b606091505b505080985050505050505050505050505b565b600042600d8190555060003073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000024a562f89bb485730e59594c4b6b742a4f1653d06040518263ffffffff1660e01b815260040161433b91906147fd565b602060405180830381865afa158015614358573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061437c919061559c565b905060006143a961271061439b60105485612e5d90919063ffffffff16565b612e7390919063ffffffff16565b905060008111156143e2576143e17f00000000000000000000000024a562f89bb485730e59594c4b6b742a4f1653d061dead83613d6f565b5b60007f00000000000000000000000024a562f89bb485730e59594c4b6b742a4f1653d090508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561444f57600080fd5b505af1158015614463573d6000803e3d6000fd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a16001935050505090565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156144e15780820151818401526020810190506144c6565b838111156144f0576000848401525b50505050565b6000601f19601f8301169050919050565b6000614512826144a7565b61451c81856144b2565b935061452c8185602086016144c3565b614535816144f6565b840191505092915050565b6000602082019050818103600083015261455a8184614507565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061459282614567565b9050919050565b6145a281614587565b81146145ad57600080fd5b50565b6000813590506145bf81614599565b92915050565b6000819050919050565b6145d8816145c5565b81146145e357600080fd5b50565b6000813590506145f5816145cf565b92915050565b6000806040838503121561461257614611614562565b5b6000614620858286016145b0565b9250506020614631858286016145e6565b9150509250929050565b60008115159050919050565b6146508161463b565b82525050565b600060208201905061466b6000830184614647565b92915050565b61467a8161463b565b811461468557600080fd5b50565b60008135905061469781614671565b92915050565b6000602082840312156146b3576146b2614562565b5b60006146c184828501614688565b91505092915050565b6000602082840312156146e0576146df614562565b5b60006146ee848285016145b0565b91505092915050565b6000819050919050565b600061471c61471761471284614567565b6146f7565b614567565b9050919050565b600061472e82614701565b9050919050565b600061474082614723565b9050919050565b61475081614735565b82525050565b600060208201905061476b6000830184614747565b92915050565b61477a816145c5565b82525050565b60006020820190506147956000830184614771565b92915050565b6000806000606084860312156147b4576147b3614562565b5b60006147c2868287016145b0565b93505060206147d3868287016145b0565b92505060406147e4868287016145e6565b9150509250925092565b6147f781614587565b82525050565b600060208201905061481260008301846147ee565b92915050565b600060ff82169050919050565b61482e81614818565b82525050565b60006020820190506148496000830184614825565b92915050565b60008060006060848603121561486857614867614562565b5b6000614876868287016145e6565b9350506020614887868287016145e6565b925050604061489886828701614688565b9150509250925092565b600080604083850312156148b9576148b8614562565b5b60006148c7858286016145b0565b92505060206148d885828601614688565b9150509250929050565b600080604083850312156148f9576148f8614562565b5b6000614907858286016145e6565b9250506020614918858286016145e6565b9150509250929050565b60008060008060008060c0878903121561493f5761493e614562565b5b600061494d89828a016145e6565b965050602061495e89828a016145e6565b955050604061496f89828a016145e6565b945050606061498089828a016145e6565b935050608061499189828a016145e6565b92505060a06149a289828a016145e6565b9150509295509295509295565b6000602082840312156149c5576149c4614562565b5b60006149d3848285016145e6565b91505092915050565b600080604083850312156149f3576149f2614562565b5b6000614a01858286016145b0565b9250506020614a12858286016145b0565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614a6357607f821691505b60208210811415614a7757614a76614a1c565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614ab36020836144b2565b9150614abe82614a7d565b602082019050919050565b60006020820190508181036000830152614ae281614aa6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614b23826145c5565b9150614b2e836145c5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614b6357614b62614ae9565b5b828201905092915050565b6000614b79826145c5565b9150614b84836145c5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614bbd57614bbc614ae9565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614c02826145c5565b9150614c0d836145c5565b925082614c1d57614c1c614bc8565b5b828204905092915050565b6000614c33826145c5565b9150614c3e836145c5565b925082821015614c5157614c50614ae9565b5b828203905092915050565b600081905092915050565b50565b6000614c77600083614c5c565b9150614c8282614c67565b600082019050919050565b6000614c9882614c6a565b9150819050919050565b7f4661696c656420746f207472616e736665722045544820746f2064657620776160008201527f6c6c657400000000000000000000000000000000000000000000000000000000602082015250565b6000614cfe6024836144b2565b9150614d0982614ca2565b604082019050919050565b60006020820190508181036000830152614d2d81614cf1565b9050919050565b6000606082019050614d496000830186614771565b614d566020830185614771565b614d636040830184614771565b949350505050565b7f4661696c656420746f207472616e736665722045544820746f206d61726b657460008201527f696e672077616c6c657400000000000000000000000000000000000000000000602082015250565b6000614dc7602a836144b2565b9150614dd282614d6b565b604082019050919050565b60006020820190508181036000830152614df681614dba565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614e596028836144b2565b9150614e6482614dfd565b604082019050919050565b60006020820190508181036000830152614e8881614e4c565b9050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b6000614eeb6033836144b2565b9150614ef682614e8f565b604082019050919050565b60006020820190508181036000830152614f1a81614ede565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b6000614f7d6030836144b2565b9150614f8882614f21565b604082019050919050565b60006020820190508181036000830152614fac81614f70565b9050919050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b600061500f602f836144b2565b915061501a82614fb3565b604082019050919050565b6000602082019050818103600083015261503e81615002565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b60006150a16024836144b2565b91506150ac82615045565b604082019050919050565b600060208201905081810360008301526150d081615094565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006151336039836144b2565b915061513e826150d7565b604082019050919050565b6000602082019050818103600083015261516281615126565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006151c56025836144b2565b91506151d082615169565b604082019050919050565b600060208201905081810360008301526151f4816151b8565b9050919050565b7f4d757374206b656570206665657320617420333325206f72206c657373000000600082015250565b6000615231601d836144b2565b915061523c826151fb565b602082019050919050565b6000602082019050818103600083015261526081615224565b9050919050565b7f4d757374206b656570206665657320617420373525206f72206c657373000000600082015250565b600061529d601d836144b2565b91506152a882615267565b602082019050919050565b600060208201905081810360008301526152cc81615290565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061532f6035836144b2565b915061533a826152d3565b604082019050919050565b6000602082019050818103600083015261535e81615322565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006153c16034836144b2565b91506153cc82615365565b604082019050919050565b600060208201905081810360008301526153f0816153b4565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006154536026836144b2565b915061545e826153f7565b604082019050919050565b6000602082019050818103600083015261548281615446565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b60006154bf6020836144b2565b91506154ca82615489565b602082019050919050565b600060208201905081810360008301526154ee816154b2565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b6000615551602a836144b2565b915061555c826154f5565b604082019050919050565b6000602082019050818103600083015261558081615544565b9050919050565b600081519050615596816145cf565b92915050565b6000602082840312156155b2576155b1614562565b5b60006155c084828501615587565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006156256024836144b2565b9150615630826155c9565b604082019050919050565b6000602082019050818103600083015261565481615618565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006156b76022836144b2565b91506156c28261565b565b604082019050919050565b600060208201905081810360008301526156e6816156aa565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061575a81614599565b92915050565b60006020828403121561577657615775614562565b5b60006157848482850161574b565b91505092915050565b6000819050919050565b60006157b26157ad6157a88461578d565b6146f7565b6145c5565b9050919050565b6157c281615797565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6157fd81614587565b82525050565b600061580f83836157f4565b60208301905092915050565b6000602082019050919050565b6000615833826157c8565b61583d81856157d3565b9350615848836157e4565b8060005b838110156158795781516158608882615803565b975061586b8361581b565b92505060018101905061584c565b5085935050505092915050565b600060a08201905061589b6000830188614771565b6158a860208301876157b9565b81810360408301526158ba8186615828565b90506158c960608301856147ee565b6158d66080830184614771565b9695505050505050565b600060c0820190506158f560008301896147ee565b6159026020830188614771565b61590f60408301876157b9565b61591c60608301866157b9565b61592960808301856147ee565b61593660a0830184614771565b979650505050505050565b60008060006060848603121561595a57615959614562565b5b600061596886828701615587565b935050602061597986828701615587565b925050604061598a86828701615587565b9150509250925092565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006159f06025836144b2565b91506159fb82615994565b604082019050919050565b60006020820190508181036000830152615a1f816159e3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000615a826023836144b2565b9150615a8d82615a26565b604082019050919050565b60006020820190508181036000830152615ab181615a75565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000615b3a6049836144b2565b9150615b4582615ab8565b606082019050919050565b60006020820190508181036000830152615b6981615b2d565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000615bcc6035836144b2565b9150615bd782615b70565b604082019050919050565b60006020820190508181036000830152615bfb81615bbf565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000615c386013836144b2565b9150615c4382615c02565b602082019050919050565b60006020820190508181036000830152615c6781615c2b565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615cca6036836144b2565b9150615cd582615c6e565b604082019050919050565b60006020820190508181036000830152615cf981615cbd565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615d5c6026836144b2565b9150615d6782615d00565b604082019050919050565b60006020820190508181036000830152615d8b81615d4f565b905091905056fea26469706673582212205cdbc7cdced2a5b4e24c476174881c5b669658841c78c77a16e07d5f15b6258c64736f6c634300080a0033

Deployed Bytecode Sourcemap

11619:13381:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2346:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3089:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17542:78;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12847:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15193:1289;;;;;;;;;;;;;:::i;:::-;;11689:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2601:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18973:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12116:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12201:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12699:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12664;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3233:374;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11780:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12040:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12007:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2521:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3607:189;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11741:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12285:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19104:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12544:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12253:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2694:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;758:88;;;;;;;;;;;;;:::i;:::-;;23575:387;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17414:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11856:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12455;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17033:381;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;586:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11887:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12573:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2431:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18416:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12519:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12165:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12733:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12637:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3796:341;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12086:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2805:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17620:640;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18792:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16689:344;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12912:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18260:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12385:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11912:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12426:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2954:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11973:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16580:109;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12487:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;846:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12605:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11948:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16483:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24378:619;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2346:85;2400:13;2424:5;2417:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2346:85;:::o;3089:144::-;3172:4;3179:39;3188:12;:10;:12::i;:::-;3202:7;3211:6;3179:8;:39::i;:::-;3227:4;3220:11;;3089:144;;;;:::o;17542:78::-;701:12;:10;:12::i;:::-;690:23;;:7;:5;:7::i;:::-;:23;;;682:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17611:7:::1;17597:11;;:21;;;;;;;;;;;;;;;;;;17542:78:::0;:::o;12847:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;15193:1289::-;701:12;:10;:12::i;:::-;690:23;;:7;:5;:7::i;:::-;:23;;;682:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15242:23:::1;15268:24;15286:4;15268:9;:24::i;:::-;15242:50;;15293:25;15363:12;;15342:18;;15321;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;15293:82;;15376:12;15412:1:::0;15393:15:::1;:20;:46;;;;15438:1;15417:17;:22;15393:46;15389:62;;;15443:7;;;;;15389:62;15452:23;15539:1;15519:17;15497:18;;15479:15;:36;;;;:::i;:::-;15478:58;;;;:::i;:::-;:62;;;;:::i;:::-;15452:88;;15542:26;15571:36;15591:15;15571;:19;;:36;;;;:::i;:::-;15542:65;;15608:25;15636:21;15608:49;;15658:36;15675:18;15658:16;:36::i;:::-;15695:18;15716:44;15742:17;15716:21;:25;;:44;;;;:::i;:::-;15695:65;;15761:23;15787:57;15826:17;15787:34;15802:18;;15787:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;15761:83;;15845:17;15865:51;15898:17;15865:28;15880:12;;15865:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;15845:71;;15917:23;15974:9;15956:15;15943:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;15917:66;;16005:1;15984:18;:22;;;;16029:1;16008:18;:22;;;;16046:1;16031:12;:16;;;;16070:9;;;;;;;;;;;16062:23;;16093:9;16062:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16048:59;;;;;16116:7;16108:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;16187:1;16169:15;:19;:42;;;;;16210:1;16192:15;:19;16169:42;16165:175;;;16214:46;16227:15;16244;16214:12;:46::i;:::-;16267:71;16282:18;16302:15;16319:18;;16267:71;;;;;;;;:::i;:::-;;;;;;;;16165:175;16362:15;;;;;;;;;;;16354:29;;16391:21;16354:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16340:77;;;;;16426:7;16418:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;15241:1241;;;;;;;;;;753:1;15193:1289::o:0;11689:51::-;;;:::o;2601:93::-;2662:7;2680:12;;2673:19;;2601:93;:::o;18973:131::-;701:12;:10;:12::i;:::-;690:23;;:7;:5;:7::i;:::-;:23;;;682:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19070:9:::1;;;;;;;;;;;19042:38;;19059:9;19042:38;;;;;;;;;;;;19093:9;19081;;:21;;;;;;;;;;;;;;;;;;18973:131:::0;:::o;12116:47::-;;;;:::o;12201:36::-;;;;:::o;12699:33::-;;;;:::o;12664:::-;;;;:::o;3233:374::-;3338:4;3346:36;3356:6;3364:9;3375:6;3346:9;:36::i;:::-;3383:24;3410:11;:19;3422:6;3410:19;;;;;;;;;;;;;;;:33;3430:12;:10;:12::i;:::-;3410:33;;;;;;;;;;;;;;;;3383:60;;3472:6;3452:16;:26;;3444:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;3535:57;3544:6;3552:12;:10;:12::i;:::-;3585:6;3566:16;:25;3535:8;:57::i;:::-;3601:4;3594:11;;;3233:374;;;;;:::o;11780:53::-;11826:6;11780:53;:::o;12040:45::-;;;;:::o;12007:32::-;;;;;;;;;;;;;:::o;2521:80::-;2579:5;2596:2;2589:9;;2521:80;:::o;3607:189::-;3695:4;3702:80;3711:12;:10;:12::i;:::-;3725:7;3771:10;3734:11;:25;3746:12;:10;:12::i;:::-;3734:25;;;;;;;;;;;;;;;:34;3760:7;3734:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;3702:8;:80::i;:::-;3790:4;3783:11;;3607:189;;;;:::o;11741:38::-;;;:::o;12285:33::-;;;;;;;;;;;;;:::o;19104:110::-;19170:4;19184:19;:28;19204:7;19184:28;;;;;;;;;;;;;;;;;;;;;;;;;19177:35;;19104:110;;;:::o;12544:28::-;;;;:::o;12253:30::-;;;;;;;;;;;;;:::o;2694:111::-;2768:7;2785:9;:18;2795:7;2785:18;;;;;;;;;;;;;;;;2778:25;;2694:111;;;:::o;758:88::-;701:12;:10;:12::i;:::-;690:23;;:7;:5;:7::i;:::-;:23;;;682:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;814:30:::1;841:1;814:18;:30::i;:::-;758:88::o:0;23575:387::-;701:12;:10;:12::i;:::-;690:23;;:7;:5;:7::i;:::-;:23;;;682:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23717:3:::1;23694:19;:26;;23686:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;23796:4;23784:8;:16;;:33;;;;;23816:1;23804:8;:13;;23784:33;23776:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;23888:19;23870:15;:37;;;;23927:8;23908:16;:27;;;;23952:8;23936:13;;:24;;;;;;;;;;;;;;;;;;23575:387:::0;;;:::o;17414:128::-;701:12;:10;:12::i;:::-;690:23;;:7;:5;:7::i;:::-;:23;;;682:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17536:4:::1;17494:31;:39;17526:6;17494:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;17414:128:::0;;:::o;11856:30::-;;;;;;;;;;;;;:::o;12455:::-;;;;:::o;17033:381::-;701:12;:10;:12::i;:::-;690:23;;:7;:5;:7::i;:::-;:23;;;682:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17178:4:::1;17170;17165:1;17149:13;:11;:13::i;:::-;:17;;;;:::i;:::-;17148:26;;;;:::i;:::-;17147:35;;;;:::i;:::-;17135:8;:47;;17127:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;17269:6;17257:8;:19;;;;:::i;:::-;17234:20;:42;;;;17332:4;17324;17319:1;17303:13;:11;:13::i;:::-;:17;;;;:::i;:::-;17302:26;;;;:::i;:::-;17301:35;;;;:::i;:::-;17285:12;:51;;17277:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;17405:6;17389:12;:23;;;;:::i;:::-;17377:9;:35;;;;17033:381:::0;;:::o;586:71::-;632:7;649:6;;;;;;;;;;;642:13;;586:71;:::o;11887:24::-;;;;;;;;;;;;;:::o;12573:31::-;;;;:::o;2431:90::-;2487:13;2511:7;2504:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2431:90;:::o;18416:216::-;701:12;:10;:12::i;:::-;690:23;;:7;:5;:7::i;:::-;:23;;;682:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18512:13:::1;18504:21;;:4;:21;;;;18496:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;18589:41;18618:4;18624:5;18589:28;:41::i;:::-;18416:216:::0;;:::o;12519:24::-;;;;:::o;12165:35::-;;;;:::o;12733:27::-;;;;:::o;12637:25::-;;;;:::o;3796:341::-;3889:4;3896:24;3923:11;:25;3935:12;:10;:12::i;:::-;3923:25;;;;;;;;;;;;;;;:34;3949:7;3923:34;;;;;;;;;;;;;;;;3896:61;;3986:15;3966:16;:35;;3958:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4055:67;4064:12;:10;:12::i;:::-;4078:7;4106:15;4087:16;:34;4055:8;:67::i;:::-;4131:4;4124:11;;;3796:341;;;;:::o;12086:29::-;;;;:::o;2805:149::-;2891:4;2898:42;2908:12;:10;:12::i;:::-;2922:9;2933:6;2898:9;:42::i;:::-;2948:4;2941:11;;2805:149;;;;:::o;17620:640::-;701:12;:10;:12::i;:::-;690:23;;:7;:5;:7::i;:::-;:23;;;682:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17838:16:::1;17820:15;:34;;;;17873:16;17855:15;:34;;;;17902:10;17890:9;:22;;;;17964:9;;17946:15;;17928;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;17913:12;:60;;;;17998:2;17982:12;;:18;;17974:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;18055:17;18036:16;:36;;;;18092:17;18073:16;:36;;;;18124:11;18111:10;:24;;;;18188:9;;18170:15;;18152;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;18136:13;:61;;;;18222:2;18206:12;;:18;;18198:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;17620:640:::0;;;;;;:::o;18792:181::-;701:12;:10;:12::i;:::-;690:23;;:7;:5;:7::i;:::-;:23;;;682:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18918:15:::1;;;;;;;;;;;18875:59;;18898:18;18875:59;;;;;;;;;;;;18953:18;18935:15;;:36;;;;;;;;;;;;;;;;;;18792:181:::0;:::o;16689:344::-;16767:4;701:12;:10;:12::i;:::-;690:23;;:7;:5;:7::i;:::-;:23;;;682:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16818:6:::1;16813:1;16797:13;:11;:13::i;:::-;:17;;;;:::i;:::-;16796:28;;;;:::i;:::-;16783:9;:41;;16774:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;16926:4;16921:1;16905:13;:11;:13::i;:::-;:17;;;;:::i;:::-;16904:26;;;;:::i;:::-;16891:9;:39;;16883:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;17009:9;16988:18;:30;;;;17027:4;17020:11;;16689:344:::0;;;:::o;12912:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;18260:156::-;701:12;:10;:12::i;:::-;690:23;;:7;:5;:7::i;:::-;:23;;;682:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18366:8:::1;18335:19;:28;18355:7;18335:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;18396:7;18380:34;;;18405:8;18380:34;;;;;;:::i;:::-;;;;;;;;18260:156:::0;;:::o;12385:39::-;;;;;;;;;;;;;:::o;11912:35::-;;;;:::o;12426:27::-;;;;:::o;2954:135::-;3043:7;3060:11;:18;3072:5;3060:18;;;;;;;;;;;;;;;:27;3079:7;3060:27;;;;;;;;;;;;;;;;3053:34;;2954:135;;;;:::o;11973:33::-;;;;:::o;16580:109::-;16640:4;701:12;:10;:12::i;:::-;690:23;;:7;:5;:7::i;:::-;:23;;;682:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16670:5:::1;16647:20;;:28;;;;;;;;;;;;;;;;;;16683:4;16676:11;;16580:109:::0;:::o;12487:30::-;;;;:::o;846:177::-;701:12;:10;:12::i;:::-;690:23;;:7;:5;:7::i;:::-;:23;;;682:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;946:1:::1;926:22;;:8;:22;;;;918:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;993:28;1012:8;993:18;:28::i;:::-;846:177:::0;:::o;12605:31::-;;;;:::o;11948:24::-;;;;:::o;16483:97::-;16536:4;701:12;:10;:12::i;:::-;690:23;;:7;:5;:7::i;:::-;:23;;;682:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16561:5:::1;16544:14;;:22;;;;;;;;;;;;;;;;;;16574:4;16567:11;;16483:97:::0;:::o;24378:619::-;24462:4;701:12;:10;:12::i;:::-;690:23;;:7;:5;:7::i;:::-;:23;;;682:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24517:19:::1;;24494:20;;:42;;;;:::i;:::-;24476:15;:60;24468:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;24592:4;24581:7;:15;;24573:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;24667:15;24644:20;:38;;;;24683:28;24714:4;:14;;;24729:13;24714:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24683:60;;24744:20;24767:44;24805:5;24767:33;24792:7;24767:20;:24;;:33;;;;:::i;:::-;:37;;:44;;;;:::i;:::-;24744:67;;24831:1;24816:12;:16;24812:86;;;24835:61;24851:13;24874:6;24883:12;24835:15;:61::i;:::-;24812:86;24899:19;24936:13;24899:51;;24951:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24969:14;;;;;;;;;;24991:4;24984:11;;;;;24378:619:::0;;;:::o;217:82::-;270:7;287:10;280:17;;217:82;:::o;5509:297::-;5617:1;5600:19;;:5;:19;;;;5592:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5688:1;5669:21;;:7;:21;;;;5661:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5760:6;5730:11;:18;5742:5;5730:18;;;;;;;;;;;;;;;:27;5749:7;5730:27;;;;;;;;;;;;;;;:36;;;;5788:7;5772:32;;5781:5;5772:32;;;5797:6;5772:32;;;;;;:::i;:::-;;;;;;;;5509:297;;;:::o;6864:83::-;6922:7;6944:1;6940;:5;;;;:::i;:::-;6933:12;;6864:83;;;;:::o;21762:337::-;21818:21;21856:1;21842:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21818:40;;21877:4;21859;21864:1;21859:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;21893:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21883:4;21888:1;21883:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;21916:62;21933:4;21948:15;21966:11;21916:8;:62::i;:::-;21979:15;:66;;;22046:11;22058:1;22061:4;22074;22081:15;21979:118;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21817:282;21762:337;:::o;6947:84::-;7005:7;7027:1;7023;:5;;;;:::i;:::-;7016:12;;6947:84;;;;:::o;7031:::-;7089:7;7111:1;7107;:5;;;;:::i;:::-;7100:12;;7031:84;;;;:::o;22099:246::-;22170:62;22187:4;22202:15;22220:11;22170:8;:62::i;:::-;22233:15;:31;;;22272:9;22291:4;22297:11;22309:1;22312;11826:6;22327:15;22233:110;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22099:246;;:::o;19256:2506::-;19359:1;19343:18;;:4;:18;;;;19335:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19426:1;19412:16;;:2;:16;;;;19404:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19483:1;19473:6;:11;19469:56;;;19487:28;19503:4;19509:2;19513:1;19487:15;:28::i;:::-;19517:7;;19469:56;19529:14;;;;;;;;;;;19525:967;;;19558:7;:5;:7::i;:::-;19550:15;;:4;:15;;;;:32;;;;;19575:7;:5;:7::i;:::-;19569:13;;:2;:13;;;;19550:32;:51;;;;;19599:1;19585:16;;:2;:16;;;;19550:51;:75;;;;;19618:6;19604:21;;:2;:21;;;;19550:75;:87;;;;;19629:8;;;;;;;;;;;19628:9;19550:87;19546:945;;;19644:20;;;;;;;;;;;19640:309;;;19679:7;:5;:7::i;:::-;19673:13;;:2;:13;;;;:46;;;;;19703:15;19689:30;;:2;:30;;;;19673:46;:77;;;;;19736:13;19722:28;;:2;:28;;;;19673:77;19668:280;;;19802:12;19761:28;:39;19790:9;19761:39;;;;;;;;;;;;;;;;:53;19753:138;;;;;;;;;;;;:::i;:::-;;;;;;;;;19934:12;19892:28;:39;19921:9;19892:39;;;;;;;;;;;;;;;:54;;;;19668:280;19640:309;19954:25;:31;19980:4;19954:31;;;;;;;;;;;;;;;;;;;;;;;;;:70;;;;;19989:31;:35;20021:2;19989:35;;;;;;;;;;;;;;;;;;;;;;;;;19988:36;19954:70;19950:540;;;20045:20;;20035:6;:30;;20027:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;20158:9;;20141:13;20151:2;20141:9;:13::i;:::-;20132:6;:22;;;;:::i;:::-;:35;;20123:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19950:540;;;20201:25;:29;20227:2;20201:29;;;;;;;;;;;;;;;;;;;;;;;;;:70;;;;;20234:31;:37;20266:4;20234:37;;;;;;;;;;;;;;;;;;;;;;;;;20233:38;20201:70;20197:293;;;20292:20;;20282:6;:30;;20274:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;20197:293;;;20383:31;:35;20415:2;20383:35;;;;;;;;;;;;;;;;;;;;;;;;;20378:112;;20455:9;;20438:13;20448:2;20438:9;:13::i;:::-;20429:6;:22;;;;:::i;:::-;:35;;20421:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20378:112;20197:293;19950:540;19546:945;19525:967;20492:28;20523:24;20541:4;20523:9;:24::i;:::-;20492:55;;20548:12;20587:18;;20563:20;:42;;20548:57;;20610:7;:21;;;;;20620:11;;;;;;;;;;;20610:21;:33;;;;;20635:8;;;;;;;;;;;20634:9;20610:33;:68;;;;;20647:25;:31;20673:4;20647:31;;;;;;;;;;;;;;;;;;;;;;;;;20646:32;20610:68;:97;;;;;20682:19;:25;20702:4;20682:25;;;;;;;;;;;;;;;;;;;;;;;;;20681:26;20610:97;:124;;;;;20711:19;:23;20731:2;20711:23;;;;;;;;;;;;;;;;;;;;;;;;;20710:24;20610:124;20606:176;;;20748:4;20737:8;;:15;;;;;;;;;;;;;;;;;;20753:10;:8;:10::i;:::-;20775:5;20764:8;;:16;;;;;;;;;;;;;;;;;;20606:176;20787:8;;;;;;;;;;;20786:9;:41;;;;;20798:25;:29;20824:2;20798:29;;;;;;;;;;;;;;;;;;;;;;;;;20786:41;:57;;;;;20830:13;;;;;;;;;;;20786:57;:111;;;;;20882:15;;20865:14;;:32;;;;:::i;:::-;20846:15;:51;;20786:111;:140;;;;;20901:19;:25;20921:4;20901:25;;;;;;;;;;;;;;;;;;;;;;;;;20900:26;20786:140;20782:178;;;20929:29;:27;:29::i;:::-;;20782:178;20960:12;20976:8;;;;;;;;;;;20975:9;20960:24;;20989:19;:25;21009:4;20989:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;21018:19;:23;21038:2;21018:23;;;;;;;;;;;;;;;;;;;;;;;;;20989:52;20985:76;;;21054:5;21044:15;;20985:76;21061:12;21083:7;21079:648;;;21097:25;:29;21123:2;21097:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;21146:1;21130:13;;:17;21097:50;21093:559;;;21157:34;21187:3;21157:25;21168:13;;21157:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;21150:41;;21242:13;;21222:16;;21215:4;:23;;;;:::i;:::-;21214:41;;;;:::i;:::-;21192:18;;:63;;;;;;;:::i;:::-;;;;;;;;21294:13;;21280:10;;21273:4;:17;;;;:::i;:::-;21272:35;;;;:::i;:::-;21256:12;;:51;;;;;;;:::i;:::-;;;;;;;;21358:13;;21338:16;;21331:4;:23;;;;:::i;:::-;21330:41;;;;:::i;:::-;21308:18;;:63;;;;;;;:::i;:::-;;;;;;;;21093:559;;;21382:25;:31;21408:4;21382:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;21432:1;21417:12;;:16;21382:51;21378:274;;;21443:33;21472:3;21443:24;21454:12;;21443:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;21436:40;;21526:12;;21507:15;;21500:4;:22;;;;:::i;:::-;21499:39;;;;:::i;:::-;21477:18;;:61;;;;;;;:::i;:::-;;;;;;;;21576:12;;21563:9;;21556:4;:16;;;;:::i;:::-;21555:33;;;;:::i;:::-;21539:12;;:49;;;;;;;:::i;:::-;;;;;;;;21638:12;;21619:15;;21612:4;:22;;;;:::i;:::-;21611:39;;;;:::i;:::-;21589:18;;:61;;;;;;;:::i;:::-;;;;;;;;21378:274;21093:559;21663:1;21656:4;:8;21652:59;;;21667:42;21683:4;21697;21704;21667:15;:42::i;:::-;21652:59;21721:4;21711:14;;;;;:::i;:::-;;;21079:648;21727:33;21743:4;21749:2;21753:6;21727:15;:33::i;:::-;19334:2428;;;;19256:2506;;;;:::o;1025:160::-;1090:16;1109:6;;;;;;;;;;;1090:25;;1127:8;1118:6;;:17;;;;;;;;;;;;;;;;;;1173:8;1142:40;;1163:8;1142:40;;;;;;;;;;;;1088:97;1025:160;:::o;18632:::-;18739:5;18705:25;:31;18731:4;18705:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;18784:5;18750:40;;18778:4;18750:40;;;;;;;;;;;;18632:160;;:::o;4137:571::-;4249:1;4231:20;;:6;:20;;;;4223:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;4324:1;4303:23;;:9;:23;;;;4295:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;4367:47;4388:6;4396:9;4407:6;4367:20;:47::i;:::-;4415:21;4439:9;:17;4449:6;4439:17;;;;;;;;;;;;;;;;4415:41;;4482:6;4465:13;:23;;4457:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;4580:6;4564:13;:22;4544:9;:17;4554:6;4544:17;;;;;;;;;;;;;;;:42;;;;4612:6;4588:9;:20;4598:9;4588:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;4641:9;4624:35;;4633:6;4624:35;;;4652:6;4624:35;;;;;;:::i;:::-;;;;;;;;4660:46;4680:6;4688:9;4699:6;4660:19;:46::i;:::-;4222:486;4137:571;;;:::o;22345:1230::-;22374:23;22400:24;22418:4;22400:9;:24::i;:::-;22374:50;;22425:25;22493:12;;22473:18;;22453;;:38;;;;:::i;:::-;:52;;;;:::i;:::-;22425:80;;22506:12;22542:1;22523:15;:20;:46;;;;22568:1;22547:17;:22;22523:46;22519:62;;;22573:7;;;;;22519:62;22624:2;22603:18;;:23;;;;:::i;:::-;22585:15;:41;22581:91;;;22668:2;22647:18;;:23;;;;:::i;:::-;22629:41;;22581:91;22672:23;22757:1;22738:17;22717:18;;22699:15;:36;;;;:::i;:::-;22698:57;;;;:::i;:::-;:60;;;;:::i;:::-;22672:86;;22759:26;22788:36;22808:15;22788;:19;;:36;;;;:::i;:::-;22759:65;;22825:25;22853:21;22825:49;;22875:36;22892:18;22875:16;:36::i;:::-;22912:18;22933:44;22959:17;22933:21;:25;;:44;;;;:::i;:::-;22912:65;;22978:23;23004:57;23043:17;23004:34;23019:18;;23004:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;22978:83;;23062:17;23082:51;23115:17;23082:28;23097:12;;23082:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;23062:71;;23134:23;23191:9;23173:15;23160:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;23134:66;;23222:1;23201:18;:22;;;;23245:1;23224:18;:22;;;;23262:1;23247:12;:16;;;;23286:9;;;;;;;;;;;23278:23;;23309:9;23278:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23264:59;;;;;23346:1;23328:15;:19;:42;;;;;23369:1;23351:15;:19;23328:42;23324:172;;;23373:46;23386:15;23403;23373:12;:46::i;:::-;23425:69;23440:18;23459:15;23475:18;;23425:69;;;;;;;;:::i;:::-;;;;;;;;23324:172;23518:15;;;;;;;;;;;23510:29;;23547:21;23510:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23496:77;;;;;22373:1202;;;;;;;;;;22345:1230;:::o;23962:416::-;24019:4;24043:15;24026:14;:32;;;;24059:28;24090:4;:14;;;24105:13;24090:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24059:60;;24120:20;24143:53;24190:5;24143:42;24168:16;;24143:20;:24;;:42;;;;:::i;:::-;:46;;:53;;;;:::i;:::-;24120:76;;24216:1;24201:12;:16;24197:86;;;24220:61;24236:13;24259:6;24268:12;24220:15;:61::i;:::-;24197:86;24283:19;24320:13;24283:51;;24335:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24352:12;;;;;;;;;;24372:4;24365:11;;;;;23962:416;:::o;5806:90::-;;;;:::o;5896:91::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:116::-;3564:21;3579:5;3564:21;:::i;:::-;3557:5;3554:32;3544:60;;3600:1;3597;3590:12;3544:60;3494:116;:::o;3616:133::-;3659:5;3697:6;3684:20;3675:29;;3713:30;3737:5;3713:30;:::i;:::-;3616:133;;;;:::o;3755:323::-;3811:6;3860:2;3848:9;3839:7;3835:23;3831:32;3828:119;;;3866:79;;:::i;:::-;3828:119;3986:1;4011:50;4053:7;4044:6;4033:9;4029:22;4011:50;:::i;:::-;4001:60;;3957:114;3755:323;;;;:::o;4084:329::-;4143:6;4192:2;4180:9;4171:7;4167:23;4163:32;4160:119;;;4198:79;;:::i;:::-;4160:119;4318:1;4343:53;4388:7;4379:6;4368:9;4364:22;4343:53;:::i;:::-;4333:63;;4289:117;4084:329;;;;:::o;4419:60::-;4447:3;4468:5;4461:12;;4419:60;;;:::o;4485:142::-;4535:9;4568:53;4586:34;4595:24;4613:5;4595:24;:::i;:::-;4586:34;:::i;:::-;4568:53;:::i;:::-;4555:66;;4485:142;;;:::o;4633:126::-;4683:9;4716:37;4747:5;4716:37;:::i;:::-;4703:50;;4633:126;;;:::o;4765:153::-;4842:9;4875:37;4906:5;4875:37;:::i;:::-;4862:50;;4765:153;;;:::o;4924:185::-;5038:64;5096:5;5038:64;:::i;:::-;5033:3;5026:77;4924:185;;:::o;5115:276::-;5235:4;5273:2;5262:9;5258:18;5250:26;;5286:98;5381:1;5370:9;5366:17;5357:6;5286:98;:::i;:::-;5115:276;;;;:::o;5397:118::-;5484:24;5502:5;5484:24;:::i;:::-;5479:3;5472:37;5397:118;;:::o;5521:222::-;5614:4;5652:2;5641:9;5637:18;5629:26;;5665:71;5733:1;5722:9;5718:17;5709:6;5665:71;:::i;:::-;5521:222;;;;:::o;5749:619::-;5826:6;5834;5842;5891:2;5879:9;5870:7;5866:23;5862:32;5859:119;;;5897:79;;:::i;:::-;5859:119;6017:1;6042:53;6087:7;6078:6;6067:9;6063:22;6042:53;:::i;:::-;6032:63;;5988:117;6144:2;6170:53;6215:7;6206:6;6195:9;6191:22;6170:53;:::i;:::-;6160:63;;6115:118;6272:2;6298:53;6343:7;6334:6;6323:9;6319:22;6298:53;:::i;:::-;6288:63;;6243:118;5749:619;;;;;:::o;6374:118::-;6461:24;6479:5;6461:24;:::i;:::-;6456:3;6449:37;6374:118;;:::o;6498:222::-;6591:4;6629:2;6618:9;6614:18;6606:26;;6642:71;6710:1;6699:9;6695:17;6686:6;6642:71;:::i;:::-;6498:222;;;;:::o;6726:86::-;6761:7;6801:4;6794:5;6790:16;6779:27;;6726:86;;;:::o;6818:112::-;6901:22;6917:5;6901:22;:::i;:::-;6896:3;6889:35;6818:112;;:::o;6936:214::-;7025:4;7063:2;7052:9;7048:18;7040:26;;7076:67;7140:1;7129:9;7125:17;7116:6;7076:67;:::i;:::-;6936:214;;;;:::o;7156:613::-;7230:6;7238;7246;7295:2;7283:9;7274:7;7270:23;7266:32;7263:119;;;7301:79;;:::i;:::-;7263:119;7421:1;7446:53;7491:7;7482:6;7471:9;7467:22;7446:53;:::i;:::-;7436:63;;7392:117;7548:2;7574:53;7619:7;7610:6;7599:9;7595:22;7574:53;:::i;:::-;7564:63;;7519:118;7676:2;7702:50;7744:7;7735:6;7724:9;7720:22;7702:50;:::i;:::-;7692:60;;7647:115;7156:613;;;;;:::o;7775:468::-;7840:6;7848;7897:2;7885:9;7876:7;7872:23;7868:32;7865:119;;;7903:79;;:::i;:::-;7865:119;8023:1;8048:53;8093:7;8084:6;8073:9;8069:22;8048:53;:::i;:::-;8038:63;;7994:117;8150:2;8176:50;8218:7;8209:6;8198:9;8194:22;8176:50;:::i;:::-;8166:60;;8121:115;7775:468;;;;;:::o;8249:474::-;8317:6;8325;8374:2;8362:9;8353:7;8349:23;8345:32;8342:119;;;8380:79;;:::i;:::-;8342:119;8500:1;8525:53;8570:7;8561:6;8550:9;8546:22;8525:53;:::i;:::-;8515:63;;8471:117;8627:2;8653:53;8698:7;8689:6;8678:9;8674:22;8653:53;:::i;:::-;8643:63;;8598:118;8249:474;;;;;:::o;8729:1057::-;8833:6;8841;8849;8857;8865;8873;8922:3;8910:9;8901:7;8897:23;8893:33;8890:120;;;8929:79;;:::i;:::-;8890:120;9049:1;9074:53;9119:7;9110:6;9099:9;9095:22;9074:53;:::i;:::-;9064:63;;9020:117;9176:2;9202:53;9247:7;9238:6;9227:9;9223:22;9202:53;:::i;:::-;9192:63;;9147:118;9304:2;9330:53;9375:7;9366:6;9355:9;9351:22;9330:53;:::i;:::-;9320:63;;9275:118;9432:2;9458:53;9503:7;9494:6;9483:9;9479:22;9458:53;:::i;:::-;9448:63;;9403:118;9560:3;9587:53;9632:7;9623:6;9612:9;9608:22;9587:53;:::i;:::-;9577:63;;9531:119;9689:3;9716:53;9761:7;9752:6;9741:9;9737:22;9716:53;:::i;:::-;9706:63;;9660:119;8729:1057;;;;;;;;:::o;9792:329::-;9851:6;9900:2;9888:9;9879:7;9875:23;9871:32;9868:119;;;9906:79;;:::i;:::-;9868:119;10026:1;10051:53;10096:7;10087:6;10076:9;10072:22;10051:53;:::i;:::-;10041:63;;9997:117;9792:329;;;;:::o;10127:474::-;10195:6;10203;10252:2;10240:9;10231:7;10227:23;10223:32;10220:119;;;10258:79;;:::i;:::-;10220:119;10378:1;10403:53;10448:7;10439:6;10428:9;10424:22;10403:53;:::i;:::-;10393:63;;10349:117;10505:2;10531:53;10576:7;10567:6;10556:9;10552:22;10531:53;:::i;:::-;10521:63;;10476:118;10127:474;;;;;:::o;10607:180::-;10655:77;10652:1;10645:88;10752:4;10749:1;10742:15;10776:4;10773:1;10766:15;10793:320;10837:6;10874:1;10868:4;10864:12;10854:22;;10921:1;10915:4;10911:12;10942:18;10932:81;;10998:4;10990:6;10986:17;10976:27;;10932:81;11060:2;11052:6;11049:14;11029:18;11026:38;11023:84;;;11079:18;;:::i;:::-;11023:84;10844:269;10793:320;;;:::o;11119:182::-;11259:34;11255:1;11247:6;11243:14;11236:58;11119:182;:::o;11307:366::-;11449:3;11470:67;11534:2;11529:3;11470:67;:::i;:::-;11463:74;;11546:93;11635:3;11546:93;:::i;:::-;11664:2;11659:3;11655:12;11648:19;;11307:366;;;:::o;11679:419::-;11845:4;11883:2;11872:9;11868:18;11860:26;;11932:9;11926:4;11922:20;11918:1;11907:9;11903:17;11896:47;11960:131;12086:4;11960:131;:::i;:::-;11952:139;;11679:419;;;:::o;12104:180::-;12152:77;12149:1;12142:88;12249:4;12246:1;12239:15;12273:4;12270:1;12263:15;12290:305;12330:3;12349:20;12367:1;12349:20;:::i;:::-;12344:25;;12383:20;12401:1;12383:20;:::i;:::-;12378:25;;12537:1;12469:66;12465:74;12462:1;12459:81;12456:107;;;12543:18;;:::i;:::-;12456:107;12587:1;12584;12580:9;12573:16;;12290:305;;;;:::o;12601:348::-;12641:7;12664:20;12682:1;12664:20;:::i;:::-;12659:25;;12698:20;12716:1;12698:20;:::i;:::-;12693:25;;12886:1;12818:66;12814:74;12811:1;12808:81;12803:1;12796:9;12789:17;12785:105;12782:131;;;12893:18;;:::i;:::-;12782:131;12941:1;12938;12934:9;12923:20;;12601:348;;;;:::o;12955:180::-;13003:77;13000:1;12993:88;13100:4;13097:1;13090:15;13124:4;13121:1;13114:15;13141:185;13181:1;13198:20;13216:1;13198:20;:::i;:::-;13193:25;;13232:20;13250:1;13232:20;:::i;:::-;13227:25;;13271:1;13261:35;;13276:18;;:::i;:::-;13261:35;13318:1;13315;13311:9;13306:14;;13141:185;;;;:::o;13332:191::-;13372:4;13392:20;13410:1;13392:20;:::i;:::-;13387:25;;13426:20;13444:1;13426:20;:::i;:::-;13421:25;;13465:1;13462;13459:8;13456:34;;;13470:18;;:::i;:::-;13456:34;13515:1;13512;13508:9;13500:17;;13332:191;;;;:::o;13529:147::-;13630:11;13667:3;13652:18;;13529:147;;;;:::o;13682:114::-;;:::o;13802:398::-;13961:3;13982:83;14063:1;14058:3;13982:83;:::i;:::-;13975:90;;14074:93;14163:3;14074:93;:::i;:::-;14192:1;14187:3;14183:11;14176:18;;13802:398;;;:::o;14206:379::-;14390:3;14412:147;14555:3;14412:147;:::i;:::-;14405:154;;14576:3;14569:10;;14206:379;;;:::o;14591:223::-;14731:34;14727:1;14719:6;14715:14;14708:58;14800:6;14795:2;14787:6;14783:15;14776:31;14591:223;:::o;14820:366::-;14962:3;14983:67;15047:2;15042:3;14983:67;:::i;:::-;14976:74;;15059:93;15148:3;15059:93;:::i;:::-;15177:2;15172:3;15168:12;15161:19;;14820:366;;;:::o;15192:419::-;15358:4;15396:2;15385:9;15381:18;15373:26;;15445:9;15439:4;15435:20;15431:1;15420:9;15416:17;15409:47;15473:131;15599:4;15473:131;:::i;:::-;15465:139;;15192:419;;;:::o;15617:442::-;15766:4;15804:2;15793:9;15789:18;15781:26;;15817:71;15885:1;15874:9;15870:17;15861:6;15817:71;:::i;:::-;15898:72;15966:2;15955:9;15951:18;15942:6;15898:72;:::i;:::-;15980;16048:2;16037:9;16033:18;16024:6;15980:72;:::i;:::-;15617:442;;;;;;:::o;16065:229::-;16205:34;16201:1;16193:6;16189:14;16182:58;16274:12;16269:2;16261:6;16257:15;16250:37;16065:229;:::o;16300:366::-;16442:3;16463:67;16527:2;16522:3;16463:67;:::i;:::-;16456:74;;16539:93;16628:3;16539:93;:::i;:::-;16657:2;16652:3;16648:12;16641:19;;16300:366;;;:::o;16672:419::-;16838:4;16876:2;16865:9;16861:18;16853:26;;16925:9;16919:4;16915:20;16911:1;16900:9;16896:17;16889:47;16953:131;17079:4;16953:131;:::i;:::-;16945:139;;16672:419;;;:::o;17097:227::-;17237:34;17233:1;17225:6;17221:14;17214:58;17306:10;17301:2;17293:6;17289:15;17282:35;17097:227;:::o;17330:366::-;17472:3;17493:67;17557:2;17552:3;17493:67;:::i;:::-;17486:74;;17569:93;17658:3;17569:93;:::i;:::-;17687:2;17682:3;17678:12;17671:19;;17330:366;;;:::o;17702:419::-;17868:4;17906:2;17895:9;17891:18;17883:26;;17955:9;17949:4;17945:20;17941:1;17930:9;17926:17;17919:47;17983:131;18109:4;17983:131;:::i;:::-;17975:139;;17702:419;;;:::o;18127:238::-;18267:34;18263:1;18255:6;18251:14;18244:58;18336:21;18331:2;18323:6;18319:15;18312:46;18127:238;:::o;18371:366::-;18513:3;18534:67;18598:2;18593:3;18534:67;:::i;:::-;18527:74;;18610:93;18699:3;18610:93;:::i;:::-;18728:2;18723:3;18719:12;18712:19;;18371:366;;;:::o;18743:419::-;18909:4;18947:2;18936:9;18932:18;18924:26;;18996:9;18990:4;18986:20;18982:1;18971:9;18967:17;18960:47;19024:131;19150:4;19024:131;:::i;:::-;19016:139;;18743:419;;;:::o;19168:235::-;19308:34;19304:1;19296:6;19292:14;19285:58;19377:18;19372:2;19364:6;19360:15;19353:43;19168:235;:::o;19409:366::-;19551:3;19572:67;19636:2;19631:3;19572:67;:::i;:::-;19565:74;;19648:93;19737:3;19648:93;:::i;:::-;19766:2;19761:3;19757:12;19750:19;;19409:366;;;:::o;19781:419::-;19947:4;19985:2;19974:9;19970:18;19962:26;;20034:9;20028:4;20024:20;20020:1;20009:9;20005:17;19998:47;20062:131;20188:4;20062:131;:::i;:::-;20054:139;;19781:419;;;:::o;20206:234::-;20346:34;20342:1;20334:6;20330:14;20323:58;20415:17;20410:2;20402:6;20398:15;20391:42;20206:234;:::o;20446:366::-;20588:3;20609:67;20673:2;20668:3;20609:67;:::i;:::-;20602:74;;20685:93;20774:3;20685:93;:::i;:::-;20803:2;20798:3;20794:12;20787:19;;20446:366;;;:::o;20818:419::-;20984:4;21022:2;21011:9;21007:18;20999:26;;21071:9;21065:4;21061:20;21057:1;21046:9;21042:17;21035:47;21099:131;21225:4;21099:131;:::i;:::-;21091:139;;20818:419;;;:::o;21243:223::-;21383:34;21379:1;21371:6;21367:14;21360:58;21452:6;21447:2;21439:6;21435:15;21428:31;21243:223;:::o;21472:366::-;21614:3;21635:67;21699:2;21694:3;21635:67;:::i;:::-;21628:74;;21711:93;21800:3;21711:93;:::i;:::-;21829:2;21824:3;21820:12;21813:19;;21472:366;;;:::o;21844:419::-;22010:4;22048:2;22037:9;22033:18;22025:26;;22097:9;22091:4;22087:20;22083:1;22072:9;22068:17;22061:47;22125:131;22251:4;22125:131;:::i;:::-;22117:139;;21844:419;;;:::o;22269:244::-;22409:34;22405:1;22397:6;22393:14;22386:58;22478:27;22473:2;22465:6;22461:15;22454:52;22269:244;:::o;22519:366::-;22661:3;22682:67;22746:2;22741:3;22682:67;:::i;:::-;22675:74;;22758:93;22847:3;22758:93;:::i;:::-;22876:2;22871:3;22867:12;22860:19;;22519:366;;;:::o;22891:419::-;23057:4;23095:2;23084:9;23080:18;23072:26;;23144:9;23138:4;23134:20;23130:1;23119:9;23115:17;23108:47;23172:131;23298:4;23172:131;:::i;:::-;23164:139;;22891:419;;;:::o;23316:224::-;23456:34;23452:1;23444:6;23440:14;23433:58;23525:7;23520:2;23512:6;23508:15;23501:32;23316:224;:::o;23546:366::-;23688:3;23709:67;23773:2;23768:3;23709:67;:::i;:::-;23702:74;;23785:93;23874:3;23785:93;:::i;:::-;23903:2;23898:3;23894:12;23887:19;;23546:366;;;:::o;23918:419::-;24084:4;24122:2;24111:9;24107:18;24099:26;;24171:9;24165:4;24161:20;24157:1;24146:9;24142:17;24135:47;24199:131;24325:4;24199:131;:::i;:::-;24191:139;;23918:419;;;:::o;24343:179::-;24483:31;24479:1;24471:6;24467:14;24460:55;24343:179;:::o;24528:366::-;24670:3;24691:67;24755:2;24750:3;24691:67;:::i;:::-;24684:74;;24767:93;24856:3;24767:93;:::i;:::-;24885:2;24880:3;24876:12;24869:19;;24528:366;;;:::o;24900:419::-;25066:4;25104:2;25093:9;25089:18;25081:26;;25153:9;25147:4;25143:20;25139:1;25128:9;25124:17;25117:47;25181:131;25307:4;25181:131;:::i;:::-;25173:139;;24900:419;;;:::o;25325:179::-;25465:31;25461:1;25453:6;25449:14;25442:55;25325:179;:::o;25510:366::-;25652:3;25673:67;25737:2;25732:3;25673:67;:::i;:::-;25666:74;;25749:93;25838:3;25749:93;:::i;:::-;25867:2;25862:3;25858:12;25851:19;;25510:366;;;:::o;25882:419::-;26048:4;26086:2;26075:9;26071:18;26063:26;;26135:9;26129:4;26125:20;26121:1;26110:9;26106:17;26099:47;26163:131;26289:4;26163:131;:::i;:::-;26155:139;;25882:419;;;:::o;26307:240::-;26447:34;26443:1;26435:6;26431:14;26424:58;26516:23;26511:2;26503:6;26499:15;26492:48;26307:240;:::o;26553:366::-;26695:3;26716:67;26780:2;26775:3;26716:67;:::i;:::-;26709:74;;26792:93;26881:3;26792:93;:::i;:::-;26910:2;26905:3;26901:12;26894:19;;26553:366;;;:::o;26925:419::-;27091:4;27129:2;27118:9;27114:18;27106:26;;27178:9;27172:4;27168:20;27164:1;27153:9;27149:17;27142:47;27206:131;27332:4;27206:131;:::i;:::-;27198:139;;26925:419;;;:::o;27350:239::-;27490:34;27486:1;27478:6;27474:14;27467:58;27559:22;27554:2;27546:6;27542:15;27535:47;27350:239;:::o;27595:366::-;27737:3;27758:67;27822:2;27817:3;27758:67;:::i;:::-;27751:74;;27834:93;27923:3;27834:93;:::i;:::-;27952:2;27947:3;27943:12;27936:19;;27595:366;;;:::o;27967:419::-;28133:4;28171:2;28160:9;28156:18;28148:26;;28220:9;28214:4;28210:20;28206:1;28195:9;28191:17;28184:47;28248:131;28374:4;28248:131;:::i;:::-;28240:139;;27967:419;;;:::o;28392:225::-;28532:34;28528:1;28520:6;28516:14;28509:58;28601:8;28596:2;28588:6;28584:15;28577:33;28392:225;:::o;28623:366::-;28765:3;28786:67;28850:2;28845:3;28786:67;:::i;:::-;28779:74;;28862:93;28951:3;28862:93;:::i;:::-;28980:2;28975:3;28971:12;28964:19;;28623:366;;;:::o;28995:419::-;29161:4;29199:2;29188:9;29184:18;29176:26;;29248:9;29242:4;29238:20;29234:1;29223:9;29219:17;29212:47;29276:131;29402:4;29276:131;:::i;:::-;29268:139;;28995:419;;;:::o;29420:182::-;29560:34;29556:1;29548:6;29544:14;29537:58;29420:182;:::o;29608:366::-;29750:3;29771:67;29835:2;29830:3;29771:67;:::i;:::-;29764:74;;29847:93;29936:3;29847:93;:::i;:::-;29965:2;29960:3;29956:12;29949:19;;29608:366;;;:::o;29980:419::-;30146:4;30184:2;30173:9;30169:18;30161:26;;30233:9;30227:4;30223:20;30219:1;30208:9;30204:17;30197:47;30261:131;30387:4;30261:131;:::i;:::-;30253:139;;29980:419;;;:::o;30405:229::-;30545:34;30541:1;30533:6;30529:14;30522:58;30614:12;30609:2;30601:6;30597:15;30590:37;30405:229;:::o;30640:366::-;30782:3;30803:67;30867:2;30862:3;30803:67;:::i;:::-;30796:74;;30879:93;30968:3;30879:93;:::i;:::-;30997:2;30992:3;30988:12;30981:19;;30640:366;;;:::o;31012:419::-;31178:4;31216:2;31205:9;31201:18;31193:26;;31265:9;31259:4;31255:20;31251:1;31240:9;31236:17;31229:47;31293:131;31419:4;31293:131;:::i;:::-;31285:139;;31012:419;;;:::o;31437:143::-;31494:5;31525:6;31519:13;31510:22;;31541:33;31568:5;31541:33;:::i;:::-;31437:143;;;;:::o;31586:351::-;31656:6;31705:2;31693:9;31684:7;31680:23;31676:32;31673:119;;;31711:79;;:::i;:::-;31673:119;31831:1;31856:64;31912:7;31903:6;31892:9;31888:22;31856:64;:::i;:::-;31846:74;;31802:128;31586:351;;;;:::o;31943:223::-;32083:34;32079:1;32071:6;32067:14;32060:58;32152:6;32147:2;32139:6;32135:15;32128:31;31943:223;:::o;32172:366::-;32314:3;32335:67;32399:2;32394:3;32335:67;:::i;:::-;32328:74;;32411:93;32500:3;32411:93;:::i;:::-;32529:2;32524:3;32520:12;32513:19;;32172:366;;;:::o;32544:419::-;32710:4;32748:2;32737:9;32733:18;32725:26;;32797:9;32791:4;32787:20;32783:1;32772:9;32768:17;32761:47;32825:131;32951:4;32825:131;:::i;:::-;32817:139;;32544:419;;;:::o;32969:221::-;33109:34;33105:1;33097:6;33093:14;33086:58;33178:4;33173:2;33165:6;33161:15;33154:29;32969:221;:::o;33196:366::-;33338:3;33359:67;33423:2;33418:3;33359:67;:::i;:::-;33352:74;;33435:93;33524:3;33435:93;:::i;:::-;33553:2;33548:3;33544:12;33537:19;;33196:366;;;:::o;33568:419::-;33734:4;33772:2;33761:9;33757:18;33749:26;;33821:9;33815:4;33811:20;33807:1;33796:9;33792:17;33785:47;33849:131;33975:4;33849:131;:::i;:::-;33841:139;;33568:419;;;:::o;33993:180::-;34041:77;34038:1;34031:88;34138:4;34135:1;34128:15;34162:4;34159:1;34152:15;34179:180;34227:77;34224:1;34217:88;34324:4;34321:1;34314:15;34348:4;34345:1;34338:15;34365:143;34422:5;34453:6;34447:13;34438:22;;34469:33;34496:5;34469:33;:::i;:::-;34365:143;;;;:::o;34514:351::-;34584:6;34633:2;34621:9;34612:7;34608:23;34604:32;34601:119;;;34639:79;;:::i;:::-;34601:119;34759:1;34784:64;34840:7;34831:6;34820:9;34816:22;34784:64;:::i;:::-;34774:74;;34730:128;34514:351;;;;:::o;34871:85::-;34916:7;34945:5;34934:16;;34871:85;;;:::o;34962:158::-;35020:9;35053:61;35071:42;35080:32;35106:5;35080:32;:::i;:::-;35071:42;:::i;:::-;35053:61;:::i;:::-;35040:74;;34962:158;;;:::o;35126:147::-;35221:45;35260:5;35221:45;:::i;:::-;35216:3;35209:58;35126:147;;:::o;35279:114::-;35346:6;35380:5;35374:12;35364:22;;35279:114;;;:::o;35399:184::-;35498:11;35532:6;35527:3;35520:19;35572:4;35567:3;35563:14;35548:29;;35399:184;;;;:::o;35589:132::-;35656:4;35679:3;35671:11;;35709:4;35704:3;35700:14;35692:22;;35589:132;;;:::o;35727:108::-;35804:24;35822:5;35804:24;:::i;:::-;35799:3;35792:37;35727:108;;:::o;35841:179::-;35910:10;35931:46;35973:3;35965:6;35931:46;:::i;:::-;36009:4;36004:3;36000:14;35986:28;;35841:179;;;;:::o;36026:113::-;36096:4;36128;36123:3;36119:14;36111:22;;36026:113;;;:::o;36175:732::-;36294:3;36323:54;36371:5;36323:54;:::i;:::-;36393:86;36472:6;36467:3;36393:86;:::i;:::-;36386:93;;36503:56;36553:5;36503:56;:::i;:::-;36582:7;36613:1;36598:284;36623:6;36620:1;36617:13;36598:284;;;36699:6;36693:13;36726:63;36785:3;36770:13;36726:63;:::i;:::-;36719:70;;36812:60;36865:6;36812:60;:::i;:::-;36802:70;;36658:224;36645:1;36642;36638:9;36633:14;;36598:284;;;36602:14;36898:3;36891:10;;36299:608;;;36175:732;;;;:::o;36913:831::-;37176:4;37214:3;37203:9;37199:19;37191:27;;37228:71;37296:1;37285:9;37281:17;37272:6;37228:71;:::i;:::-;37309:80;37385:2;37374:9;37370:18;37361:6;37309:80;:::i;:::-;37436:9;37430:4;37426:20;37421:2;37410:9;37406:18;37399:48;37464:108;37567:4;37558:6;37464:108;:::i;:::-;37456:116;;37582:72;37650:2;37639:9;37635:18;37626:6;37582:72;:::i;:::-;37664:73;37732:3;37721:9;37717:19;37708:6;37664:73;:::i;:::-;36913:831;;;;;;;;:::o;37750:807::-;37999:4;38037:3;38026:9;38022:19;38014:27;;38051:71;38119:1;38108:9;38104:17;38095:6;38051:71;:::i;:::-;38132:72;38200:2;38189:9;38185:18;38176:6;38132:72;:::i;:::-;38214:80;38290:2;38279:9;38275:18;38266:6;38214:80;:::i;:::-;38304;38380:2;38369:9;38365:18;38356:6;38304:80;:::i;:::-;38394:73;38462:3;38451:9;38447:19;38438:6;38394:73;:::i;:::-;38477;38545:3;38534:9;38530:19;38521:6;38477:73;:::i;:::-;37750:807;;;;;;;;;:::o;38563:663::-;38651:6;38659;38667;38716:2;38704:9;38695:7;38691:23;38687:32;38684:119;;;38722:79;;:::i;:::-;38684:119;38842:1;38867:64;38923:7;38914:6;38903:9;38899:22;38867:64;:::i;:::-;38857:74;;38813:128;38980:2;39006:64;39062:7;39053:6;39042:9;39038:22;39006:64;:::i;:::-;38996:74;;38951:129;39119:2;39145:64;39201:7;39192:6;39181:9;39177:22;39145:64;:::i;:::-;39135:74;;39090:129;38563:663;;;;;:::o;39232:224::-;39372:34;39368:1;39360:6;39356:14;39349:58;39441:7;39436:2;39428:6;39424:15;39417:32;39232:224;:::o;39462:366::-;39604:3;39625:67;39689:2;39684:3;39625:67;:::i;:::-;39618:74;;39701:93;39790:3;39701:93;:::i;:::-;39819:2;39814:3;39810:12;39803:19;;39462:366;;;:::o;39834:419::-;40000:4;40038:2;40027:9;40023:18;40015:26;;40087:9;40081:4;40077:20;40073:1;40062:9;40058:17;40051:47;40115:131;40241:4;40115:131;:::i;:::-;40107:139;;39834:419;;;:::o;40259:222::-;40399:34;40395:1;40387:6;40383:14;40376:58;40468:5;40463:2;40455:6;40451:15;40444:30;40259:222;:::o;40487:366::-;40629:3;40650:67;40714:2;40709:3;40650:67;:::i;:::-;40643:74;;40726:93;40815:3;40726:93;:::i;:::-;40844:2;40839:3;40835:12;40828:19;;40487:366;;;:::o;40859:419::-;41025:4;41063:2;41052:9;41048:18;41040:26;;41112:9;41106:4;41102:20;41098:1;41087:9;41083:17;41076:47;41140:131;41266:4;41140:131;:::i;:::-;41132:139;;40859:419;;;:::o;41284:297::-;41424:34;41420:1;41412:6;41408:14;41401:58;41493:34;41488:2;41480:6;41476:15;41469:59;41562:11;41557:2;41549:6;41545:15;41538:36;41284:297;:::o;41587:366::-;41729:3;41750:67;41814:2;41809:3;41750:67;:::i;:::-;41743:74;;41826:93;41915:3;41826:93;:::i;:::-;41944:2;41939:3;41935:12;41928:19;;41587:366;;;:::o;41959:419::-;42125:4;42163:2;42152:9;42148:18;42140:26;;42212:9;42206:4;42202:20;42198:1;42187:9;42183:17;42176:47;42240:131;42366:4;42240:131;:::i;:::-;42232:139;;41959:419;;;:::o;42384:240::-;42524:34;42520:1;42512:6;42508:14;42501:58;42593:23;42588:2;42580:6;42576:15;42569:48;42384:240;:::o;42630:366::-;42772:3;42793:67;42857:2;42852:3;42793:67;:::i;:::-;42786:74;;42869:93;42958:3;42869:93;:::i;:::-;42987:2;42982:3;42978:12;42971:19;;42630:366;;;:::o;43002:419::-;43168:4;43206:2;43195:9;43191:18;43183:26;;43255:9;43249:4;43245:20;43241:1;43230:9;43226:17;43219:47;43283:131;43409:4;43283:131;:::i;:::-;43275:139;;43002:419;;;:::o;43427:169::-;43567:21;43563:1;43555:6;43551:14;43544:45;43427:169;:::o;43602:366::-;43744:3;43765:67;43829:2;43824:3;43765:67;:::i;:::-;43758:74;;43841:93;43930:3;43841:93;:::i;:::-;43959:2;43954:3;43950:12;43943:19;;43602:366;;;:::o;43974:419::-;44140:4;44178:2;44167:9;44163:18;44155:26;;44227:9;44221:4;44217:20;44213:1;44202:9;44198:17;44191:47;44255:131;44381:4;44255:131;:::i;:::-;44247:139;;43974:419;;;:::o;44399:241::-;44539:34;44535:1;44527:6;44523:14;44516:58;44608:24;44603:2;44595:6;44591:15;44584:49;44399:241;:::o;44646:366::-;44788:3;44809:67;44873:2;44868:3;44809:67;:::i;:::-;44802:74;;44885:93;44974:3;44885:93;:::i;:::-;45003:2;44998:3;44994:12;44987:19;;44646:366;;;:::o;45018:419::-;45184:4;45222:2;45211:9;45207:18;45199:26;;45271:9;45265:4;45261:20;45257:1;45246:9;45242:17;45235:47;45299:131;45425:4;45299:131;:::i;:::-;45291:139;;45018:419;;;:::o;45443:225::-;45583:34;45579:1;45571:6;45567:14;45560:58;45652:8;45647:2;45639:6;45635:15;45628:33;45443:225;:::o;45674:366::-;45816:3;45837:67;45901:2;45896:3;45837:67;:::i;:::-;45830:74;;45913:93;46002:3;45913:93;:::i;:::-;46031:2;46026:3;46022:12;46015:19;;45674:366;;;:::o;46046:419::-;46212:4;46250:2;46239:9;46235:18;46227:26;;46299:9;46293:4;46289:20;46285:1;46274:9;46270:17;46263:47;46327:131;46453:4;46327:131;:::i;:::-;46319:139;;46046:419;;;:::o

Swarm Source

ipfs://5cdbc7cdced2a5b4e24c476174881c5b669658841c78c77a16e07d5f15b6258c
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.