ERC-20
Overview
Max Total Supply
100,000,000 Baby7s
Holders
6
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 6 Decimals)
Balance
94,897,383.576239 Baby7sValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Baby7s
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-10-19 */ /** *Submitted for verification at BscScan.com on 2021-12-22 */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.4; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } 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); } 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; // assert(a == b * c + a % b); // There is no case in which this doesn't hold 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; } } library Address { function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` 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"); (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { if (returndata.length > 0) { 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 waiveOwnership() 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 getUnlockTime() public view returns (uint256) { return _lockTime; } function getTime() public view returns (uint256) { return block.timestamp; } 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 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 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 Baby7s is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; string private _name = "Baby7s"; string private _symbol = "Baby7s"; uint8 private _decimals = 6; address payable public marketingWalletAddress = payable(0xf58700882DcBB5affE2d0435D7D42a893d555bdC); // Marketing Address address payable public teamWalletAddress = payable(0xf58700882DcBB5affE2d0435D7D42a893d555bdC); // Team Address address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD; mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) public isExcludedFromFee; mapping (address => bool) public isWalletLimitExempt; mapping (address => bool) public isTxLimitExempt; mapping (address => bool) public isMarketPair; uint256 public _buyLiquidityFee = 0; uint256 public _buyMarketingFee = 3; uint256 public _buyTeamFee = 0; uint256 public _sellLiquidityFee = 0; uint256 public _sellMarketingFee = 3; uint256 public _sellTeamFee = 0 ; uint256 public _liquidityShare = 0; uint256 public _marketingShare = 8; uint256 public _teamShare = 0; uint256 public _totalTaxIfBuying = 3; uint256 public _totalTaxIfSelling = 4; uint256 public _totalDistributionShares = 7; uint256 private _totalSupply = 100000000 * 10**0* 10**0 * 10**_decimals; uint256 public _maxTxAmount = 100000000 * 10**0 * 10**0* 10**_decimals; uint256 public _walletMax = 100000000 * 10**0 * 10**0* 10**_decimals; uint256 private minimumTokensBeforeSwap = 100000000 * 10**0* 10**_decimals; IUniswapV2Router02 public uniswapV2Router; address public uniswapPair; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; bool public swapAndLiquifyByLimitOnly = false; bool public checkWalletLimit = true; event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); event SwapETHForTokens( uint256 amountIn, address[] path ); event SwapTokensForETH( uint256 amountIn, address[] path ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor () { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; _allowances[address(this)][address(uniswapV2Router)] = _totalSupply; isExcludedFromFee[owner()] = true; isExcludedFromFee[address(this)] = true; _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee); _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee); _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare); isWalletLimitExempt[owner()] = true; isWalletLimitExempt[address(uniswapPair)] = true; isWalletLimitExempt[address(this)] = true; isTxLimitExempt[owner()] = true; isTxLimitExempt[address(this)] = true; isMarketPair[address(uniswapPair)] = true; _balances[_msgSender()] = _totalSupply; emit Transfer(address(0), _msgSender(), _totalSupply); } 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 _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } 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 minimumTokensBeforeSwapAmount() public view returns (uint256) { return minimumTokensBeforeSwap; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } 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 setMarketPairStatus(address account, bool newValue) public onlyOwner { isMarketPair[account] = newValue; } function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner { isTxLimitExempt[holder] = exempt; } function setIsExcludedFromFee(address account, bool newValue) public onlyOwner { isExcludedFromFee[account] = newValue; } function setBuyTaxes(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newTeamTax) external onlyOwner() { _buyLiquidityFee = newLiquidityTax; _buyMarketingFee = newMarketingTax; _buyTeamFee = newTeamTax; _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee); } function setSellTaxes(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newTeamTax) external onlyOwner() { _sellLiquidityFee = newLiquidityTax; _sellMarketingFee = newMarketingTax; _sellTeamFee = newTeamTax; _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee); } function setDistributionSettings(uint256 newLiquidityShare, uint256 newMarketingShare, uint256 newTeamShare) external onlyOwner() { _liquidityShare = newLiquidityShare; _marketingShare = newMarketingShare; _teamShare = newTeamShare; _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare); } function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() { _maxTxAmount = maxTxAmount; } function enableDisableWalletLimit(bool newValue) external onlyOwner { checkWalletLimit = newValue; } function setIsWalletLimitExempt(address holder, bool exempt) external onlyOwner { isWalletLimitExempt[holder] = exempt; } function setWalletLimit(uint256 newLimit) external onlyOwner { _walletMax = newLimit; } function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() { minimumTokensBeforeSwap = newLimit; } function setMarketingWalletAddress(address newAddress) external onlyOwner() { marketingWalletAddress = payable(newAddress); } function setTeamWalletAddress(address newAddress) external onlyOwner() { teamWalletAddress = payable(newAddress); } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner { swapAndLiquifyByLimitOnly = newValue; } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(deadAddress)); } function transferToAddressETH(address payable recipient, uint256 amount) private { recipient.transfer(amount); } function changeRouterVersion(address newRouterAddress) public onlyOwner returns(address newPairAddress) { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress); newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH()); if(newPairAddress == address(0)) //Create If Doesnt exist { newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); } uniswapPair = newPairAddress; //Set new pair address uniswapV2Router = _uniswapV2Router; //Set new router address isWalletLimitExempt[address(uniswapPair)] = true; isMarketPair[address(uniswapPair)] = true; } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, 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 _transfer(address sender, address recipient, uint256 amount) private returns (bool) { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); if(inSwapAndLiquify) { return _basicTransfer(sender, recipient, amount); } else { if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient]) { require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); } uint256 contractTokenBalance = balanceOf(address(this)); bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap; if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled) { if(swapAndLiquifyByLimitOnly) contractTokenBalance = minimumTokensBeforeSwap; swapAndLiquify(contractTokenBalance); } _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ? amount : takeFee(sender, recipient, amount); if(checkWalletLimit && !isWalletLimitExempt[recipient]) require(balanceOf(recipient).add(finalAmount) <= _walletMax); _balances[recipient] = _balances[recipient].add(finalAmount); emit Transfer(sender, recipient, finalAmount); return true; } } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function swapAndLiquify(uint256 tAmount) private lockTheSwap { uint256 tokensForLP = tAmount.mul(_liquidityShare).div(_totalDistributionShares).div(2); uint256 tokensForSwap = tAmount.sub(tokensForLP); swapTokensForEth(tokensForSwap); uint256 amountReceived = address(this).balance; uint256 totalBNBFee = _totalDistributionShares.sub(_liquidityShare.div(2)); uint256 amountBNBLiquidity = amountReceived.mul(_liquidityShare).div(totalBNBFee).div(2); uint256 amountBNBTeam = amountReceived.mul(_teamShare).div(totalBNBFee); uint256 amountBNBMarketing = amountReceived.sub(amountBNBLiquidity).sub(amountBNBTeam); if(amountBNBMarketing > 0) transferToAddressETH(marketingWalletAddress, amountBNBMarketing); if(amountBNBTeam > 0) transferToAddressETH(teamWalletAddress, amountBNBTeam); if(amountBNBLiquidity > 0 && tokensForLP > 0) addLiquidity(tokensForLP, amountBNBLiquidity); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), // The contract block.timestamp ); emit SwapTokensForETH(tokenAmount, path); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) { uint256 feeAmount = 0; if(isMarketPair[sender]) { feeAmount = amount.mul(_totalTaxIfBuying).div(100); } else if(isMarketPair[recipient]) { feeAmount = amount.mul(_totalTaxIfSelling).div(100); } if(feeAmount > 0) { _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); } return amount.sub(feeAmount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingShare","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":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_teamShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalDistributionShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","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":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newTeamTax","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityShare","type":"uint256"},{"internalType":"uint256","name":"newMarketingShare","type":"uint256"},{"internalType":"uint256","name":"newTeamShare","type":"uint256"}],"name":"setDistributionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newTeamTax","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setTeamWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"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":"uniswapPair","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":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040526040518060400160405280600681526020017f4261627937730000000000000000000000000000000000000000000000000000815250600390805190602001906200005192919062000bdc565b506040518060400160405280600681526020017f4261627937730000000000000000000000000000000000000000000000000000815250600490805190602001906200009f92919062000bdc565b506006600560006101000a81548160ff021916908360ff16021790555073f58700882dcbb5affe2d0435d7d42a893d555bdc600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f58700882dcbb5affe2d0435d7d42a893d555bdc600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152506000600d556003600e556000600f55600060105560036011556000601255600060135560086014556000601555600360165560046017556007601855600560009054906101000a900460ff16600a620001f8919062000e4d565b6305f5e10062000209919062000f8a565b601955600560009054906101000a900460ff16600a6200022a919062000e4d565b6305f5e1006200023b919062000f8a565b601a55600560009054906101000a900460ff16600a6200025c919062000e4d565b6305f5e1006200026d919062000f8a565b601b55600560009054906101000a900460ff16600a6200028e919062000e4d565b6305f5e1006200029f919062000f8a565b601c556001601e60156101000a81548160ff0219169083151502179055506000601e60166101000a81548160ff0219169083151502179055506001601e60176101000a81548160ff0219169083151502179055503480156200030057600080fd5b5060006200031362000b4860201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200041157600080fd5b505afa15801562000426573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044c919062000ca3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620004af57600080fd5b505afa158015620004c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004ea919062000ca3565b6040518363ffffffff1660e01b81526004016200050992919062000d18565b602060405180830381600087803b1580156200052457600080fd5b505af115801562000539573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200055f919062000ca3565b601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601954600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600960006200069b62000b5060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200077d600f5462000769600e54600d5462000b7960201b62002dfd1790919060201c565b62000b7960201b62002dfd1790919060201c565b601681905550620007bc601254620007a860115460105462000b7960201b62002dfd1790919060201c565b62000b7960201b62002dfd1790919060201c565b601781905550620007fb601554620007e760145460135462000b7960201b62002dfd1790919060201c565b62000b7960201b62002dfd1790919060201c565b6018819055506001600a60006200081762000b5060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60006200095062000b5060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506019546007600062000a8a62000b4860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000ad862000b4860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60195460405162000b39919062000d67565b60405180910390a3506200111a565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828462000b8a919062000d95565b90508381101562000bd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bc99062000d45565b60405180910390fd5b8091505092915050565b82805462000bea9062001036565b90600052602060002090601f01602090048101928262000c0e576000855562000c5a565b82601f1062000c2957805160ff191683800117855562000c5a565b8280016001018555821562000c5a579182015b8281111562000c5957825182559160200191906001019062000c3c565b5b50905062000c69919062000c6d565b5090565b5b8082111562000c8857600081600090555060010162000c6e565b5090565b60008151905062000c9d8162001100565b92915050565b60006020828403121562000cb657600080fd5b600062000cc68482850162000c8c565b91505092915050565b62000cda8162000feb565b82525050565b600062000cef601b8362000d84565b915062000cfc82620010d7565b602082019050919050565b62000d12816200101f565b82525050565b600060408201905062000d2f600083018562000ccf565b62000d3e602083018462000ccf565b9392505050565b6000602082019050818103600083015262000d608162000ce0565b9050919050565b600060208201905062000d7e600083018462000d07565b92915050565b600082825260208201905092915050565b600062000da2826200101f565b915062000daf836200101f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000de75762000de66200106c565b5b828201905092915050565b6000808291508390505b600185111562000e445780860481111562000e1c5762000e1b6200106c565b5b600185161562000e2c5780820291505b808102905062000e3c85620010ca565b945062000dfc565b94509492505050565b600062000e5a826200101f565b915062000e678362001029565b925062000e967fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000e9e565b905092915050565b60008262000eb0576001905062000f83565b8162000ec0576000905062000f83565b816001811462000ed9576002811462000ee45762000f1a565b600191505062000f83565b60ff84111562000ef95762000ef86200106c565b5b8360020a91508482111562000f135762000f126200106c565b5b5062000f83565b5060208310610133831016604e8410600b841016171562000f545782820a90508381111562000f4e5762000f4d6200106c565b5b62000f83565b62000f63848484600162000df2565b9250905081840481111562000f7d5762000f7c6200106c565b5b81810290505b9392505050565b600062000f97826200101f565b915062000fa4836200101f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000fe05762000fdf6200106c565b5b828202905092915050565b600062000ff88262000fff565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600060028204905060018216806200104f57607f821691505b602082108114156200106657620010656200109b565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008160011c9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6200110b8162000feb565b81146200111757600080fd5b50565b60805160601c61516362001140600039600081816113f9015261142501526151636000f3fe6080604052600436106103b15760003560e01c80638b42507f116101e7578063c816841b1161010d578063dd62ed3e116100a0578063f1d5f5171161006f578063f1d5f51714610e0f578063f2fde38b14610e38578063f84ba65d14610e61578063f872858a14610e8a576103b8565b8063dd62ed3e14610d55578063ec28438a14610d92578063ef422a1814610dbb578063f0cd1dac14610de4576103b8565b8063d158272d116100dc578063d158272d14610cab578063da00097d14610cd6578063dc44b6a014610d01578063dd46706414610d2c576103b8565b8063c816841b14610bed578063c860795214610c18578063c867d60b14610c43578063cab0347114610c80576103b8565b8063a5d69d1f11610185578063c2d4640e11610154578063c2d4640e14610b45578063c469b6dd14610b6e578063c49b9a8014610b99578063c5d2418914610bc2576103b8565b8063a5d69d1f14610a9d578063a69df4b514610ac6578063a83f53a714610add578063a9059cbb14610b08576103b8565b806395d89b41116101c157806395d89b41146109df578063a073d37f14610a0a578063a08e671f14610a35578063a457c2d714610a60576103b8565b80638b42507f146109605780638da5cb5b1461099d578063914eb66a146109c8576103b8565b80633b97084a116102d7578063602bc62b1161026a578063807c2d9c11610239578063807c2d9c146108b657806382eefb43146108e1578063844d591c1461090c57806388790a6814610935576103b8565b8063602bc62b146107f857806361a23c691461082357806370a082311461084e5780637d1db4a51461088b576103b8565b80635342acb4116102a65780635342acb414610728578063557ed1ba1461076557806357a5802f146107905780635881f3ef146107bb576103b8565b80633b97084a1461066e5780633ecad271146106975780634a74bb02146106d45780634cb80fd5146106ff576103b8565b80632198cf6c1161034f5780632b112e491161031e5780632b112e49146105b25780632c4b2334146105dd578063313ce567146106065780633950935114610631576103b8565b80632198cf6c146104f857806323b872dd146105215780632563ae831461055e57806327c8f83514610587576103b8565b80631245e3471161038b5780631245e3471461044e5780631694505e1461047957806318160ddd146104a45780631870517a146104cf576103b8565b806306fdde03146103bd57806308733214146103e8578063095ea7b314610411576103b8565b366103b857005b600080fd5b3480156103c957600080fd5b506103d2610eb5565b6040516103df919061485c565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a9190614420565b610f47565b005b34801561041d57600080fd5b5061043860048036038101906104339190614392565b611027565b6040516104459190614826565b60405180910390f35b34801561045a57600080fd5b50610463611045565b6040516104709190614781565b60405180910390f35b34801561048557600080fd5b5061048e61106b565b60405161049b9190614841565b60405180910390f35b3480156104b057600080fd5b506104b9611091565b6040516104c691906149de565b60405180910390f35b3480156104db57600080fd5b506104f660048036038101906104f19190614420565b61109b565b005b34801561050457600080fd5b5061051f600480360381019061051a9190614356565b61117b565b005b34801561052d57600080fd5b5061054860048036038101906105439190614307565b61126b565b6040516105559190614826565b60405180910390f35b34801561056a57600080fd5b50610585600480360381019061058091906143ce565b611345565b005b34801561059357600080fd5b5061059c6113f7565b6040516105a99190614766565b60405180910390f35b3480156105be57600080fd5b506105c761141b565b6040516105d491906149de565b60405180910390f35b3480156105e957600080fd5b5061060460048036038101906105ff9190614279565b61145f565b005b34801561061257600080fd5b5061061b611538565b6040516106289190614a83565b60405180910390f35b34801561063d57600080fd5b5061065860048036038101906106539190614392565b61154f565b6040516106659190614826565b60405180910390f35b34801561067a57600080fd5b50610695600480360381019061069091906143f7565b611602565b005b3480156106a357600080fd5b506106be60048036038101906106b99190614279565b6116a1565b6040516106cb9190614826565b60405180910390f35b3480156106e057600080fd5b506106e96116c1565b6040516106f69190614826565b60405180910390f35b34801561070b57600080fd5b5061072660048036038101906107219190614279565b6116d4565b005b34801561073457600080fd5b5061074f600480360381019061074a9190614279565b6117ad565b60405161075c9190614826565b60405180910390f35b34801561077157600080fd5b5061077a6117cd565b60405161078791906149de565b60405180910390f35b34801561079c57600080fd5b506107a56117d5565b6040516107b291906149de565b60405180910390f35b3480156107c757600080fd5b506107e260048036038101906107dd9190614279565b6117db565b6040516107ef9190614766565b60405180910390f35b34801561080457600080fd5b5061080d611d39565b60405161081a91906149de565b60405180910390f35b34801561082f57600080fd5b50610838611d43565b60405161084591906149de565b60405180910390f35b34801561085a57600080fd5b5061087560048036038101906108709190614279565b611d49565b60405161088291906149de565b60405180910390f35b34801561089757600080fd5b506108a0611d92565b6040516108ad91906149de565b60405180910390f35b3480156108c257600080fd5b506108cb611d98565b6040516108d891906149de565b60405180910390f35b3480156108ed57600080fd5b506108f6611d9e565b60405161090391906149de565b60405180910390f35b34801561091857600080fd5b50610933600480360381019061092e9190614356565b611da4565b005b34801561094157600080fd5b5061094a611e94565b60405161095791906149de565b60405180910390f35b34801561096c57600080fd5b5061098760048036038101906109829190614279565b611e9a565b6040516109949190614826565b60405180910390f35b3480156109a957600080fd5b506109b2611eba565b6040516109bf9190614766565b60405180910390f35b3480156109d457600080fd5b506109dd611ee3565b005b3480156109eb57600080fd5b506109f4612036565b604051610a01919061485c565b60405180910390f35b348015610a1657600080fd5b50610a1f6120c8565b604051610a2c91906149de565b60405180910390f35b348015610a4157600080fd5b50610a4a6120d2565b604051610a5791906149de565b60405180910390f35b348015610a6c57600080fd5b50610a876004803603810190610a829190614392565b6120d8565b604051610a949190614826565b60405180910390f35b348015610aa957600080fd5b50610ac46004803603810190610abf91906143ce565b6121a5565b005b348015610ad257600080fd5b50610adb612257565b005b348015610ae957600080fd5b50610af261242b565b604051610aff91906149de565b60405180910390f35b348015610b1457600080fd5b50610b2f6004803603810190610b2a9190614392565b612431565b604051610b3c9190614826565b60405180910390f35b348015610b5157600080fd5b50610b6c6004803603810190610b679190614420565b612450565b005b348015610b7a57600080fd5b50610b83612530565b604051610b9091906149de565b60405180910390f35b348015610ba557600080fd5b50610bc06004803603810190610bbb91906143ce565b612536565b005b348015610bce57600080fd5b50610bd761261f565b604051610be491906149de565b60405180910390f35b348015610bf957600080fd5b50610c02612625565b604051610c0f9190614766565b60405180910390f35b348015610c2457600080fd5b50610c2d61264b565b604051610c3a91906149de565b60405180910390f35b348015610c4f57600080fd5b50610c6a6004803603810190610c659190614279565b612651565b604051610c779190614826565b60405180910390f35b348015610c8c57600080fd5b50610c95612671565b604051610ca291906149de565b60405180910390f35b348015610cb757600080fd5b50610cc0612677565b604051610ccd9190614781565b60405180910390f35b348015610ce257600080fd5b50610ceb61269d565b604051610cf89190614826565b60405180910390f35b348015610d0d57600080fd5b50610d166126b0565b604051610d2391906149de565b60405180910390f35b348015610d3857600080fd5b50610d536004803603810190610d4e91906143f7565b6126b6565b005b348015610d6157600080fd5b50610d7c6004803603810190610d7791906142cb565b61287d565b604051610d8991906149de565b60405180910390f35b348015610d9e57600080fd5b50610db96004803603810190610db491906143f7565b612904565b005b348015610dc757600080fd5b50610de26004803603810190610ddd9190614356565b6129a3565b005b348015610df057600080fd5b50610df9612a93565b604051610e0691906149de565b60405180910390f35b348015610e1b57600080fd5b50610e366004803603810190610e3191906143f7565b612a99565b005b348015610e4457600080fd5b50610e5f6004803603810190610e5a9190614279565b612b38565b005b348015610e6d57600080fd5b50610e886004803603810190610e839190614356565b612cfa565b005b348015610e9657600080fd5b50610e9f612dea565b604051610eac9190614826565b60405180910390f35b606060038054610ec490614cd8565b80601f0160208091040260200160405190810160405280929190818152602001828054610ef090614cd8565b8015610f3d5780601f10610f1257610100808354040283529160200191610f3d565b820191906000526020600020905b815481529060010190602001808311610f2057829003601f168201915b5050505050905090565b610f4f612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd39061493e565b60405180910390fd5b82601081905550816011819055508060128190555061101c60125461100e601154601054612dfd90919063ffffffff16565b612dfd90919063ffffffff16565b601781905550505050565b600061103b611034612e5b565b8484612e63565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601954905090565b6110a3612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611130576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111279061493e565b60405180910390fd5b82600d8190555081600e8190555080600f81905550611170600f54611162600e54600d54612dfd90919063ffffffff16565b612dfd90919063ffffffff16565b601681905550505050565b611183612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611210576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112079061493e565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600061127884848461302e565b5061133a84611285612e5b565b611335856040518060600160405280602881526020016150e160289139600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112eb612e5b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136139092919063ffffffff16565b612e63565b600190509392505050565b61134d612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d19061493e565b60405180910390fd5b80601e60176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061145a6114497f0000000000000000000000000000000000000000000000000000000000000000611d49565b60195461367790919063ffffffff16565b905090565b611467612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114eb9061493e565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560009054906101000a900460ff16905090565b60006115f861155c612e5b565b846115f3856008600061156d612e5b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfd90919063ffffffff16565b612e63565b6001905092915050565b61160a612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168e9061493e565b60405180910390fd5b80601c8190555050565b600c6020528060005260406000206000915054906101000a900460ff1681565b601e60159054906101000a900460ff1681565b6116dc612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611769576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117609061493e565b60405180910390fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60096020528060005260406000206000915054906101000a900460ff1681565b600042905090565b60135481565b60006117e5612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611872576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118699061493e565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156118bd57600080fd5b505afa1580156118d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f591906142a2565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561195757600080fd5b505afa15801561196b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198f91906142a2565b6040518363ffffffff1660e01b81526004016119ac92919061479c565b60206040518083038186803b1580156119c457600080fd5b505afa1580156119d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fc91906142a2565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bbd578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611a7957600080fd5b505afa158015611a8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab191906142a2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611b1357600080fd5b505afa158015611b27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4b91906142a2565b6040518363ffffffff1660e01b8152600401611b6892919061479c565b602060405180830381600087803b158015611b8257600080fd5b505af1158015611b96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bba91906142a2565b91505b81601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b6000600254905090565b60145481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601a5481565b601b5481565b60175481565b611dac612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e309061493e565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60105481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611eeb612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6f9061493e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60606004805461204590614cd8565b80601f016020809104026020016040519081016040528092919081815260200182805461207190614cd8565b80156120be5780601f10612093576101008083540402835291602001916120be565b820191906000526020600020905b8154815290600101906020018083116120a157829003601f168201915b5050505050905090565b6000601c54905090565b60185481565b600061219b6120e5612e5b565b8461219685604051806060016040528060258152602001615109602591396008600061210f612e5b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136139092919063ffffffff16565b612e63565b6001905092915050565b6121ad612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461223a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122319061493e565b60405180910390fd5b80601e60166101000a81548160ff02191690831515021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122de906149be565b60405180910390fd5b600254421161232b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123229061499e565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60155481565b600061244561243e612e5b565b848461302e565b506001905092915050565b612458612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124dc9061493e565b60405180910390fd5b826013819055508160148190555080601581905550612525601554612517601454601354612dfd90919063ffffffff16565b612dfd90919063ffffffff16565b601881905550505050565b600f5481565b61253e612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c29061493e565b60405180910390fd5b80601e60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516126149190614826565b60405180910390a150565b600e5481565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600a6020528060005260406000206000915054906101000a900460ff1681565b60125481565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601e60169054906101000a900460ff1681565b600d5481565b6126be612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461274b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127429061493e565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080426127f99190614af3565b600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61290c612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612999576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129909061493e565b60405180910390fd5b80601a8190555050565b6129ab612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2f9061493e565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60165481565b612aa1612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b259061493e565b60405180910390fd5b80601b8190555050565b612b40612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc49061493e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c349061489e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612d02612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d869061493e565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601e60179054906101000a900460ff1681565b6000808284612e0c9190614af3565b905083811015612e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e48906148de565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eca9061497e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3a906148be565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161302191906149de565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561309f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130969061495e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561310f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131069061487e565b60405180910390fd5b601e60149054906101000a900460ff16156131365761312f8484846136c1565b905061360c565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131da5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561322557601a54821115613224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161321b906148fe565b60405180910390fd5b5b600061323030611d49565b90506000601c5482101590508080156132565750601e60149054906101000a900460ff16155b80156132ac5750600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132c45750601e60159054906101000a900460ff165b156132ee57601e60169054906101000a900460ff16156132e457601c5491505b6132ed82613894565b5b613377846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136139092919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061345d5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6134715761346c878787613a85565b613473565b845b9050601e60179054906101000a900460ff1680156134db5750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561350a57601b546134fe826134f089611d49565b612dfd90919063ffffffff16565b111561350957600080fd5b5b61355c81600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfd90919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516135fc91906149de565b60405180910390a3600193505050505b9392505050565b600083831115829061365b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613652919061485c565b60405180910390fd5b506000838561366a9190614bd4565b9050809150509392505050565b60006136b983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613613565b905092915050565b600061374c826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136139092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506137e182600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfd90919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161388191906149de565b60405180910390a3600190509392505050565b6001601e60146101000a81548160ff02191690831515021790555060006138ed60026138df6018546138d160135487613cac90919063ffffffff16565b613d2790919063ffffffff16565b613d2790919063ffffffff16565b90506000613904828461367790919063ffffffff16565b905061390f81613d71565b6000479050600061394061392f6002601354613d2790919063ffffffff16565b60185461367790919063ffffffff16565b9050600061397e60026139708461396260135488613cac90919063ffffffff16565b613d2790919063ffffffff16565b613d2790919063ffffffff16565b905060006139a98361399b60155487613cac90919063ffffffff16565b613d2790919063ffffffff16565b905060006139d2826139c4858861367790919063ffffffff16565b61367790919063ffffffff16565b90506000811115613a0a57613a09600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261406e565b5b6000821115613a4057613a3f600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361406e565b5b600083118015613a505750600087115b15613a6057613a5f87846140b9565b5b505050505050506000601e60146101000a81548160ff02191690831515021790555050565b60008060009050600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613b0d57613b066064613af860165486613cac90919063ffffffff16565b613d2790919063ffffffff16565b9050613b8b565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613b8a57613b876064613b7960175486613cac90919063ffffffff16565b613d2790919063ffffffff16565b90505b5b6000811115613c8f57613be681600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfd90919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c8691906149de565b60405180910390a35b613ca2818461367790919063ffffffff16565b9150509392505050565b600080831415613cbf5760009050613d21565b60008284613ccd9190614b7a565b9050828482613cdc9190614b49565b14613d1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d139061491e565b60405180910390fd5b809150505b92915050565b6000613d6983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506141ad565b905092915050565b6000600267ffffffffffffffff811115613db4577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015613de25781602001602082028036833780820191505090505b5090503081600081518110613e20577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613ec257600080fd5b505afa158015613ed6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613efa91906142a2565b81600181518110613f34577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f9b30601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612e63565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613fff959493929190614a29565b600060405180830381600087803b15801561401957600080fd5b505af115801561402d573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516140629291906149f9565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156140b4573d6000803e3d6000fd5b505050565b6140e630601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612e63565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080614132611eba565b426040518863ffffffff1660e01b8152600401614154969594939291906147c5565b6060604051808303818588803b15801561416d57600080fd5b505af1158015614181573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906141a6919061446f565b5050505050565b600080831182906141f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016141eb919061485c565b60405180910390fd5b50600083856142039190614b49565b9050809150509392505050565b60008135905061421f8161509b565b92915050565b6000815190506142348161509b565b92915050565b600081359050614249816150b2565b92915050565b60008135905061425e816150c9565b92915050565b600081519050614273816150c9565b92915050565b60006020828403121561428b57600080fd5b600061429984828501614210565b91505092915050565b6000602082840312156142b457600080fd5b60006142c284828501614225565b91505092915050565b600080604083850312156142de57600080fd5b60006142ec85828601614210565b92505060206142fd85828601614210565b9150509250929050565b60008060006060848603121561431c57600080fd5b600061432a86828701614210565b935050602061433b86828701614210565b925050604061434c8682870161424f565b9150509250925092565b6000806040838503121561436957600080fd5b600061437785828601614210565b92505060206143888582860161423a565b9150509250929050565b600080604083850312156143a557600080fd5b60006143b385828601614210565b92505060206143c48582860161424f565b9150509250929050565b6000602082840312156143e057600080fd5b60006143ee8482850161423a565b91505092915050565b60006020828403121561440957600080fd5b60006144178482850161424f565b91505092915050565b60008060006060848603121561443557600080fd5b60006144438682870161424f565b93505060206144548682870161424f565b92505060406144658682870161424f565b9150509250925092565b60008060006060848603121561448457600080fd5b600061449286828701614264565b93505060206144a386828701614264565b92505060406144b486828701614264565b9150509250925092565b60006144ca83836144e5565b60208301905092915050565b6144df81614c1a565b82525050565b6144ee81614c08565b82525050565b6144fd81614c08565b82525050565b600061450e82614aae565b6145188185614ad1565b935061452383614a9e565b8060005b8381101561455457815161453b88826144be565b975061454683614ac4565b925050600181019050614527565b5085935050505092915050565b61456a81614c2c565b82525050565b61457981614c6f565b82525050565b61458881614c93565b82525050565b600061459982614ab9565b6145a38185614ae2565b93506145b3818560208601614ca5565b6145bc81614d97565b840191505092915050565b60006145d4602383614ae2565b91506145df82614da8565b604082019050919050565b60006145f7602683614ae2565b915061460282614df7565b604082019050919050565b600061461a602283614ae2565b915061462582614e46565b604082019050919050565b600061463d601b83614ae2565b915061464882614e95565b602082019050919050565b6000614660602883614ae2565b915061466b82614ebe565b604082019050919050565b6000614683602183614ae2565b915061468e82614f0d565b604082019050919050565b60006146a6602083614ae2565b91506146b182614f5c565b602082019050919050565b60006146c9602583614ae2565b91506146d482614f85565b604082019050919050565b60006146ec602483614ae2565b91506146f782614fd4565b604082019050919050565b600061470f601f83614ae2565b915061471a82615023565b602082019050919050565b6000614732602383614ae2565b915061473d8261504c565b604082019050919050565b61475181614c58565b82525050565b61476081614c62565b82525050565b600060208201905061477b60008301846144f4565b92915050565b600060208201905061479660008301846144d6565b92915050565b60006040820190506147b160008301856144f4565b6147be60208301846144f4565b9392505050565b600060c0820190506147da60008301896144f4565b6147e76020830188614748565b6147f4604083018761457f565b614801606083018661457f565b61480e60808301856144f4565b61481b60a0830184614748565b979650505050505050565b600060208201905061483b6000830184614561565b92915050565b60006020820190506148566000830184614570565b92915050565b60006020820190508181036000830152614876818461458e565b905092915050565b60006020820190508181036000830152614897816145c7565b9050919050565b600060208201905081810360008301526148b7816145ea565b9050919050565b600060208201905081810360008301526148d78161460d565b9050919050565b600060208201905081810360008301526148f781614630565b9050919050565b6000602082019050818103600083015261491781614653565b9050919050565b6000602082019050818103600083015261493781614676565b9050919050565b6000602082019050818103600083015261495781614699565b9050919050565b60006020820190508181036000830152614977816146bc565b9050919050565b60006020820190508181036000830152614997816146df565b9050919050565b600060208201905081810360008301526149b781614702565b9050919050565b600060208201905081810360008301526149d781614725565b9050919050565b60006020820190506149f36000830184614748565b92915050565b6000604082019050614a0e6000830185614748565b8181036020830152614a208184614503565b90509392505050565b600060a082019050614a3e6000830188614748565b614a4b602083018761457f565b8181036040830152614a5d8186614503565b9050614a6c60608301856144f4565b614a796080830184614748565b9695505050505050565b6000602082019050614a986000830184614757565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614afe82614c58565b9150614b0983614c58565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614b3e57614b3d614d0a565b5b828201905092915050565b6000614b5482614c58565b9150614b5f83614c58565b925082614b6f57614b6e614d39565b5b828204905092915050565b6000614b8582614c58565b9150614b9083614c58565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614bc957614bc8614d0a565b5b828202905092915050565b6000614bdf82614c58565b9150614bea83614c58565b925082821015614bfd57614bfc614d0a565b5b828203905092915050565b6000614c1382614c38565b9050919050565b6000614c2582614c38565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614c7a82614c81565b9050919050565b6000614c8c82614c38565b9050919050565b6000614c9e82614c58565b9050919050565b60005b83811015614cc3578082015181840152602081019050614ca8565b83811115614cd2576000848401525b50505050565b60006002820490506001821680614cf057607f821691505b60208210811415614d0457614d03614d68565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300600082015250565b7f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c60008201527f6f636b0000000000000000000000000000000000000000000000000000000000602082015250565b6150a481614c08565b81146150af57600080fd5b50565b6150bb81614c2c565b81146150c657600080fd5b50565b6150d281614c58565b81146150dd57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122039e796e79cbe6462daf46464aa707413e16f1b3003d11a5200d735a811dd2db864736f6c63430008040033
Deployed Bytecode
0x6080604052600436106103b15760003560e01c80638b42507f116101e7578063c816841b1161010d578063dd62ed3e116100a0578063f1d5f5171161006f578063f1d5f51714610e0f578063f2fde38b14610e38578063f84ba65d14610e61578063f872858a14610e8a576103b8565b8063dd62ed3e14610d55578063ec28438a14610d92578063ef422a1814610dbb578063f0cd1dac14610de4576103b8565b8063d158272d116100dc578063d158272d14610cab578063da00097d14610cd6578063dc44b6a014610d01578063dd46706414610d2c576103b8565b8063c816841b14610bed578063c860795214610c18578063c867d60b14610c43578063cab0347114610c80576103b8565b8063a5d69d1f11610185578063c2d4640e11610154578063c2d4640e14610b45578063c469b6dd14610b6e578063c49b9a8014610b99578063c5d2418914610bc2576103b8565b8063a5d69d1f14610a9d578063a69df4b514610ac6578063a83f53a714610add578063a9059cbb14610b08576103b8565b806395d89b41116101c157806395d89b41146109df578063a073d37f14610a0a578063a08e671f14610a35578063a457c2d714610a60576103b8565b80638b42507f146109605780638da5cb5b1461099d578063914eb66a146109c8576103b8565b80633b97084a116102d7578063602bc62b1161026a578063807c2d9c11610239578063807c2d9c146108b657806382eefb43146108e1578063844d591c1461090c57806388790a6814610935576103b8565b8063602bc62b146107f857806361a23c691461082357806370a082311461084e5780637d1db4a51461088b576103b8565b80635342acb4116102a65780635342acb414610728578063557ed1ba1461076557806357a5802f146107905780635881f3ef146107bb576103b8565b80633b97084a1461066e5780633ecad271146106975780634a74bb02146106d45780634cb80fd5146106ff576103b8565b80632198cf6c1161034f5780632b112e491161031e5780632b112e49146105b25780632c4b2334146105dd578063313ce567146106065780633950935114610631576103b8565b80632198cf6c146104f857806323b872dd146105215780632563ae831461055e57806327c8f83514610587576103b8565b80631245e3471161038b5780631245e3471461044e5780631694505e1461047957806318160ddd146104a45780631870517a146104cf576103b8565b806306fdde03146103bd57806308733214146103e8578063095ea7b314610411576103b8565b366103b857005b600080fd5b3480156103c957600080fd5b506103d2610eb5565b6040516103df919061485c565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a9190614420565b610f47565b005b34801561041d57600080fd5b5061043860048036038101906104339190614392565b611027565b6040516104459190614826565b60405180910390f35b34801561045a57600080fd5b50610463611045565b6040516104709190614781565b60405180910390f35b34801561048557600080fd5b5061048e61106b565b60405161049b9190614841565b60405180910390f35b3480156104b057600080fd5b506104b9611091565b6040516104c691906149de565b60405180910390f35b3480156104db57600080fd5b506104f660048036038101906104f19190614420565b61109b565b005b34801561050457600080fd5b5061051f600480360381019061051a9190614356565b61117b565b005b34801561052d57600080fd5b5061054860048036038101906105439190614307565b61126b565b6040516105559190614826565b60405180910390f35b34801561056a57600080fd5b50610585600480360381019061058091906143ce565b611345565b005b34801561059357600080fd5b5061059c6113f7565b6040516105a99190614766565b60405180910390f35b3480156105be57600080fd5b506105c761141b565b6040516105d491906149de565b60405180910390f35b3480156105e957600080fd5b5061060460048036038101906105ff9190614279565b61145f565b005b34801561061257600080fd5b5061061b611538565b6040516106289190614a83565b60405180910390f35b34801561063d57600080fd5b5061065860048036038101906106539190614392565b61154f565b6040516106659190614826565b60405180910390f35b34801561067a57600080fd5b50610695600480360381019061069091906143f7565b611602565b005b3480156106a357600080fd5b506106be60048036038101906106b99190614279565b6116a1565b6040516106cb9190614826565b60405180910390f35b3480156106e057600080fd5b506106e96116c1565b6040516106f69190614826565b60405180910390f35b34801561070b57600080fd5b5061072660048036038101906107219190614279565b6116d4565b005b34801561073457600080fd5b5061074f600480360381019061074a9190614279565b6117ad565b60405161075c9190614826565b60405180910390f35b34801561077157600080fd5b5061077a6117cd565b60405161078791906149de565b60405180910390f35b34801561079c57600080fd5b506107a56117d5565b6040516107b291906149de565b60405180910390f35b3480156107c757600080fd5b506107e260048036038101906107dd9190614279565b6117db565b6040516107ef9190614766565b60405180910390f35b34801561080457600080fd5b5061080d611d39565b60405161081a91906149de565b60405180910390f35b34801561082f57600080fd5b50610838611d43565b60405161084591906149de565b60405180910390f35b34801561085a57600080fd5b5061087560048036038101906108709190614279565b611d49565b60405161088291906149de565b60405180910390f35b34801561089757600080fd5b506108a0611d92565b6040516108ad91906149de565b60405180910390f35b3480156108c257600080fd5b506108cb611d98565b6040516108d891906149de565b60405180910390f35b3480156108ed57600080fd5b506108f6611d9e565b60405161090391906149de565b60405180910390f35b34801561091857600080fd5b50610933600480360381019061092e9190614356565b611da4565b005b34801561094157600080fd5b5061094a611e94565b60405161095791906149de565b60405180910390f35b34801561096c57600080fd5b5061098760048036038101906109829190614279565b611e9a565b6040516109949190614826565b60405180910390f35b3480156109a957600080fd5b506109b2611eba565b6040516109bf9190614766565b60405180910390f35b3480156109d457600080fd5b506109dd611ee3565b005b3480156109eb57600080fd5b506109f4612036565b604051610a01919061485c565b60405180910390f35b348015610a1657600080fd5b50610a1f6120c8565b604051610a2c91906149de565b60405180910390f35b348015610a4157600080fd5b50610a4a6120d2565b604051610a5791906149de565b60405180910390f35b348015610a6c57600080fd5b50610a876004803603810190610a829190614392565b6120d8565b604051610a949190614826565b60405180910390f35b348015610aa957600080fd5b50610ac46004803603810190610abf91906143ce565b6121a5565b005b348015610ad257600080fd5b50610adb612257565b005b348015610ae957600080fd5b50610af261242b565b604051610aff91906149de565b60405180910390f35b348015610b1457600080fd5b50610b2f6004803603810190610b2a9190614392565b612431565b604051610b3c9190614826565b60405180910390f35b348015610b5157600080fd5b50610b6c6004803603810190610b679190614420565b612450565b005b348015610b7a57600080fd5b50610b83612530565b604051610b9091906149de565b60405180910390f35b348015610ba557600080fd5b50610bc06004803603810190610bbb91906143ce565b612536565b005b348015610bce57600080fd5b50610bd761261f565b604051610be491906149de565b60405180910390f35b348015610bf957600080fd5b50610c02612625565b604051610c0f9190614766565b60405180910390f35b348015610c2457600080fd5b50610c2d61264b565b604051610c3a91906149de565b60405180910390f35b348015610c4f57600080fd5b50610c6a6004803603810190610c659190614279565b612651565b604051610c779190614826565b60405180910390f35b348015610c8c57600080fd5b50610c95612671565b604051610ca291906149de565b60405180910390f35b348015610cb757600080fd5b50610cc0612677565b604051610ccd9190614781565b60405180910390f35b348015610ce257600080fd5b50610ceb61269d565b604051610cf89190614826565b60405180910390f35b348015610d0d57600080fd5b50610d166126b0565b604051610d2391906149de565b60405180910390f35b348015610d3857600080fd5b50610d536004803603810190610d4e91906143f7565b6126b6565b005b348015610d6157600080fd5b50610d7c6004803603810190610d7791906142cb565b61287d565b604051610d8991906149de565b60405180910390f35b348015610d9e57600080fd5b50610db96004803603810190610db491906143f7565b612904565b005b348015610dc757600080fd5b50610de26004803603810190610ddd9190614356565b6129a3565b005b348015610df057600080fd5b50610df9612a93565b604051610e0691906149de565b60405180910390f35b348015610e1b57600080fd5b50610e366004803603810190610e3191906143f7565b612a99565b005b348015610e4457600080fd5b50610e5f6004803603810190610e5a9190614279565b612b38565b005b348015610e6d57600080fd5b50610e886004803603810190610e839190614356565b612cfa565b005b348015610e9657600080fd5b50610e9f612dea565b604051610eac9190614826565b60405180910390f35b606060038054610ec490614cd8565b80601f0160208091040260200160405190810160405280929190818152602001828054610ef090614cd8565b8015610f3d5780601f10610f1257610100808354040283529160200191610f3d565b820191906000526020600020905b815481529060010190602001808311610f2057829003601f168201915b5050505050905090565b610f4f612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd39061493e565b60405180910390fd5b82601081905550816011819055508060128190555061101c60125461100e601154601054612dfd90919063ffffffff16565b612dfd90919063ffffffff16565b601781905550505050565b600061103b611034612e5b565b8484612e63565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601954905090565b6110a3612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611130576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111279061493e565b60405180910390fd5b82600d8190555081600e8190555080600f81905550611170600f54611162600e54600d54612dfd90919063ffffffff16565b612dfd90919063ffffffff16565b601681905550505050565b611183612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611210576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112079061493e565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600061127884848461302e565b5061133a84611285612e5b565b611335856040518060600160405280602881526020016150e160289139600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112eb612e5b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136139092919063ffffffff16565b612e63565b600190509392505050565b61134d612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d19061493e565b60405180910390fd5b80601e60176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b600061145a6114497f000000000000000000000000000000000000000000000000000000000000dead611d49565b60195461367790919063ffffffff16565b905090565b611467612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114eb9061493e565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560009054906101000a900460ff16905090565b60006115f861155c612e5b565b846115f3856008600061156d612e5b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfd90919063ffffffff16565b612e63565b6001905092915050565b61160a612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168e9061493e565b60405180910390fd5b80601c8190555050565b600c6020528060005260406000206000915054906101000a900460ff1681565b601e60159054906101000a900460ff1681565b6116dc612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611769576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117609061493e565b60405180910390fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60096020528060005260406000206000915054906101000a900460ff1681565b600042905090565b60135481565b60006117e5612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611872576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118699061493e565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156118bd57600080fd5b505afa1580156118d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f591906142a2565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561195757600080fd5b505afa15801561196b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198f91906142a2565b6040518363ffffffff1660e01b81526004016119ac92919061479c565b60206040518083038186803b1580156119c457600080fd5b505afa1580156119d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fc91906142a2565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bbd578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611a7957600080fd5b505afa158015611a8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab191906142a2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611b1357600080fd5b505afa158015611b27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4b91906142a2565b6040518363ffffffff1660e01b8152600401611b6892919061479c565b602060405180830381600087803b158015611b8257600080fd5b505af1158015611b96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bba91906142a2565b91505b81601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b6000600254905090565b60145481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601a5481565b601b5481565b60175481565b611dac612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e309061493e565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60105481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611eeb612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6f9061493e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60606004805461204590614cd8565b80601f016020809104026020016040519081016040528092919081815260200182805461207190614cd8565b80156120be5780601f10612093576101008083540402835291602001916120be565b820191906000526020600020905b8154815290600101906020018083116120a157829003601f168201915b5050505050905090565b6000601c54905090565b60185481565b600061219b6120e5612e5b565b8461219685604051806060016040528060258152602001615109602591396008600061210f612e5b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136139092919063ffffffff16565b612e63565b6001905092915050565b6121ad612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461223a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122319061493e565b60405180910390fd5b80601e60166101000a81548160ff02191690831515021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122de906149be565b60405180910390fd5b600254421161232b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123229061499e565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60155481565b600061244561243e612e5b565b848461302e565b506001905092915050565b612458612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124dc9061493e565b60405180910390fd5b826013819055508160148190555080601581905550612525601554612517601454601354612dfd90919063ffffffff16565b612dfd90919063ffffffff16565b601881905550505050565b600f5481565b61253e612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c29061493e565b60405180910390fd5b80601e60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516126149190614826565b60405180910390a150565b600e5481565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600a6020528060005260406000206000915054906101000a900460ff1681565b60125481565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601e60169054906101000a900460ff1681565b600d5481565b6126be612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461274b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127429061493e565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080426127f99190614af3565b600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61290c612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612999576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129909061493e565b60405180910390fd5b80601a8190555050565b6129ab612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2f9061493e565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60165481565b612aa1612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b259061493e565b60405180910390fd5b80601b8190555050565b612b40612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc49061493e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c349061489e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612d02612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d869061493e565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601e60179054906101000a900460ff1681565b6000808284612e0c9190614af3565b905083811015612e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e48906148de565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eca9061497e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3a906148be565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161302191906149de565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561309f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130969061495e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561310f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131069061487e565b60405180910390fd5b601e60149054906101000a900460ff16156131365761312f8484846136c1565b905061360c565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131da5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561322557601a54821115613224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161321b906148fe565b60405180910390fd5b5b600061323030611d49565b90506000601c5482101590508080156132565750601e60149054906101000a900460ff16155b80156132ac5750600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132c45750601e60159054906101000a900460ff165b156132ee57601e60169054906101000a900460ff16156132e457601c5491505b6132ed82613894565b5b613377846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136139092919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061345d5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6134715761346c878787613a85565b613473565b845b9050601e60179054906101000a900460ff1680156134db5750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561350a57601b546134fe826134f089611d49565b612dfd90919063ffffffff16565b111561350957600080fd5b5b61355c81600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfd90919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516135fc91906149de565b60405180910390a3600193505050505b9392505050565b600083831115829061365b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613652919061485c565b60405180910390fd5b506000838561366a9190614bd4565b9050809150509392505050565b60006136b983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613613565b905092915050565b600061374c826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136139092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506137e182600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfd90919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161388191906149de565b60405180910390a3600190509392505050565b6001601e60146101000a81548160ff02191690831515021790555060006138ed60026138df6018546138d160135487613cac90919063ffffffff16565b613d2790919063ffffffff16565b613d2790919063ffffffff16565b90506000613904828461367790919063ffffffff16565b905061390f81613d71565b6000479050600061394061392f6002601354613d2790919063ffffffff16565b60185461367790919063ffffffff16565b9050600061397e60026139708461396260135488613cac90919063ffffffff16565b613d2790919063ffffffff16565b613d2790919063ffffffff16565b905060006139a98361399b60155487613cac90919063ffffffff16565b613d2790919063ffffffff16565b905060006139d2826139c4858861367790919063ffffffff16565b61367790919063ffffffff16565b90506000811115613a0a57613a09600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261406e565b5b6000821115613a4057613a3f600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361406e565b5b600083118015613a505750600087115b15613a6057613a5f87846140b9565b5b505050505050506000601e60146101000a81548160ff02191690831515021790555050565b60008060009050600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613b0d57613b066064613af860165486613cac90919063ffffffff16565b613d2790919063ffffffff16565b9050613b8b565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613b8a57613b876064613b7960175486613cac90919063ffffffff16565b613d2790919063ffffffff16565b90505b5b6000811115613c8f57613be681600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfd90919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c8691906149de565b60405180910390a35b613ca2818461367790919063ffffffff16565b9150509392505050565b600080831415613cbf5760009050613d21565b60008284613ccd9190614b7a565b9050828482613cdc9190614b49565b14613d1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d139061491e565b60405180910390fd5b809150505b92915050565b6000613d6983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506141ad565b905092915050565b6000600267ffffffffffffffff811115613db4577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015613de25781602001602082028036833780820191505090505b5090503081600081518110613e20577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613ec257600080fd5b505afa158015613ed6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613efa91906142a2565b81600181518110613f34577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f9b30601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612e63565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613fff959493929190614a29565b600060405180830381600087803b15801561401957600080fd5b505af115801561402d573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516140629291906149f9565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156140b4573d6000803e3d6000fd5b505050565b6140e630601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612e63565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080614132611eba565b426040518863ffffffff1660e01b8152600401614154969594939291906147c5565b6060604051808303818588803b15801561416d57600080fd5b505af1158015614181573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906141a6919061446f565b5050505050565b600080831182906141f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016141eb919061485c565b60405180910390fd5b50600083856142039190614b49565b9050809150509392505050565b60008135905061421f8161509b565b92915050565b6000815190506142348161509b565b92915050565b600081359050614249816150b2565b92915050565b60008135905061425e816150c9565b92915050565b600081519050614273816150c9565b92915050565b60006020828403121561428b57600080fd5b600061429984828501614210565b91505092915050565b6000602082840312156142b457600080fd5b60006142c284828501614225565b91505092915050565b600080604083850312156142de57600080fd5b60006142ec85828601614210565b92505060206142fd85828601614210565b9150509250929050565b60008060006060848603121561431c57600080fd5b600061432a86828701614210565b935050602061433b86828701614210565b925050604061434c8682870161424f565b9150509250925092565b6000806040838503121561436957600080fd5b600061437785828601614210565b92505060206143888582860161423a565b9150509250929050565b600080604083850312156143a557600080fd5b60006143b385828601614210565b92505060206143c48582860161424f565b9150509250929050565b6000602082840312156143e057600080fd5b60006143ee8482850161423a565b91505092915050565b60006020828403121561440957600080fd5b60006144178482850161424f565b91505092915050565b60008060006060848603121561443557600080fd5b60006144438682870161424f565b93505060206144548682870161424f565b92505060406144658682870161424f565b9150509250925092565b60008060006060848603121561448457600080fd5b600061449286828701614264565b93505060206144a386828701614264565b92505060406144b486828701614264565b9150509250925092565b60006144ca83836144e5565b60208301905092915050565b6144df81614c1a565b82525050565b6144ee81614c08565b82525050565b6144fd81614c08565b82525050565b600061450e82614aae565b6145188185614ad1565b935061452383614a9e565b8060005b8381101561455457815161453b88826144be565b975061454683614ac4565b925050600181019050614527565b5085935050505092915050565b61456a81614c2c565b82525050565b61457981614c6f565b82525050565b61458881614c93565b82525050565b600061459982614ab9565b6145a38185614ae2565b93506145b3818560208601614ca5565b6145bc81614d97565b840191505092915050565b60006145d4602383614ae2565b91506145df82614da8565b604082019050919050565b60006145f7602683614ae2565b915061460282614df7565b604082019050919050565b600061461a602283614ae2565b915061462582614e46565b604082019050919050565b600061463d601b83614ae2565b915061464882614e95565b602082019050919050565b6000614660602883614ae2565b915061466b82614ebe565b604082019050919050565b6000614683602183614ae2565b915061468e82614f0d565b604082019050919050565b60006146a6602083614ae2565b91506146b182614f5c565b602082019050919050565b60006146c9602583614ae2565b91506146d482614f85565b604082019050919050565b60006146ec602483614ae2565b91506146f782614fd4565b604082019050919050565b600061470f601f83614ae2565b915061471a82615023565b602082019050919050565b6000614732602383614ae2565b915061473d8261504c565b604082019050919050565b61475181614c58565b82525050565b61476081614c62565b82525050565b600060208201905061477b60008301846144f4565b92915050565b600060208201905061479660008301846144d6565b92915050565b60006040820190506147b160008301856144f4565b6147be60208301846144f4565b9392505050565b600060c0820190506147da60008301896144f4565b6147e76020830188614748565b6147f4604083018761457f565b614801606083018661457f565b61480e60808301856144f4565b61481b60a0830184614748565b979650505050505050565b600060208201905061483b6000830184614561565b92915050565b60006020820190506148566000830184614570565b92915050565b60006020820190508181036000830152614876818461458e565b905092915050565b60006020820190508181036000830152614897816145c7565b9050919050565b600060208201905081810360008301526148b7816145ea565b9050919050565b600060208201905081810360008301526148d78161460d565b9050919050565b600060208201905081810360008301526148f781614630565b9050919050565b6000602082019050818103600083015261491781614653565b9050919050565b6000602082019050818103600083015261493781614676565b9050919050565b6000602082019050818103600083015261495781614699565b9050919050565b60006020820190508181036000830152614977816146bc565b9050919050565b60006020820190508181036000830152614997816146df565b9050919050565b600060208201905081810360008301526149b781614702565b9050919050565b600060208201905081810360008301526149d781614725565b9050919050565b60006020820190506149f36000830184614748565b92915050565b6000604082019050614a0e6000830185614748565b8181036020830152614a208184614503565b90509392505050565b600060a082019050614a3e6000830188614748565b614a4b602083018761457f565b8181036040830152614a5d8186614503565b9050614a6c60608301856144f4565b614a796080830184614748565b9695505050505050565b6000602082019050614a986000830184614757565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614afe82614c58565b9150614b0983614c58565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614b3e57614b3d614d0a565b5b828201905092915050565b6000614b5482614c58565b9150614b5f83614c58565b925082614b6f57614b6e614d39565b5b828204905092915050565b6000614b8582614c58565b9150614b9083614c58565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614bc957614bc8614d0a565b5b828202905092915050565b6000614bdf82614c58565b9150614bea83614c58565b925082821015614bfd57614bfc614d0a565b5b828203905092915050565b6000614c1382614c38565b9050919050565b6000614c2582614c38565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614c7a82614c81565b9050919050565b6000614c8c82614c38565b9050919050565b6000614c9e82614c58565b9050919050565b60005b83811015614cc3578082015181840152602081019050614ca8565b83811115614cd2576000848401525b50505050565b60006002820490506001821680614cf057607f821691505b60208210811415614d0457614d03614d68565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300600082015250565b7f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c60008201527f6f636b0000000000000000000000000000000000000000000000000000000000602082015250565b6150a481614c08565b81146150af57600080fd5b50565b6150bb81614c2c565b81146150c657600080fd5b50565b6150d281614c58565b81146150dd57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122039e796e79cbe6462daf46464aa707413e16f1b3003d11a5200d735a811dd2db864736f6c63430008040033
Deployed Bytecode Sourcemap
15082:14871:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18819:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21387:341;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20113:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15451:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16842:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19096:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21046:333;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22350:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24693:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22229:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15568:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23335:128;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22882:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19005:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19482:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22603:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15960:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16957:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22735:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15789:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6602:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16268:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23609:807;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6500:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16309:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19204:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16605:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16683:68;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16431:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20627:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16141:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15905:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5870:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6095:145;;;;;;;;;;;;;:::i;:::-;;18910:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19985:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16475:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19708:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23198:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6938:305;;;;;;;;;;;;;:::i;:::-;;16350:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24518:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21740:358;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16098:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23019:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16056:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16890:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16184:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15846:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16227:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15324:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17004:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16014:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6700:226;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19331:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22110:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20903:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16388:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22493:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6248:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20764:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17056:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18819:83;18856:13;18889:5;18882:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18819:83;:::o;21387:341::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21531:15:::1;21511:17;:35;;;;21577:15;21557:17;:35;;;;21618:10;21603:12;:25;;;;21662:58;21707:12;;21662:40;21684:17;;21662;;:21;;:40;;;;:::i;:::-;:44;;:58;;;;:::i;:::-;21641:18;:79;;;;21387:341:::0;;;:::o;20113:161::-;20188:4;20205:39;20214:12;:10;:12::i;:::-;20228:7;20237:6;20205:8;:39::i;:::-;20262:4;20255:11;;20113:161;;;;:::o;15451:94::-;;;;;;;;;;;;;:::o;16842:41::-;;;;;;;;;;;;;:::o;19096:100::-;19149:7;19176:12;;19169:19;;19096:100;:::o;21046:333::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21188:15:::1;21169:16;:34;;;;21233:15;21214:16;:34;;;;21273:10;21259:11;:24;;;;21316:55;21359:11;;21316:38;21337:16;;21316;;:20;;:38;;;;:::i;:::-;:42;;:55;;;;:::i;:::-;21296:17;:75;;;;21046:333:::0;;;:::o;22350:135::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22471:6:::1;22441:19;:27;22461:6;22441:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;22350:135:::0;;:::o;24693:313::-;24791:4;24808:36;24818:6;24826:9;24837:6;24808:9;:36::i;:::-;;24855:121;24864:6;24872:12;:10;:12::i;:::-;24886:89;24924:6;24886:89;;;;;;;;;;;;;;;;;:11;:19;24898:6;24886:19;;;;;;;;;;;;;;;:33;24906:12;:10;:12::i;:::-;24886:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;24855:8;:121::i;:::-;24994:4;24987:11;;24693:313;;;;;:::o;22229:113::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22326:8:::1;22307:16;;:27;;;;;;;;;;;;;;;;;;22229:113:::0;:::o;15568:81::-;;;:::o;23335:128::-;23388:7;23415:40;23432:22;23442:11;23432:9;:22::i;:::-;23415:12;;:16;;:40;;;;:::i;:::-;23408:47;;23335:128;:::o;22882:129::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22992:10:::1;22964:17;;:39;;;;;;;;;;;;;;;;;;22882:129:::0;:::o;19005:83::-;19046:5;19071:9;;;;;;;;;;;19064:16;;19005:83;:::o;19482:218::-;19570:4;19587:83;19596:12;:10;:12::i;:::-;19610:7;19619:50;19658:10;19619:11;:25;19631:12;:10;:12::i;:::-;19619:25;;;;;;;;;;;;;;;:34;19645:7;19619:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;19587:8;:83::i;:::-;19688:4;19681:11;;19482:218;;;;:::o;22603:124::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22711:8:::1;22685:23;:34;;;;22603:124:::0;:::o;15960:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;16957:40::-;;;;;;;;;;;;;:::o;22735:139::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22855:10:::1;22822:22;;:44;;;;;;;;;;;;;;;;;;22735:139:::0;:::o;15789:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;6602:90::-;6642:7;6669:15;6662:22;;6602:90;:::o;16268:34::-;;;;:::o;23609:807::-;23689:22;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23726:35:::1;23783:16;23726:74;;23849:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23831:53;;;23893:4;23900:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23831:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23814:110;;23966:1;23940:28;;:14;:28;;;23937:225;;;24054:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24036:74;;;24119:4;24126:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24036:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24019:131;;23937:225;24188:14;24174:11;;:28;;;;;;;;;;;;;;;;;;24254:16;24236:15;;:34;;;;;;;;;;;;;;;;;;24352:4;24308:19;:41;24336:11;;;;;;;;;;;24308:41;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;24404:4;24367:12;:34;24388:11;;;;;;;;;;;24367:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;6074:1;23609:807:::0;;;:::o;6500:90::-;6546:7;6573:9;;6566:16;;6500:90;:::o;16309:34::-;;;;:::o;19204:119::-;19270:7;19297:9;:18;19307:7;19297:18;;;;;;;;;;;;;;;;19290:25;;19204:119;;;:::o;16605:70::-;;;;:::o;16683:68::-;;;;:::o;16431:37::-;;;;:::o;20627:129::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20740:8:::1;20716:12;:21;20729:7;20716:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;20627:129:::0;;:::o;16141:36::-;;;;:::o;15905:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;5870:79::-;5908:7;5935:6;;;;;;;;;;;5928:13;;5870:79;:::o;6095:145::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6199:1:::1;6162:40;;6183:6;::::0;::::1;;;;;;;;6162:40;;;;;;;;;;;;6230:1;6213:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6095:145::o:0;18910:87::-;18949:13;18982:7;18975:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18910:87;:::o;19985:120::-;20047:7;20074:23;;20067:30;;19985:120;:::o;16475:43::-;;;;:::o;19708:269::-;19801:4;19818:129;19827:12;:10;:12::i;:::-;19841:7;19850:96;19889:15;19850:96;;;;;;;;;;;;;;;;;:11;:25;19862:12;:10;:12::i;:::-;19850:25;;;;;;;;;;;;;;;:34;19876:7;19850:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;19818:8;:129::i;:::-;19965:4;19958:11;;19708:269;;;;:::o;23198:125::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23307:8:::1;23279:25;;:36;;;;;;;;;;;;;;;;;;23198:125:::0;:::o;6938:305::-;7008:10;6990:28;;:14;;;;;;;;;;;:28;;;6982:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;7095:9;;7077:15;:27;7069:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;7186:14;;;;;;;;;;;7157:44;;7178:6;;;;;;;;;;7157:44;;;;;;;;;;;;7221:14;;;;;;;;;;;7212:6;;:23;;;;;;;;;;;;;;;;;;6938:305::o;16350:29::-;;;;:::o;24518:167::-;24596:4;24613:42;24623:12;:10;:12::i;:::-;24637:9;24648:6;24613:9;:42::i;:::-;;24673:4;24666:11;;24518:167;;;;:::o;21740:358::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21899:17:::1;21881:15;:35;;;;21945:17;21927:15;:35;;;;21986:12;21973:10;:25;;;;22038:52;22079:10;;22038:36;22058:15;;22038;;:19;;:36;;;;:::i;:::-;:40;;:52;;;;:::i;:::-;22011:24;:79;;;;21740:358:::0;;;:::o;16098:30::-;;;;:::o;23019:171::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23120:8:::1;23096:21;;:32;;;;;;;;;;;;;;;;;;23144:38;23173:8;23144:38;;;;;;:::i;:::-;;;;;;;;23019:171:::0;:::o;16056:35::-;;;;:::o;16890:26::-;;;;;;;;;;;;;:::o;16184:36::-;;;;:::o;15846:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;16227:31::-;;;;:::o;15324:99::-;;;;;;;;;;;;;:::o;17004:45::-;;;;;;;;;;;;;:::o;16014:35::-;;;;:::o;6700:226::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6781:6:::1;::::0;::::1;;;;;;;;6764:14;;:23;;;;;;;;;;;;;;;;;;6815:1;6798:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6858:4;6840:15;:22;;;;:::i;:::-;6828:9;:34;;;;6915:1;6878:40;;6899:6;::::0;::::1;;;;;;;;6878:40;;;;;;;;;;;;6700:226:::0;:::o;19331:143::-;19412:7;19439:11;:18;19451:5;19439:18;;;;;;;;;;;;;;;:27;19458:7;19439:27;;;;;;;;;;;;;;;;19432:34;;19331:143;;;;:::o;22110:111::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22202:11:::1;22187:12;:26;;;;22110:111:::0;:::o;20903:135::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21022:8:::1;20993:17;:26;21011:7;20993:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;20903:135:::0;;:::o;16388:36::-;;;;:::o;22493:102::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22579:8:::1;22565:10;:22;;;;22493:102:::0;:::o;6248:244::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6357:1:::1;6337:22;;:8;:22;;;;6329:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6447:8;6418:38;;6439:6;::::0;::::1;;;;;;;;6418:38;;;;;;;;;;;;6476:8;6467:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6248:244:::0;:::o;20764:127::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20877:6:::1;20851:15;:23;20867:6;20851:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;20764:127:::0;;:::o;17056:35::-;;;;;;;;;;;;;:::o;1240:181::-;1298:7;1318:9;1334:1;1330;:5;;;;:::i;:::-;1318:17;;1359:1;1354;:6;;1346:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1412:1;1405:8;;;1240:181;;;;:::o;172:115::-;225:15;268:10;253:26;;172:115;:::o;20282:337::-;20392:1;20375:19;;:5;:19;;;;20367:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20473:1;20454:21;;:7;:21;;;;20446:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20557:6;20527:11;:18;20539:5;20527:18;;;;;;;;;;;;;;;:27;20546:7;20527:27;;;;;;;;;;;;;;;:36;;;;20595:7;20579:32;;20588:5;20579:32;;;20604:6;20579:32;;;;;;:::i;:::-;;;;;;;;20282:337;;;:::o;25014:1707::-;25101:4;25146:1;25128:20;;:6;:20;;;;25120:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;25230:1;25209:23;;:9;:23;;;;25201:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;25288:16;;;;;;;;;;;25285:1429;;;25338:41;25353:6;25361:9;25372:6;25338:14;:41::i;:::-;25331:48;;;;25285:1429;25435:15;:23;25451:6;25435:23;;;;;;;;;;;;;;;;;;;;;;;;;25434:24;:55;;;;;25463:15;:26;25479:9;25463:26;;;;;;;;;;;;;;;;;;;;;;;;;25462:27;25434:55;25431:170;;;25528:12;;25518:6;:22;;25510:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;25431:170;25629:28;25660:24;25678:4;25660:9;:24::i;:::-;25629:55;;25699:28;25754:23;;25730:20;:47;;25699:78;;25810:23;:44;;;;;25838:16;;;;;;;;;;;25837:17;25810:44;:69;;;;;25859:12;:20;25872:6;25859:20;;;;;;;;;;;;;;;;;;;;;;;;;25858:21;25810:69;:94;;;;;25883:21;;;;;;;;;;;25810:94;25806:305;;;25942:25;;;;;;;;;;;25939:97;;;26013:23;;25990:46;;25939:97;26055:36;26070:20;26055:14;:36::i;:::-;25806:305;26147:53;26169:6;26147:53;;;;;;;;;;;;;;;;;:9;:17;26157:6;26147:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;26127:9;:17;26137:6;26127:17;;;;;;;;;;;;;;;:73;;;;26217:19;26240:17;:25;26258:6;26240:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;26269:17;:28;26287:9;26269:28;;;;;;;;;;;;;;;;;;;;;;;;;26240:57;26239:148;;26353:34;26361:6;26369:9;26380:6;26353:7;:34::i;:::-;26239:148;;;26344:6;26239:148;26217:170;;26407:16;;;;;;;;;;;:51;;;;;26428:19;:30;26448:9;26428:30;;;;;;;;;;;;;;;;;;;;;;;;;26427:31;26407:51;26404:133;;;26526:10;;26485:37;26510:11;26485:20;26495:9;26485;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;26477:60;;;;;;26404:133;26577:37;26602:11;26577:9;:20;26587:9;26577:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;26554:9;:20;26564:9;26554:20;;;;;;;;;;;;;;;:60;;;;26653:9;26636:40;;26645:6;26636:40;;;26664:11;26636:40;;;;;;:::i;:::-;;;;;;;;26698:4;26691:11;;;;;25014:1707;;;;;;:::o;1573:192::-;1659:7;1692:1;1687;:6;;1695:12;1679:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1719:9;1735:1;1731;:5;;;;:::i;:::-;1719:17;;1756:1;1749:8;;;1573:192;;;;;:::o;1429:136::-;1487:7;1514:43;1518:1;1521;1514:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1507:50;;1429:136;;;;:::o;26729:330::-;26822:4;26859:53;26881:6;26859:53;;;;;;;;;;;;;;;;;:9;:17;26869:6;26859:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;26839:9;:17;26849:6;26839:17;;;;;;;;;;;;;;;:73;;;;26946:32;26971:6;26946:9;:20;26956:9;26946:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;26923:9;:20;26933:9;26923:20;;;;;;;;;;;;;;;:55;;;;27011:9;26994:35;;27003:6;26994:35;;;27022:6;26994:35;;;;;;:::i;:::-;;;;;;;;27047:4;27040:11;;26729:330;;;;;:::o;27067:1048::-;17533:4;17514:16;;:23;;;;;;;;;;;;;;;;;;27149:19:::1;27171:65;27234:1;27171:58;27204:24;;27171:28;27183:15;;27171:7;:11;;:28;;;;:::i;:::-;:32;;:58;;;;:::i;:::-;:62;;:65;;;;:::i;:::-;27149:87;;27247:21;27271:24;27283:11;27271:7;:11;;:24;;;;:::i;:::-;27247:48;;27308:31;27325:13;27308:16;:31::i;:::-;27350:22;27375:21;27350:46;;27409:19;27431:52;27460:22;27480:1;27460:15;;:19;;:22;;;;:::i;:::-;27431:24;;:28;;:52;;;;:::i;:::-;27409:74;;27504:26;27533:59;27590:1;27533:52;27573:11;27533:35;27552:15;;27533:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;27504:88;;27603:21;27627:47;27662:11;27627:30;27646:10;;27627:14;:18;;:30;;;;:::i;:::-;:34;;:47;;;;:::i;:::-;27603:71;;27685:26;27714:57;27757:13;27714:38;27733:18;27714:14;:18;;:38;;;;:::i;:::-;:42;;:57;;;;:::i;:::-;27685:86;;27808:1;27787:18;:22;27784:104;;;27824:64;27845:22;;;;;;;;;;;27869:18;27824:20;:64::i;:::-;27784:104;27920:1;27904:13;:17;27901:89;;;27936:54;27957:17;;;;;;;;;;;27976:13;27936:20;:54::i;:::-;27901:89;28027:1;28006:18;:22;:41;;;;;28046:1;28032:11;:15;28006:41;28003:104;;;28062:45;28075:11;28088:18;28062:12;:45::i;:::-;28003:104;17548:1;;;;;;;17579:5:::0;17560:16;;:24;;;;;;;;;;;;;;;;;;27067:1048;:::o;29322:622::-;29408:7;29438:17;29458:1;29438:21;;29483:12;:20;29496:6;29483:20;;;;;;;;;;;;;;;;;;;;;;;;;29480:223;;;29532:38;29566:3;29532:29;29543:17;;29532:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;29520:50;;29480:223;;;29600:12;:23;29613:9;29600:23;;;;;;;;;;;;;;;;;;;;;;;;;29597:106;;;29652:39;29687:3;29652:30;29663:18;;29652:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;29640:51;;29597:106;29480:223;29738:1;29726:9;:13;29723:173;;;29783:39;29812:9;29783;:24;29801:4;29783:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;29756:9;:24;29774:4;29756:24;;;;;;;;;;;;;;;:66;;;;29867:4;29842:42;;29851:6;29842:42;;;29874:9;29842:42;;;;;;:::i;:::-;;;;;;;;29723:173;29915:21;29926:9;29915:6;:10;;:21;;;;:::i;:::-;29908:28;;;29322:622;;;;;:::o;1773:250::-;1831:7;1860:1;1855;:6;1851:47;;;1885:1;1878:8;;;;1851:47;1910:9;1926:1;1922;:5;;;;:::i;:::-;1910:17;;1955:1;1950;1946;:5;;;;:::i;:::-;:10;1938:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2014:1;2007:8;;;1773:250;;;;;:::o;2031:132::-;2089:7;2116:39;2120:1;2123;2116:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2109:46;;2031:132;;;;:::o;28127:666::-;28253:21;28291:1;28277:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28253:40;;28322:4;28304;28309:1;28304:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;28348:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28338:4;28343:1;28338:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;28383:62;28400:4;28415:15;;;;;;;;;;;28433:11;28383:8;:62::i;:::-;28484:15;;;;;;;;;;;:66;;;28565:11;28591:1;28635:4;28662;28698:15;28484:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28750:35;28767:11;28780:4;28750:35;;;;;;;:::i;:::-;;;;;;;;28127:666;;:::o;23471:126::-;23563:9;:18;;:26;23582:6;23563:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23471:126;;:::o;28801:513::-;28949:62;28966:4;28981:15;;;;;;;;;;;28999:11;28949:8;:62::i;:::-;29054:15;;;;;;;;;;;:31;;;29093:9;29126:4;29146:11;29172:1;29215;29258:7;:5;:7::i;:::-;29280:15;29054:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28801:513;;:::o;2171:278::-;2257:7;2289:1;2285;:5;2292:12;2277:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2316:9;2332:1;2328;:5;;;;:::i;:::-;2316:17;;2440:1;2433:8;;;2171:278;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;350:84;;;;:::o;440:139::-;486:5;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;492:87;;;;:::o;585:143::-;642:5;673:6;667:13;658:22;;689:33;716:5;689:33;:::i;:::-;648:80;;;;:::o;734:262::-;793:6;842:2;830:9;821:7;817:23;813:32;810:2;;;858:1;855;848:12;810:2;901:1;926:53;971:7;962:6;951:9;947:22;926:53;:::i;:::-;916:63;;872:117;800:196;;;;:::o;1002:284::-;1072:6;1121:2;1109:9;1100:7;1096:23;1092:32;1089:2;;;1137:1;1134;1127:12;1089:2;1180:1;1205:64;1261:7;1252:6;1241:9;1237:22;1205:64;:::i;:::-;1195:74;;1151:128;1079:207;;;;:::o;1292:407::-;1360:6;1368;1417:2;1405:9;1396:7;1392:23;1388:32;1385:2;;;1433:1;1430;1423:12;1385:2;1476:1;1501:53;1546:7;1537:6;1526:9;1522:22;1501:53;:::i;:::-;1491:63;;1447:117;1603:2;1629:53;1674:7;1665:6;1654:9;1650:22;1629:53;:::i;:::-;1619:63;;1574:118;1375:324;;;;;:::o;1705:552::-;1782:6;1790;1798;1847:2;1835:9;1826:7;1822:23;1818:32;1815:2;;;1863:1;1860;1853:12;1815:2;1906:1;1931:53;1976:7;1967:6;1956:9;1952:22;1931:53;:::i;:::-;1921:63;;1877:117;2033:2;2059:53;2104:7;2095:6;2084:9;2080:22;2059:53;:::i;:::-;2049:63;;2004:118;2161:2;2187:53;2232:7;2223:6;2212:9;2208:22;2187:53;:::i;:::-;2177:63;;2132:118;1805:452;;;;;:::o;2263:401::-;2328:6;2336;2385:2;2373:9;2364:7;2360:23;2356:32;2353:2;;;2401:1;2398;2391:12;2353:2;2444:1;2469:53;2514:7;2505:6;2494:9;2490:22;2469:53;:::i;:::-;2459:63;;2415:117;2571:2;2597:50;2639:7;2630:6;2619:9;2615:22;2597:50;:::i;:::-;2587:60;;2542:115;2343:321;;;;;:::o;2670:407::-;2738:6;2746;2795:2;2783:9;2774:7;2770:23;2766:32;2763:2;;;2811:1;2808;2801:12;2763:2;2854:1;2879:53;2924:7;2915:6;2904:9;2900:22;2879:53;:::i;:::-;2869:63;;2825:117;2981:2;3007:53;3052:7;3043:6;3032:9;3028:22;3007:53;:::i;:::-;2997:63;;2952:118;2753:324;;;;;:::o;3083:256::-;3139:6;3188:2;3176:9;3167:7;3163:23;3159:32;3156:2;;;3204:1;3201;3194:12;3156:2;3247:1;3272:50;3314:7;3305:6;3294:9;3290:22;3272:50;:::i;:::-;3262:60;;3218:114;3146:193;;;;:::o;3345:262::-;3404:6;3453:2;3441:9;3432:7;3428:23;3424:32;3421:2;;;3469:1;3466;3459:12;3421:2;3512:1;3537:53;3582:7;3573:6;3562:9;3558:22;3537:53;:::i;:::-;3527:63;;3483:117;3411:196;;;;:::o;3613:552::-;3690:6;3698;3706;3755:2;3743:9;3734:7;3730:23;3726:32;3723:2;;;3771:1;3768;3761:12;3723:2;3814:1;3839:53;3884:7;3875:6;3864:9;3860:22;3839:53;:::i;:::-;3829:63;;3785:117;3941:2;3967:53;4012:7;4003:6;3992:9;3988:22;3967:53;:::i;:::-;3957:63;;3912:118;4069:2;4095:53;4140:7;4131:6;4120:9;4116:22;4095:53;:::i;:::-;4085:63;;4040:118;3713:452;;;;;:::o;4171:596::-;4259:6;4267;4275;4324:2;4312:9;4303:7;4299:23;4295:32;4292:2;;;4340:1;4337;4330:12;4292:2;4383:1;4408:64;4464:7;4455:6;4444:9;4440:22;4408:64;:::i;:::-;4398:74;;4354:128;4521:2;4547:64;4603:7;4594:6;4583:9;4579:22;4547:64;:::i;:::-;4537:74;;4492:129;4660:2;4686:64;4742:7;4733:6;4722:9;4718:22;4686:64;:::i;:::-;4676:74;;4631:129;4282:485;;;;;:::o;4773:179::-;4842:10;4863:46;4905:3;4897:6;4863:46;:::i;:::-;4941:4;4936:3;4932:14;4918:28;;4853:99;;;;:::o;4958:142::-;5061:32;5087:5;5061:32;:::i;:::-;5056:3;5049:45;5039:61;;:::o;5106:108::-;5183:24;5201:5;5183:24;:::i;:::-;5178:3;5171:37;5161:53;;:::o;5220:118::-;5307:24;5325:5;5307:24;:::i;:::-;5302:3;5295:37;5285:53;;:::o;5374:732::-;5493:3;5522:54;5570:5;5522:54;:::i;:::-;5592:86;5671:6;5666:3;5592:86;:::i;:::-;5585:93;;5702:56;5752:5;5702:56;:::i;:::-;5781:7;5812:1;5797:284;5822:6;5819:1;5816:13;5797:284;;;5898:6;5892:13;5925:63;5984:3;5969:13;5925:63;:::i;:::-;5918:70;;6011:60;6064:6;6011:60;:::i;:::-;6001:70;;5857:224;5844:1;5841;5837:9;5832:14;;5797:284;;;5801:14;6097:3;6090:10;;5498:608;;;;;;;:::o;6112:109::-;6193:21;6208:5;6193:21;:::i;:::-;6188:3;6181:34;6171:50;;:::o;6227:185::-;6341:64;6399:5;6341:64;:::i;:::-;6336:3;6329:77;6319:93;;:::o;6418:147::-;6513:45;6552:5;6513:45;:::i;:::-;6508:3;6501:58;6491:74;;:::o;6571:364::-;6659:3;6687:39;6720:5;6687:39;:::i;:::-;6742:71;6806:6;6801:3;6742:71;:::i;:::-;6735:78;;6822:52;6867:6;6862:3;6855:4;6848:5;6844:16;6822:52;:::i;:::-;6899:29;6921:6;6899:29;:::i;:::-;6894:3;6890:39;6883:46;;6663:272;;;;;:::o;6941:366::-;7083:3;7104:67;7168:2;7163:3;7104:67;:::i;:::-;7097:74;;7180:93;7269:3;7180:93;:::i;:::-;7298:2;7293:3;7289:12;7282:19;;7087:220;;;:::o;7313:366::-;7455:3;7476:67;7540:2;7535:3;7476:67;:::i;:::-;7469:74;;7552:93;7641:3;7552:93;:::i;:::-;7670:2;7665:3;7661:12;7654:19;;7459:220;;;:::o;7685:366::-;7827:3;7848:67;7912:2;7907:3;7848:67;:::i;:::-;7841:74;;7924:93;8013:3;7924:93;:::i;:::-;8042:2;8037:3;8033:12;8026:19;;7831:220;;;:::o;8057:366::-;8199:3;8220:67;8284:2;8279:3;8220:67;:::i;:::-;8213:74;;8296:93;8385:3;8296:93;:::i;:::-;8414:2;8409:3;8405:12;8398:19;;8203:220;;;:::o;8429:366::-;8571:3;8592:67;8656:2;8651:3;8592:67;:::i;:::-;8585:74;;8668:93;8757:3;8668:93;:::i;:::-;8786:2;8781:3;8777:12;8770:19;;8575:220;;;:::o;8801:366::-;8943:3;8964:67;9028:2;9023:3;8964:67;:::i;:::-;8957:74;;9040:93;9129:3;9040:93;:::i;:::-;9158:2;9153:3;9149:12;9142:19;;8947:220;;;:::o;9173:366::-;9315:3;9336:67;9400:2;9395:3;9336:67;:::i;:::-;9329:74;;9412:93;9501:3;9412:93;:::i;:::-;9530:2;9525:3;9521:12;9514:19;;9319:220;;;:::o;9545:366::-;9687:3;9708:67;9772:2;9767:3;9708:67;:::i;:::-;9701:74;;9784:93;9873:3;9784:93;:::i;:::-;9902:2;9897:3;9893:12;9886:19;;9691:220;;;:::o;9917:366::-;10059:3;10080:67;10144:2;10139:3;10080:67;:::i;:::-;10073:74;;10156:93;10245:3;10156:93;:::i;:::-;10274:2;10269:3;10265:12;10258:19;;10063:220;;;:::o;10289:366::-;10431:3;10452:67;10516:2;10511:3;10452:67;:::i;:::-;10445:74;;10528:93;10617:3;10528:93;:::i;:::-;10646:2;10641:3;10637:12;10630:19;;10435:220;;;:::o;10661:366::-;10803:3;10824:67;10888:2;10883:3;10824:67;:::i;:::-;10817:74;;10900:93;10989:3;10900:93;:::i;:::-;11018:2;11013:3;11009:12;11002:19;;10807:220;;;:::o;11033:118::-;11120:24;11138:5;11120:24;:::i;:::-;11115:3;11108:37;11098:53;;:::o;11157:112::-;11240:22;11256:5;11240:22;:::i;:::-;11235:3;11228:35;11218:51;;:::o;11275:222::-;11368:4;11406:2;11395:9;11391:18;11383:26;;11419:71;11487:1;11476:9;11472:17;11463:6;11419:71;:::i;:::-;11373:124;;;;:::o;11503:254::-;11612:4;11650:2;11639:9;11635:18;11627:26;;11663:87;11747:1;11736:9;11732:17;11723:6;11663:87;:::i;:::-;11617:140;;;;:::o;11763:332::-;11884:4;11922:2;11911:9;11907:18;11899:26;;11935:71;12003:1;11992:9;11988:17;11979:6;11935:71;:::i;:::-;12016:72;12084:2;12073:9;12069:18;12060:6;12016:72;:::i;:::-;11889:206;;;;;:::o;12101:807::-;12350:4;12388:3;12377:9;12373:19;12365:27;;12402:71;12470:1;12459:9;12455:17;12446:6;12402:71;:::i;:::-;12483:72;12551:2;12540:9;12536:18;12527:6;12483:72;:::i;:::-;12565:80;12641:2;12630:9;12626:18;12617:6;12565:80;:::i;:::-;12655;12731:2;12720:9;12716:18;12707:6;12655:80;:::i;:::-;12745:73;12813:3;12802:9;12798:19;12789:6;12745:73;:::i;:::-;12828;12896:3;12885:9;12881:19;12872:6;12828:73;:::i;:::-;12355:553;;;;;;;;;:::o;12914:210::-;13001:4;13039:2;13028:9;13024:18;13016:26;;13052:65;13114:1;13103:9;13099:17;13090:6;13052:65;:::i;:::-;13006:118;;;;:::o;13130:276::-;13250:4;13288:2;13277:9;13273:18;13265:26;;13301:98;13396:1;13385:9;13381:17;13372:6;13301:98;:::i;:::-;13255:151;;;;:::o;13412:313::-;13525:4;13563:2;13552:9;13548:18;13540:26;;13612:9;13606:4;13602:20;13598:1;13587:9;13583:17;13576:47;13640:78;13713:4;13704:6;13640:78;:::i;:::-;13632:86;;13530:195;;;;:::o;13731:419::-;13897:4;13935:2;13924:9;13920:18;13912:26;;13984:9;13978:4;13974:20;13970:1;13959:9;13955:17;13948:47;14012:131;14138:4;14012:131;:::i;:::-;14004:139;;13902:248;;;:::o;14156:419::-;14322:4;14360:2;14349:9;14345:18;14337:26;;14409:9;14403:4;14399:20;14395:1;14384:9;14380:17;14373:47;14437:131;14563:4;14437:131;:::i;:::-;14429:139;;14327:248;;;:::o;14581:419::-;14747:4;14785:2;14774:9;14770:18;14762:26;;14834:9;14828:4;14824:20;14820:1;14809:9;14805:17;14798:47;14862:131;14988:4;14862:131;:::i;:::-;14854:139;;14752:248;;;:::o;15006:419::-;15172:4;15210:2;15199:9;15195:18;15187:26;;15259:9;15253:4;15249:20;15245:1;15234:9;15230:17;15223:47;15287:131;15413:4;15287:131;:::i;:::-;15279:139;;15177:248;;;:::o;15431:419::-;15597:4;15635:2;15624:9;15620:18;15612:26;;15684:9;15678:4;15674:20;15670:1;15659:9;15655:17;15648:47;15712:131;15838:4;15712:131;:::i;:::-;15704:139;;15602:248;;;:::o;15856:419::-;16022:4;16060:2;16049:9;16045:18;16037:26;;16109:9;16103:4;16099:20;16095:1;16084:9;16080:17;16073:47;16137:131;16263:4;16137:131;:::i;:::-;16129:139;;16027:248;;;:::o;16281:419::-;16447:4;16485:2;16474:9;16470:18;16462:26;;16534:9;16528:4;16524:20;16520:1;16509:9;16505:17;16498:47;16562:131;16688:4;16562:131;:::i;:::-;16554:139;;16452:248;;;:::o;16706:419::-;16872:4;16910:2;16899:9;16895:18;16887:26;;16959:9;16953:4;16949:20;16945:1;16934:9;16930:17;16923:47;16987:131;17113:4;16987:131;:::i;:::-;16979:139;;16877:248;;;:::o;17131:419::-;17297:4;17335:2;17324:9;17320:18;17312:26;;17384:9;17378:4;17374:20;17370:1;17359:9;17355:17;17348:47;17412:131;17538:4;17412:131;:::i;:::-;17404:139;;17302:248;;;:::o;17556:419::-;17722:4;17760:2;17749:9;17745:18;17737:26;;17809:9;17803:4;17799:20;17795:1;17784:9;17780:17;17773:47;17837:131;17963:4;17837:131;:::i;:::-;17829:139;;17727:248;;;:::o;17981:419::-;18147:4;18185:2;18174:9;18170:18;18162:26;;18234:9;18228:4;18224:20;18220:1;18209:9;18205:17;18198:47;18262:131;18388:4;18262:131;:::i;:::-;18254:139;;18152:248;;;:::o;18406:222::-;18499:4;18537:2;18526:9;18522:18;18514:26;;18550:71;18618:1;18607:9;18603:17;18594:6;18550:71;:::i;:::-;18504:124;;;;:::o;18634:483::-;18805:4;18843:2;18832:9;18828:18;18820:26;;18856:71;18924:1;18913:9;18909:17;18900:6;18856:71;:::i;:::-;18974:9;18968:4;18964:20;18959:2;18948:9;18944:18;18937:48;19002:108;19105:4;19096:6;19002:108;:::i;:::-;18994:116;;18810:307;;;;;:::o;19123:831::-;19386:4;19424:3;19413:9;19409:19;19401:27;;19438:71;19506:1;19495:9;19491:17;19482:6;19438:71;:::i;:::-;19519:80;19595:2;19584:9;19580:18;19571:6;19519:80;:::i;:::-;19646:9;19640:4;19636:20;19631:2;19620:9;19616:18;19609:48;19674:108;19777:4;19768:6;19674:108;:::i;:::-;19666:116;;19792:72;19860:2;19849:9;19845:18;19836:6;19792:72;:::i;:::-;19874:73;19942:3;19931:9;19927:19;19918:6;19874:73;:::i;:::-;19391:563;;;;;;;;:::o;19960:214::-;20049:4;20087:2;20076:9;20072:18;20064:26;;20100:67;20164:1;20153:9;20149:17;20140:6;20100:67;:::i;:::-;20054:120;;;;:::o;20180:132::-;20247:4;20270:3;20262:11;;20300:4;20295:3;20291:14;20283:22;;20252:60;;;:::o;20318:114::-;20385:6;20419:5;20413:12;20403:22;;20392:40;;;:::o;20438:99::-;20490:6;20524:5;20518:12;20508:22;;20497:40;;;:::o;20543:113::-;20613:4;20645;20640:3;20636:14;20628:22;;20618:38;;;:::o;20662:184::-;20761:11;20795:6;20790:3;20783:19;20835:4;20830:3;20826:14;20811:29;;20773:73;;;;:::o;20852:169::-;20936:11;20970:6;20965:3;20958:19;21010:4;21005:3;21001:14;20986:29;;20948:73;;;;:::o;21027:305::-;21067:3;21086:20;21104:1;21086:20;:::i;:::-;21081:25;;21120:20;21138:1;21120:20;:::i;:::-;21115:25;;21274:1;21206:66;21202:74;21199:1;21196:81;21193:2;;;21280:18;;:::i;:::-;21193:2;21324:1;21321;21317:9;21310:16;;21071:261;;;;:::o;21338:185::-;21378:1;21395:20;21413:1;21395:20;:::i;:::-;21390:25;;21429:20;21447:1;21429:20;:::i;:::-;21424:25;;21468:1;21458:2;;21473:18;;:::i;:::-;21458:2;21515:1;21512;21508:9;21503:14;;21380:143;;;;:::o;21529:348::-;21569:7;21592:20;21610:1;21592:20;:::i;:::-;21587:25;;21626:20;21644:1;21626:20;:::i;:::-;21621:25;;21814:1;21746:66;21742:74;21739:1;21736:81;21731:1;21724:9;21717:17;21713:105;21710:2;;;21821:18;;:::i;:::-;21710:2;21869:1;21866;21862:9;21851:20;;21577:300;;;;:::o;21883:191::-;21923:4;21943:20;21961:1;21943:20;:::i;:::-;21938:25;;21977:20;21995:1;21977:20;:::i;:::-;21972:25;;22016:1;22013;22010:8;22007:2;;;22021:18;;:::i;:::-;22007:2;22066:1;22063;22059:9;22051:17;;21928:146;;;;:::o;22080:96::-;22117:7;22146:24;22164:5;22146:24;:::i;:::-;22135:35;;22125:51;;;:::o;22182:104::-;22227:7;22256:24;22274:5;22256:24;:::i;:::-;22245:35;;22235:51;;;:::o;22292:90::-;22326:7;22369:5;22362:13;22355:21;22344:32;;22334:48;;;:::o;22388:126::-;22425:7;22465:42;22458:5;22454:54;22443:65;;22433:81;;;:::o;22520:77::-;22557:7;22586:5;22575:16;;22565:32;;;:::o;22603:86::-;22638:7;22678:4;22671:5;22667:16;22656:27;;22646:43;;;:::o;22695:180::-;22772:9;22805:64;22863:5;22805:64;:::i;:::-;22792:77;;22782:93;;;:::o;22881:140::-;22958:9;22991:24;23009:5;22991:24;:::i;:::-;22978:37;;22968:53;;;:::o;23027:121::-;23085:9;23118:24;23136:5;23118:24;:::i;:::-;23105:37;;23095:53;;;:::o;23154:307::-;23222:1;23232:113;23246:6;23243:1;23240:13;23232:113;;;23331:1;23326:3;23322:11;23316:18;23312:1;23307:3;23303:11;23296:39;23268:2;23265:1;23261:10;23256:15;;23232:113;;;23363:6;23360:1;23357:13;23354:2;;;23443:1;23434:6;23429:3;23425:16;23418:27;23354:2;23203:258;;;;:::o;23467:320::-;23511:6;23548:1;23542:4;23538:12;23528:22;;23595:1;23589:4;23585:12;23616:18;23606:2;;23672:4;23664:6;23660:17;23650:27;;23606:2;23734;23726:6;23723:14;23703:18;23700:38;23697:2;;;23753:18;;:::i;:::-;23697:2;23518:269;;;;:::o;23793:180::-;23841:77;23838:1;23831:88;23938:4;23935:1;23928:15;23962:4;23959:1;23952:15;23979:180;24027:77;24024:1;24017:88;24124:4;24121:1;24114:15;24148:4;24145:1;24138:15;24165:180;24213:77;24210:1;24203:88;24310:4;24307:1;24300:15;24334:4;24331:1;24324:15;24351:102;24392:6;24443:2;24439:7;24434:2;24427:5;24423:14;24419:28;24409:38;;24399:54;;;:::o;24459:222::-;24599:34;24595:1;24587:6;24583:14;24576:58;24668:5;24663:2;24655:6;24651:15;24644:30;24565:116;:::o;24687:225::-;24827:34;24823:1;24815:6;24811:14;24804:58;24896:8;24891:2;24883:6;24879:15;24872:33;24793:119;:::o;24918:221::-;25058:34;25054:1;25046:6;25042:14;25035:58;25127:4;25122:2;25114:6;25110:15;25103:29;25024:115;:::o;25145:177::-;25285:29;25281:1;25273:6;25269:14;25262:53;25251:71;:::o;25328:227::-;25468:34;25464:1;25456:6;25452:14;25445:58;25537:10;25532:2;25524:6;25520:15;25513:35;25434:121;:::o;25561:220::-;25701:34;25697:1;25689:6;25685:14;25678:58;25770:3;25765:2;25757:6;25753:15;25746:28;25667:114;:::o;25787:182::-;25927:34;25923:1;25915:6;25911:14;25904:58;25893:76;:::o;25975:224::-;26115:34;26111:1;26103:6;26099:14;26092:58;26184:7;26179:2;26171:6;26167:15;26160:32;26081:118;:::o;26205:223::-;26345:34;26341:1;26333:6;26329:14;26322:58;26414:6;26409:2;26401:6;26397:15;26390:31;26311:117;:::o;26434:181::-;26574:33;26570:1;26562:6;26558:14;26551:57;26540:75;:::o;26621:222::-;26761:34;26757:1;26749:6;26745:14;26738:58;26830:5;26825:2;26817:6;26813:15;26806:30;26727:116;:::o;26849:122::-;26922:24;26940:5;26922:24;:::i;:::-;26915:5;26912:35;26902:2;;26961:1;26958;26951:12;26902:2;26892:79;:::o;26977:116::-;27047:21;27062:5;27047:21;:::i;:::-;27040:5;27037:32;27027:2;;27083:1;27080;27073:12;27027:2;27017:76;:::o;27099:122::-;27172:24;27190:5;27172:24;:::i;:::-;27165:5;27162:35;27152:2;;27211:1;27208;27201:12;27152:2;27142:79;:::o
Swarm Source
ipfs://39e796e79cbe6462daf46464aa707413e16f1b3003d11a5200d735a811dd2db8
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.