ERC-20
Overview
Max Total Supply
50,000,000 GLDNRTVR
Holders
27
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0 GLDNRTVRValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
GoldenRetriever
Compiler Version
v0.7.4+commit.3f05b770
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-06-17 */ /* ████████ ██ ██ ███████ ██████ ██████ ██ ██████ ███████ ███ ██ ██████ ███████ ████████ ██████ ██ ███████ ██ ██ ███████ ██████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ███████ █████ ██ ███ ██ ██ ██ ██ ██ █████ ██ ██ ██ ██████ █████ ██ ██████ ██ █████ ██ ██ █████ ██████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ███████ ██████ ██████ ███████ ██████ ███████ ██ ████ ██ ██ ███████ ██ ██ ██ ██ ███████ ████ ███████ ██ ██ Two things that have held true since the beginning of time. The first, dogs have given us unconditional love. The perfect example is The Golden Retriever. If you don’t believe in God go play with one and you will. The second is that Gold is the only real money. Put it on the blockchain it’s unstoppable. I have given you both. Rewards in real gold, and a website where you watch golden retrievers when you feel down and post your pics too, maybe for extra rewards one day as well. This contract will locked for quite some time. Use it well and save your gold, you will need it as the fiat markets crumble which is NOW. The gold rewards you receive are redeemable for real physical gold. You will see how on the website below. www.thegoldenretrievertoken.com https://t.me/GLDNRTVR_ETH Tokenomics: * 50 Million Supply * Buys : 3 Percent Auto LP, 2 Percent Marketing, 5 Percent PAXG Rewards * Sells: 5 Percent Auto LP, 2 Percent Marketing, 3 percent PAXG Rewards */ // SPDX-License-Identifier: MIT pragma solidity ^0.7.4; library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); function mul(int256 a, int256 b) internal pure returns (int256) { int256 c = a * b; require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } function div(int256 a, int256 b) internal pure returns (int256) { require(b != -1 || a != MIN_INT256); return a / b; } function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } function abs(int256 a) internal pure returns (int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0); return a % b; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address who) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function transfer(address to, uint256 value) external returns (bool); function approve(address spender, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } interface IPancakeSwapPair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IPancakeSwapRouter{ function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface IPancakeSwapFactory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IDividendDistributor { function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external; function setShare(address shareholder, uint256 amount) external; function deposit() external payable; function process(uint256 gas) external; } contract DividendDistributor is IDividendDistributor { using SafeMath for uint256; address _token; struct Share { uint256 amount; uint256 totalExcluded; uint256 totalRealised; } //Mainnet IERC20 PAX = IERC20(0x45804880De22913dAFE09f4980848ECE6EcbAf78); //Testnet // IERC20 PAX = IERC20(0xaD6D458402F60fD3Bd25163575031ACDce07538D); //DAI TOKEN IPancakeSwapRouter router; address[] shareholders; mapping (address => uint256) shareholderIndexes; mapping (address => uint256) shareholderClaims; mapping (address => Share) public shares; uint256 public totalShares; uint256 public totalDividends; uint256 public totalDistributed; uint256 public dividendsPerShare; uint256 public currentIndex; uint256 public dividendsPerShareAccuracyFactor = 10 ** 36; uint256 public minPeriod = 1 hours; uint256 public minDistribution = 1 * (10 ** 18); bool initialized; modifier initialization() { require(!initialized); _; initialized = true; } modifier onlyToken() { require(msg.sender == _token); _; } constructor (address _router) { router = _router != address(0) ? IPancakeSwapRouter(_router) : IPancakeSwapRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); _token = msg.sender; } function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyToken { minPeriod = _minPeriod; minDistribution = _minDistribution; } function setShare(address shareholder, uint256 amount) external override onlyToken { if(shares[shareholder].amount > 0){ distributeDividend(shareholder); } if(amount > 0 && shares[shareholder].amount == 0){ addShareholder(shareholder); }else if(amount == 0 && shares[shareholder].amount > 0){ removeShareholder(shareholder); } totalShares = totalShares.sub(shares[shareholder].amount).add(amount); shares[shareholder].amount = amount; shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); } function rescueToken(address tokenAddress,address _receiver, uint256 tokens) external onlyToken returns (bool success){ return IERC20(tokenAddress).transfer(_receiver, tokens); } function deposit() external payable override onlyToken { uint256 balanceBefore = PAX.balanceOf(address(this)); address[] memory path = new address[](2); path[0] = router.WETH(); path[1] = address(PAX); router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}( 0, path, address(this), block.timestamp ); uint256 amount = PAX.balanceOf(address(this)).sub(balanceBefore); totalDividends = totalDividends.add(amount); dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares)); } function process(uint256 gas) external override onlyToken { uint256 shareholderCount = shareholders.length; if(shareholderCount == 0) { return; } uint256 gasUsed = 0; uint256 gasLeft = gasleft(); uint256 iterations = 0; while(gasUsed < gas && iterations < shareholderCount) { if(currentIndex >= shareholderCount){ currentIndex = 0; } if(shouldDistribute(shareholders[currentIndex])){ distributeDividend(shareholders[currentIndex]); } gasUsed = gasUsed.add(gasLeft.sub(gasleft())); gasLeft = gasleft(); currentIndex++; iterations++; } } function shouldDistribute(address shareholder) internal view returns (bool) { return shareholderClaims[shareholder] + minPeriod < block.timestamp && getUnpaidEarnings(shareholder) > minDistribution; } function distributeDividend(address shareholder) internal { if(shares[shareholder].amount == 0){ return; } uint256 amount = getUnpaidEarnings(shareholder); if(amount > 0){ totalDistributed = totalDistributed.add(amount); PAX.transfer(shareholder, amount); shareholderClaims[shareholder] = block.timestamp; shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount); shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); } } function claimDividend() external { distributeDividend(msg.sender); } function getUnpaidEarnings(address shareholder) public view returns (uint256) { if(shares[shareholder].amount == 0){ return 0; } uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount); uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded; if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; } return shareholderTotalDividends.sub(shareholderTotalExcluded); } function getCumulativeDividends(uint256 share) internal view returns (uint256) { return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor); } function addShareholder(address shareholder) internal { shareholderIndexes[shareholder] = shareholders.length; shareholders.push(shareholder); } function removeShareholder(address shareholder) internal { shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1]; shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder]; shareholders.pop(); } } contract Ownable { address private _owner; event OwnershipRenounced(address indexed previousOwner); event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { _owner = msg.sender; } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(isOwner()); _; } function isOwner() public view returns (bool) { return msg.sender == _owner; } function renounceOwnership() public onlyOwner { emit OwnershipRenounced(_owner); _owner = address(0); } function transferOwnership(address newOwner) public onlyOwner { _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal { require(newOwner != address(0)); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } abstract contract ERC20Detailed is IERC20 { string private _name; string private _symbol; uint8 private _decimals; constructor( string memory name_, string memory symbol_, uint8 decimals_ ) { _name = name_; _symbol = symbol_; _decimals = decimals_; } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } } contract GoldenRetriever is ERC20Detailed, Ownable { using SafeMath for uint256; using SafeMathInt for int256; modifier validRecipient(address to) { require(to != address(0x0)); _; } uint256 public buyLiquidityFee = 30; uint256 public buyMarketingFee = 20; uint256 public buyRewardsFee = 50; uint256 public sellLiquidityFee = 50; uint256 public sellMarketingFee = 20; uint256 public sellRewardsFee = 30; uint256 public AmountLiquidityFee; uint256 public AmountMarketingFee; uint256 public AmountRewardsFee; uint256 public feeDenominator = 1000; address public _marketingWalletAddress = 0x76b61a1AFe8711F431d3d6F770E8fE7e7004E871; address private constant deadWallet = 0x000000000000000000000000000000000000dEaD; address private constant ZeroWallet = 0x0000000000000000000000000000000000000000; mapping(address => bool) public blacklist; mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public isTxLimitExempt; mapping (address => bool) public isWalletLimitExempt; mapping (address => bool) public automatedMarketMakerPairs; mapping(address => bool) public isDividendExempt; mapping (address => bool) private allowTransfer; uint256 public constant DECIMALS = 18; uint256 public _totalSupply = 50_000_000 * (10 ** DECIMALS); uint256 public swapTokensAtAmount = _totalSupply.mul(5).div(1e5); //0.05% uint256 public MaxWalletLimit = _totalSupply.mul(30).div(feeDenominator); //3% uint256 public MaxTxLimit = _totalSupply.mul(15).div(feeDenominator); //1.5% bool public EnableTransactionLimit = true; bool public checkWalletLimit = true; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; bool public _autoAddLiquidity = true; bool public initalDistribution; DividendDistributor distributor; address public GLDNRTVRDividendReceiver; uint256 distributorGas = 500000; address public pair; IPancakeSwapPair public pairContract; IPancakeSwapRouter public router; bool inSwap = false; modifier swapping() { inSwap = true; _; inSwap = false; } constructor() ERC20Detailed("THE GOLDEN RETRIEVER", "GLDNRTVR", uint8(DECIMALS)) Ownable() { router = IPancakeSwapRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); pair = IPancakeSwapFactory(router.factory()).createPair( router.WETH(), address(this) ); _allowances[address(this)][address(router)] = uint256(-1); pairContract = IPancakeSwapPair(pair); automatedMarketMakerPairs[pair] = true; distributor = new DividendDistributor(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); GLDNRTVRDividendReceiver = address(distributor); isDividendExempt[owner()] = true; isDividendExempt[pair] = true; isDividendExempt[address(this)] = true; isDividendExempt[deadWallet] = true; isDividendExempt[ZeroWallet] = true; isWalletLimitExempt[owner()] = true; isWalletLimitExempt[pair] = true; isWalletLimitExempt[address(this)] = true; _isExcludedFromFees[owner()] = true; _isExcludedFromFees[address(this)] = true; isTxLimitExempt[owner()] = true; isTxLimitExempt[address(this)] = true; _balances[owner()] = _totalSupply; emit Transfer(address(0x0), owner(), _totalSupply); } function transfer(address to, uint256 value) external override validRecipient(to) returns (bool) { _transferFrom(msg.sender, to, value); return true; } function transferFrom( address from, address to, uint256 value ) external override validRecipient(to) returns (bool) { if (_allowances[from][msg.sender] != uint256(-1)) { _allowances[from][msg.sender] = _allowances[from][ msg.sender ].sub(value, "Insufficient Allowance"); } _transferFrom(from, to, value); return true; } function _basicTransfer( address from, address to, uint256 amount ) internal returns (bool) { _balances[from] = _balances[from].sub(amount); _balances[to] = _balances[to].add(amount); return true; } function _transferFrom( address sender, address recipient, uint256 amount ) internal returns (bool) { require(!blacklist[sender] && !blacklist[recipient], "in_blacklist"); require(initalDistribution || allowTransfer[msg.sender] || isOwner() ,"Trade is Currently Paused!!"); if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient] && EnableTransactionLimit) { require(amount <= MaxTxLimit, "Transfer amount exceeds the maxTxAmount."); } if (inSwap) { return _basicTransfer(sender, recipient, amount); } if (shouldAddLiquidity()) { addLiquidity(); } if (shouldSwapBack()) { swapBack(); } _balances[sender] = _balances[sender].sub(amount); uint256 AmountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount; _balances[recipient] = _balances[recipient].add(AmountReceived); if(checkWalletLimit && !isWalletLimitExempt[recipient]) { require(balanceOf(recipient).add(AmountReceived) <= MaxWalletLimit); } if(!isDividendExempt[sender]){ try distributor.setShare(sender, balanceOf(sender)) {} catch {} } if(!isDividendExempt[recipient]){ try distributor.setShare(recipient, balanceOf(recipient)) {} catch {} } try distributor.process(distributorGas) {} catch {} emit Transfer(sender,recipient,AmountReceived); return true; } function takeFee( address sender, address recipient, uint256 amount ) internal returns (uint256) { uint256 feeAmount; uint LFEE; uint MFEE; uint RFEE; if(automatedMarketMakerPairs[sender]){ LFEE = amount.mul(buyLiquidityFee).div(feeDenominator); AmountLiquidityFee += LFEE; MFEE = amount.mul(buyMarketingFee).div(feeDenominator); AmountMarketingFee += MFEE; RFEE = amount.mul(buyRewardsFee).div(feeDenominator); AmountRewardsFee += RFEE; feeAmount = LFEE.add(MFEE).add(RFEE); } else if(automatedMarketMakerPairs[recipient]){ LFEE = amount.mul(sellLiquidityFee).div(feeDenominator); AmountLiquidityFee += LFEE; MFEE = amount.mul(sellMarketingFee).div(feeDenominator); AmountMarketingFee += MFEE; RFEE = amount.mul(sellRewardsFee).div(feeDenominator); AmountRewardsFee += RFEE; feeAmount = LFEE.add(MFEE).add(RFEE); } if(feeAmount > 0) { _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); } return amount.sub(feeAmount); } function manualSwap() public onlyOwner swapping { if(AmountLiquidityFee > 0) swapForLiquidity(AmountLiquidityFee); if(AmountMarketingFee > 0) swapForMarketing(AmountMarketingFee); if(AmountRewardsFee > 0) swapAndSendDivident(AmountRewardsFee); } function addLiquidity() internal swapping { if(AmountLiquidityFee > 0){ swapForLiquidity(AmountLiquidityFee); } if(AmountMarketingFee > 0){ swapForMarketing(AmountMarketingFee); } } function swapBack() internal swapping { if(AmountRewardsFee > 0){ swapAndSendDivident(AmountRewardsFee); } } function swapAndSendDivident(uint256 _tokens) private { uint initialBalance = address(this).balance; swapTokensForEth(_tokens); uint ReceivedBalance = address(this).balance.sub(initialBalance); AmountRewardsFee = AmountRewardsFee.sub(_tokens); try distributor.deposit { value: ReceivedBalance } () {} catch {} } function shouldTakeFee(address from, address to) internal view returns (bool) { if(_isExcludedFromFees[from] || _isExcludedFromFees[to]){ return false; } else{ return (automatedMarketMakerPairs[from] || automatedMarketMakerPairs[to]); } } function shouldAddLiquidity() internal view returns (bool) { uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; return _autoAddLiquidity && !inSwap && canSwap && !automatedMarketMakerPairs[msg.sender]; } function shouldSwapBack() internal view returns (bool) { return !inSwap && !automatedMarketMakerPairs[msg.sender]; } function setAutoAddLiquidity(bool _flag) external onlyOwner { if(_flag) { _autoAddLiquidity = _flag; } else { _autoAddLiquidity = _flag; } } function allowance(address owner_, address spender) external view override returns (uint256) { return _allowances[owner_][spender]; } function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) { uint256 oldValue = _allowances[msg.sender][spender]; if (subtractedValue >= oldValue) { _allowances[msg.sender][spender] = 0; } else { _allowances[msg.sender][spender] = oldValue.sub( subtractedValue ); } emit Approval( msg.sender, spender, _allowances[msg.sender][spender] ); return true; } function increaseAllowance(address spender, uint256 addedValue) external returns (bool) { _allowances[msg.sender][spender] = _allowances[msg.sender][ spender ].add(addedValue); emit Approval( msg.sender, spender, _allowances[msg.sender][spender] ); return true; } function approve(address spender, uint256 value) external override returns (bool) { _approve(msg.sender,spender,value); return true; } 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 checkFeeExempt(address _addr) external view returns (bool) { return _isExcludedFromFees[_addr]; } function enableDisableTxLimit(bool _status) public onlyOwner { EnableTransactionLimit = _status; } function enableDisableWalletLimit(bool _status) public onlyOwner { checkWalletLimit = _status; } function setWhitelistTransfer(address _adr, bool _status) public onlyOwner { allowTransfer[_adr] = _status; } function setInitialDistribution(bool _status) public onlyOwner{ require(initalDistribution != _status,"Not Changed!!"); initalDistribution = _status; } function setBuyFee( uint _newLp, uint _newMarketing, uint _newReward ) public onlyOwner { buyLiquidityFee = _newLp; buyMarketingFee = _newMarketing; buyRewardsFee = _newReward; } function setSellFee( uint _newLp, uint _newMarketing, uint _newReward ) public onlyOwner { sellLiquidityFee = _newLp; sellMarketingFee = _newMarketing; sellRewardsFee = _newReward; } function setIsDividendExempt(address holder, bool exempt) external onlyOwner { require(holder != address(this) && !automatedMarketMakerPairs[holder]); isDividendExempt[holder] = exempt; if (exempt) { distributor.setShare(holder, 0); } else { distributor.setShare(holder, balanceOf(holder)); } } function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external onlyOwner { distributor.setDistributionCriteria(_minPeriod, _minDistribution); } function clearStuckBalance(address _receiver) external onlyOwner { uint256 balance = address(this).balance; payable(_receiver).transfer(balance); } function rescueToken(address tokenAddress,address _receiver, uint256 tokens) external onlyOwner returns (bool success){ return IERC20(tokenAddress).transfer(_receiver, tokens); } function rescueDividentToken(address tokenAddress,address _receiver, uint256 tokens) external onlyOwner returns (bool success) { return distributor.rescueToken(tokenAddress, _receiver,tokens); } function setFeeReceivers(address _marketing) public onlyOwner { _marketingWalletAddress = _marketing; } function setDistributorSettings(uint256 gas) external onlyOwner { require(gas < 750000, "Gas must be lower than 750000"); distributorGas = gas; } function setMaxWalletLimit(uint _percent) public onlyOwner { MaxWalletLimit = _totalSupply.mul(_percent).div(feeDenominator); } function setMaxTxLimit(uint _percent) public onlyOwner { MaxTxLimit = _totalSupply.mul(_percent).div(feeDenominator); } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(_balances[deadWallet]).sub(_balances[ZeroWallet]); } function isNotInSwap() external view returns (bool) { return !inSwap; } function manualSync() external { IPancakeSwapPair(pair).sync(); } function setLP(address _address) external onlyOwner { pairContract = IPancakeSwapPair(_address); pair = _address; } function setAutomaticPairMarket(address _addr,bool _status) public onlyOwner { if(_status) { require(!automatedMarketMakerPairs[_addr],"Pair Already Set!!"); } automatedMarketMakerPairs[_addr] = _status; isDividendExempt[_addr] = true; isWalletLimitExempt[_addr] = true; } function getLiquidityBacking(uint256 accuracy) public view returns (uint256) { uint256 liquidityBalance = _balances[pair]; return accuracy.mul(liquidityBalance.mul(2)).div(getCirculatingSupply()); } function setWhitelistFee(address _addr,bool _status) external onlyOwner { require(_isExcludedFromFees[_addr] != _status, "Error: Not changed"); _isExcludedFromFees[_addr] = _status; } function setEdTxLimit(address _addr,bool _status) external onlyOwner { isTxLimitExempt[_addr] = _status; } function setEdWalletLimit(address _addr,bool _status) external onlyOwner { isWalletLimitExempt[_addr] = _status; } function setBotBlacklist(address _botAddress, bool _flag) external onlyOwner { require(isContract(_botAddress), "only contract address, not allowed externally owned account"); blacklist[_botAddress] = _flag; } function setMinSwapAmount(uint _value) external onlyOwner { swapTokensAtAmount = _value; } function totalSupply() external view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function isContract(address addr) internal view returns (bool) { uint size; assembly { size := extcodesize(addr) } return size > 0; } function swapForMarketing(uint _tokens) private { uint initalBalance = address(this).balance; swapTokensForEth(_tokens); uint recieveBalance = address(this).balance.sub(initalBalance); AmountMarketingFee = AmountMarketingFee.sub(_tokens); payable(_marketingWalletAddress).transfer(recieveBalance); } function swapForLiquidity(uint _tokens) private { uint half = AmountLiquidityFee.div(2); uint otherhalf = AmountLiquidityFee.sub(half); uint initalBalance = address(this).balance; swapTokensForEth(half); uint recieveBalance = address(this).balance.sub(initalBalance); AmountLiquidityFee = AmountLiquidityFee.sub(_tokens); addLiquidity(otherhalf,recieveBalance); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(router), tokenAmount); // add the liquidity router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); _approve(address(this), address(router), tokenAmount); // make the swap router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"AmountLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AmountMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AmountRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DECIMALS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EnableTransactionLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GLDNRTVRDividendReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MaxTxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MaxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_autoAddLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWalletAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"value","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":[{"internalType":"address","name":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"buyRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"checkFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableDisableTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initalDistribution","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isNotInSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSync","outputs":[],"stateMutability":"nonpayable","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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairContract","outputs":[{"internalType":"contract IPancakeSwapPair","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"rescueDividentToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"rescueToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IPancakeSwapRouter","name":"","type":"address"}],"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":"sellRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_flag","type":"bool"}],"name":"setAutoAddLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setAutomaticPairMarket","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_botAddress","type":"address"},{"internalType":"bool","name":"_flag","type":"bool"}],"name":"setBotBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLp","type":"uint256"},{"internalType":"uint256","name":"_newMarketing","type":"uint256"},{"internalType":"uint256","name":"_newReward","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setEdTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setEdWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setInitialDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percent","type":"uint256"}],"name":"setMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percent","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setMinSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLp","type":"uint256"},{"internalType":"uint256","name":"_newMarketing","type":"uint256"},{"internalType":"uint256","name":"_newReward","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setWhitelistFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setWhitelistTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052601e6003556014600455603260055560326006556014600755601e6008556103e8600c557376b61a1afe8711f431d3d6f770e8fe7e7004e871600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a0a6302faf08002601555620000c4620186a0620000b0600560155462000d7960201b620036c71790919060201c565b62000e0460201b6200374d1790919060201c565b601655620000ff600c54620000eb601e60155462000d7960201b620036c71790919060201c565b62000e0460201b6200374d1790919060201c565b6017556200013a600c5462000126600f60155462000d7960201b620036c71790919060201c565b62000e0460201b6200374d1790919060201c565b6018556001601960006101000a81548160ff0219169083151502179055506001601960016101000a81548160ff0219169083151502179055506001601c60006101000a81548160ff0219169083151502179055506207a120601e556000602160146101000a81548160ff021916908315150217905550348015620001bd57600080fd5b506040518060400160405280601481526020017f54484520474f4c44454e205245545249455645520000000000000000000000008152506040518060400160405280600881526020017f474c444e52545652000000000000000000000000000000000000000000000000815250601282600090805190602001906200024492919062000f4b565b5081600190805190602001906200025d92919062000f4b565b5080600260006101000a81548160ff021916908360ff16021790555050505033600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200037b57600080fd5b505afa15801562000390573d6000803e3d6000fd5b505050506040513d6020811015620003a757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200043c57600080fd5b505afa15801562000451573d6000803e3d6000fd5b505050506040513d60208110156200046857600080fd5b8101908080519060200190929190505050306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015620004e457600080fd5b505af1158015620004f9573d6000803e3d6000fd5b505050506040513d60208110156200051057600080fd5b8101908080519060200190929190505050601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160126000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d604051620007249062000fe2565b808273ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801562000761573d6000803e3d6000fd5b50601c60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601360006200081b62000e5660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160136000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016013600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601360008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016011600062000a0662000e5660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f600062000b3f62000e5660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016010600062000bfe62000e5660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601554601a600062000cbe62000e5660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000d0c62000e5660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6015546040518082815260200191505060405180910390a36200100f565b60008083141562000d8e576000905062000dfe565b600082840290508284828162000da057fe5b041462000df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180620080436021913960400191505060405180910390fd5b809150505b92915050565b600062000e4e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000e8060201b60201c565b905092915050565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000808311829062000f30576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562000ef457808201518184015260208101905062000ed7565b50505050905090810190601f16801562000f225780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858162000f3d57fe5b049050809150509392505050565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928262000f83576000855562000fcf565b82601f1062000f9e57805160ff191683800117855562000fcf565b8280016001018555821562000fcf579182015b8281111562000fce57825182559160200191906001019062000fb1565b5b50905062000fde919062000ff0565b5090565b611be4806200645f83390190565b5b808211156200100b57600081600090555060010162000ff1565b5090565b615440806200101f6000396000f3fe60806040526004361061042a5760003560e01c80637d87d0a911610229578063c867d60b1161012e578063e5711e8b116100b6578063f708a64f1161007a578063f708a64f14611787578063f8326795146117e4578063f872858a1461180f578063f887ea401461183c578063f9f92be41461187d57610431565b8063e5711e8b146115f2578063ea8b2c4414611683578063f11a24d3146116e0578063f2fde38b1461170b578063f63743421461175c57610431565b8063d51ed1c8116100fd578063d51ed1c814611445578063dd62ed3e14611494578063dde04b9514611519578063e01bb68814611576578063e2f45605146115c757610431565b8063c867d60b1461130f578063cfbac92f14611376578063cfe0e619146113b3578063d4399790146113de57610431565b80639d1944f5116101b1578063b37f80f811610180578063b37f80f8146111e8578063b46d8b8514611215578063b62496f514611252578063b677814c146112b9578063bb8d5131146112e457610431565b80639d1944f51461108a578063a457c2d7146110c5578063a8aa1b3114611136578063a9059cbb1461117757610431565b80638b42507f116101f85780638b42507f14610efa5780638da5cb5b14610f615780638f32d59b14610fa25780639213691314610fcf57806395d89b4114610ffa57610431565b80637d87d0a914610e025780637e504d5914610e4357806383b4ac6814610ea05780638526148514610ecd57610431565b8063395093511161032f57806366a16cad116102b7578063728d41c911610286578063728d41c914610d09578063753d02a114610d44578063764d72bf14610d5b57806377a3b60914610dac5780637bce5a0414610dd757610431565b806366a16cad14610c035780636912652c14610c6057806370a0823114610c8d578063715018a614610cf257610431565b80634d709adf116102fe5780634d709adf14610aa257806351bc3c8514610ae35780636140a51e14610afa57806361c2059c14610b3757806364f5a5bb14610bc857610431565b8063395093511461095e5780633eaaf86b146109cf5780634144d9e4146109fa5780634355855a14610a3b57610431565b80632563ae83116103b25780632f34d282116103815780632f34d2821461081c578063313ce5671461086d578063320d45341461089b57806333490191146108d657806337c9be871461090157610431565b80632563ae83146107445780632b112e49146107815780632d48e896146107ac5780632e0f2625146107f157610431565b806318160ddd116103f957806318160ddd146105bf5780631d865c30146105ea57806323a2f1fc1461063957806323b872dd1461066457806325519cf2146106f557610431565b806306fdde0314610436578063095ea7b3146104c6578063180b0d7e14610537578063180fe7c91461056257610431565b3661043157005b600080fd5b34801561044257600080fd5b5061044b6118e4565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561048b578082015181840152602081019050610470565b50505050905090810190601f1680156104b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104d257600080fd5b5061051f600480360360408110156104e957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611986565b60405180821515815260200191505060405180910390f35b34801561054357600080fd5b5061054c61199d565b6040518082815260200191505060405180910390f35b34801561056e57600080fd5b506105bd6004803603604081101561058557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506119a3565b005b3480156105cb57600080fd5b506105d4611a0f565b6040518082815260200191505060405180910390f35b3480156105f657600080fd5b506106376004803603606081101561060d57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050611a19565b005b34801561064557600080fd5b5061064e611a44565b6040518082815260200191505060405180910390f35b34801561067057600080fd5b506106dd6004803603606081101561068757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a4a565b60405180821515815260200191505060405180910390f35b34801561070157600080fd5b506107426004803603606081101561071857600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050611c89565b005b34801561075057600080fd5b5061077f6004803603602081101561076757600080fd5b81019080803515159060200190929190505050611cb4565b005b34801561078d57600080fd5b50610796611ce2565b6040518082815260200191505060405180910390f35b3480156107b857600080fd5b506107ef600480360360408110156107cf57600080fd5b810190808035906020019092919080359060200190929190505050611d90565b005b3480156107fd57600080fd5b50610806611e3a565b6040518082815260200191505060405180910390f35b34801561082857600080fd5b5061086b6004803603602081101561083f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e3f565b005b34801561087957600080fd5b50610882611ed5565b604051808260ff16815260200191505060405180910390f35b3480156108a757600080fd5b506108d4600480360360208110156108be57600080fd5b8101908080359060200190929190505050611eec565b005b3480156108e257600080fd5b506108eb611f07565b6040518082815260200191505060405180910390f35b34801561090d57600080fd5b5061095c6004803603604081101561092457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611f0d565b005b34801561096a57600080fd5b506109b76004803603604081101561098157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611fd7565b60405180821515815260200191505060405180910390f35b3480156109db57600080fd5b506109e46121d3565b6040518082815260200191505060405180910390f35b348015610a0657600080fd5b50610a0f6121d9565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a4757600080fd5b50610a8a60048036036020811015610a5e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121ff565b60405180821515815260200191505060405180910390f35b348015610aae57600080fd5b50610ab761221f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610aef57600080fd5b50610af8612245565b005b348015610b0657600080fd5b50610b3560048036036020811015610b1d57600080fd5b810190808035151590602001909291905050506122d3565b005b348015610b4357600080fd5b50610bb060048036036060811015610b5a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612301565b60405180821515815260200191505060405180910390f35b348015610bd457600080fd5b50610c0160048036036020811015610beb57600080fd5b8101908080359060200190929190505050612409565b005b348015610c0f57600080fd5b50610c5e60048036036040811015610c2657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061244c565b005b348015610c6c57600080fd5b50610c756124b8565b60405180821515815260200191505060405180910390f35b348015610c9957600080fd5b50610cdc60048036036020811015610cb057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124cb565b6040518082815260200191505060405180910390f35b348015610cfe57600080fd5b50610d07612514565b005b348015610d1557600080fd5b50610d4260048036036020811015610d2c57600080fd5b81019080803590602001909291905050506125ce565b005b348015610d5057600080fd5b50610d59612611565b005b348015610d6757600080fd5b50610daa60048036036020811015610d7e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612695565b005b348015610db857600080fd5b50610dc16126f6565b6040518082815260200191505060405180910390f35b348015610de357600080fd5b50610dec6126fc565b6040518082815260200191505060405180910390f35b348015610e0e57600080fd5b50610e17612702565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610e4f57600080fd5b50610e9e60048036036040811015610e6657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612728565b005b348015610eac57600080fd5b50610eb5612794565b60405180821515815260200191505060405180910390f35b348015610ed957600080fd5b50610ee26127ac565b60405180821515815260200191505060405180910390f35b348015610f0657600080fd5b50610f4960048036036020811015610f1d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506127bf565b60405180821515815260200191505060405180910390f35b348015610f6d57600080fd5b50610f766127df565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610fae57600080fd5b50610fb7612809565b60405180821515815260200191505060405180910390f35b348015610fdb57600080fd5b50610fe4612861565b6040518082815260200191505060405180910390f35b34801561100657600080fd5b5061100f612867565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561104f578082015181840152602081019050611034565b50505050905090810190601f16801561107c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561109657600080fd5b506110c3600480360360208110156110ad57600080fd5b8101908080359060200190929190505050612909565b005b3480156110d157600080fd5b5061111e600480360360408110156110e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061299c565b60405180821515815260200191505060405180910390f35b34801561114257600080fd5b5061114b612c2c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561118357600080fd5b506111d06004803603604081101561119a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612c52565b60405180821515815260200191505060405180910390f35b3480156111f457600080fd5b506111fd612ca6565b60405180821515815260200191505060405180910390f35b34801561122157600080fd5b506112506004803603602081101561123857600080fd5b81019080803515159060200190929190505050612cb9565b005b34801561125e57600080fd5b506112a16004803603602081101561127557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d70565b60405180821515815260200191505060405180910390f35b3480156112c557600080fd5b506112ce612d90565b6040518082815260200191505060405180910390f35b3480156112f057600080fd5b506112f9612d96565b6040518082815260200191505060405180910390f35b34801561131b57600080fd5b5061135e6004803603602081101561133257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d9c565b60405180821515815260200191505060405180910390f35b34801561138257600080fd5b506113b16004803603602081101561139957600080fd5b81019080803515159060200190929190505050612dbc565b005b3480156113bf57600080fd5b506113c8612e10565b6040518082815260200191505060405180910390f35b3480156113ea57600080fd5b5061142d6004803603602081101561140157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e16565b60405180821515815260200191505060405180910390f35b34801561145157600080fd5b5061147e6004803603602081101561146857600080fd5b8101908080359060200190929190505050612e6c565b6040518082815260200191505060405180910390f35b3480156114a057600080fd5b50611503600480360360408110156114b757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f1a565b6040518082815260200191505060405180910390f35b34801561152557600080fd5b506115746004803603604081101561153c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612fa1565b005b34801561158257600080fd5b506115c56004803603602081101561159957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506130d3565b005b3480156115d357600080fd5b506115dc613128565b6040518082815260200191505060405180910390f35b3480156115fe57600080fd5b5061166b6004803603606081101561161557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061312e565b60405180821515815260200191505060405180910390f35b34801561168f57600080fd5b506116de600480360360408110156116a657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506131f6565b005b3480156116ec57600080fd5b506116f56133d9565b6040518082815260200191505060405180910390f35b34801561171757600080fd5b5061175a6004803603602081101561172e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506133df565b005b34801561176857600080fd5b506117716133fc565b6040518082815260200191505060405180910390f35b34801561179357600080fd5b506117e2600480360360408110156117aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050613402565b005b3480156117f057600080fd5b506117f9613668565b6040518082815260200191505060405180910390f35b34801561181b57600080fd5b5061182461366e565b60405180821515815260200191505060405180910390f35b34801561184857600080fd5b50611851613681565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561188957600080fd5b506118cc600480360360208110156118a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506136a7565b60405180821515815260200191505060405180910390f35b606060008054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561197c5780601f106119515761010080835404028352916020019161197c565b820191906000526020600020905b81548152906001019060200180831161195f57829003601f168201915b5050505050905090565b6000611993338484613797565b6001905092915050565b600c5481565b6119ab612809565b6119b457600080fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601554905090565b611a21612809565b611a2a57600080fd5b826006819055508160078190555080600881905550505050565b60185481565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a8757600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611c7157611bf0836040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250601b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461398e9092919063ffffffff16565b601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611c7c858585613a4e565b5060019150509392505050565b611c91612809565b611c9a57600080fd5b826003819055508160048190555080600581905550505050565b611cbc612809565b611cc557600080fd5b80601960016101000a81548160ff02191690831515021790555050565b6000611d8b601a60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d7d601a600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546015546142b290919063ffffffff16565b6142b290919063ffffffff16565b905090565b611d98612809565b611da157600080fd5b601c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b158015611e1e57600080fd5b505af1158015611e32573d6000803e3d6000fd5b505050505050565b601281565b611e47612809565b611e5057600080fd5b80602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600260009054906101000a900460ff16905090565b611ef4612809565b611efd57600080fd5b8060168190555050565b60175481565b611f15612809565b611f1e57600080fd5b611f27826142fc565b611f7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180615341603b913960400191505060405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600061206882601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461430f90919063ffffffff16565b601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b60155481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60136020528060005260406000206000915054906101000a900460ff1681565b602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61224d612809565b61225657600080fd5b6001602160146101000a81548160ff0219169083151502179055506000600954111561228857612287600954614397565b5b6000600a54111561229f5761229e600a5461441b565b5b6000600b5411156122b6576122b5600b546144c9565b5b6000602160146101000a81548160ff021916908315150217905550565b6122db612809565b6122e457600080fd5b80601960006101000a81548160ff02191690831515021790555050565b600061230b612809565b61231457600080fd5b601c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e5711e8b8585856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156123c557600080fd5b505af11580156123d9573d6000803e3d6000fd5b505050506040513d60208110156123ef57600080fd5b810190808051906020019092919050505090509392505050565b612411612809565b61241a57600080fd5b612443600c54612435836015546136c790919063ffffffff16565b61374d90919063ffffffff16565b60188190555050565b612454612809565b61245d57600080fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601c60009054906101000a900460ff1681565b6000601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61251c612809565b61252557600080fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6125d6612809565b6125df57600080fd5b612608600c546125fa836015546136c790919063ffffffff16565b61374d90919063ffffffff16565b60178190555050565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561267b57600080fd5b505af115801561268f573d6000803e3d6000fd5b50505050565b61269d612809565b6126a657600080fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156126f1573d6000803e3d6000fd5b505050565b60055481565b60045481565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612730612809565b61273957600080fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000602160149054906101000a900460ff1615905090565b601960009054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b60075481565b606060018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156128ff5780601f106128d4576101008083540402835291602001916128ff565b820191906000526020600020905b8154815290600101906020018083116128e257829003601f168201915b5050505050905090565b612911612809565b61291a57600080fd5b620b71b08110612992576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f476173206d757374206265206c6f776572207468616e2037353030303000000081525060200191505060405180910390fd5b80601e8190555050565b600080601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808310612aac576000601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b40565b612abf83826142b290919063ffffffff16565b601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612c8f57600080fd5b612c9a338585613a4e565b50600191505092915050565b601c60019054906101000a900460ff1681565b612cc1612809565b612cca57600080fd5b801515601c60019054906101000a900460ff1615151415612d53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4e6f74204368616e67656421210000000000000000000000000000000000000081525060200191505060405180910390fd5b80601c60016101000a81548160ff02191690831515021790555050565b60126020528060005260406000206000915054906101000a900460ff1681565b600b5481565b60085481565b60116020528060005260406000206000915054906101000a900460ff1681565b612dc4612809565b612dcd57600080fd5b8015612df25780601c60006101000a81548160ff021916908315150217905550612e0d565b80601c60006101000a81548160ff0219169083151502179055505b50565b600a5481565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080601a6000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050612f12612ede611ce2565b612f04612ef56002856136c790919063ffffffff16565b866136c790919063ffffffff16565b61374d90919063ffffffff16565b915050919050565b6000601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612fa9612809565b612fb257600080fd5b801515600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415613078576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4572726f723a204e6f74206368616e676564000000000000000000000000000081525060200191505060405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6130db612809565b6130e457600080fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b6000613138612809565b61314157600080fd5b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156131b257600080fd5b505af11580156131c6573d6000803e3d6000fd5b505050506040513d60208110156131dc57600080fd5b810190808051906020019092919050505090509392505050565b6131fe612809565b61320757600080fd5b80156132ce57601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156132cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5061697220416c7265616479205365742121000000000000000000000000000081525060200191505060405180910390fd5b5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60035481565b6133e7612809565b6133f057600080fd5b6133f981614594565b50565b60065481565b61340a612809565b61341357600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156134995750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6134a257600080fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080156135b057601c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561359357600080fd5b505af11580156135a7573d6000803e3d6000fd5b50505050613664565b601c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca96836135f8856124cb565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561364b57600080fd5b505af115801561365f573d6000803e3d6000fd5b505050505b5050565b60095481565b601960019054906101000a900460ff1681565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000808314156136da5760009050613747565b60008284029050828482816136eb57fe5b0414613742576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806153c66021913960400191505060405180910390fd5b809150505b92915050565b600061378f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061468e565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561381d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806153e76024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156138a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061537c6022913960400191505060405180910390fd5b80601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6000838311158290613a3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613a005780820151818401526020810190506139e5565b50505050905090810190601f168015613a2d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613af45750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b613b66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f696e5f626c61636b6c697374000000000000000000000000000000000000000081525060200191505060405180910390fd5b601c60019054906101000a900460ff1680613bca5750601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80613bd95750613bd8612809565b5b613c4b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54726164652069732043757272656e746c79205061757365642121000000000081525060200191505060405180910390fd5b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613cef5750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613d075750601960009054906101000a900460ff165b15613d6857601854821115613d67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061539e6028913960400191505060405180910390fd5b5b602160149054906101000a900460ff1615613d8f57613d88848484614754565b90506142ab565b613d9761488b565b15613da557613da4614932565b5b613dad614998565b15613dbb57613dba614a06565b5b613e0d82601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142b290919063ffffffff16565b601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000613e5c8585614a55565b613e665782613e72565b613e71858585614bb0565b5b9050613ec681601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461430f90919063ffffffff16565b601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601960019054906101000a900460ff168015613f6f5750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613f9e57601754613f9282613f84876124cb565b61430f90919063ffffffff16565b1115613f9d57600080fd5b5b601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166140a657601c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686614037886124cb565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561408a57600080fd5b505af192505050801561409b575060015b6140a4576140a5565b5b5b601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166141ae57601c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968561413f876124cb565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561419257600080fd5b505af19250505080156141a3575060015b6141ac576141ad565b5b5b601c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479601e546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561422557600080fd5b505af1925050508015614236575060015b61423f57614240565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360019150505b9392505050565b60006142f483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061398e565b905092915050565b600080823b905060008111915050919050565b60008082840190508381101561438d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60006143af600260095461374d90919063ffffffff16565b905060006143c8826009546142b290919063ffffffff16565b905060004790506143d883614f37565b60006143ed82476142b290919063ffffffff16565b9050614404856009546142b290919063ffffffff16565b60098190555061441483826151eb565b5050505050565b600047905061442982614f37565b600061443e82476142b290919063ffffffff16565b905061445583600a546142b290919063ffffffff16565b600a81905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156144c3573d6000803e3d6000fd5b50505050565b60004790506144d782614f37565b60006144ec82476142b290919063ffffffff16565b905061450383600b546142b290919063ffffffff16565b600b81905550601c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561457357600080fd5b505af193505050508015614585575060015b61458e5761458f565b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156145ce57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808311829061473a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156146ff5780820151818401526020810190506146e4565b50505050905090810190601f16801561472c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161474657fe5b049050809150509392505050565b60006147a882601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142b290919063ffffffff16565b601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061483d82601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461430f90919063ffffffff16565b601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600190509392505050565b600080614897306124cb565b905060006016548210159050601c60009054906101000a900460ff1680156148cc5750602160149054906101000a900460ff16155b80156148d55750805b801561492b5750601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b9250505090565b6001602160146101000a81548160ff0219169083151502179055506000600954111561496457614963600954614397565b5b6000600a54111561497b5761497a600a5461441b565b5b6000602160146101000a81548160ff021916908315150217905550565b6000602160149054906101000a900460ff16158015614a015750601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905090565b6001602160146101000a81548160ff0219169083151502179055506000600b541115614a3857614a37600b546144c9565b5b6000602160146101000a81548160ff021916908315150217905550565b6000600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680614af85750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15614b065760009050614baa565b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680614ba75750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b90505b92915050565b6000806000806000601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614ce757614c33600c54614c25600354896136c790919063ffffffff16565b61374d90919063ffffffff16565b925082600960008282540192505081905550614c6e600c54614c60600454896136c790919063ffffffff16565b61374d90919063ffffffff16565b915081600a60008282540192505081905550614ca9600c54614c9b600554896136c790919063ffffffff16565b61374d90919063ffffffff16565b905080600b60008282540192505081905550614ce081614cd2848661430f90919063ffffffff16565b61430f90919063ffffffff16565b9350614e13565b601260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614e1257614d62600c54614d54600654896136c790919063ffffffff16565b61374d90919063ffffffff16565b925082600960008282540192505081905550614d9d600c54614d8f600754896136c790919063ffffffff16565b61374d90919063ffffffff16565b915081600a60008282540192505081905550614dd8600c54614dca600854896136c790919063ffffffff16565b61374d90919063ffffffff16565b905080600b60008282540192505081905550614e0f81614e01848661430f90919063ffffffff16565b61430f90919063ffffffff16565b93505b5b6000841115614f1757614e6e84601a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461430f90919063ffffffff16565b601a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35b614f2a84876142b290919063ffffffff16565b9450505050509392505050565b6060600267ffffffffffffffff81118015614f5157600080fd5b50604051908082528060200260200182016040528015614f805781602001602082028036833780820191505090505b5090503081600081518110614f9157fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561503357600080fd5b505afa158015615047573d6000803e3d6000fd5b505050506040513d602081101561505d57600080fd5b81019080805190602001909291905050508160018151811061507b57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506150e230602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613797565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156151a657808201518184015260208101905061518b565b505050509050019650505050505050600060405180830381600087803b1580156151cf57600080fd5b505af11580156151e3573d6000803e3d6000fd5b505050505050565b61521830602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613797565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806152646127df565b426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b1580156152e957600080fd5b505af11580156152fd573d6000803e3d6000fd5b50505050506040513d606081101561531457600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050505050505056fe6f6e6c7920636f6e747261637420616464726573732c206e6f7420616c6c6f7765642065787465726e616c6c79206f776e6564206163636f756e7445524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a264697066735822122068ea67aa010f5d10c99d4429e3d052ea13e1a2b7bf20b4ca9c67e12391a00fc764736f6c6343000704003360806040527345804880de22913dafe09f4980848ece6ecbaf78600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506ec097ce7bc90715b34b9f1000000000600c55610e10600d55670de0b6b3a7640000600e5534801561008a57600080fd5b50604051611be4380380611be4833981810160405260208110156100ad57600080fd5b8101908080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561010d57737a250d5630b4cf539739df2c5dacb4c659f2488d61010f565b805b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050611a458061019f6000396000f3fe6080604052600436106100f35760003560e01c8063ce7c2ac21161008a578063efca2eed11610059578063efca2eed1461040d578063f0fc6bca14610438578063ffb2c4791461044f578063ffd49c841461048a576100f3565b8063ce7c2ac2146102d4578063d0e30db014610347578063e2d2e21914610351578063e5711e8b1461037c576100f3565b80632d48e896116100c65780632d48e8961461020e5780633a98ef39146102535780634fab0ae81461027e578063997664d7146102a9576100f3565b806311ce023d146100f857806314b6ca961461012357806326987b601461017e57806328fd3198146101a9575b600080fd5b34801561010457600080fd5b5061010d6104b5565b6040518082815260200191505060405180910390f35b34801561012f57600080fd5b5061017c6004803603604081101561014657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506104bb565b005b34801561018a57600080fd5b5061019361077a565b6040518082815260200191505060405180910390f35b3480156101b557600080fd5b506101f8600480360360208110156101cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610780565b6040518082815260200191505060405180910390f35b34801561021a57600080fd5b506102516004803603604081101561023157600080fd5b81019080803590602001909291908035906020019092919050505061089a565b005b34801561025f57600080fd5b50610268610904565b6040518082815260200191505060405180910390f35b34801561028a57600080fd5b5061029361090a565b6040518082815260200191505060405180910390f35b3480156102b557600080fd5b506102be610910565b6040518082815260200191505060405180910390f35b3480156102e057600080fd5b50610323600480360360208110156102f757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610916565b60405180848152602001838152602001828152602001935050505060405180910390f35b61034f610940565b005b34801561035d57600080fd5b50610366610e3b565b6040518082815260200191505060405180910390f35b34801561038857600080fd5b506103f56004803603606081101561039f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e41565b60405180821515815260200191505060405180910390f35b34801561041957600080fd5b50610422610f51565b6040518082815260200191505060405180910390f35b34801561044457600080fd5b5061044d610f57565b005b34801561045b57600080fd5b506104886004803603602081101561047257600080fd5b8101908080359060200190929190505050610f62565b005b34801561049657600080fd5b5061049f6110dc565b6040518082815260200191505060405180910390f35b600c5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461051357600080fd5b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154111561056857610567826110e2565b5b6000811180156105ba57506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b156105cd576105c8826113a8565b61062f565b60008114801561061f57506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b1561062e5761062d82611457565b5b5b6106988161068a600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015460075461163090919063ffffffff16565b61167a90919063ffffffff16565b60078190555080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550610730600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611702565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600b5481565b600080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156107d55760009050610895565b6000610822600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611702565b90506000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154905080821161087d57600092505050610895565b610890818361163090919063ffffffff16565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108f257600080fd5b81600d8190555080600e819055505050565b60075481565b600e5481565b60085481565b60066020528060005260406000206000915090508060000154908060010154908060020154905083565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461099857600080fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610a2357600080fd5b505afa158015610a37573d6000803e3d6000fd5b505050506040513d6020811015610a4d57600080fd5b810190808051906020019092919050505090506060600267ffffffffffffffff81118015610a7a57600080fd5b50604051908082528060200260200182016040528015610aa95781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610b1457600080fd5b505afa158015610b28573d6000803e3d6000fd5b505050506040513d6020811015610b3e57600080fd5b810190808051906020019092919050505081600081518110610b5c57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110610bc657fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b815260040180858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015610cbe578082015181840152602081019050610ca3565b50505050905001955050505050506000604051808303818588803b158015610ce557600080fd5b505af1158015610cf9573d6000803e3d6000fd5b50505050506000610dd683600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610d8d57600080fd5b505afa158015610da1573d6000803e3d6000fd5b505050506040513d6020811015610db757600080fd5b810190808051906020019092919050505061163090919063ffffffff16565b9050610ded8160085461167a90919063ffffffff16565b600881905550610e30610e1f600754610e1184600c5461173490919063ffffffff16565b6117ba90919063ffffffff16565b600a5461167a90919063ffffffff16565b600a81905550505050565b600a5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e9c57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610f0d57600080fd5b505af1158015610f21573d6000803e3d6000fd5b505050506040513d6020811015610f3757600080fd5b810190808051906020019092919050505090509392505050565b60095481565b610f60336110e2565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fba57600080fd5b600060038054905090506000811415610fd357506110d9565b6000805a905060005b8483108015610fea57508381105b156110d45783600b5410611001576000600b819055505b6110436003600b548154811061101357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611804565b1561108b5761108a6003600b548154811061105a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166110e2565b5b6110b06110a15a8461163090919063ffffffff16565b8461167a90919063ffffffff16565b92505a9150600b600081548092919060010191905055508080600101915050610fdc565b505050505b50565b600d5481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415611132576113a5565b600061113d82610780565b905060008111156113a35761115d8160095461167a90919063ffffffff16565b600981905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156111f657600080fd5b505af115801561120a573d6000803e3d6000fd5b505050506040513d602081101561122057600080fd5b81019080805190602001909291905050505042600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506112cb81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015461167a90919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002018190555061135c600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611702565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b600380549050600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60036001600380549050038154811061146c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815481106114e357fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546004600060036001600380549050038154811061158457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060038054806115f857fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b600061167283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611868565b905092915050565b6000808284019050838110156116f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600061172d600c5461171f600a548561173490919063ffffffff16565b6117ba90919063ffffffff16565b9050919050565b60008083141561174757600090506117b4565b600082840290508284828161175857fe5b04146117af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806119ef6021913960400191505060405180910390fd5b809150505b92915050565b60006117fc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611928565b905092915050565b600042600d54600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054011080156118615750600e5461185f83610780565b115b9050919050565b6000838311158290611915576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156118da5780820151818401526020810190506118bf565b50505050905090810190601f1680156119075780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080831182906119d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561199957808201518184015260208101905061197e565b50505050905090810190601f1680156119c65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816119e057fe5b04905080915050939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220de9532954d183d9becf8f70a50c29d37b0f4a9c0f4cbca954e64c5c22f31efb464736f6c63430007040033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77
Deployed Bytecode
0x60806040526004361061042a5760003560e01c80637d87d0a911610229578063c867d60b1161012e578063e5711e8b116100b6578063f708a64f1161007a578063f708a64f14611787578063f8326795146117e4578063f872858a1461180f578063f887ea401461183c578063f9f92be41461187d57610431565b8063e5711e8b146115f2578063ea8b2c4414611683578063f11a24d3146116e0578063f2fde38b1461170b578063f63743421461175c57610431565b8063d51ed1c8116100fd578063d51ed1c814611445578063dd62ed3e14611494578063dde04b9514611519578063e01bb68814611576578063e2f45605146115c757610431565b8063c867d60b1461130f578063cfbac92f14611376578063cfe0e619146113b3578063d4399790146113de57610431565b80639d1944f5116101b1578063b37f80f811610180578063b37f80f8146111e8578063b46d8b8514611215578063b62496f514611252578063b677814c146112b9578063bb8d5131146112e457610431565b80639d1944f51461108a578063a457c2d7146110c5578063a8aa1b3114611136578063a9059cbb1461117757610431565b80638b42507f116101f85780638b42507f14610efa5780638da5cb5b14610f615780638f32d59b14610fa25780639213691314610fcf57806395d89b4114610ffa57610431565b80637d87d0a914610e025780637e504d5914610e4357806383b4ac6814610ea05780638526148514610ecd57610431565b8063395093511161032f57806366a16cad116102b7578063728d41c911610286578063728d41c914610d09578063753d02a114610d44578063764d72bf14610d5b57806377a3b60914610dac5780637bce5a0414610dd757610431565b806366a16cad14610c035780636912652c14610c6057806370a0823114610c8d578063715018a614610cf257610431565b80634d709adf116102fe5780634d709adf14610aa257806351bc3c8514610ae35780636140a51e14610afa57806361c2059c14610b3757806364f5a5bb14610bc857610431565b8063395093511461095e5780633eaaf86b146109cf5780634144d9e4146109fa5780634355855a14610a3b57610431565b80632563ae83116103b25780632f34d282116103815780632f34d2821461081c578063313ce5671461086d578063320d45341461089b57806333490191146108d657806337c9be871461090157610431565b80632563ae83146107445780632b112e49146107815780632d48e896146107ac5780632e0f2625146107f157610431565b806318160ddd116103f957806318160ddd146105bf5780631d865c30146105ea57806323a2f1fc1461063957806323b872dd1461066457806325519cf2146106f557610431565b806306fdde0314610436578063095ea7b3146104c6578063180b0d7e14610537578063180fe7c91461056257610431565b3661043157005b600080fd5b34801561044257600080fd5b5061044b6118e4565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561048b578082015181840152602081019050610470565b50505050905090810190601f1680156104b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104d257600080fd5b5061051f600480360360408110156104e957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611986565b60405180821515815260200191505060405180910390f35b34801561054357600080fd5b5061054c61199d565b6040518082815260200191505060405180910390f35b34801561056e57600080fd5b506105bd6004803603604081101561058557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506119a3565b005b3480156105cb57600080fd5b506105d4611a0f565b6040518082815260200191505060405180910390f35b3480156105f657600080fd5b506106376004803603606081101561060d57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050611a19565b005b34801561064557600080fd5b5061064e611a44565b6040518082815260200191505060405180910390f35b34801561067057600080fd5b506106dd6004803603606081101561068757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a4a565b60405180821515815260200191505060405180910390f35b34801561070157600080fd5b506107426004803603606081101561071857600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050611c89565b005b34801561075057600080fd5b5061077f6004803603602081101561076757600080fd5b81019080803515159060200190929190505050611cb4565b005b34801561078d57600080fd5b50610796611ce2565b6040518082815260200191505060405180910390f35b3480156107b857600080fd5b506107ef600480360360408110156107cf57600080fd5b810190808035906020019092919080359060200190929190505050611d90565b005b3480156107fd57600080fd5b50610806611e3a565b6040518082815260200191505060405180910390f35b34801561082857600080fd5b5061086b6004803603602081101561083f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e3f565b005b34801561087957600080fd5b50610882611ed5565b604051808260ff16815260200191505060405180910390f35b3480156108a757600080fd5b506108d4600480360360208110156108be57600080fd5b8101908080359060200190929190505050611eec565b005b3480156108e257600080fd5b506108eb611f07565b6040518082815260200191505060405180910390f35b34801561090d57600080fd5b5061095c6004803603604081101561092457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611f0d565b005b34801561096a57600080fd5b506109b76004803603604081101561098157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611fd7565b60405180821515815260200191505060405180910390f35b3480156109db57600080fd5b506109e46121d3565b6040518082815260200191505060405180910390f35b348015610a0657600080fd5b50610a0f6121d9565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a4757600080fd5b50610a8a60048036036020811015610a5e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121ff565b60405180821515815260200191505060405180910390f35b348015610aae57600080fd5b50610ab761221f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610aef57600080fd5b50610af8612245565b005b348015610b0657600080fd5b50610b3560048036036020811015610b1d57600080fd5b810190808035151590602001909291905050506122d3565b005b348015610b4357600080fd5b50610bb060048036036060811015610b5a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612301565b60405180821515815260200191505060405180910390f35b348015610bd457600080fd5b50610c0160048036036020811015610beb57600080fd5b8101908080359060200190929190505050612409565b005b348015610c0f57600080fd5b50610c5e60048036036040811015610c2657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061244c565b005b348015610c6c57600080fd5b50610c756124b8565b60405180821515815260200191505060405180910390f35b348015610c9957600080fd5b50610cdc60048036036020811015610cb057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124cb565b6040518082815260200191505060405180910390f35b348015610cfe57600080fd5b50610d07612514565b005b348015610d1557600080fd5b50610d4260048036036020811015610d2c57600080fd5b81019080803590602001909291905050506125ce565b005b348015610d5057600080fd5b50610d59612611565b005b348015610d6757600080fd5b50610daa60048036036020811015610d7e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612695565b005b348015610db857600080fd5b50610dc16126f6565b6040518082815260200191505060405180910390f35b348015610de357600080fd5b50610dec6126fc565b6040518082815260200191505060405180910390f35b348015610e0e57600080fd5b50610e17612702565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610e4f57600080fd5b50610e9e60048036036040811015610e6657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612728565b005b348015610eac57600080fd5b50610eb5612794565b60405180821515815260200191505060405180910390f35b348015610ed957600080fd5b50610ee26127ac565b60405180821515815260200191505060405180910390f35b348015610f0657600080fd5b50610f4960048036036020811015610f1d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506127bf565b60405180821515815260200191505060405180910390f35b348015610f6d57600080fd5b50610f766127df565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610fae57600080fd5b50610fb7612809565b60405180821515815260200191505060405180910390f35b348015610fdb57600080fd5b50610fe4612861565b6040518082815260200191505060405180910390f35b34801561100657600080fd5b5061100f612867565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561104f578082015181840152602081019050611034565b50505050905090810190601f16801561107c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561109657600080fd5b506110c3600480360360208110156110ad57600080fd5b8101908080359060200190929190505050612909565b005b3480156110d157600080fd5b5061111e600480360360408110156110e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061299c565b60405180821515815260200191505060405180910390f35b34801561114257600080fd5b5061114b612c2c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561118357600080fd5b506111d06004803603604081101561119a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612c52565b60405180821515815260200191505060405180910390f35b3480156111f457600080fd5b506111fd612ca6565b60405180821515815260200191505060405180910390f35b34801561122157600080fd5b506112506004803603602081101561123857600080fd5b81019080803515159060200190929190505050612cb9565b005b34801561125e57600080fd5b506112a16004803603602081101561127557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d70565b60405180821515815260200191505060405180910390f35b3480156112c557600080fd5b506112ce612d90565b6040518082815260200191505060405180910390f35b3480156112f057600080fd5b506112f9612d96565b6040518082815260200191505060405180910390f35b34801561131b57600080fd5b5061135e6004803603602081101561133257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d9c565b60405180821515815260200191505060405180910390f35b34801561138257600080fd5b506113b16004803603602081101561139957600080fd5b81019080803515159060200190929190505050612dbc565b005b3480156113bf57600080fd5b506113c8612e10565b6040518082815260200191505060405180910390f35b3480156113ea57600080fd5b5061142d6004803603602081101561140157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e16565b60405180821515815260200191505060405180910390f35b34801561145157600080fd5b5061147e6004803603602081101561146857600080fd5b8101908080359060200190929190505050612e6c565b6040518082815260200191505060405180910390f35b3480156114a057600080fd5b50611503600480360360408110156114b757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f1a565b6040518082815260200191505060405180910390f35b34801561152557600080fd5b506115746004803603604081101561153c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612fa1565b005b34801561158257600080fd5b506115c56004803603602081101561159957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506130d3565b005b3480156115d357600080fd5b506115dc613128565b6040518082815260200191505060405180910390f35b3480156115fe57600080fd5b5061166b6004803603606081101561161557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061312e565b60405180821515815260200191505060405180910390f35b34801561168f57600080fd5b506116de600480360360408110156116a657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506131f6565b005b3480156116ec57600080fd5b506116f56133d9565b6040518082815260200191505060405180910390f35b34801561171757600080fd5b5061175a6004803603602081101561172e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506133df565b005b34801561176857600080fd5b506117716133fc565b6040518082815260200191505060405180910390f35b34801561179357600080fd5b506117e2600480360360408110156117aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050613402565b005b3480156117f057600080fd5b506117f9613668565b6040518082815260200191505060405180910390f35b34801561181b57600080fd5b5061182461366e565b60405180821515815260200191505060405180910390f35b34801561184857600080fd5b50611851613681565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561188957600080fd5b506118cc600480360360208110156118a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506136a7565b60405180821515815260200191505060405180910390f35b606060008054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561197c5780601f106119515761010080835404028352916020019161197c565b820191906000526020600020905b81548152906001019060200180831161195f57829003601f168201915b5050505050905090565b6000611993338484613797565b6001905092915050565b600c5481565b6119ab612809565b6119b457600080fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601554905090565b611a21612809565b611a2a57600080fd5b826006819055508160078190555080600881905550505050565b60185481565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a8757600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611c7157611bf0836040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250601b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461398e9092919063ffffffff16565b601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611c7c858585613a4e565b5060019150509392505050565b611c91612809565b611c9a57600080fd5b826003819055508160048190555080600581905550505050565b611cbc612809565b611cc557600080fd5b80601960016101000a81548160ff02191690831515021790555050565b6000611d8b601a60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d7d601a600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546015546142b290919063ffffffff16565b6142b290919063ffffffff16565b905090565b611d98612809565b611da157600080fd5b601c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b158015611e1e57600080fd5b505af1158015611e32573d6000803e3d6000fd5b505050505050565b601281565b611e47612809565b611e5057600080fd5b80602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600260009054906101000a900460ff16905090565b611ef4612809565b611efd57600080fd5b8060168190555050565b60175481565b611f15612809565b611f1e57600080fd5b611f27826142fc565b611f7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180615341603b913960400191505060405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600061206882601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461430f90919063ffffffff16565b601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b60155481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60136020528060005260406000206000915054906101000a900460ff1681565b602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61224d612809565b61225657600080fd5b6001602160146101000a81548160ff0219169083151502179055506000600954111561228857612287600954614397565b5b6000600a54111561229f5761229e600a5461441b565b5b6000600b5411156122b6576122b5600b546144c9565b5b6000602160146101000a81548160ff021916908315150217905550565b6122db612809565b6122e457600080fd5b80601960006101000a81548160ff02191690831515021790555050565b600061230b612809565b61231457600080fd5b601c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e5711e8b8585856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156123c557600080fd5b505af11580156123d9573d6000803e3d6000fd5b505050506040513d60208110156123ef57600080fd5b810190808051906020019092919050505090509392505050565b612411612809565b61241a57600080fd5b612443600c54612435836015546136c790919063ffffffff16565b61374d90919063ffffffff16565b60188190555050565b612454612809565b61245d57600080fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601c60009054906101000a900460ff1681565b6000601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61251c612809565b61252557600080fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6125d6612809565b6125df57600080fd5b612608600c546125fa836015546136c790919063ffffffff16565b61374d90919063ffffffff16565b60178190555050565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561267b57600080fd5b505af115801561268f573d6000803e3d6000fd5b50505050565b61269d612809565b6126a657600080fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156126f1573d6000803e3d6000fd5b505050565b60055481565b60045481565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612730612809565b61273957600080fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000602160149054906101000a900460ff1615905090565b601960009054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b60075481565b606060018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156128ff5780601f106128d4576101008083540402835291602001916128ff565b820191906000526020600020905b8154815290600101906020018083116128e257829003601f168201915b5050505050905090565b612911612809565b61291a57600080fd5b620b71b08110612992576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f476173206d757374206265206c6f776572207468616e2037353030303000000081525060200191505060405180910390fd5b80601e8190555050565b600080601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808310612aac576000601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b40565b612abf83826142b290919063ffffffff16565b601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612c8f57600080fd5b612c9a338585613a4e565b50600191505092915050565b601c60019054906101000a900460ff1681565b612cc1612809565b612cca57600080fd5b801515601c60019054906101000a900460ff1615151415612d53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4e6f74204368616e67656421210000000000000000000000000000000000000081525060200191505060405180910390fd5b80601c60016101000a81548160ff02191690831515021790555050565b60126020528060005260406000206000915054906101000a900460ff1681565b600b5481565b60085481565b60116020528060005260406000206000915054906101000a900460ff1681565b612dc4612809565b612dcd57600080fd5b8015612df25780601c60006101000a81548160ff021916908315150217905550612e0d565b80601c60006101000a81548160ff0219169083151502179055505b50565b600a5481565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080601a6000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050612f12612ede611ce2565b612f04612ef56002856136c790919063ffffffff16565b866136c790919063ffffffff16565b61374d90919063ffffffff16565b915050919050565b6000601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612fa9612809565b612fb257600080fd5b801515600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415613078576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4572726f723a204e6f74206368616e676564000000000000000000000000000081525060200191505060405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6130db612809565b6130e457600080fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b6000613138612809565b61314157600080fd5b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156131b257600080fd5b505af11580156131c6573d6000803e3d6000fd5b505050506040513d60208110156131dc57600080fd5b810190808051906020019092919050505090509392505050565b6131fe612809565b61320757600080fd5b80156132ce57601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156132cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5061697220416c7265616479205365742121000000000000000000000000000081525060200191505060405180910390fd5b5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60035481565b6133e7612809565b6133f057600080fd5b6133f981614594565b50565b60065481565b61340a612809565b61341357600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156134995750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6134a257600080fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080156135b057601c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561359357600080fd5b505af11580156135a7573d6000803e3d6000fd5b50505050613664565b601c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca96836135f8856124cb565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561364b57600080fd5b505af115801561365f573d6000803e3d6000fd5b505050505b5050565b60095481565b601960019054906101000a900460ff1681565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000808314156136da5760009050613747565b60008284029050828482816136eb57fe5b0414613742576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806153c66021913960400191505060405180910390fd5b809150505b92915050565b600061378f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061468e565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561381d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806153e76024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156138a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061537c6022913960400191505060405180910390fd5b80601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6000838311158290613a3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613a005780820151818401526020810190506139e5565b50505050905090810190601f168015613a2d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613af45750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b613b66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f696e5f626c61636b6c697374000000000000000000000000000000000000000081525060200191505060405180910390fd5b601c60019054906101000a900460ff1680613bca5750601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80613bd95750613bd8612809565b5b613c4b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54726164652069732043757272656e746c79205061757365642121000000000081525060200191505060405180910390fd5b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613cef5750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613d075750601960009054906101000a900460ff165b15613d6857601854821115613d67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061539e6028913960400191505060405180910390fd5b5b602160149054906101000a900460ff1615613d8f57613d88848484614754565b90506142ab565b613d9761488b565b15613da557613da4614932565b5b613dad614998565b15613dbb57613dba614a06565b5b613e0d82601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142b290919063ffffffff16565b601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000613e5c8585614a55565b613e665782613e72565b613e71858585614bb0565b5b9050613ec681601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461430f90919063ffffffff16565b601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601960019054906101000a900460ff168015613f6f5750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613f9e57601754613f9282613f84876124cb565b61430f90919063ffffffff16565b1115613f9d57600080fd5b5b601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166140a657601c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686614037886124cb565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561408a57600080fd5b505af192505050801561409b575060015b6140a4576140a5565b5b5b601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166141ae57601c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968561413f876124cb565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561419257600080fd5b505af19250505080156141a3575060015b6141ac576141ad565b5b5b601c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479601e546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561422557600080fd5b505af1925050508015614236575060015b61423f57614240565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360019150505b9392505050565b60006142f483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061398e565b905092915050565b600080823b905060008111915050919050565b60008082840190508381101561438d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60006143af600260095461374d90919063ffffffff16565b905060006143c8826009546142b290919063ffffffff16565b905060004790506143d883614f37565b60006143ed82476142b290919063ffffffff16565b9050614404856009546142b290919063ffffffff16565b60098190555061441483826151eb565b5050505050565b600047905061442982614f37565b600061443e82476142b290919063ffffffff16565b905061445583600a546142b290919063ffffffff16565b600a81905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156144c3573d6000803e3d6000fd5b50505050565b60004790506144d782614f37565b60006144ec82476142b290919063ffffffff16565b905061450383600b546142b290919063ffffffff16565b600b81905550601c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561457357600080fd5b505af193505050508015614585575060015b61458e5761458f565b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156145ce57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808311829061473a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156146ff5780820151818401526020810190506146e4565b50505050905090810190601f16801561472c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161474657fe5b049050809150509392505050565b60006147a882601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142b290919063ffffffff16565b601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061483d82601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461430f90919063ffffffff16565b601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600190509392505050565b600080614897306124cb565b905060006016548210159050601c60009054906101000a900460ff1680156148cc5750602160149054906101000a900460ff16155b80156148d55750805b801561492b5750601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b9250505090565b6001602160146101000a81548160ff0219169083151502179055506000600954111561496457614963600954614397565b5b6000600a54111561497b5761497a600a5461441b565b5b6000602160146101000a81548160ff021916908315150217905550565b6000602160149054906101000a900460ff16158015614a015750601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905090565b6001602160146101000a81548160ff0219169083151502179055506000600b541115614a3857614a37600b546144c9565b5b6000602160146101000a81548160ff021916908315150217905550565b6000600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680614af85750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15614b065760009050614baa565b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680614ba75750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b90505b92915050565b6000806000806000601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614ce757614c33600c54614c25600354896136c790919063ffffffff16565b61374d90919063ffffffff16565b925082600960008282540192505081905550614c6e600c54614c60600454896136c790919063ffffffff16565b61374d90919063ffffffff16565b915081600a60008282540192505081905550614ca9600c54614c9b600554896136c790919063ffffffff16565b61374d90919063ffffffff16565b905080600b60008282540192505081905550614ce081614cd2848661430f90919063ffffffff16565b61430f90919063ffffffff16565b9350614e13565b601260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614e1257614d62600c54614d54600654896136c790919063ffffffff16565b61374d90919063ffffffff16565b925082600960008282540192505081905550614d9d600c54614d8f600754896136c790919063ffffffff16565b61374d90919063ffffffff16565b915081600a60008282540192505081905550614dd8600c54614dca600854896136c790919063ffffffff16565b61374d90919063ffffffff16565b905080600b60008282540192505081905550614e0f81614e01848661430f90919063ffffffff16565b61430f90919063ffffffff16565b93505b5b6000841115614f1757614e6e84601a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461430f90919063ffffffff16565b601a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35b614f2a84876142b290919063ffffffff16565b9450505050509392505050565b6060600267ffffffffffffffff81118015614f5157600080fd5b50604051908082528060200260200182016040528015614f805781602001602082028036833780820191505090505b5090503081600081518110614f9157fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561503357600080fd5b505afa158015615047573d6000803e3d6000fd5b505050506040513d602081101561505d57600080fd5b81019080805190602001909291905050508160018151811061507b57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506150e230602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613797565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156151a657808201518184015260208101905061518b565b505050509050019650505050505050600060405180830381600087803b1580156151cf57600080fd5b505af11580156151e3573d6000803e3d6000fd5b505050505050565b61521830602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613797565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806152646127df565b426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b1580156152e957600080fd5b505af11580156152fd573d6000803e3d6000fd5b50505050506040513d606081101561531457600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050505050505056fe6f6e6c7920636f6e747261637420616464726573732c206e6f7420616c6c6f7765642065787465726e616c6c79206f776e6564206163636f756e7445524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a264697066735822122068ea67aa010f5d10c99d4429e3d052ea13e1a2b7bf20b4ca9c67e12391a00fc764736f6c63430007040033
Deployed Bytecode Sourcemap
21558:18800:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21282:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32518:189;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22167:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;37418:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;38042:102;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;34056:264;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23156:68;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25465:447;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;33782:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;33351:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;36086:167;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;34708:182;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22878:37;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;36441:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21468:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;37926:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23071:72;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;37682:236;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;32122:388;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22924:59;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22212:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22767:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23705:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29175:279;;;;;;;;;;;;;:::i;:::-;;33231:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;35276:209;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;35944:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;33469:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23465:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;38155:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20493:126;;;;;;;;;;;;;:::i;:::-;;35794:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;36354:79;;;;;;;;;;;;;:::i;:::-;;34898:170;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21876:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21834:35;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23587:39;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;37546:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;36261:85;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23243:41;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22588:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20228:79;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20393:92;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21961:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21373:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35618:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;31542:572;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23679:19;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;25242:215;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23508:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;33600:174;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22702:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22127:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22004:34;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22643:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31140:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22087:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;33103:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;36930:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31346:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;37204:206;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;35493:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22990:64;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;35076:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;36587:335;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21792:35;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20627:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21918:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;34328:372;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22047:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23291:35;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23748:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22480:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21282:83;21319:13;21352:5;21345:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21282:83;:::o;32518:189::-;32621:4;32643:34;32652:10;32663:7;32671:5;32643:8;:34::i;:::-;32695:4;32688:11;;32518:189;;;;:::o;22167:36::-;;;;:::o;37418:120::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;37523:7:::1;37498:15;:22;37514:5;37498:22;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;37418:120:::0;;:::o;38042:102::-;38097:7;38124:12;;38117:19;;38042:102;:::o;34056:264::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;34225:6:::1;34206:16;:25;;;;34261:13;34242:16;:32;;;;34302:10;34285:14;:27;;;;34056:264:::0;;;:::o;23156:68::-;;;;:::o;25465:447::-;25608:4;25595:2;21759:3;21745:18;;:2;:18;;;;21737:27;;;;;;25680:2:::1;25639:11;:17;25651:4;25639:17;;;;;;;;;;;;;;;:29;25657:10;25639:29;;;;;;;;;;;;;;;;:44;25635:207;;25732:98;25798:5;25732:98;;;;;;;;;;;;;;;;::::0;:11:::1;:17;25744:4;25732:17;;;;;;;;;;;;;;;:61;25768:10;25732:61;;;;;;;;;;;;;;;;:65;;:98;;;;;:::i;:::-;25700:11;:17;25712:4;25700:17;;;;;;;;;;;;;;;:29;25718:10;25700:29;;;;;;;;;;;;;;;:130;;;;25635:207;25852:30;25866:4;25872:2;25876:5;25852:13;:30::i;:::-;;25900:4;25893:11;;25465:447:::0;;;;;;:::o;33782:266::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;33955:6:::1;33937:15;:24;;;;33990:13;33972:15;:31;;;;34030:10;34014:13;:26;;;;33782:266:::0;;;:::o;33351:110::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;33446:7:::1;33427:16;;:26;;;;;;;;;;;;;;;;;;33351:110:::0;:::o;36086:167::-;36139:7;36179:66;36223:9;:21;22429:42;36223:21;;;;;;;;;;;;;;;;36179:39;36196:9;:21;22342:42;36196:21;;;;;;;;;;;;;;;;36179:12;;:16;;:39;;;;:::i;:::-;:43;;:66;;;;:::i;:::-;36159:86;;36086:167;:::o;34708:182::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;34817:11:::1;;;;;;;;;;;:35;;;34853:10;34865:16;34817:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;34708:182:::0;;:::o;22878:37::-;22913:2;22878:37;:::o;36441:138::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;36536:8:::1;36504:12;;:41;;;;;;;;;;;;;;;;;;36563:8;36556:4;;:15;;;;;;;;;;;;;;;;;;36441:138:::0;:::o;21468:83::-;21509:5;21534:9;;;;;;;;;;;21527:16;;21468:83;:::o;37926:104::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;38016:6:::1;37995:18;:27;;;;37926:104:::0;:::o;23071:72::-;;;;:::o;37682:236::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;37778:23:::1;37789:11;37778:10;:23::i;:::-;37770:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37901:5;37876:9;:22;37886:11;37876:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;37682:236:::0;;:::o;32122:388::-;32222:4;32279:72;32340:10;32279:11;:23;32291:10;32279:23;;;;;;;;;;;;;;;:56;32317:7;32279:56;;;;;;;;;;;;;;;;:60;;:72;;;;:::i;:::-;32244:11;:23;32256:10;32244:23;;;;;;;;;;;;;;;:32;32268:7;32244:32;;;;;;;;;;;;;;;:107;;;;32415:7;32367:113;;32390:10;32367:113;;;32437:11;:23;32449:10;32437:23;;;;;;;;;;;;;;;:32;32461:7;32437:32;;;;;;;;;;;;;;;;32367:113;;;;;;;;;;;;;;;;;;32498:4;32491:11;;32122:388;;;;:::o;22924:59::-;;;;:::o;22212:83::-;;;;;;;;;;;;;:::o;22767:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;23705:36::-;;;;;;;;;;;;;:::o;29175:279::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;23857:4:::1;23848:6;;:13;;;;;;;;;;;;;;;;;;29259:1:::2;29238:18;;:22;29235:63;;;29262:36;29279:18;;29262:16;:36::i;:::-;29235:63;29334:1;29313:18;;:22;29310:63;;;29337:36;29354:18;;29337:16;:36::i;:::-;29310:63;29406:1;29387:16;;:20;29384:62;;;29409:37;29429:16;;29409:19;:37::i;:::-;29384:62;23893:5:::1;23884:6;;:14;;;;;;;;;;;;;;;;;;29175:279::o:0;33231:112::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;33328:7:::1;33303:22;;:32;;;;;;;;;;;;;;;;;;33231:112:::0;:::o;35276:209::-;35390:12;20355:9;:7;:9::i;:::-;20347:18;;;;;;35422:11:::1;;;;;;;;;;;:23;;;35446:12;35460:9;35470:6;35422:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;35415:62;;35276:209:::0;;;;;:::o;35944:134::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;36023:46:::1;36054:14;;36023:26;36040:8;36023:12;;:16;;:26;;;;:::i;:::-;:30;;:46;;;;:::i;:::-;36010:10;:59;;;;35944:134:::0;:::o;33469:123::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;33577:7:::1;33555:13;:19;33569:4;33555:19;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;33469:123:::0;;:::o;23465:36::-;;;;;;;;;;;;;:::o;38155:119::-;38221:7;38248:9;:18;38258:7;38248:18;;;;;;;;;;;;;;;;38241:25;;38155:119;;;:::o;20493:126::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;20574:6:::1;;;;;;;;;;;20555:26;;;;;;;;;;;;20609:1;20592:6;;:19;;;;;;;;;;;;;;;;;;20493:126::o:0;35794:142::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;35881:46:::1;35912:14;;35881:26;35898:8;35881:12;;:16;;:26;;;;:::i;:::-;:30;;:46;;;;:::i;:::-;35864:14;:63;;;;35794:142:::0;:::o;36354:79::-;36413:4;;;;;;;;;;;36396:27;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36354:79::o;34898:170::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;34974:15:::1;34992:21;34974:39;;35032:9;35024:27;;:36;35052:7;35024:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;20376:1;34898:170:::0;:::o;21876:33::-;;;;:::o;21834:35::-;;;;:::o;23587:39::-;;;;;;;;;;;;;:::o;37546:128::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;37659:7:::1;37630:19;:26;37650:5;37630:26;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;37546:128:::0;;:::o;36261:85::-;36307:4;36332:6;;;;;;;;;;;36331:7;36324:14;;36261:85;:::o;23243:41::-;;;;;;;;;;;;;:::o;22588:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;20228:79::-;20266:7;20293:6;;;;;;;;;;;20286:13;;20228:79;:::o;20393:92::-;20433:4;20471:6;;;;;;;;;;;20457:20;;:10;:20;;;20450:27;;20393:92;:::o;21961:36::-;;;;:::o;21373:87::-;21412:13;21445:7;21438:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21373:87;:::o;35618:168::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;35707:6:::1;35701:3;:12;35693:54;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;35775:3;35758:14;:20;;;;35618:168:::0;:::o;31542:572::-;31647:4;31669:16;31688:11;:23;31700:10;31688:23;;;;;;;;;;;;;;;:32;31712:7;31688:32;;;;;;;;;;;;;;;;31669:51;;31754:8;31735:15;:27;31731:225;;31814:1;31779:11;:23;31791:10;31779:23;;;;;;;;;;;;;;;:32;31803:7;31779:32;;;;;;;;;;;;;;;:36;;;;31731:225;;;31883:61;31914:15;31883:8;:12;;:61;;;;:::i;:::-;31848:11;:23;31860:10;31848:23;;;;;;;;;;;;;;;:32;31872:7;31848:32;;;;;;;;;;;;;;;:96;;;;31731:225;32019:7;31971:113;;31994:10;31971:113;;;32041:11;:23;32053:10;32041:23;;;;;;;;;;;;;;;:32;32065:7;32041:32;;;;;;;;;;;;;;;;31971:113;;;;;;;;;;;;;;;;;;32102:4;32095:11;;;31542:572;;;;:::o;23679:19::-;;;;;;;;;;;;;:::o;25242:215::-;25369:4;25347:2;21759:3;21745:18;;:2;:18;;;;21737:27;;;;;;25391:36:::1;25405:10;25417:2;25421:5;25391:13;:36::i;:::-;;25445:4;25438:11;;25242:215:::0;;;;;:::o;23508:30::-;;;;;;;;;;;;;:::o;33600:174::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;33703:7:::1;33681:29;;:18;;;;;;;;;;;:29;;;;33673:54;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;33759:7;33738:18;;:28;;;;;;;;;;;;;;;;;;33600:174:::0;:::o;22702:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;22127:31::-;;;;:::o;22004:34::-;;;;:::o;22643:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;31140:198::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;31214:5:::1;31211:120;;;31256:5;31236:17;;:25;;;;;;;;;;;;;;;;;;31211:120;;;31314:5;31294:17;;:25;;;;;;;;;;;;;;;;;;31211:120;31140:198:::0;:::o;22087:33::-;;;;:::o;33103:120::-;33165:4;33189:19;:26;33209:5;33189:26;;;;;;;;;;;;;;;;;;;;;;;;;33182:33;;33103:120;;;:::o;36930:266::-;37025:7;37050:24;37077:9;:15;37087:4;;;;;;;;;;;37077:15;;;;;;;;;;;;;;;;37050:42;;37123:65;37165:22;:20;:22::i;:::-;37123:37;37136:23;37157:1;37136:16;:20;;:23;;;;:::i;:::-;37123:8;:12;;:37;;;;:::i;:::-;:41;;:65;;;;:::i;:::-;37103:85;;;36930:266;;;:::o;31346:188::-;31466:7;31498:11;:19;31510:6;31498:19;;;;;;;;;;;;;;;:28;31518:7;31498:28;;;;;;;;;;;;;;;;31491:35;;31346:188;;;;:::o;37204:206::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;37325:7:::1;37295:37;;:19;:26;37315:5;37295:26;;;;;;;;;;;;;;;;;;;;;;;;;:37;;;;37287:68;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;37395:7;37366:19;:26;37386:5;37366:26;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;37204:206:::0;;:::o;35493:117::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;35592:10:::1;35566:23;;:36;;;;;;;;;;;;;;;;;;35493:117:::0;:::o;22990:64::-;;;;:::o;35076:192::-;35181:12;20355:9;:7;:9::i;:::-;20347:18;;;;;;35219:12:::1;35212:29;;;35242:9;35253:6;35212:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;35205:55;;35076:192:::0;;;;;:::o;36587:335::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;36678:7:::1;36675:102;;;36711:25;:32;36737:5;36711:32;;;;;;;;;;;;;;;;;;;;;;;;;36710:33;36702:63;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;36675:102;36822:7;36787:25;:32;36813:5;36787:32;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;36866:4;36840:16;:23;36857:5;36840:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;36910:4;36881:19;:26;36901:5;36881:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;36587:335:::0;;:::o;21792:35::-;;;;:::o;20627:109::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;20700:28:::1;20719:8;20700:18;:28::i;:::-;20627:109:::0;:::o;21918:36::-;;;;:::o;34328:372::-;20355:9;:7;:9::i;:::-;20347:18;;;;;;34442:4:::1;34424:23;;:6;:23;;;;:61;;;;;34452:25;:33;34478:6;34452:33;;;;;;;;;;;;;;;;;;;;;;;;;34451:34;34424:61;34416:70;;;::::0;::::1;;34524:6;34497:16;:24;34514:6;34497:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;34547:6;34543:150;;;34570:11;;;;;;;;;;;:20;;;34591:6;34599:1;34570:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;34543:150;;;34634:11;;;;;;;;;;;:20;;;34655:6;34663:17;34673:6;34663:9;:17::i;:::-;34634:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;34543:150;34328:372:::0;;:::o;22047:33::-;;;;:::o;23291:35::-;;;;;;;;;;;;;:::o;23748:32::-;;;;;;;;;;;;;:::o;22480:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;4788:250::-;4846:7;4875:1;4870;:6;4866:47;;;4900:1;4893:8;;;;4866:47;4925:9;4941:1;4937;:5;4925:17;;4970:1;4965;4961;:5;;;;;;:10;4953:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5029:1;5022:8;;;4788:250;;;;;:::o;5046:132::-;5104:7;5131:39;5135:1;5138;5131:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;5124:46;;5046:132;;;;:::o;32715:380::-;32868:1;32851:19;;:5;:19;;;;32843:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32949:1;32930:21;;:7;:21;;;;32922:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33033:6;33003:11;:18;33015:5;33003:18;;;;;;;;;;;;;;;:27;33022:7;33003:27;;;;;;;;;;;;;;;:36;;;;33071:7;33055:32;;33064:5;33055:32;;;33080:6;33055:32;;;;;;;;;;;;;;;;;;32715:380;;;:::o;4554:226::-;4674:7;4707:1;4702;:6;;4710:12;4694:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4734:9;4750:1;4746;:5;4734:17;;4771:1;4764:8;;;4554:226;;;;;:::o;26190:1608::-;26316:4;26344:9;:17;26354:6;26344:17;;;;;;;;;;;;;;;;;;;;;;;;;26343:18;:43;;;;;26366:9;:20;26376:9;26366:20;;;;;;;;;;;;;;;;;;;;;;;;;26365:21;26343:43;26335:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26424:18;;;;;;;;;;;:47;;;;26446:13;:25;26460:10;26446:25;;;;;;;;;;;;;;;;;;;;;;;;;26424:47;:60;;;;26475:9;:7;:9::i;:::-;26424:60;26416:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26533:15;:23;26549:6;26533:23;;;;;;;;;;;;;;;;;;;;;;;;;26532:24;:55;;;;;26561:15;:26;26577:9;26561:26;;;;;;;;;;;;;;;;;;;;;;;;;26560:27;26532:55;:81;;;;;26591:22;;;;;;;;;;;26532:81;26529:186;;;26648:10;;26638:6;:20;;26630:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26529:186;26733:6;;;;;;;;;;;26729:87;;;26763:41;26778:6;26786:9;26797:6;26763:14;:41::i;:::-;26756:48;;;;26729:87;26832:20;:18;:20::i;:::-;26828:67;;;26869:14;:12;:14::i;:::-;26828:67;26911:16;:14;:16::i;:::-;26907:59;;;26944:10;:8;:10::i;:::-;26907:59;27006:29;27028:6;27006:9;:17;27016:6;27006:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;26986:9;:17;26996:6;26986:17;;;;;;;;;;;;;;;:49;;;;27056:22;27081:32;27095:6;27103:9;27081:13;:32::i;:::-;:104;;27179:6;27081:104;;;27129:34;27137:6;27145:9;27156:6;27129:7;:34::i;:::-;27081:104;27056:129;;27221:40;27246:14;27221:9;:20;27231:9;27221:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;27198:9;:20;27208:9;27198:20;;;;;;;;;;;;;;;:63;;;;27277:16;;;;;;;;;;;:51;;;;;27298:19;:30;27318:9;27298:30;;;;;;;;;;;;;;;;;;;;;;;;;27297:31;27277:51;27274:150;;;27397:14;;27353:40;27378:14;27353:20;27363:9;27353;:20::i;:::-;:24;;:40;;;;:::i;:::-;:58;;27345:67;;;;;;27274:150;27440:16;:24;27457:6;27440:24;;;;;;;;;;;;;;;;;;;;;;;;;27436:96;;27471:11;;;;;;;;;;;:20;;;27492:6;27500:17;27510:6;27500:9;:17::i;:::-;27471:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27467:63;;;;;;27436:96;27546:16;:27;27563:9;27546:27;;;;;;;;;;;;;;;;;;;;;;;;;27542:105;;27580:11;;;;;;;;;;;:20;;;27601:9;27612:20;27622:9;27612;:20::i;:::-;27580:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27576:69;;;;;;27542:105;27663:11;;;;;;;;;;;:19;;;27683:14;;27663:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27659:51;;;;;;27743:9;27727:41;;27736:6;27727:41;;;27753:14;27727:41;;;;;;;;;;;;;;;;;;27786:4;27779:11;;;26190:1608;;;;;;:::o;4410:136::-;4468:7;4495:43;4499:1;4502;4495:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4488:50;;4410:136;;;;:::o;38282:165::-;38339:4;38356:9;38407:4;38395:17;38387:25;;38438:1;38431:4;:8;38424:15;;;38282:165;;;:::o;4221:181::-;4279:7;4299:9;4315:1;4311;:5;4299:17;;4340:1;4335;:6;;4327:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4393:1;4386:8;;;4221:181;;;;:::o;38812:431::-;38871:9;38883:25;38906:1;38883:18;;:22;;:25;;;;:::i;:::-;38871:37;;38919:14;38936:28;38959:4;38936:18;;:22;;:28;;;;:::i;:::-;38919:45;;38975:18;38996:21;38975:42;;39028:22;39045:4;39028:16;:22::i;:::-;39061:19;39083:40;39109:13;39083:21;:25;;:40;;;;:::i;:::-;39061:62;;39155:31;39178:7;39155:18;;:22;;:31;;;;:::i;:::-;39134:18;:52;;;;39197:38;39210:9;39220:14;39197:12;:38::i;:::-;38812:431;;;;;:::o;38455:349::-;38514:18;38535:21;38514:42;;38567:25;38584:7;38567:16;:25::i;:::-;38603:19;38625:40;38651:13;38625:21;:25;;:40;;;;:::i;:::-;38603:62;;38697:31;38720:7;38697:18;;:22;;:31;;;;:::i;:::-;38676:18;:52;;;;38747:23;;;;;;;;;;;38739:41;;:57;38781:14;38739:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38455:349;;;:::o;29882:363::-;29947:19;29969:21;29947:43;;30001:25;30018:7;30001:16;:25::i;:::-;30037:20;30060:41;30086:14;30060:21;:25;;:41;;;;:::i;:::-;30037:64;;30131:29;30152:7;30131:16;;:20;;:29;;;;:::i;:::-;30112:16;:48;;;;30175:11;;;;;;;;;;;:19;;;30204:15;30175:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30171:65;;;;;;29882:363;;;:::o;20744:187::-;20838:1;20818:22;;:8;:22;;;;20810:31;;;;;;20886:8;20857:38;;20878:6;;;;;;;;;;;20857:38;;;;;;;;;;;;20915:8;20906:6;;:17;;;;;;;;;;;;;;;;;;20744:187;:::o;5186:225::-;5306:7;5338:1;5334;:5;5341:12;5326:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5365:9;5381:1;5377;:5;;;;;;5365:17;;5402:1;5395:8;;;5186:225;;;;;:::o;25920:262::-;26038:4;26073:27;26093:6;26073:9;:15;26083:4;26073:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;26055:9;:15;26065:4;26055:15;;;;;;;;;;;;;;;:45;;;;26127:25;26145:6;26127:9;:13;26137:2;26127:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;26111:9;:13;26121:2;26111:13;;;;;;;;;;;;;;;:41;;;;26170:4;26163:11;;25920:262;;;;;:::o;30606:358::-;30659:4;30678:28;30709:24;30727:4;30709:9;:24::i;:::-;30678:55;;30744:12;30783:18;;30759:20;:42;;30744:57;;30834:17;;;;;;;;;;;:42;;;;;30870:6;;;;;;;;;;;30869:7;30834:42;:67;;;;;30894:7;30834:67;:122;;;;;30919:25;:37;30945:10;30919:37;;;;;;;;;;;;;;;;;;;;;;;;;30918:38;30834:122;30814:142;;;;30606:358;:::o;29462:254::-;23857:4;23848:6;;:13;;;;;;;;;;;;;;;;;;29541:1:::1;29520:18;;:22;29517:89;;;29558:36;29575:18;;29558:16;:36::i;:::-;29517:89;29642:1;29621:18;;:22;29618:89;;;29659:36;29676:18;;29659:16;:36::i;:::-;29618:89;23893:5:::0;23884:6;;:14;;;;;;;;;;;;;;;;;;29462:254::o;30972:158::-;31021:4;31060:6;;;;;;;;;;;31059:7;:62;;;;;31084:25;:37;31110:10;31084:37;;;;;;;;;;;;;;;;;;;;;;;;;31083:38;31059:62;31038:83;;30972:158;:::o;29724:150::-;23857:4;23848:6;;:13;;;;;;;;;;;;;;;;;;29795:1:::1;29776:16;;:20;29773:88;;;29812:37;29832:16;;29812:19;:37::i;:::-;29773:88;23893:5:::0;23884:6;;:14;;;;;;;;;;;;;;;;;;29724:150::o;30253:345::-;30352:4;30377:19;:25;30397:4;30377:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;30406:19;:23;30426:2;30406:23;;;;;;;;;;;;;;;;;;;;;;;;;30377:52;30374:217;;;30452:5;30445:12;;;;30374:217;30514:25;:31;30540:4;30514:31;;;;;;;;;;;;;;;;;;;;;;;;;:64;;;;30549:25;:29;30575:2;30549:29;;;;;;;;;;;;;;;;;;;;;;;;;30514:64;30506:73;;30253:345;;;;;:::o;27806:1361::-;27927:7;27949:17;27977:9;27997;28017;28050:25;:33;28076:6;28050:33;;;;;;;;;;;;;;;;;;;;;;;;;28047:887;;;28108:47;28140:14;;28108:27;28119:15;;28108:6;:10;;:27;;;;:::i;:::-;:31;;:47;;;;:::i;:::-;28101:54;;28192:4;28170:18;;:26;;;;;;;;;;;28218:47;28250:14;;28218:27;28229:15;;28218:6;:10;;:27;;;;:::i;:::-;:31;;:47;;;;:::i;:::-;28211:54;;28302:4;28280:18;;:26;;;;;;;;;;;28328:45;28358:14;;28328:25;28339:13;;28328:6;:10;;:25;;;;:::i;:::-;:29;;:45;;;;:::i;:::-;28321:52;;28408:4;28388:16;;:24;;;;;;;;;;;28441;28460:4;28441:14;28450:4;28441;:8;;:14;;;;:::i;:::-;:18;;:24;;;;:::i;:::-;28429:36;;28047:887;;;28495:25;:36;28521:9;28495:36;;;;;;;;;;;;;;;;;;;;;;;;;28492:442;;;28556:48;28589:14;;28556:28;28567:16;;28556:6;:10;;:28;;;;:::i;:::-;:32;;:48;;;;:::i;:::-;28549:55;;28641:4;28619:18;;:26;;;;;;;;;;;28667:48;28700:14;;28667:28;28678:16;;28667:6;:10;;:28;;;;:::i;:::-;:32;;:48;;;;:::i;:::-;28660:55;;28752:4;28730:18;;:26;;;;;;;;;;;28778:46;28809:14;;28778:26;28789:14;;28778:6;:10;;:26;;;;:::i;:::-;:30;;:46;;;;:::i;:::-;28771:53;;28859:4;28839:16;;:24;;;;;;;;;;;28892;28911:4;28892:14;28901:4;28892;:8;;:14;;;;:::i;:::-;:18;;:24;;;;:::i;:::-;28880:36;;28492:442;28047:887;28961:1;28949:9;:13;28946:173;;;29006:39;29035:9;29006;:24;29024:4;29006:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;28979:9;:24;28997:4;28979:24;;;;;;;;;;;;;;;:66;;;;29090:4;29065:42;;29074:6;29065:42;;;29097:9;29065:42;;;;;;;;;;;;;;;;;;28946:173;29138:21;29149:9;29138:6;:10;;:21;;;;:::i;:::-;29131:28;;;;;;27806:1361;;;;;:::o;39754:564::-;39880:21;39918:1;39904:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39880:40;;39949:4;39931;39936:1;39931:7;;;;;;;;;;;;;:23;;;;;;;;;;;39975:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39965:4;39970:1;39965:7;;;;;;;;;;;;;:23;;;;;;;;;;;40001:53;40018:4;40033:6;;;;;;;;;;;40042:11;40001:8;:53::i;:::-;40093:6;;;;;;;;;;;:57;;;40165:11;40191:1;40235:4;40262;40282:15;40093:215;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39754:564;;:::o;39251:495::-;39399:53;39416:4;39431:6;;;;;;;;;;;39440:11;39399:8;:53::i;:::-;39493:6;;;;;;;;;;;:22;;;39523:9;39556:4;39576:11;39602:1;39645;39688:7;:5;:7::i;:::-;39710:15;39493:243;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39251:495;;:::o
Swarm Source
ipfs://de9532954d183d9becf8f70a50c29d37b0f4a9c0f4cbca954e64c5c22f31efb4
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.