Contract 0x5b69eabf1c748f590f60906d964158dba0f53285 2

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x96d21dbb3981754431dcae92e96c9364e2fce894c3ef2000637b48427eb543e5Transfer118659212021-10-18 0:58:224 hrs 43 mins ago0xaa4a02f10113a0dd78431d2a7a02522565cdfdee IN  0x5b69eabf1c748f590f60906d964158dba0f532850 BNB0.000562305
0x07bb4cfd7713b0d6c100e6a3f5123a6bf24a66ebadbfb5a46698310eafbab8b1Transfer118655292021-10-18 0:37:565 hrs 4 mins ago0xaa4a02f10113a0dd78431d2a7a02522565cdfdee IN  0x5b69eabf1c748f590f60906d964158dba0f532850 BNB0.000562305
0x16c661ceea63ef517343eb9f447ea964d42b7a475f7725d2511dd6929ae48c48Transfer118631832021-10-17 22:39:237 hrs 2 mins ago0xa00285e04a7cfdbc78c2f75f4d97c8c3facab147 IN  0x5b69eabf1c748f590f60906d964158dba0f532850 BNB0.000562305
0x9c32917c7cbd7e3cdddf1bf017cc963a146577f308b1754a6c98e5465f2d4283Transfer118624832021-10-17 22:04:217 hrs 37 mins ago0xb42b580cfafef54fb7b6b6333aad683fe255c97f IN  0x5b69eabf1c748f590f60906d964158dba0f532850 BNB0.000562305
0x99036324a964e27a32b55a4de0dc148c9d7de758249559c2cee17c3de49c2a24Approve118620202021-10-17 21:41:128 hrs ago0x41758b9392302014690dbcdc7c0318ab7e42dd69 IN  0x5b69eabf1c748f590f60906d964158dba0f532850 BNB0.000225695
0xbd440c26380cc6cf9a73e03a56ed47a6c3608cbfd3d0215b1b3f074260bd9032Transfer118598632021-10-17 19:52:299 hrs 49 mins ago0x2c83fa6e57159bc2a5c17adf611fe3d9192cc1c6 IN  0x5b69eabf1c748f590f60906d964158dba0f532850 BNB0.000562485
0x03fa9456515e7edb1bef74484e7a78839245d0c196ef9f4207e7f562d27f7dedApprove118590622021-10-17 19:12:2310 hrs 29 mins ago0xc16687ab1b1b4000d22fc502e7c99bfab8a203aa IN  0x5b69eabf1c748f590f60906d964158dba0f532850 BNB0.000225695
0x4a95bc617623dcec516643ba69dae02b1f334e46f0bd69af161dd5ac17254033Transfer118587892021-10-17 18:58:4410 hrs 43 mins ago0xb42b580cfafef54fb7b6b6333aad683fe255c97f IN  0x5b69eabf1c748f590f60906d964158dba0f532850 BNB0.000562305
0x5287b377412ad9915a1882e6fd6073634db6f18aa120ddcafa8c344c8e9e9d35Transfer118585022021-10-17 18:44:1910 hrs 57 mins ago0x3e741c99ec2cc53d0f544a233b6a457daebf60ee IN  0x5b69eabf1c748f590f60906d964158dba0f532850 BNB0.000562305
0x7587dec2ec60e7929164d926f90d41b3cf656ca2f6e595282b4d39a91e4f46dfTransfer118584912021-10-17 18:43:4610 hrs 58 mins ago0x10bda90844ab24505a3a58272194f94c1e68f72e IN  0x5b69eabf1c748f590f60906d964158dba0f532850 BNB0.000562305
0xb9fd0279104ef1a6a2b61dc3b3b6c596cdf10c66eb7d550b2f03341ee67fe33fTransfer118582632021-10-17 18:32:2211 hrs 9 mins ago0x30b73bc08c76d8829f0b34e0316dd7af6b71a810 IN  0x5b69eabf1c748f590f60906d964158dba0f532850 BNB0.000562305
0x015d383f7c53d6cbeb6eeadebbf3beeaf931ab9598a0978ced3e26ae75097e9eTransfer118575132021-10-17 17:54:5011 hrs 47 mins ago0xab3177158b706083c8fac23b16507d21da3a94b5 IN  0x5b69eabf1c748f590f60906d964158dba0f532850 BNB0.000562245
0x2402f811837390064d62da1d7d808c694a01d842f46b5b2747f3cbfe9466b3a6Transfer118572742021-10-17 17:42:5311 hrs 59 mins ago0x92f6bbe45a8dcfaac5ba27e75cc4a086903338ba IN  0x5b69eabf1c748f590f60906d964158dba0f532850 BNB0.000562125
0xd14ea04c17cc104525b05469a9b44b6aea46e28e6ba6f0c0565125327f6ee33bTransfer118571472021-10-17 17:36:3212 hrs 5 mins ago0x3bf8925e3e24ae0bfb57a3a6ec93271d1fb79940 IN  0x5b69eabf1c748f590f60906d964158dba0f532850 BNB0.000562305
0x6b0dbae40afaf1015e6e669a71e733e34676b1ffef5e6d04796521e37e256015Approve118566082021-10-17 17:09:3512 hrs 32 mins ago0x11e194ab1814f1f71891c80cdfcfd908f58a04cc IN  0x5b69eabf1c748f590f60906d964158dba0f532850 BNB0.000225695
0x078d0bcaf1417f535290d43b8ee022e667abfb34e14306e69bfcdb8eb1ae9535Transfer118562482021-10-17 16:51:1012 hrs 50 mins ago0xaa4a02f10113a0dd78431d2a7a02522565cdfdee IN  0x5b69eabf1c748f590f60906d964158dba0f532850 BNB0.000562305
0x2d732e19a4c719253b6c84dd302c825001cf1852773383752282db807c084032Transfer118557042021-10-17 16:23:5013 hrs 18 mins ago0x90332a5544b8593995e6ee6e32724d0c7c8ea1ff IN  0x5b69eabf1c748f590f60906d964158dba0f532850 BNB0.000562245
0x1829b52c689221201d0e3eb281c73bac4af67caf6a514351b3dbfb370218e3b7Transfer118556812021-10-17 16:22:4113 hrs 19 mins ago0x61a06269e907250865cd4d3d18a0ed64b8c272ef IN  0x5b69eabf1c748f590f60906d964158dba0f532850 BNB0.000562245
0xed74aecb458ae4af3d93951a42907e0d3ce7c2534e15f2256a9a8ffe75c3bc47Transfer118542912021-10-17 15:11:2714 hrs 30 mins ago0xf74761baa667f1dd112cb74bf2f054c80eed27d0 IN  0x5b69eabf1c748f590f60906d964158dba0f532850 BNB0.000562485
0x86adcd53a4667972efac1e10131d2a8cfa3e5f391d3a19a0d225c155fe683d53Transfer118540052021-10-17 14:57:0914 hrs 44 mins ago0x82de2dd103d5ea0c841a5ce87a16779534cfe31a IN  0x5b69eabf1c748f590f60906d964158dba0f532850 BNB0.000562305
0xf7332025d96ebf32bc60cecf1005015cc43ece70339450ebaa6c5686532204a6Transfer118521152021-10-17 13:22:1716 hrs 19 mins ago0x859ce164a48381d5db312bdb9720351824360cec IN  0x5b69eabf1c748f590f60906d964158dba0f532850 BNB0.000562305
0xf3d0497edf6dbb3cfb04922836b0ed509799f8366e6a674f62e1af89ba28db6cTransfer118519572021-10-17 13:14:1616 hrs 27 mins ago0x72449b80ce28f56d5dc8eff3bc67a507f2d477dd IN  0x5b69eabf1c748f590f60906d964158dba0f532850 BNB0.000487485
0xb6748baad6ec2df43b736dfc3a5e0f9764f96a3c7da24ef3468dd9899b52003eTransfer118518672021-10-17 13:09:4616 hrs 32 mins ago0x580e1abcd1433de151261c6c85f486d29c601d03 IN  0x5b69eabf1c748f590f60906d964158dba0f532850 BNB0.000562305
0x12930ab9c7150777be55599c9c449f63c00cb50054aa4f1090fe1de3c72017ffTransfer118514722021-10-17 12:49:4916 hrs 52 mins ago0x82de2dd103d5ea0c841a5ce87a16779534cfe31a IN  0x5b69eabf1c748f590f60906d964158dba0f532850 BNB0.000487305
0x2d41ead63df872a8a34524a904fa2f9348b897c931287b76e3292cfed7333dc5Approve118510402021-10-17 12:27:3417 hrs 14 mins ago0x03b943ce571f23ee4b40d28cacf37acf954aa932 IN  0x5b69eabf1c748f590f60906d964158dba0f532850 BNB0.000225695
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Brigadeiro

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-05-30
*/

pragma solidity ^0.8.0;
// SPDX-License-Identifier: Unlicensed


/**
    Welcome to Brigadeiro.Finance. A Charitable Yield-Generating Crypto.
    Help us save children and give them wonderful experiences with Brigadeiro.Finance
    
    5% of Total Supply + Rewards is set-up for Charity
    5% Dev Wallet for Marketing and Growth of the Token
    
    10% tax on transactions
    6% reflected back to holders
    4% sent directly to burn address
    
    Burn address does not receive reflections.
    
    1% max of supply in one transaction
*/
    
interface IERC20 {
	function totalSupply() external view returns (uint256);
	function balanceOf(address account) external view returns (uint256);
	function transfer(address recipient, uint256 amount) external returns (bool);
	function allowance(address owner, address spender) external view returns (uint256);
	function approve(address spender, uint256 amount) external returns (bool);
	function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
	event Transfer(address indexed from, address indexed to, uint256 value);
	event Approval(address indexed owner, address indexed spender, uint256 value);
}

abstract contract ReentrancyGuard {
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;
    uint256 private _status;
    constructor () {
        _status = _NOT_ENTERED;
    }

    modifier nonReentrant() {
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
        _status = _ENTERED;
        _;
        _status = _NOT_ENTERED;
    }
}

library SafeMath {
	function add(uint256 a, uint256 b) internal pure returns (uint256) {uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c;}	
	function sub(uint256 a, uint256 b) internal pure returns (uint256) {return sub(a, b, "SafeMath: subtraction overflow");}
	function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {require(b <= a, errorMessage);uint256 c = a - b;return c;}
	function mul(uint256 a, uint256 b) internal pure returns (uint256) {if (a == 0) {return 0;}uint256 c = a * b;require(c / a == b, "SafeMath: multiplication overflow");return c;}
	function div(uint256 a, uint256 b) internal pure returns (uint256) {return div(a, b, "SafeMath: division by zero");}
	function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {require(b > 0, errorMessage);uint256 c = a / b;return c;}
	function mod(uint256 a, uint256 b) internal pure returns (uint256) {return mod(a, b, "SafeMath: modulo by zero");}
	function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {require(b != 0, errorMessage);return a % b;}
}

abstract contract Context {
	function _msgSender() internal view virtual returns (address) {return msg.sender;}
	function _msgData() internal view virtual returns (bytes memory) {this;return msg.data;}
}

library Address {
	
	function isContract(address account) internal view returns (bool) {
		bytes32 codehash;
		bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
		// solhint-disable-next-line no-inline-assembly
		assembly { codehash := extcodehash(account) }
		return (codehash != accountHash && codehash != 0x0);
	}

	function sendValue(address payable recipient, uint256 amount) internal {
		require(address(this).balance >= amount, "Address: insufficient balance");
		// solhint-disable-next-line avoid-low-level-calls, avoid-call-value
		(bool success, ) = recipient.call{ value: amount }("");
		require(success, "Address: unable to send value, recipient may have reverted");
	}

	function functionCall(address target, bytes memory data) internal returns (bytes memory) {
	  return functionCall(target, data, "Address: low-level call failed");
	}

	function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
		return _functionCallWithValue(target, data, 0, errorMessage);
	}

	function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
		return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
	}

	function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
		require(address(this).balance >= value, "Address: insufficient balance for call");
		return _functionCallWithValue(target, data, value, errorMessage);
	}

	function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
		require(isContract(target), "Address: call to non-contract");
		// solhint-disable-next-line avoid-low-level-calls
		(bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
		if (success) {
			return returndata;
		} else {
			if (returndata.length > 0) {
				// solhint-disable-next-line no-inline-assembly
				assembly {
					let returndata_size := mload(returndata)
					revert(add(32, returndata), returndata_size)
				}
			} else {
				revert(errorMessage);
			}
		}
	}
}

contract Ownable is Context {
	address private _owner;
	address private _previousOwner;
	uint256 private _lockTime;
	event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
	constructor () {
		address msgSender = _msgSender();
		_owner = msgSender;
		emit OwnershipTransferred(address(0), msgSender);
	}
	function owner() public view returns (address) {return _owner;}
	modifier onlyOwner() {require(_owner == _msgSender(), "Ownable: caller is not the owner");_;}
	function renounceOwnership() public virtual onlyOwner {emit OwnershipTransferred(_owner, address(0)); _owner = address(0);}
	function transferOwnership(address newOwner) public virtual onlyOwner {
		require(newOwner != address(0), "Ownable: new owner is the zero address");
		emit OwnershipTransferred(_owner, newOwner);
		_owner = newOwner;
	}
	function geUnlockTime() public view returns (uint256) {return _lockTime;}
	function lock(uint256 time) public virtual onlyOwner {
		_previousOwner = _owner;
		_owner = address(0);
		_lockTime = block.timestamp + time;
		emit OwnershipTransferred(_owner, address(0));
	}
	
	function unlock() public virtual {
		require(_previousOwner == msg.sender, "You don't have permission to unlock");
		require(block.timestamp > _lockTime , "Contract is locked until 7 days");
		emit OwnershipTransferred(_owner, _previousOwner);
		_owner = _previousOwner;
	}
}

interface IUniswapV2Factory {
	event PairCreated(address indexed token0, address indexed token1, address pair, uint);
	function feeTo() external view returns (address);
	function feeToSetter() external view returns (address);
	function getPair(address tokenA, address tokenB) external view returns (address pair);
	function allPairs(uint) external view returns (address pair);
	function allPairsLength() external view returns (uint);
	function createPair(address tokenA, address tokenB) external returns (address pair);
	function setFeeTo(address) external;
	function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
	event Approval(address indexed owner, address indexed spender, uint value);
	event Transfer(address indexed from, address indexed to, uint value);
	function name() external pure returns (string memory);
	function symbol() external pure returns (string memory);
	function decimals() external pure returns (uint8);
	function totalSupply() external view returns (uint);
	function balanceOf(address owner) external view returns (uint);
	function allowance(address owner, address spender) external view returns (uint);
	function approve(address spender, uint value) external returns (bool);
	function transfer(address to, uint value) external returns (bool);
	function transferFrom(address from, address to, uint value) external returns (bool);
	function DOMAIN_SEPARATOR() external view returns (bytes32);
	function PERMIT_TYPEHASH() external pure returns (bytes32);
	function nonces(address owner) external view returns (uint);
	function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
	event 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 IUniswapV2Router01 {
	function factory() external pure returns (address);
	function WETH() external pure returns (address);
	function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline
	) external returns (uint amountA, uint amountB, uint liquidity);
	function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline
	) external payable returns (uint amountToken, uint amountETH, uint liquidity);
	function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline
	) external returns (uint amountA, uint amountB);
	function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline
	) external returns (uint amountToken, uint amountETH);
	function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s
	) external returns (uint amountA, uint amountB);
	function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s
	) external returns (uint amountToken, uint amountETH);
	function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline
	) external returns (uint[] memory amounts);
	function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline
	) external returns (uint[] memory amounts);
	function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts);
	function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts);
	function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts);
	function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts);
	function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
	function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
	function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
	function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
	function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
	function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline
	) external returns (uint amountETH);
	function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s
	) external returns (uint amountETH);
	function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline
	) external;
	function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline
	) external payable;
	function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline
	) external;
}

contract Brigadeiro is Context, IERC20, Ownable, ReentrancyGuard {
	using SafeMath for uint256;
	using Address for address;

	mapping (address => uint256) private _rOwned;
	mapping (address => uint256) private _tOwned;
	mapping (address => mapping (address => uint256)) private _allowances;

	mapping (address => bool) private _isExcludedFromFee;
	mapping (address => bool) private _isExcludedFromReward;
	address[] private _excludedFromReward;

	address BURN_ADDRESS = 0x0000000000000000000000000000000000000001;
	
	uint256 private constant MAX = ~uint256(0);
	uint256 private _tTotal = 100000000000000000000000 * 10**9;
	uint256 private _rTotal = (MAX - (MAX % _tTotal));
	uint256 private _tHODLrRewardsTotal;

	string private _name = "Brigadeiro.Finance";
	string private _symbol = "BRIGADEIRO";
	uint8 private _decimals = 9;
	
	uint256 public _rewardFee = 6;
	uint256 private _previousRewardFee = _rewardFee;
	
	uint256 public _burnFee = 4;
	uint256 private _previousBurnFee = _burnFee;

	IUniswapV2Router02 public immutable uniswapV2Router;
	address public immutable uniswapV2Pair;
	uint256 public _maxTxAmount = 1000000000000000000000 * 10**9;

	event TransferBurn(address indexed from, address indexed burnAddress, uint256 value);

	constructor () {
		_rOwned[_msgSender()] = _rTotal;
		//IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0xD99D1c33F9fC3444f8101754aBC46c52416550D1);		// binance PANCAKE TEST
		IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x10ED43C718714eb63d5aA57B78B54704E256024E);		// binance PANCAKE V2
		uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
		uniswapV2Router = _uniswapV2Router;
		_isExcludedFromFee[owner()] = true;
		_isExcludedFromFee[address(this)] = true;
		_isExcludedFromReward[address(this)] = true;
		_isExcludedFromFee[BURN_ADDRESS] = true;
		_isExcludedFromReward[BURN_ADDRESS] = true;
		emit Transfer(address(0), _msgSender(), _tTotal);
	}

	function name() public view returns (string memory) {return _name;}
	function symbol() public view returns (string memory) {return _symbol;}
	function decimals() public view returns (uint8) {return _decimals;}
	function totalSupply() public view override returns (uint256) {return _tTotal;}

	function balanceOf(address account) public view override returns (uint256) {
		if (_isExcludedFromReward[account]) return _tOwned[account];
		return tokenFromReflection(_rOwned[account]);
	}

	function withdraw() external onlyOwner nonReentrant{
		uint256 balance = IERC20(address(this)).balanceOf(address(this));
		IERC20(address(this)).transfer(msg.sender, balance);
		payable(msg.sender).transfer(address(this).balance);
	}

	function transfer(address recipient, uint256 amount) public override returns (bool) {
		_transfer(_msgSender(), recipient, amount);
		return true;
	}

	function allowance(address owner, address spender) public view override returns (uint256) {
		return _allowances[owner][spender];
	}

	function approve(address spender, uint256 amount) public override returns (bool) {
		_approve(_msgSender(), spender, amount);
		return true;
	}

	function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
		_transfer(sender, recipient, amount);
		_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
		return true;
	}

	function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
		_approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
		return true;
	}

	function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
		_approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
		return true;
	}

	function totalHODLrRewards() public view returns (uint256) {
		return _tHODLrRewardsTotal;
	}

	function totalBurned() public view returns (uint256) {
		return balanceOf(BURN_ADDRESS);
	}

	function deliver(uint256 tAmount) public {
		address sender = _msgSender();
		require(!_isExcludedFromReward[sender], "Excluded addresses cannot call this function");
		(uint256 rAmount,,,,,) = _getValues(tAmount);
		_rOwned[sender] = _rOwned[sender].sub(rAmount);
		_rTotal = _rTotal.sub(rAmount);
		_tHODLrRewardsTotal = _tHODLrRewardsTotal.add(tAmount);
	}

	function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
		require(tAmount <= _tTotal, "Amount must be less than supply");
		if (!deductTransferFee) {
			(uint256 rAmount,,,,,) = _getValues(tAmount);
			return rAmount;
		} else {
			(,uint256 rTransferAmount,,,,) = _getValues(tAmount);
			return rTransferAmount;
		}
	}

	function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
		require(rAmount <= _rTotal, "Amount must be less than total reflections");
		uint256 currentRate =  _getRate();
		return rAmount.div(currentRate);
	}

	function isExcludedFromReward(address account) public view returns (bool) {
		return _isExcludedFromReward[account];
	}

	function excludeFromReward(address account) public onlyOwner {
		require(!_isExcludedFromReward[account], "Account is already excluded");
		if(_rOwned[account] > 0) {
			_tOwned[account] = tokenFromReflection(_rOwned[account]);
		}
		_isExcludedFromReward[account] = true;
		_excludedFromReward.push(account);
	}

	function includeInReward(address account) external onlyOwner {
		require(_isExcludedFromReward[account], "Account is already excluded");
		for (uint256 i = 0; i < _excludedFromReward.length; i++) {
			if (_excludedFromReward[i] == account) {
				_excludedFromReward[i] = _excludedFromReward[_excludedFromReward.length - 1];
				_tOwned[account] = 0;
				_isExcludedFromReward[account] = false;
				_excludedFromReward.pop();
				break;
			}
		}
	}

	function excludeFromFee(address account) public onlyOwner {
		_isExcludedFromFee[account] = true;
	}
	
	function includeInFee(address account) public onlyOwner {
		_isExcludedFromFee[account] = false;
	}
	
	function setRewardFeePercent(uint256 rewardFee) external onlyOwner {
		_rewardFee = rewardFee;
	}
	
	function setBurnFeePercent(uint256 burnFee) external onlyOwner {
		_burnFee = burnFee;
	}
	
	function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner {
		_maxTxAmount = _tTotal.mul(maxTxPercent).div(
			10**2
		);
	}

	receive() external payable {}

	function _HODLrFee(uint256 rHODLrFee, uint256 tHODLrFee) private {
		_rTotal = _rTotal.sub(rHODLrFee);
		_tHODLrRewardsTotal = _tHODLrRewardsTotal.add(tHODLrFee);
	}

	function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
		(uint256 tTransferAmount, uint256 tHODLrFee, uint256 tBurn) = _getTValues(tAmount);
		(uint256 rAmount, uint256 rTransferAmount, uint256 rHODLrFee) = _getRValues(tAmount, tHODLrFee, tBurn, _getRate());
		return (rAmount, rTransferAmount, rHODLrFee, tTransferAmount, tHODLrFee, tBurn);
	}

	function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256) {
		uint256 tHODLrFee = calculateRewardFee(tAmount);
		uint256 tBurn = calculateBurnFee(tAmount);
		uint256 tTransferAmount = tAmount.sub(tHODLrFee).sub(tBurn);
		return (tTransferAmount, tHODLrFee, tBurn);
	}

	function _getRValues(uint256 tAmount, uint256 tHODLrFee, uint256 tBurn, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
		uint256 rAmount = tAmount.mul(currentRate);
		uint256 rHODLrFee = tHODLrFee.mul(currentRate);
		uint256 rBurn = tBurn.mul(currentRate);
		uint256 rTransferAmount = rAmount.sub(rHODLrFee).sub(rBurn);
		return (rAmount, rTransferAmount, rHODLrFee);
	}

	function _getRate() private view returns(uint256) {
		(uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
		return rSupply.div(tSupply);
	}

	function _getCurrentSupply() private view returns(uint256, uint256) {
		uint256 rSupply = _rTotal;
		uint256 tSupply = _tTotal;
		for (uint256 i = 0; i < _excludedFromReward.length; i++) {
			if (_rOwned[_excludedFromReward[i]] > rSupply || _tOwned[_excludedFromReward[i]] > tSupply) return (_rTotal, _tTotal);
			rSupply = rSupply.sub(_rOwned[_excludedFromReward[i]]);
			tSupply = tSupply.sub(_tOwned[_excludedFromReward[i]]);
		}
		if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
		return (rSupply, tSupply);
	}
	

	
	function calculateRewardFee(uint256 _amount) private view returns (uint256) {
		return _amount.mul(_rewardFee).div(
			10**2
		);
	}

	function calculateBurnFee(uint256 _amount) private view returns (uint256) {
		return _amount.mul(_burnFee).div(
			10**2
		);
	}
	
	function removeAllFee() private {
		if(_rewardFee == 0 && _burnFee == 0) return;		
		_previousRewardFee = _rewardFee;
		_previousBurnFee = _burnFee;		
		_rewardFee = 0;
		_burnFee = 0;
	}
	
	function restoreAllFee() private {
		_rewardFee = _previousRewardFee;
		_burnFee = _previousBurnFee;
	}
	
	function isExcludedFromFee(address account) public view returns(bool) {
		return _isExcludedFromFee[account];
	}

	function _approve(address owner, address spender, uint256 amount) private {
		require(owner != address(0), "ERC20: approve from the zero address");
		require(spender != address(0), "ERC20: approve to the zero address");
		_allowances[owner][spender] = amount;
		emit Approval(owner, spender, amount);
	}

	function _transfer(
		address from,
		address to,
		uint256 amount
	) private {
		require(from != address(0), "ERC20: transfer from the zero address");
		require(to != address(0), "ERC20: transfer to the zero address");
		require(amount > 0, "Transfer amount must be greater than zero");
		if(from != owner() && to != owner())
			require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
		bool takeFee = true;
		if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){
			takeFee = false;
		}
		_tokenTransfer(from,to,amount,takeFee);
	}
	function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private {
		if(!takeFee)
			removeAllFee();		
		if (_isExcludedFromReward[sender] && !_isExcludedFromReward[recipient]) {
			_transferFromExcluded(sender, recipient, amount);
		} else if (!_isExcludedFromReward[sender] && _isExcludedFromReward[recipient]) {
			_transferToExcluded(sender, recipient, amount);
		} else if (!_isExcludedFromReward[sender] && !_isExcludedFromReward[recipient]) {
			_transferStandard(sender, recipient, amount);
		} else if (_isExcludedFromReward[sender] && _isExcludedFromReward[recipient]) {
			_transferBothExcluded(sender, recipient, amount);
		} else {
			_transferStandard(sender, recipient, amount);
		}		
		if(!takeFee)
			restoreAllFee();
	}

	function _transferBurn(uint256 tBurn) private {
		uint256 currentRate = _getRate();
		uint256 rBurn = tBurn.mul(currentRate);		
		_rOwned[BURN_ADDRESS] = _rOwned[BURN_ADDRESS].add(rBurn);
		if(_isExcludedFromReward[BURN_ADDRESS])
			_tOwned[BURN_ADDRESS] = _tOwned[BURN_ADDRESS].add(tBurn);
	}

	function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
		(
			uint256 rAmount,
			uint256 rTransferAmount,
			uint256 rHODLrFee,
			uint256 tTransferAmount,
			uint256 tHODLrFee,
			uint256 tBurn
		) = _getValues(tAmount);
		_tOwned[sender] = _tOwned[sender].sub(tAmount);
		_rOwned[sender] = _rOwned[sender].sub(rAmount);
		_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
		_transferBurn(tBurn);
		_HODLrFee(rHODLrFee, tHODLrFee);
		emit TransferBurn(sender, BURN_ADDRESS, tBurn);
		emit Transfer(sender, recipient, tTransferAmount);
	}
	
	function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
		(uint256 rAmount, uint256 rTransferAmount, uint256 rHODLrFee, uint256 tTransferAmount, uint256 tHODLrFee, uint256 tBurn) = _getValues(tAmount);
		_rOwned[sender] = _rOwned[sender].sub(rAmount);
		_tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
		_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
		_transferBurn(tBurn);
		_HODLrFee(rHODLrFee, tHODLrFee);		
		emit TransferBurn(sender, BURN_ADDRESS, tBurn);
		emit Transfer(sender, recipient, tTransferAmount);
	}
	
	function _transferStandard(address sender, address recipient, uint256 tAmount) private {
		(uint256 rAmount, uint256 rTransferAmount, uint256 rHODLrFee, uint256 tTransferAmount, uint256 tHODLrFee, uint256 tBurn) = _getValues(tAmount);
		_rOwned[sender] = _rOwned[sender].sub(rAmount);
		_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
		_transferBurn(tBurn);
		_HODLrFee(rHODLrFee, tHODLrFee);
		emit TransferBurn(sender, BURN_ADDRESS, tBurn);
		emit Transfer(sender, recipient, tTransferAmount);
	}

	function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
		(uint256 rAmount, uint256 rTransferAmount, uint256 rHODLrFee, uint256 tTransferAmount, uint256 tHODLrFee, uint256 tBurn) = _getValues(tAmount);
		_tOwned[sender] = _tOwned[sender].sub(tAmount);
		_rOwned[sender] = _rOwned[sender].sub(rAmount);
		_tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
		_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
		_transferBurn(tBurn);
		_HODLrFee(rHODLrFee, tHODLrFee);
		emit TransferBurn(sender, BURN_ADDRESS, tBurn);
		emit Transfer(sender, recipient, tTransferAmount);
	}

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"burnAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferBurn","type":"event"},{"inputs":[],"name":"_burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_rewardFee","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":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"geUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","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":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"burnFee","type":"uint256"}],"name":"setBurnFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rewardFee","type":"uint256"}],"name":"setRewardFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalHODLrRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526001600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506d04ee2d6d415b85acef8100000000600b55600b546000196200006a91906200095b565b600019620000799190620008ac565b600c556040518060400160405280601281526020017f4272696761646569726f2e46696e616e63650000000000000000000000000000815250600e9080519060200190620000c99291906200074d565b506040518060400160405280600a81526020017f4252494741444549524f00000000000000000000000000000000000000000000815250600f9080519060200190620001179291906200074d565b506009601060006101000a81548160ff021916908360ff160217905550600660115560115460125560046013556013546014556c0c9f2c9cd04674edea400000006015553480156200016857600080fd5b5060006200017b6200071c60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506001600381905550600c5460046000620002386200071c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060007310ed43c718714eb63d5aa57b78b54704e256024e90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002d657600080fd5b505afa158015620002eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000311919062000814565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200037457600080fd5b505afa15801562000389573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003af919062000814565b6040518363ffffffff1660e01b8152600401620003ce92919062000862565b602060405180830381600087803b158015620003e957600080fd5b505af1158015620003fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000424919062000814565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b81525050600160076000620004a76200072460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006ac6200071c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b546040516200070d91906200088f565b60405180910390a35062000a3a565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8280546200075b9062000925565b90600052602060002090601f0160209004810192826200077f5760008555620007cb565b82601f106200079a57805160ff1916838001178555620007cb565b82800160010185558215620007cb579182015b82811115620007ca578251825591602001919060010190620007ad565b5b509050620007da9190620007de565b5090565b5b80821115620007f9576000816000905550600101620007df565b5090565b6000815190506200080e8162000a20565b92915050565b6000602082840312156200082757600080fd5b60006200083784828501620007fd565b91505092915050565b6200084b81620008e7565b82525050565b6200085c816200091b565b82525050565b600060408201905062000879600083018562000840565b62000888602083018462000840565b9392505050565b6000602082019050620008a6600083018462000851565b92915050565b6000620008b9826200091b565b9150620008c6836200091b565b925082821015620008dc57620008db62000993565b5b828203905092915050565b6000620008f482620008fb565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060028204905060018216806200093e57607f821691505b60208210811415620009555762000954620009f1565b5b50919050565b600062000968826200091b565b915062000975836200091b565b925082620009885762000987620009c2565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b62000a2b81620008e7565b811462000a3757600080fd5b50565b60805160601c60a05160601c6151fc62000a6660003960006114ee0152600061098901526151fc6000f3fe60806040526004361061021e5760003560e01c806370a0823111610123578063b6c52324116100ab578063dd4670641161006f578063dd467064146107f4578063dd62ed3e1461081d578063e26635031461085a578063ea2f0b3714610885578063f2fde38b146108ae57610225565b8063b6c5232414610721578063c0b0fda21461074c578063cea2695814610777578063d543dbeb146107a0578063d89135cd146107c957610225565b80638da5cb5b116100f25780638da5cb5b1461063a57806395d89b4114610665578063a457c2d714610690578063a69df4b5146106cd578063a9059cbb146106e457610225565b806370a082311461057e578063715018a6146105bb5780637d1db4a5146105d257806388f82020146105fd57610225565b80633bd5d173116101a657806349bd5a5e1161017557806349bd5a5e1461049957806351fde4bb146104c457806352390c02146104ef5780635342acb4146105185780636bebaf971461055557610225565b80633bd5d173146103f35780633ccfd60b1461041c578063437823ec146104335780634549b0391461045c57610225565b806323b872dd116101ed57806323b872dd146102e85780632d83811914610325578063313ce567146103625780633685d4191461038d57806339509351146103b657610225565b806306fdde031461022a578063095ea7b3146102555780631694505e1461029257806318160ddd146102bd57610225565b3661022557005b600080fd5b34801561023657600080fd5b5061023f6108d7565b60405161024c9190614bc6565b60405180910390f35b34801561026157600080fd5b5061027c600480360381019061027791906143f3565b610969565b6040516102899190614b90565b60405180910390f35b34801561029e57600080fd5b506102a7610987565b6040516102b49190614bab565b60405180910390f35b3480156102c957600080fd5b506102d26109ab565b6040516102df9190614e08565b60405180910390f35b3480156102f457600080fd5b5061030f600480360381019061030a91906143a4565b6109b5565b60405161031c9190614b90565b60405180910390f35b34801561033157600080fd5b5061034c60048036038101906103479190614458565b610a8e565b6040516103599190614e08565b60405180910390f35b34801561036e57600080fd5b50610377610afc565b6040516103849190614e23565b60405180910390f35b34801561039957600080fd5b506103b460048036038101906103af919061433f565b610b13565b005b3480156103c257600080fd5b506103dd60048036038101906103d891906143f3565b610efa565b6040516103ea9190614b90565b60405180910390f35b3480156103ff57600080fd5b5061041a60048036038101906104159190614458565b610fad565b005b34801561042857600080fd5b50610431611128565b005b34801561043f57600080fd5b5061045a6004803603810190610455919061433f565b611378565b005b34801561046857600080fd5b50610483600480360381019061047e91906144aa565b611468565b6040516104909190614e08565b60405180910390f35b3480156104a557600080fd5b506104ae6114ec565b6040516104bb9190614b4c565b60405180910390f35b3480156104d057600080fd5b506104d9611510565b6040516104e69190614e08565b60405180910390f35b3480156104fb57600080fd5b506105166004803603810190610511919061433f565b611516565b005b34801561052457600080fd5b5061053f600480360381019061053a919061433f565b6117ca565b60405161054c9190614b90565b60405180910390f35b34801561056157600080fd5b5061057c60048036038101906105779190614458565b611820565b005b34801561058a57600080fd5b506105a560048036038101906105a0919061433f565b6118bf565b6040516105b29190614e08565b60405180910390f35b3480156105c757600080fd5b506105d06119aa565b005b3480156105de57600080fd5b506105e7611afd565b6040516105f49190614e08565b60405180910390f35b34801561060957600080fd5b50610624600480360381019061061f919061433f565b611b03565b6040516106319190614b90565b60405180910390f35b34801561064657600080fd5b5061064f611b59565b60405161065c9190614b4c565b60405180910390f35b34801561067157600080fd5b5061067a611b82565b6040516106879190614bc6565b60405180910390f35b34801561069c57600080fd5b506106b760048036038101906106b291906143f3565b611c14565b6040516106c49190614b90565b60405180910390f35b3480156106d957600080fd5b506106e2611ce1565b005b3480156106f057600080fd5b5061070b600480360381019061070691906143f3565b611eb5565b6040516107189190614b90565b60405180910390f35b34801561072d57600080fd5b50610736611ed3565b6040516107439190614e08565b60405180910390f35b34801561075857600080fd5b50610761611edd565b60405161076e9190614e08565b60405180910390f35b34801561078357600080fd5b5061079e60048036038101906107999190614458565b611ee3565b005b3480156107ac57600080fd5b506107c760048036038101906107c29190614458565b611f82565b005b3480156107d557600080fd5b506107de612048565b6040516107eb9190614e08565b60405180910390f35b34801561080057600080fd5b5061081b60048036038101906108169190614458565b61207a565b005b34801561082957600080fd5b50610844600480360381019061083f9190614368565b612241565b6040516108519190614e08565b60405180910390f35b34801561086657600080fd5b5061086f6122c8565b60405161087c9190614e08565b60405180910390f35b34801561089157600080fd5b506108ac60048036038101906108a7919061433f565b6122d2565b005b3480156108ba57600080fd5b506108d560048036038101906108d0919061433f565b6123c2565b005b6060600e80546108e69061501b565b80601f01602080910402602001604051908101604052809291908181526020018280546109129061501b565b801561095f5780601f106109345761010080835404028352916020019161095f565b820191906000526020600020905b81548152906001019060200180831161094257829003601f168201915b5050505050905090565b600061097d610976612584565b848461258c565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600b54905090565b60006109c2848484612757565b610a83846109ce612584565b610a7e8560405180606001604052806028815260200161517a60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a34612584565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129fe9092919063ffffffff16565b61258c565b600190509392505050565b6000600c54821115610ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acc90614c08565b60405180910390fd5b6000610adf612a62565b9050610af48184612a8d90919063ffffffff16565b915050919050565b6000601060009054906101000a900460ff16905090565b610b1b612584565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9f90614d08565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610c34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2b90614c88565b60405180910390fd5b60005b600980549050811015610ef6578173ffffffffffffffffffffffffffffffffffffffff1660098281548110610c95577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610ee35760096001600980549050610cf09190614f3b565b81548110610d27577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660098281548110610d8c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009805480610ea9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055610ef6565b8080610eee9061504d565b915050610c37565b5050565b6000610fa3610f07612584565b84610f9e8560066000610f18612584565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad790919063ffffffff16565b61258c565b6001905092915050565b6000610fb7612584565b9050600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611046576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103d90614dc8565b60405180910390fd5b600061105183612b35565b505050505090506110aa81600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b9190919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061110281600c54612b9190919063ffffffff16565b600c8190555061111d83600d54612ad790919063ffffffff16565b600d81905550505050565b611130612584565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b490614d08565b60405180910390fd5b60026003541415611203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fa90614da8565b60405180910390fd5b600260038190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112469190614b4c565b60206040518083038186803b15801561125e57600080fd5b505afa158015611272573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112969190614481565b90503073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016112d3929190614b67565b602060405180830381600087803b1580156112ed57600080fd5b505af1158015611301573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611325919061442f565b503373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561136c573d6000803e3d6000fd5b50506001600381905550565b611380612584565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461140d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140490614d08565b60405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600b548311156114af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a690614ca8565b60405180910390fd5b816114cf5760006114bf84612b35565b50505050509050809150506114e6565b60006114da84612b35565b50505050915050809150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60115481565b61151e612584565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a290614d08565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162f90614c88565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561170c576116c8600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a8e565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611828612584565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ac90614d08565b60405180910390fd5b8060118190555050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561195a57600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506119a5565b6119a2600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a8e565b90505b919050565b6119b2612584565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3690614d08565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60155481565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600f8054611b919061501b565b80601f0160208091040260200160405190810160405280929190818152602001828054611bbd9061501b565b8015611c0a5780601f10611bdf57610100808354040283529160200191611c0a565b820191906000526020600020905b815481529060010190602001808311611bed57829003601f168201915b5050505050905090565b6000611cd7611c21612584565b84611cd2856040518060600160405280602581526020016151a26025913960066000611c4b612584565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129fe9092919063ffffffff16565b61258c565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6890614de8565b60405180910390fd5b6002544211611db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dac90614d88565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611ec9611ec2612584565b8484612757565b6001905092915050565b6000600254905090565b60135481565b611eeb612584565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6f90614d08565b60405180910390fd5b8060138190555050565b611f8a612584565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200e90614d08565b60405180910390fd5b61203f606461203183600b54612bdb90919063ffffffff16565b612a8d90919063ffffffff16565b60158190555050565b6000612075600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166118bf565b905090565b612082612584565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461210f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210690614d08565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080426121bd9190614e5a565b600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600d54905090565b6122da612584565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235e90614d08565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6123ca612584565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612457576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244e90614d08565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156124c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124be90614c28565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f390614d68565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561266c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266390614c48565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161274a9190614e08565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156127c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127be90614d48565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612837576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282e90614be8565b60405180910390fd5b6000811161287a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287190614d28565b60405180910390fd5b612882611b59565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156128f057506128c0611b59565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561293b5760155481111561293a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293190614cc8565b60405180910390fd5b5b600060019050600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806129e25750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156129ec57600090505b6129f884848484612c56565b50505050565b6000838311158290612a46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3d9190614bc6565b60405180910390fd5b5060008385612a559190614f3b565b9050809150509392505050565b6000806000612a6f612f67565b91509150612a868183612a8d90919063ffffffff16565b9250505090565b6000612acf83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506132b2565b905092915050565b6000808284612ae69190614e5a565b905083811015612b2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2290614c68565b60405180910390fd5b8091505092915050565b6000806000806000806000806000612b4c8a613315565b9250925092506000806000612b6a8d8686612b65612a62565b61336f565b9250925092508282828888889b509b509b509b509b509b5050505050505091939550919395565b6000612bd383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506129fe565b905092915050565b600080831415612bee5760009050612c50565b60008284612bfc9190614ee1565b9050828482612c0b9190614eb0565b14612c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4290614ce8565b60405180910390fd5b809150505b92915050565b80612c6457612c636133f8565b5b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612d075750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d1c57612d1784848461343b565b612f53565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612dbf5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612dd457612dcf848484613722565b612f52565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612e785750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e8d57612e88848484613a09565b612f51565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f2f5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612f4457612f3f848484613c5b565b612f50565b612f4f848484613a09565b5b5b5b5b80612f6157612f60613fd7565b5b50505050565b6000806000600c5490506000600b54905060005b60098054905081101561327557826004600060098481548110612fc7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806130db5750816005600060098481548110613073577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156130f257600c54600b54945094505050506132ae565b6131a86004600060098481548110613133577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484612b9190919063ffffffff16565b925061326060056000600984815481106131eb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612b9190919063ffffffff16565b9150808061326d9061504d565b915050612f7b565b5061328d600b54600c54612a8d90919063ffffffff16565b8210156132a557600c54600b549350935050506132ae565b81819350935050505b9091565b600080831182906132f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132f09190614bc6565b60405180910390fd5b50600083856133089190614eb0565b9050809150509392505050565b60008060008061332485613feb565b905060006133318661401c565b9050600061335a8261334c858a612b9190919063ffffffff16565b612b9190919063ffffffff16565b90508083839550955095505050509193909250565b6000806000806133888589612bdb90919063ffffffff16565b9050600061339f8689612bdb90919063ffffffff16565b905060006133b68789612bdb90919063ffffffff16565b905060006133df826133d18587612b9190919063ffffffff16565b612b9190919063ffffffff16565b9050838184965096509650505050509450945094915050565b600060115414801561340c57506000601354145b1561341657613439565b601154601281905550601354601481905550600060118190555060006013819055505b565b60008060008060008061344d87612b35565b9550955095509550955095506134ab87600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b9190919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061354086600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b9190919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506135d585600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad790919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136218161404d565b61362b848361429c565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f61a114146810c6557dedd314dae835429358ca71b5ffdccc4ef651238ae0f7d4836040516136aa9190614e08565b60405180910390a38773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161370f9190614e08565b60405180910390a3505050505050505050565b60008060008060008061373487612b35565b95509550955095509550955061379286600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b9190919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061382783600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad790919063ffffffff16565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138bc85600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad790919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506139088161404d565b613912848361429c565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f61a114146810c6557dedd314dae835429358ca71b5ffdccc4ef651238ae0f7d4836040516139919190614e08565b60405180910390a38773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516139f69190614e08565b60405180910390a3505050505050505050565b600080600080600080613a1b87612b35565b955095509550955095509550613a7986600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b9190919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b0e85600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad790919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b5a8161404d565b613b64848361429c565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f61a114146810c6557dedd314dae835429358ca71b5ffdccc4ef651238ae0f7d483604051613be39190614e08565b60405180910390a38773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613c489190614e08565b60405180910390a3505050505050505050565b600080600080600080613c6d87612b35565b955095509550955095509550613ccb87600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b9190919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d6086600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b9190919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613df583600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad790919063ffffffff16565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e8a85600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad790919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ed68161404d565b613ee0848361429c565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f61a114146810c6557dedd314dae835429358ca71b5ffdccc4ef651238ae0f7d483604051613f5f9190614e08565b60405180910390a38773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613fc49190614e08565b60405180910390a3505050505050505050565b601254601181905550601454601381905550565b6000614015606461400760115485612bdb90919063ffffffff16565b612a8d90919063ffffffff16565b9050919050565b6000614046606461403860135485612bdb90919063ffffffff16565b612a8d90919063ffffffff16565b9050919050565b6000614057612a62565b9050600061406e8284612bdb90919063ffffffff16565b90506140e48160046000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad790919063ffffffff16565b60046000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060086000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614297576142318360056000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad790919063ffffffff16565b60056000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b6142b182600c54612b9190919063ffffffff16565b600c819055506142cc81600d54612ad790919063ffffffff16565b600d819055505050565b6000813590506142e581615134565b92915050565b6000813590506142fa8161514b565b92915050565b60008151905061430f8161514b565b92915050565b60008135905061432481615162565b92915050565b60008151905061433981615162565b92915050565b60006020828403121561435157600080fd5b600061435f848285016142d6565b91505092915050565b6000806040838503121561437b57600080fd5b6000614389858286016142d6565b925050602061439a858286016142d6565b9150509250929050565b6000806000606084860312156143b957600080fd5b60006143c7868287016142d6565b93505060206143d8868287016142d6565b92505060406143e986828701614315565b9150509250925092565b6000806040838503121561440657600080fd5b6000614414858286016142d6565b925050602061442585828601614315565b9150509250929050565b60006020828403121561444157600080fd5b600061444f84828501614300565b91505092915050565b60006020828403121561446a57600080fd5b600061447884828501614315565b91505092915050565b60006020828403121561449357600080fd5b60006144a18482850161432a565b91505092915050565b600080604083850312156144bd57600080fd5b60006144cb85828601614315565b92505060206144dc858286016142eb565b9150509250929050565b6144ef81614f6f565b82525050565b6144fe81614f81565b82525050565b61450d81614fc4565b82525050565b600061451e82614e3e565b6145288185614e49565b9350614538818560208601614fe8565b61454181615123565b840191505092915050565b6000614559602383614e49565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006145bf602a83614e49565b91507f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008301527f65666c656374696f6e73000000000000000000000000000000000000000000006020830152604082019050919050565b6000614625602683614e49565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061468b602283614e49565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006146f1601b83614e49565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000614731601b83614e49565b91507f4163636f756e7420697320616c7265616479206578636c7564656400000000006000830152602082019050919050565b6000614771601f83614e49565b91507f416d6f756e74206d757374206265206c657373207468616e20737570706c79006000830152602082019050919050565b60006147b1602883614e49565b91507f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008301527f78416d6f756e742e0000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614817602183614e49565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061487d602083614e49565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60006148bd602983614e49565b91507f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008301527f7468616e207a65726f00000000000000000000000000000000000000000000006020830152604082019050919050565b6000614923602583614e49565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614989602483614e49565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006149ef601f83614e49565b91507f436f6e7472616374206973206c6f636b656420756e74696c20372064617973006000830152602082019050919050565b6000614a2f601f83614e49565b91507f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006000830152602082019050919050565b6000614a6f602c83614e49565b91507f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008301527f6869732066756e6374696f6e00000000000000000000000000000000000000006020830152604082019050919050565b6000614ad5602383614e49565b91507f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c60008301527f6f636b00000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b614b3781614fad565b82525050565b614b4681614fb7565b82525050565b6000602082019050614b6160008301846144e6565b92915050565b6000604082019050614b7c60008301856144e6565b614b896020830184614b2e565b9392505050565b6000602082019050614ba560008301846144f5565b92915050565b6000602082019050614bc06000830184614504565b92915050565b60006020820190508181036000830152614be08184614513565b905092915050565b60006020820190508181036000830152614c018161454c565b9050919050565b60006020820190508181036000830152614c21816145b2565b9050919050565b60006020820190508181036000830152614c4181614618565b9050919050565b60006020820190508181036000830152614c618161467e565b9050919050565b60006020820190508181036000830152614c81816146e4565b9050919050565b60006020820190508181036000830152614ca181614724565b9050919050565b60006020820190508181036000830152614cc181614764565b9050919050565b60006020820190508181036000830152614ce1816147a4565b9050919050565b60006020820190508181036000830152614d018161480a565b9050919050565b60006020820190508181036000830152614d2181614870565b9050919050565b60006020820190508181036000830152614d41816148b0565b9050919050565b60006020820190508181036000830152614d6181614916565b9050919050565b60006020820190508181036000830152614d818161497c565b9050919050565b60006020820190508181036000830152614da1816149e2565b9050919050565b60006020820190508181036000830152614dc181614a22565b9050919050565b60006020820190508181036000830152614de181614a62565b9050919050565b60006020820190508181036000830152614e0181614ac8565b9050919050565b6000602082019050614e1d6000830184614b2e565b92915050565b6000602082019050614e386000830184614b3d565b92915050565b600081519050919050565b600082825260208201905092915050565b6000614e6582614fad565b9150614e7083614fad565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614ea557614ea4615096565b5b828201905092915050565b6000614ebb82614fad565b9150614ec683614fad565b925082614ed657614ed56150c5565b5b828204905092915050565b6000614eec82614fad565b9150614ef783614fad565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614f3057614f2f615096565b5b828202905092915050565b6000614f4682614fad565b9150614f5183614fad565b925082821015614f6457614f63615096565b5b828203905092915050565b6000614f7a82614f8d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614fcf82614fd6565b9050919050565b6000614fe182614f8d565b9050919050565b60005b83811015615006578082015181840152602081019050614feb565b83811115615015576000848401525b50505050565b6000600282049050600182168061503357607f821691505b60208210811415615047576150466150f4565b5b50919050565b600061505882614fad565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561508b5761508a615096565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b61513d81614f6f565b811461514857600080fd5b50565b61515481614f81565b811461515f57600080fd5b50565b61516b81614fad565b811461517657600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212208019b36b90b7d1f833149106b3594eb41debf325e7581ae73479f406ea8ad16264736f6c63430008000033

Deployed ByteCode Sourcemap

13578:13735:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15606:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16640:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14600:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15820:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16791:292;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18502:232;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15750:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19189:458;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17088:203;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17753:366;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16102:237;;;;;;;;;;;;;:::i;:::-;;19652:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18124:373;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14655:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14433:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18865:319;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22835:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19867:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15904:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5826:123;;;;;;;;;;;;;:::i;:::-;;14697:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18739:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5664:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15676:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17296:254;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6459:278;;;;;;;;;;;;;:::i;:::-;;16344:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6178:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14520:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19972:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20069:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17655:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6254:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16501:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17555:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19760:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5952:223;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15606:67;15643:13;15666:5;15659:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15606:67;:::o;16640:146::-;16715:4;16726:39;16735:12;:10;:12::i;:::-;16749:7;16758:6;16726:8;:39::i;:::-;16777:4;16770:11;;16640:146;;;;:::o;14600:51::-;;;:::o;15820:79::-;15873:7;15890;;15883:14;;15820:79;:::o;16791:292::-;16889:4;16900:36;16910:6;16918:9;16929:6;16900:9;:36::i;:::-;16941:121;16950:6;16958:12;:10;:12::i;:::-;16972:89;17010:6;16972:89;;;;;;;;;;;;;;;;;:11;:19;16984:6;16972:19;;;;;;;;;;;;;;;:33;16992:12;:10;:12::i;:::-;16972:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;16941:8;:121::i;:::-;17074:4;17067:11;;16791:292;;;;;:::o;18502:232::-;18568:7;18601;;18590;:18;;18582:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;18660:19;18683:10;:8;:10::i;:::-;18660:33;;18705:24;18717:11;18705:7;:11;;:24;;;;:::i;:::-;18698:31;;;18502:232;;;:::o;15750:67::-;15791:5;15806:9;;;;;;;;;;;15799:16;;15750:67;:::o;19189:458::-;5770:12;:10;:12::i;:::-;5760:22;;:6;;;;;;;;;;:22;;;5752:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19263:21:::1;:30;19285:7;19263:30;;;;;;;;;;;;;;;;;;;;;;;;;19255:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;19335:9;19330:313;19354:19;:26;;;;19350:1;:30;19330:313;;;19423:7;19397:33;;:19;19417:1;19397:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;19393:245;;;19464:19;19513:1;19484:19;:26;;;;:30;;;;:::i;:::-;19464:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19439:19;19459:1;19439:22;;;;;;;;;;;;;;;;;;;;;;;;:76;;;;;;;;;;;;;;;;;;19541:1;19522:7;:16;19530:7;19522:16;;;;;;;;;;;;;;;:20;;;;19582:5;19549:21;:30;19571:7;19549:30;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;19594:19;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19626:5;;19393:245;19382:3;;;;;:::i;:::-;;;;19330:313;;;;19189:458:::0;:::o;17088:203::-;17176:4;17187:83;17196:12;:10;:12::i;:::-;17210:7;17219:50;17258:10;17219:11;:25;17231:12;:10;:12::i;:::-;17219:25;;;;;;;;;;;;;;;:34;17245:7;17219:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;17187:8;:83::i;:::-;17282:4;17275:11;;17088:203;;;;:::o;17753:366::-;17799:14;17816:12;:10;:12::i;:::-;17799:29;;17842:21;:29;17864:6;17842:29;;;;;;;;;;;;;;;;;;;;;;;;;17841:30;17833:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;17926:15;17950:19;17961:7;17950:10;:19::i;:::-;17925:44;;;;;;;17992:28;18012:7;17992;:15;18000:6;17992:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;17974:7;:15;17982:6;17974:15;;;;;;;;;;;;;;;:46;;;;18035:20;18047:7;18035;;:11;;:20;;;;:::i;:::-;18025:7;:30;;;;18082:32;18106:7;18082:19;;:23;;:32;;;;:::i;:::-;18060:19;:54;;;;17753:366;;;:::o;16102:237::-;5770:12;:10;:12::i;:::-;5760:22;;:6;;;;;;;;;;:22;;;5752:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1350:1:::1;1495:7;;:19;;1487:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;1350:1;1561:7;:18;;;;16158:15:::2;16191:4;16176:31;;;16216:4;16176:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16158:64;;16242:4;16227:30;;;16258:10;16270:7;16227:51;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16291:10;16283:28;;:51;16312:21;16283:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;1590:1;1306::::1;1602:7;:22;;;;16102:237::o:0;19652:102::-;5770:12;:10;:12::i;:::-;5760:22;;:6;;;;;;;;;;:22;;;5752:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19745:4:::1;19715:18;:27;19734:7;19715:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;19652:102:::0;:::o;18124:373::-;18214:7;18247;;18236;:18;;18228:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;18300:17;18295:198;;18326:15;18350:19;18361:7;18350:10;:19::i;:::-;18325:44;;;;;;;18382:7;18375:14;;;;;18295:198;18409:23;18440:19;18451:7;18440:10;:19::i;:::-;18407:52;;;;;;;18472:15;18465:22;;;18124:373;;;;;:::o;14655:38::-;;;:::o;14433:29::-;;;;:::o;18865:319::-;5770:12;:10;:12::i;:::-;5760:22;;:6;;;;;;;;;;:22;;;5752:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18940:21:::1;:30;18962:7;18940:30;;;;;;;;;;;;;;;;;;;;;;;;;18939:31;18931:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;19029:1;19010:7;:16;19018:7;19010:16;;;;;;;;;;;;;;;;:20;19007:93;;;19057:37;19077:7;:16;19085:7;19077:16;;;;;;;;;;;;;;;;19057:19;:37::i;:::-;19038:7;:16;19046:7;19038:16;;;;;;;;;;;;;;;:56;;;;19007:93;19137:4;19104:21;:30;19126:7;19104:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;19146:19;19171:7;19146:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18865:319:::0;:::o;22835:114::-;22899:4;22917:18;:27;22936:7;22917:27;;;;;;;;;;;;;;;;;;;;;;;;;22910:34;;22835:114;;;:::o;19867:99::-;5770:12;:10;:12::i;:::-;5760:22;;:6;;;;;;;;;;:22;;;5752:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19952:9:::1;19939:10;:22;;;;19867:99:::0;:::o;15904:193::-;15970:7;15988:21;:30;16010:7;15988:30;;;;;;;;;;;;;;;;;;;;;;;;;15984:59;;;16027:7;:16;16035:7;16027:16;;;;;;;;;;;;;;;;16020:23;;;;15984:59;16055:37;16075:7;:16;16083:7;16075:16;;;;;;;;;;;;;;;;16055:19;:37::i;:::-;16048:44;;15904:193;;;;:::o;5826:123::-;5770:12;:10;:12::i;:::-;5760:22;;:6;;;;;;;;;;:22;;;5752:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5923:1:::1;5886:40;;5907:6;::::0;::::1;;;;;;;;5886:40;;;;;;;;;;;;5945:1;5928:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;5826:123::o:0;14697:60::-;;;;:::o;18739:121::-;18807:4;18825:21;:30;18847:7;18825:30;;;;;;;;;;;;;;;;;;;;;;;;;18818:37;;18739:121;;;:::o;5664:63::-;5702:7;5719:6;;;;;;;;;;;5712:13;;5664:63;:::o;15676:71::-;15715:13;15738:7;15731:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15676:71;:::o;17296:254::-;17389:4;17400:129;17409:12;:10;:12::i;:::-;17423:7;17432:96;17471:15;17432:96;;;;;;;;;;;;;;;;;:11;:25;17444:12;:10;:12::i;:::-;17432:25;;;;;;;;;;;;;;;:34;17458:7;17432:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;17400:8;:129::i;:::-;17541:4;17534:11;;17296:254;;;;:::o;6459:278::-;6523:10;6505:28;;:14;;;;;;;;;;;:28;;;6497:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;6604:9;;6586:15;:27;6578:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;6689:14;;;;;;;;;;;6660:44;;6681:6;;;;;;;;;;6660:44;;;;;;;;;;;;6718:14;;;;;;;;;;;6709:6;;:23;;;;;;;;;;;;;;;;;;6459:278::o;16344:152::-;16422:4;16433:42;16443:12;:10;:12::i;:::-;16457:9;16468:6;16433:9;:42::i;:::-;16487:4;16480:11;;16344:152;;;;:::o;6178:73::-;6223:7;6240:9;;6233:16;;6178:73;:::o;14520:27::-;;;;:::o;19972:91::-;5770:12;:10;:12::i;:::-;5760:22;;:6;;;;;;;;;;:22;;;5752:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20051:7:::1;20040:8;:18;;;;19972:91:::0;:::o;20069:136::-;5770:12;:10;:12::i;:::-;5760:22;;:6;;;;;;;;;;:22;;;5752:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20155:45:::1;20190:5;20155:25;20167:12;20155:7;;:11;;:25;;;;:::i;:::-;:29;;:45;;;;:::i;:::-;20140:12;:60;;;;20069:136:::0;:::o;17655:93::-;17699:7;17720:23;17730:12;;;;;;;;;;;17720:9;:23::i;:::-;17713:30;;17655:93;:::o;6254:199::-;5770:12;:10;:12::i;:::-;5760:22;;:6;;;;;;;;;;:22;;;5752:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6329:6:::1;::::0;::::1;;;;;;;;6312:14;;:23;;;;;;;;;;;;;;;;;;6357:1;6340:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6394:4;6376:15;:22;;;;:::i;:::-;6364:9;:34;;;;6445:1;6408:40;;6429:6;::::0;::::1;;;;;;;;6408:40;;;;;;;;;;;;6254:199:::0;:::o;16501:134::-;16582:7;16603:11;:18;16615:5;16603:18;;;;;;;;;;;;;;;:27;16622:7;16603:27;;;;;;;;;;;;;;;;16596:34;;16501:134;;;;:::o;17555:95::-;17605:7;17626:19;;17619:26;;17555:95;:::o;19760:101::-;5770:12;:10;:12::i;:::-;5760:22;;:6;;;;;;;;;;:22;;;5752:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19851:5:::1;19821:18;:27;19840:7;19821:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;19760:101:::0;:::o;5952:223::-;5770:12;:10;:12::i;:::-;5760:22;;:6;;;;;;;;;;:22;;;5752:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6055:1:::1;6035:22;;:8;:22;;;;6027:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6139:8;6110:38;;6131:6;::::0;::::1;;;;;;;;6110:38;;;;;;;;;;;;6162:8;6153:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;5952:223:::0;:::o;2837:82::-;2890:7;2907:10;2900:17;;2837:82;:::o;22954:308::-;23058:1;23041:19;;:5;:19;;;;23033:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23133:1;23114:21;;:7;:21;;;;23106:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23209:6;23179:11;:18;23191:5;23179:18;;;;;;;;;;;;;;;:27;23198:7;23179:27;;;;;;;;;;;;;;;:36;;;;23241:7;23225:32;;23234:5;23225:32;;;23250:6;23225:32;;;;;;:::i;:::-;;;;;;;;22954:308;;;:::o;23267:571::-;23378:1;23362:18;;:4;:18;;;;23354:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23449:1;23435:16;;:2;:16;;;;23427:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23513:1;23504:6;:10;23496:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23576:7;:5;:7::i;:::-;23568:15;;:4;:15;;;;:32;;;;;23593:7;:5;:7::i;:::-;23587:13;;:2;:13;;;;23568:32;23565:116;;;23624:12;;23614:6;:22;;23606:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;23565:116;23686:12;23701:4;23686:19;;23713:18;:24;23732:4;23713:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;23741:18;:22;23760:2;23741:22;;;;;;;;;;;;;;;;;;;;;;;;;23713:50;23710:81;;;23780:5;23770:15;;23710:81;23795:38;23810:4;23815:2;23818:6;23825:7;23795:14;:38::i;:::-;23267:571;;;;:::o;1932:154::-;2018:7;2041:1;2036;:6;;2044:12;2028:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2058:9;2074:1;2070;:5;;;;:::i;:::-;2058:17;;2083:1;2076:8;;;1932:154;;;;;:::o;21542:148::-;21583:7;21598:15;21615;21634:19;:17;:19::i;:::-;21597:56;;;;21665:20;21677:7;21665;:11;;:20;;;;:::i;:::-;21658:27;;;;21542:148;:::o;2268:116::-;2326:7;2343:39;2347:1;2350;2343:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2336:46;;2268:116;;;;:::o;1660:145::-;1718:7;1728:9;1744:1;1740;:5;;;;:::i;:::-;1728:17;;1760:1;1755;:6;;1747:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1802:1;1795:8;;;1660:145;;;;:::o;20417:408::-;20476:7;20485;20494;20503;20512;20521;20536:23;20561:17;20580:13;20597:20;20609:7;20597:11;:20::i;:::-;20535:82;;;;;;20623:15;20640:23;20665:17;20686:50;20698:7;20707:9;20718:5;20725:10;:8;:10::i;:::-;20686:11;:50::i;:::-;20622:114;;;;;;20749:7;20758:15;20775:9;20786:15;20803:9;20814:5;20741:79;;;;;;;;;;;;;;;;;;20417:408;;;;;;;:::o;1809:120::-;1867:7;1884:43;1888:1;1891;1884:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1877:50;;1809:120;;;;:::o;2089:176::-;2147:7;2166:1;2161;:6;2157:23;;;2177:1;2170:8;;;;2157:23;2180:9;2196:1;2192;:5;;;;:::i;:::-;2180:17;;2215:1;2210;2206;:5;;;;:::i;:::-;:10;2198:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2262:1;2255:8;;;2089:176;;;;;:::o;23841:784::-;23946:7;23942:31;;23959:14;:12;:14::i;:::-;23942:31;23984:21;:29;24006:6;23984:29;;;;;;;;;;;;;;;;;;;;;;;;;:66;;;;;24018:21;:32;24040:9;24018:32;;;;;;;;;;;;;;;;;;;;;;;;;24017:33;23984:66;23980:602;;;24058:48;24080:6;24088:9;24099:6;24058:21;:48::i;:::-;23980:602;;;24123:21;:29;24145:6;24123:29;;;;;;;;;;;;;;;;;;;;;;;;;24122:30;:66;;;;;24156:21;:32;24178:9;24156:32;;;;;;;;;;;;;;;;;;;;;;;;;24122:66;24118:464;;;24196:46;24216:6;24224:9;24235:6;24196:19;:46::i;:::-;24118:464;;;24259:21;:29;24281:6;24259:29;;;;;;;;;;;;;;;;;;;;;;;;;24258:30;:67;;;;;24293:21;:32;24315:9;24293:32;;;;;;;;;;;;;;;;;;;;;;;;;24292:33;24258:67;24254:328;;;24333:44;24351:6;24359:9;24370:6;24333:17;:44::i;:::-;24254:328;;;24393:21;:29;24415:6;24393:29;;;;;;;;;;;;;;;;;;;;;;;;;:65;;;;;24426:21;:32;24448:9;24426:32;;;;;;;;;;;;;;;;;;;;;;;;;24393:65;24389:193;;;24466:48;24488:6;24496:9;24507:6;24466:21;:48::i;:::-;24389:193;;;24532:44;24550:6;24558:9;24569:6;24532:17;:44::i;:::-;24389:193;24254:328;24118:464;23980:602;24592:7;24588:32;;24605:15;:13;:15::i;:::-;24588:32;23841:784;;;;:::o;21695:539::-;21745:7;21754;21768:15;21786:7;;21768:25;;21798:15;21816:7;;21798:25;;21833:9;21828:306;21852:19;:26;;;;21848:1;:30;21828:306;;;21929:7;21895;:31;21903:19;21923:1;21903:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21895:31;;;;;;;;;;;;;;;;:41;:86;;;;21974:7;21940;:31;21948:19;21968:1;21948:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21940:31;;;;;;;;;;;;;;;;:41;21895:86;21891:117;;;21991:7;;22000;;21983:25;;;;;;;;;21891:117;22024:44;22036:7;:31;22044:19;22064:1;22044:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22036:31;;;;;;;;;;;;;;;;22024:7;:11;;:44;;;;:::i;:::-;22014:54;;22084:44;22096:7;:31;22104:19;22124:1;22104:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22096:31;;;;;;;;;;;;;;;;22084:7;:11;;:44;;;;:::i;:::-;22074:54;;21880:3;;;;;:::i;:::-;;;;21828:306;;;;22152:20;22164:7;;22152;;:11;;:20;;;;:::i;:::-;22142:7;:30;22138:61;;;22182:7;;22191;;22174:25;;;;;;;;22138:61;22212:7;22221;22204:25;;;;;;21695:539;;;:::o;2387:153::-;2473:7;2495:1;2491;:5;2498:12;2483:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2512:9;2528:1;2524;:5;;;;:::i;:::-;2512:17;;2537:1;2530:8;;;2387:153;;;;;:::o;20830:301::-;20890:7;20899;20908;20922:17;20942:27;20961:7;20942:18;:27::i;:::-;20922:47;;20974:13;20990:25;21007:7;20990:16;:25::i;:::-;20974:41;;21020:23;21046:33;21073:5;21046:22;21058:9;21046:7;:11;;:22;;;;:::i;:::-;:26;;:33;;;;:::i;:::-;21020:59;;21092:15;21109:9;21120:5;21084:42;;;;;;;;;20830:301;;;;;:::o;21136:401::-;21251:7;21260;21269;21283:15;21301:24;21313:11;21301:7;:11;;:24;;;;:::i;:::-;21283:42;;21330:17;21350:26;21364:11;21350:9;:13;;:26;;;;:::i;:::-;21330:46;;21381:13;21397:22;21407:11;21397:5;:9;;:22;;;;:::i;:::-;21381:38;;21424:23;21450:33;21477:5;21450:22;21462:9;21450:7;:11;;:22;;;;:::i;:::-;:26;;:33;;;;:::i;:::-;21424:59;;21496:7;21505:15;21522:9;21488:44;;;;;;;;;;21136:401;;;;;;;;:::o;22524:193::-;22578:1;22564:10;;:15;:32;;;;;22595:1;22583:8;;:13;22564:32;22561:44;;;22598:7;;22561:44;22632:10;;22611:18;:31;;;;22666:8;;22647:16;:27;;;;22694:1;22681:10;:14;;;;22711:1;22700:8;:12;;;;22524:193;:::o;24934:605::-;25036:15;25057:23;25086:17;25109:23;25138:17;25161:13;25182:19;25193:7;25182:10;:19::i;:::-;25030:171;;;;;;;;;;;;25224:28;25244:7;25224;:15;25232:6;25224:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;25206:7;:15;25214:6;25206:15;;;;;;;;;;;;;;;:46;;;;25275:28;25295:7;25275;:15;25283:6;25275:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;25257:7;:15;25265:6;25257:15;;;;;;;;;;;;;;;:46;;;;25329:39;25352:15;25329:7;:18;25337:9;25329:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;25308:7;:18;25316:9;25308:18;;;;;;;;;;;;;;;:60;;;;25373:20;25387:5;25373:13;:20::i;:::-;25398:31;25408:9;25419;25398;:31::i;:::-;25460:12;;;;;;;;;;;25439:41;;25452:6;25439:41;;;25474:5;25439:41;;;;;;:::i;:::-;;;;;;;;25507:9;25490:44;;25499:6;25490:44;;;25518:15;25490:44;;;;;;:::i;:::-;;;;;;;;24934:605;;;;;;;;;:::o;25545:590::-;25640:15;25657:23;25682:17;25701:23;25726:17;25745:13;25762:19;25773:7;25762:10;:19::i;:::-;25639:142;;;;;;;;;;;;25804:28;25824:7;25804;:15;25812:6;25804:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;25786:7;:15;25794:6;25786:15;;;;;;;;;;;;;;;:46;;;;25858:39;25881:15;25858:7;:18;25866:9;25858:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;25837:7;:18;25845:9;25837:18;;;;;;;;;;;;;;;:60;;;;25923:39;25946:15;25923:7;:18;25931:9;25923:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;25902:7;:18;25910:9;25902:18;;;;;;;;;;;;;;;:60;;;;25967:20;25981:5;25967:13;:20::i;:::-;25992:31;26002:9;26013;25992;:31::i;:::-;26056:12;;;;;;;;;;;26035:41;;26048:6;26035:41;;;26070:5;26035:41;;;;;;:::i;:::-;;;;;;;;26103:9;26086:44;;26095:6;26086:44;;;26114:15;26086:44;;;;;;:::i;:::-;;;;;;;;25545:590;;;;;;;;;:::o;26141:521::-;26234:15;26251:23;26276:17;26295:23;26320:17;26339:13;26356:19;26367:7;26356:10;:19::i;:::-;26233:142;;;;;;;;;;;;26398:28;26418:7;26398;:15;26406:6;26398:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;26380:7;:15;26388:6;26380:15;;;;;;;;;;;;;;;:46;;;;26452:39;26475:15;26452:7;:18;26460:9;26452:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;26431:7;:18;26439:9;26431:18;;;;;;;;;;;;;;;:60;;;;26496:20;26510:5;26496:13;:20::i;:::-;26521:31;26531:9;26542;26521;:31::i;:::-;26583:12;;;;;;;;;;;26562:41;;26575:6;26562:41;;;26597:5;26562:41;;;;;;:::i;:::-;;;;;;;;26630:9;26613:44;;26622:6;26613:44;;;26641:15;26613:44;;;;;;:::i;:::-;;;;;;;;26141:521;;;;;;;;;:::o;26667:641::-;26764:15;26781:23;26806:17;26825:23;26850:17;26869:13;26886:19;26897:7;26886:10;:19::i;:::-;26763:142;;;;;;;;;;;;26928:28;26948:7;26928;:15;26936:6;26928:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;26910:7;:15;26918:6;26910:15;;;;;;;;;;;;;;;:46;;;;26979:28;26999:7;26979;:15;26987:6;26979:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;26961:7;:15;26969:6;26961:15;;;;;;;;;;;;;;;:46;;;;27033:39;27056:15;27033:7;:18;27041:9;27033:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;27012:7;:18;27020:9;27012:18;;;;;;;;;;;;;;;:60;;;;27098:39;27121:15;27098:7;:18;27106:9;27098:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;27077:7;:18;27085:9;27077:18;;;;;;;;;;;;;;;:60;;;;27142:20;27156:5;27142:13;:20::i;:::-;27167:31;27177:9;27188;27167;:31::i;:::-;27229:12;;;;;;;;;;;27208:41;;27221:6;27208:41;;;27243:5;27208:41;;;;;;:::i;:::-;;;;;;;;27276:9;27259:44;;27268:6;27259:44;;;27287:15;27259:44;;;;;;:::i;:::-;;;;;;;;26667:641;;;;;;;;;:::o;22723:106::-;22774:18;;22761:10;:31;;;;22808:16;;22797:8;:27;;;;22723:106::o;22245:136::-;22312:7;22333:43;22366:5;22333:23;22345:10;;22333:7;:11;;:23;;;;:::i;:::-;:27;;:43;;;;:::i;:::-;22326:50;;22245:136;;;:::o;22386:132::-;22451:7;22472:41;22503:5;22472:21;22484:8;;22472:7;:11;;:21;;;;:::i;:::-;:25;;:41;;;;:::i;:::-;22465:48;;22386:132;;;:::o;24630:299::-;24681:19;24703:10;:8;:10::i;:::-;24681:32;;24718:13;24734:22;24744:11;24734:5;:9;;:22;;;;:::i;:::-;24718:38;;24787:32;24813:5;24787:7;:21;24795:12;;;;;;;;;;;24787:21;;;;;;;;;;;;;;;;:25;;:32;;;;:::i;:::-;24763:7;:21;24771:12;;;;;;;;;;;24763:21;;;;;;;;;;;;;;;:56;;;;24827:21;:35;24849:12;;;;;;;;;;;24827:35;;;;;;;;;;;;;;;;;;;;;;;;;24824:100;;;24892:32;24918:5;24892:7;:21;24900:12;;;;;;;;;;;24892:21;;;;;;;;;;;;;;;;:25;;:32;;;;:::i;:::-;24868:7;:21;24876:12;;;;;;;;;;;24868:21;;;;;;;;;;;;;;;:56;;;;24824:100;24630:299;;;:::o;20244:168::-;20324:22;20336:9;20324:7;;:11;;:22;;;;:::i;:::-;20314:7;:32;;;;20373:34;20397:9;20373:19;;:23;;:34;;;;:::i;:::-;20351:19;:56;;;;20244:168;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:133::-;;233:6;220:20;211:29;;249:30;273:5;249:30;:::i;:::-;201:84;;;;:::o;291:137::-;;376:6;370:13;361:22;;392:30;416:5;392:30;:::i;:::-;351:77;;;;:::o;434:139::-;;518:6;505:20;496:29;;534:33;561:5;534:33;:::i;:::-;486:87;;;;:::o;579:143::-;;667:6;661:13;652:22;;683:33;710:5;683:33;:::i;:::-;642:80;;;;:::o;728:262::-;;836:2;824:9;815:7;811:23;807:32;804:2;;;852:1;849;842:12;804:2;895:1;920:53;965:7;956:6;945:9;941:22;920:53;:::i;:::-;910:63;;866:117;794:196;;;;:::o;996:407::-;;;1121:2;1109:9;1100:7;1096:23;1092:32;1089:2;;;1137:1;1134;1127:12;1089:2;1180:1;1205:53;1250:7;1241:6;1230:9;1226:22;1205:53;:::i;:::-;1195:63;;1151:117;1307:2;1333:53;1378:7;1369:6;1358:9;1354:22;1333:53;:::i;:::-;1323:63;;1278:118;1079:324;;;;;:::o;1409:552::-;;;;1551:2;1539:9;1530:7;1526:23;1522:32;1519:2;;;1567:1;1564;1557:12;1519:2;1610:1;1635:53;1680:7;1671:6;1660:9;1656:22;1635:53;:::i;:::-;1625:63;;1581:117;1737:2;1763:53;1808:7;1799:6;1788:9;1784:22;1763:53;:::i;:::-;1753:63;;1708:118;1865:2;1891:53;1936:7;1927:6;1916:9;1912:22;1891:53;:::i;:::-;1881:63;;1836:118;1509:452;;;;;:::o;1967:407::-;;;2092:2;2080:9;2071:7;2067:23;2063:32;2060:2;;;2108:1;2105;2098:12;2060:2;2151:1;2176:53;2221:7;2212:6;2201:9;2197:22;2176:53;:::i;:::-;2166:63;;2122:117;2278:2;2304:53;2349:7;2340:6;2329:9;2325:22;2304:53;:::i;:::-;2294:63;;2249:118;2050:324;;;;;:::o;2380:278::-;;2496:2;2484:9;2475:7;2471:23;2467:32;2464:2;;;2512:1;2509;2502:12;2464:2;2555:1;2580:61;2633:7;2624:6;2613:9;2609:22;2580:61;:::i;:::-;2570:71;;2526:125;2454:204;;;;:::o;2664:262::-;;2772:2;2760:9;2751:7;2747:23;2743:32;2740:2;;;2788:1;2785;2778:12;2740:2;2831:1;2856:53;2901:7;2892:6;2881:9;2877:22;2856:53;:::i;:::-;2846:63;;2802:117;2730:196;;;;:::o;2932:284::-;;3051:2;3039:9;3030:7;3026:23;3022:32;3019:2;;;3067:1;3064;3057:12;3019:2;3110:1;3135:64;3191:7;3182:6;3171:9;3167:22;3135:64;:::i;:::-;3125:74;;3081:128;3009:207;;;;:::o;3222:401::-;;;3344:2;3332:9;3323:7;3319:23;3315:32;3312:2;;;3360:1;3357;3350:12;3312:2;3403:1;3428:53;3473:7;3464:6;3453:9;3449:22;3428:53;:::i;:::-;3418:63;;3374:117;3530:2;3556:50;3598:7;3589:6;3578:9;3574:22;3556:50;:::i;:::-;3546:60;;3501:115;3302:321;;;;;:::o;3629:118::-;3716:24;3734:5;3716:24;:::i;:::-;3711:3;3704:37;3694:53;;:::o;3753:109::-;3834:21;3849:5;3834:21;:::i;:::-;3829:3;3822:34;3812:50;;:::o;3868:185::-;3982:64;4040:5;3982:64;:::i;:::-;3977:3;3970:77;3960:93;;:::o;4059:364::-;;4175:39;4208:5;4175:39;:::i;:::-;4230:71;4294:6;4289:3;4230:71;:::i;:::-;4223:78;;4310:52;4355:6;4350:3;4343:4;4336:5;4332:16;4310:52;:::i;:::-;4387:29;4409:6;4387:29;:::i;:::-;4382:3;4378:39;4371:46;;4151:272;;;;;:::o;4429:367::-;;4592:67;4656:2;4651:3;4592:67;:::i;:::-;4585:74;;4689:34;4685:1;4680:3;4676:11;4669:55;4755:5;4750:2;4745:3;4741:12;4734:27;4787:2;4782:3;4778:12;4771:19;;4575:221;;;:::o;4802:374::-;;4965:67;5029:2;5024:3;4965:67;:::i;:::-;4958:74;;5062:34;5058:1;5053:3;5049:11;5042:55;5128:12;5123:2;5118:3;5114:12;5107:34;5167:2;5162:3;5158:12;5151:19;;4948:228;;;:::o;5182:370::-;;5345:67;5409:2;5404:3;5345:67;:::i;:::-;5338:74;;5442:34;5438:1;5433:3;5429:11;5422:55;5508:8;5503:2;5498:3;5494:12;5487:30;5543:2;5538:3;5534:12;5527:19;;5328:224;;;:::o;5558:366::-;;5721:67;5785:2;5780:3;5721:67;:::i;:::-;5714:74;;5818:34;5814:1;5809:3;5805:11;5798:55;5884:4;5879:2;5874:3;5870:12;5863:26;5915:2;5910:3;5906:12;5899:19;;5704:220;;;:::o;5930:325::-;;6093:67;6157:2;6152:3;6093:67;:::i;:::-;6086:74;;6190:29;6186:1;6181:3;6177:11;6170:50;6246:2;6241:3;6237:12;6230:19;;6076:179;;;:::o;6261:325::-;;6424:67;6488:2;6483:3;6424:67;:::i;:::-;6417:74;;6521:29;6517:1;6512:3;6508:11;6501:50;6577:2;6572:3;6568:12;6561:19;;6407:179;;;:::o;6592:329::-;;6755:67;6819:2;6814:3;6755:67;:::i;:::-;6748:74;;6852:33;6848:1;6843:3;6839:11;6832:54;6912:2;6907:3;6903:12;6896:19;;6738:183;;;:::o;6927:372::-;;7090:67;7154:2;7149:3;7090:67;:::i;:::-;7083:74;;7187:34;7183:1;7178:3;7174:11;7167:55;7253:10;7248:2;7243:3;7239:12;7232:32;7290:2;7285:3;7281:12;7274:19;;7073:226;;;:::o;7305:365::-;;7468:67;7532:2;7527:3;7468:67;:::i;:::-;7461:74;;7565:34;7561:1;7556:3;7552:11;7545:55;7631:3;7626:2;7621:3;7617:12;7610:25;7661:2;7656:3;7652:12;7645:19;;7451:219;;;:::o;7676:330::-;;7839:67;7903:2;7898:3;7839:67;:::i;:::-;7832:74;;7936:34;7932:1;7927:3;7923:11;7916:55;7997:2;7992:3;7988:12;7981:19;;7822:184;;;:::o;8012:373::-;;8175:67;8239:2;8234:3;8175:67;:::i;:::-;8168:74;;8272:34;8268:1;8263:3;8259:11;8252:55;8338:11;8333:2;8328:3;8324:12;8317:33;8376:2;8371:3;8367:12;8360:19;;8158:227;;;:::o;8391:369::-;;8554:67;8618:2;8613:3;8554:67;:::i;:::-;8547:74;;8651:34;8647:1;8642:3;8638:11;8631:55;8717:7;8712:2;8707:3;8703:12;8696:29;8751:2;8746:3;8742:12;8735:19;;8537:223;;;:::o;8766:368::-;;8929:67;8993:2;8988:3;8929:67;:::i;:::-;8922:74;;9026:34;9022:1;9017:3;9013:11;9006:55;9092:6;9087:2;9082:3;9078:12;9071:28;9125:2;9120:3;9116:12;9109:19;;8912:222;;;:::o;9140:329::-;;9303:67;9367:2;9362:3;9303:67;:::i;:::-;9296:74;;9400:33;9396:1;9391:3;9387:11;9380:54;9460:2;9455:3;9451:12;9444:19;;9286:183;;;:::o;9475:329::-;;9638:67;9702:2;9697:3;9638:67;:::i;:::-;9631:74;;9735:33;9731:1;9726:3;9722:11;9715:54;9795:2;9790:3;9786:12;9779:19;;9621:183;;;:::o;9810:376::-;;9973:67;10037:2;10032:3;9973:67;:::i;:::-;9966:74;;10070:34;10066:1;10061:3;10057:11;10050:55;10136:14;10131:2;10126:3;10122:12;10115:36;10177:2;10172:3;10168:12;10161:19;;9956:230;;;:::o;10192:367::-;;10355:67;10419:2;10414:3;10355:67;:::i;:::-;10348:74;;10452:34;10448:1;10443:3;10439:11;10432:55;10518:5;10513:2;10508:3;10504:12;10497:27;10550:2;10545:3;10541:12;10534:19;;10338:221;;;:::o;10565:118::-;10652:24;10670:5;10652:24;:::i;:::-;10647:3;10640:37;10630:53;;:::o;10689:112::-;10772:22;10788:5;10772:22;:::i;:::-;10767:3;10760:35;10750:51;;:::o;10807:222::-;;10938:2;10927:9;10923:18;10915:26;;10951:71;11019:1;11008:9;11004:17;10995:6;10951:71;:::i;:::-;10905:124;;;;:::o;11035:332::-;;11194:2;11183:9;11179:18;11171:26;;11207:71;11275:1;11264:9;11260:17;11251:6;11207:71;:::i;:::-;11288:72;11356:2;11345:9;11341:18;11332:6;11288:72;:::i;:::-;11161:206;;;;;:::o;11373:210::-;;11498:2;11487:9;11483:18;11475:26;;11511:65;11573:1;11562:9;11558:17;11549:6;11511:65;:::i;:::-;11465:118;;;;:::o;11589:276::-;;11747:2;11736:9;11732:18;11724:26;;11760:98;11855:1;11844:9;11840:17;11831:6;11760:98;:::i;:::-;11714:151;;;;:::o;11871:313::-;;12022:2;12011:9;12007:18;11999:26;;12071:9;12065:4;12061:20;12057:1;12046:9;12042:17;12035:47;12099:78;12172:4;12163:6;12099:78;:::i;:::-;12091:86;;11989:195;;;;:::o;12190:419::-;;12394:2;12383:9;12379:18;12371:26;;12443:9;12437:4;12433:20;12429:1;12418:9;12414:17;12407:47;12471:131;12597:4;12471:131;:::i;:::-;12463:139;;12361:248;;;:::o;12615:419::-;;12819:2;12808:9;12804:18;12796:26;;12868:9;12862:4;12858:20;12854:1;12843:9;12839:17;12832:47;12896:131;13022:4;12896:131;:::i;:::-;12888:139;;12786:248;;;:::o;13040:419::-;;13244:2;13233:9;13229:18;13221:26;;13293:9;13287:4;13283:20;13279:1;13268:9;13264:17;13257:47;13321:131;13447:4;13321:131;:::i;:::-;13313:139;;13211:248;;;:::o;13465:419::-;;13669:2;13658:9;13654:18;13646:26;;13718:9;13712:4;13708:20;13704:1;13693:9;13689:17;13682:47;13746:131;13872:4;13746:131;:::i;:::-;13738:139;;13636:248;;;:::o;13890:419::-;;14094:2;14083:9;14079:18;14071:26;;14143:9;14137:4;14133:20;14129:1;14118:9;14114:17;14107:47;14171:131;14297:4;14171:131;:::i;:::-;14163:139;;14061:248;;;:::o;14315:419::-;;14519:2;14508:9;14504:18;14496:26;;14568:9;14562:4;14558:20;14554:1;14543:9;14539:17;14532:47;14596:131;14722:4;14596:131;:::i;:::-;14588:139;;14486:248;;;:::o;14740:419::-;;14944:2;14933:9;14929:18;14921:26;;14993:9;14987:4;14983:20;14979:1;14968:9;14964:17;14957:47;15021:131;15147:4;15021:131;:::i;:::-;15013:139;;14911:248;;;:::o;15165:419::-;;15369:2;15358:9;15354:18;15346:26;;15418:9;15412:4;15408:20;15404:1;15393:9;15389:17;15382:47;15446:131;15572:4;15446:131;:::i;:::-;15438:139;;15336:248;;;:::o;15590:419::-;;15794:2;15783:9;15779:18;15771:26;;15843:9;15837:4;15833:20;15829:1;15818:9;15814:17;15807:47;15871:131;15997:4;15871:131;:::i;:::-;15863:139;;15761:248;;;:::o;16015:419::-;;16219:2;16208:9;16204:18;16196:26;;16268:9;16262:4;16258:20;16254:1;16243:9;16239:17;16232:47;16296:131;16422:4;16296:131;:::i;:::-;16288:139;;16186:248;;;:::o;16440:419::-;;16644:2;16633:9;16629:18;16621:26;;16693:9;16687:4;16683:20;16679:1;16668:9;16664:17;16657:47;16721:131;16847:4;16721:131;:::i;:::-;16713:139;;16611:248;;;:::o;16865:419::-;;17069:2;17058:9;17054:18;17046:26;;17118:9;17112:4;17108:20;17104:1;17093:9;17089:17;17082:47;17146:131;17272:4;17146:131;:::i;:::-;17138:139;;17036:248;;;:::o;17290:419::-;;17494:2;17483:9;17479:18;17471:26;;17543:9;17537:4;17533:20;17529:1;17518:9;17514:17;17507:47;17571:131;17697:4;17571:131;:::i;:::-;17563:139;;17461:248;;;:::o;17715:419::-;;17919:2;17908:9;17904:18;17896:26;;17968:9;17962:4;17958:20;17954:1;17943:9;17939:17;17932:47;17996:131;18122:4;17996:131;:::i;:::-;17988:139;;17886:248;;;:::o;18140:419::-;;18344:2;18333:9;18329:18;18321:26;;18393:9;18387:4;18383:20;18379:1;18368:9;18364:17;18357:47;18421:131;18547:4;18421:131;:::i;:::-;18413:139;;18311:248;;;:::o;18565:419::-;;18769:2;18758:9;18754:18;18746:26;;18818:9;18812:4;18808:20;18804:1;18793:9;18789:17;18782:47;18846:131;18972:4;18846:131;:::i;:::-;18838:139;;18736:248;;;:::o;18990:419::-;;19194:2;19183:9;19179:18;19171:26;;19243:9;19237:4;19233:20;19229:1;19218:9;19214:17;19207:47;19271:131;19397:4;19271:131;:::i;:::-;19263:139;;19161:248;;;:::o;19415:222::-;;19546:2;19535:9;19531:18;19523:26;;19559:71;19627:1;19616:9;19612:17;19603:6;19559:71;:::i;:::-;19513:124;;;;:::o;19643:214::-;;19770:2;19759:9;19755:18;19747:26;;19783:67;19847:1;19836:9;19832:17;19823:6;19783:67;:::i;:::-;19737:120;;;;:::o;19863:99::-;;19949:5;19943:12;19933:22;;19922:40;;;:::o;19968:169::-;;20086:6;20081:3;20074:19;20126:4;20121:3;20117:14;20102:29;;20064:73;;;;:::o;20143:305::-;;20202:20;20220:1;20202:20;:::i;:::-;20197:25;;20236:20;20254:1;20236:20;:::i;:::-;20231:25;;20390:1;20322:66;20318:74;20315:1;20312:81;20309:2;;;20396:18;;:::i;:::-;20309:2;20440:1;20437;20433:9;20426:16;;20187:261;;;;:::o;20454:185::-;;20511:20;20529:1;20511:20;:::i;:::-;20506:25;;20545:20;20563:1;20545:20;:::i;:::-;20540:25;;20584:1;20574:2;;20589:18;;:::i;:::-;20574:2;20631:1;20628;20624:9;20619:14;;20496:143;;;;:::o;20645:348::-;;20708:20;20726:1;20708:20;:::i;:::-;20703:25;;20742:20;20760:1;20742:20;:::i;:::-;20737:25;;20930:1;20862:66;20858:74;20855:1;20852:81;20847:1;20840:9;20833:17;20829:105;20826:2;;;20937:18;;:::i;:::-;20826:2;20985:1;20982;20978:9;20967:20;;20693:300;;;;:::o;20999:191::-;;21059:20;21077:1;21059:20;:::i;:::-;21054:25;;21093:20;21111:1;21093:20;:::i;:::-;21088:25;;21132:1;21129;21126:8;21123:2;;;21137:18;;:::i;:::-;21123:2;21182:1;21179;21175:9;21167:17;;21044:146;;;;:::o;21196:96::-;;21262:24;21280:5;21262:24;:::i;:::-;21251:35;;21241:51;;;:::o;21298:90::-;;21375:5;21368:13;21361:21;21350:32;;21340:48;;;:::o;21394:126::-;;21471:42;21464:5;21460:54;21449:65;;21439:81;;;:::o;21526:77::-;;21592:5;21581:16;;21571:32;;;:::o;21609:86::-;;21684:4;21677:5;21673:16;21662:27;;21652:43;;;:::o;21701:180::-;;21811:64;21869:5;21811:64;:::i;:::-;21798:77;;21788:93;;;:::o;21887:140::-;;21997:24;22015:5;21997:24;:::i;:::-;21984:37;;21974:53;;;:::o;22033:307::-;22101:1;22111:113;22125:6;22122:1;22119:13;22111:113;;;22210:1;22205:3;22201:11;22195:18;22191:1;22186:3;22182:11;22175:39;22147:2;22144:1;22140:10;22135:15;;22111:113;;;22242:6;22239:1;22236:13;22233:2;;;22322:1;22313:6;22308:3;22304:16;22297:27;22233:2;22082:258;;;;:::o;22346:320::-;;22427:1;22421:4;22417:12;22407:22;;22474:1;22468:4;22464:12;22495:18;22485:2;;22551:4;22543:6;22539:17;22529:27;;22485:2;22613;22605:6;22602:14;22582:18;22579:38;22576:2;;;22632:18;;:::i;:::-;22576:2;22397:269;;;;:::o;22672:233::-;;22734:24;22752:5;22734:24;:::i;:::-;22725:33;;22780:66;22773:5;22770:77;22767:2;;;22850:18;;:::i;:::-;22767:2;22897:1;22890:5;22886:13;22879:20;;22715:190;;;:::o;22911:180::-;22959:77;22956:1;22949:88;23056:4;23053:1;23046:15;23080:4;23077:1;23070:15;23097:180;23145:77;23142:1;23135:88;23242:4;23239:1;23232:15;23266:4;23263:1;23256:15;23283:180;23331:77;23328:1;23321:88;23428:4;23425:1;23418:15;23452:4;23449:1;23442:15;23469:102;;23561:2;23557:7;23552:2;23545:5;23541:14;23537:28;23527:38;;23517:54;;;:::o;23577:122::-;23650:24;23668:5;23650:24;:::i;:::-;23643:5;23640:35;23630:2;;23689:1;23686;23679:12;23630:2;23620:79;:::o;23705:116::-;23775:21;23790:5;23775:21;:::i;:::-;23768:5;23765:32;23755:2;;23811:1;23808;23801:12;23755:2;23745:76;:::o;23827:122::-;23900:24;23918:5;23900:24;:::i;:::-;23893:5;23890:35;23880:2;;23939:1;23936;23929:12;23880:2;23870:79;:::o

Swarm Source

ipfs://8019b36b90b7d1f833149106b3594eb41debf325e7581ae73479f406ea8ad162
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.