More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 14 from a total of 14 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 16863433 | 626 days ago | IN | 0 ETH | 0.00139191 | ||||
Approve | 16848665 | 628 days ago | IN | 0 ETH | 0.00141537 | ||||
Approve | 16848665 | 628 days ago | IN | 0 ETH | 0.00141537 | ||||
Approve | 16848662 | 628 days ago | IN | 0 ETH | 0.00144948 | ||||
Approve | 16848660 | 628 days ago | IN | 0 ETH | 0.00144266 | ||||
Approve | 16848660 | 628 days ago | IN | 0 ETH | 0.00144266 | ||||
Approve | 16848657 | 628 days ago | IN | 0 ETH | 0.00127201 | ||||
Set Sell Taxes | 16848520 | 628 days ago | IN | 0 ETH | 0.00092371 | ||||
Set Distribution... | 16848516 | 628 days ago | IN | 0 ETH | 0.00095674 | ||||
Set Buy Taxes | 16848513 | 628 days ago | IN | 0 ETH | 0.00096746 | ||||
Transfer | 16848500 | 628 days ago | IN | 0 ETH | 0.00121906 | ||||
Approve | 16848478 | 628 days ago | IN | 0 ETH | 0.00108374 | ||||
Transfer | 16847227 | 629 days ago | IN | 0 ETH | 0.00120389 | ||||
Transfer | 16847224 | 629 days ago | IN | 0 ETH | 0.001159 |
Loading...
Loading
Contract Name:
The_Cage
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-03-17 */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.18; 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 getTime() public view returns (uint256) { return block.timestamp; } } 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 The_Cage is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; string private _name = "The Cage"; string private _symbol = "CAGE"; uint8 private _decimals = 9; address payable public marketingWalletAddress = payable(0x24137B84B0d0B39BD5d055ae8D9066B1da210a67); // Marketing Address 4% address payable public developmentWalletAddress = payable(0x4173F1220e2303ebc97B7fbb69A0950E60b7b999); // Utility development Address 1% 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 = 4; uint256 public _buyDevelopmentFee = 1; uint256 public _sellLiquidityFee = 0; uint256 public _sellMarketingFee = 4; uint256 public _sellDevelopmentFee = 1; uint256 public _liquidityShare = 0; uint256 public _marketingShare = 8; uint256 public _developmentShare = 2; uint256 public _totalTaxIfBuying = 5; uint256 public _totalTaxIfSelling = 5; uint256 public _totalDistributionShares = 10; uint256 private _totalSupply = 1000 * 10**6 * 10**9; uint256 public _maxTxAmount = 20 * 10**6 * 10**9; uint256 public _walletMax = 20 * 10**6 * 10**9; uint256 private minimumTokensBeforeSwap = 250000 * 10**9; 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(_buyDevelopmentFee); _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDevelopmentFee); _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_developmentShare); 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 newDevelopmentTax) external onlyOwner() { _buyLiquidityFee = newLiquidityTax; _buyMarketingFee = newMarketingTax; _buyDevelopmentFee = newDevelopmentTax; _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDevelopmentFee); require(_totalTaxIfBuying <= 35, "Buy tax must be less than 35%"); } function setSellTaxes(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newDevelopmentTax) external onlyOwner() { _sellLiquidityFee = newLiquidityTax; _sellMarketingFee = newMarketingTax; _sellDevelopmentFee = newDevelopmentTax; _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDevelopmentFee); require(_totalTaxIfSelling <= 35, "Sell tax must be less than 35%"); } function setDistributionSettings(uint256 newLiquidityShare, uint256 newMarketingShare, uint256 newDevelopmentShare) external onlyOwner() { _liquidityShare = newLiquidityShare; _marketingShare = newMarketingShare; _developmentShare = newDevelopmentShare; _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_developmentShare); require(_totalDistributionShares <=70, "Distribution Shares must be less than 70%"); } function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() { require(maxTxAmount >= _totalSupply / 200, "Cannot set MaxTxAmount lower than 0.5%"); _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 { require(newLimit >= _totalSupply / 200, "Cannot set MaxWallet lower than 0.5%"); _walletMax = newLimit; } function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() { require(newLimit > 1, "NumTokensBeforeSwap should be not 0"); minimumTokensBeforeSwap = newLimit; } function setMarketingWalletAddress(address newAddress) external onlyOwner() { marketingWalletAddress = payable(newAddress); } function setDevelopmentWalletAddress(address newAddress) external onlyOwner() { developmentWalletAddress = 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); } //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 totalETHFee = _totalDistributionShares.sub(_liquidityShare.div(2)); uint256 amountETHLiquidity = amountReceived.mul(_liquidityShare).div(totalETHFee).div(2); uint256 amountETHDevelopment = amountReceived.mul(_developmentShare).div(totalETHFee); uint256 amountETHMarketing = amountReceived.sub(amountETHLiquidity).sub(amountETHDevelopment); if(amountETHMarketing > 0) transferToAddressETH(marketingWalletAddress, amountETHMarketing); if(amountETHDevelopment > 0) transferToAddressETH(developmentWalletAddress, amountETHDevelopment); if(amountETHLiquidity > 0 && tokensForLP > 0) addLiquidity(tokensForLP, amountETHLiquidity); } 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":"_buyDevelopmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_developmentShare","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":"_sellDevelopmentFee","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":"_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":[],"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":[],"name":"developmentWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","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":[{"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":[],"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":"newDevelopmentTax","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setDevelopmentWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityShare","type":"uint256"},{"internalType":"uint256","name":"newMarketingShare","type":"uint256"},{"internalType":"uint256","name":"newDevelopmentShare","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":"newDevelopmentTax","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":"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":"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":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040526040518060400160405280600881526020017f5468652043616765000000000000000000000000000000000000000000000000815250600390816200004a919062000d79565b506040518060400160405280600481526020017f43414745000000000000000000000000000000000000000000000000000000008152506004908162000091919062000d79565b506009600560006101000a81548160ff021916908360ff1602179055507324137b84b0d0b39bd5d055ae8d9066b1da210a67600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734173f1220e2303ebc97b7fbb69a0950e60b7b999600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff168152506000600d556004600e556001600f5560006010556004601155600160125560006013556008601455600260155560056016556005601755600a601855670de0b6b3a764000060195566470de4df820000601a5566470de4df820000601b5565e35fa931a000601c556001601e60156101000a81548160ff0219169083151502179055506000601e60166101000a81548160ff0219169083151502179055506001601e60176101000a81548160ff0219169083151502179055503480156200025357600080fd5b5060006200026662000a6b60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000369573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038f919062000eca565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003f7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200041d919062000eca565b6040518363ffffffff1660e01b81526004016200043c92919062000f0d565b6020604051808303816000875af11580156200045c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000482919062000eca565b601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601954600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160096000620005be62000a7360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006a0600f546200068c600e54600d5462000a9c60201b620025dc1790919060201c565b62000a9c60201b620025dc1790919060201c565b601681905550620006df601254620006cb60115460105462000a9c60201b620025dc1790919060201c565b62000a9c60201b620025dc1790919060201c565b6017819055506200071e6015546200070a60145460135462000a9c60201b620025dc1790919060201c565b62000a9c60201b620025dc1790919060201c565b6018819055506001600a60006200073a62000a7360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60006200087362000a7360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060195460076000620009ad62000a6b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620009fb62000a6b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60195460405162000a5c919062000f4b565b60405180910390a35062001055565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828462000aad919062000f97565b90508381101562000af5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000aec9062001033565b60405180910390fd5b8091505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000b8157607f821691505b60208210810362000b975762000b9662000b39565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000bc2565b62000c0d868362000bc2565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000c5a62000c5462000c4e8462000c25565b62000c2f565b62000c25565b9050919050565b6000819050919050565b62000c768362000c39565b62000c8e62000c858262000c61565b84845462000bcf565b825550505050565b600090565b62000ca562000c96565b62000cb281848462000c6b565b505050565b5b8181101562000cda5762000cce60008262000c9b565b60018101905062000cb8565b5050565b601f82111562000d295762000cf38162000b9d565b62000cfe8462000bb2565b8101602085101562000d0e578190505b62000d2662000d1d8562000bb2565b83018262000cb7565b50505b505050565b600082821c905092915050565b600062000d4e6000198460080262000d2e565b1980831691505092915050565b600062000d69838362000d3b565b9150826002028217905092915050565b62000d848262000aff565b67ffffffffffffffff81111562000da05762000d9f62000b0a565b5b62000dac825462000b68565b62000db982828562000cde565b600060209050601f83116001811462000df1576000841562000ddc578287015190505b62000de8858262000d5b565b86555062000e58565b601f19841662000e018662000b9d565b60005b8281101562000e2b5784890151825560018201915060208501945060208101905062000e04565b8683101562000e4b578489015162000e47601f89168262000d3b565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000e928262000e65565b9050919050565b62000ea48162000e85565b811462000eb057600080fd5b50565b60008151905062000ec48162000e99565b92915050565b60006020828403121562000ee35762000ee262000e60565b5b600062000ef38482850162000eb3565b91505092915050565b62000f078162000e85565b82525050565b600060408201905062000f24600083018562000efc565b62000f33602083018462000efc565b9392505050565b62000f458162000c25565b82525050565b600060208201905062000f62600083018462000f3a565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000fa48262000c25565b915062000fb18362000c25565b925082820190508082111562000fcc5762000fcb62000f68565b5b92915050565b600082825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006200101b601b8362000fd2565b9150620010288262000fe3565b602082019050919050565b600060208201905081810360008301526200104e816200100c565b9050919050565b608051614b3362001078600039600081816113b101526113dd0152614b336000f3fe6080604052600436106103855760003560e01c806388790a68116101d1578063c816841b11610102578063ec28438a116100a0578063f2fde38b1161006f578063f2fde38b14610d39578063f331c7b014610d62578063f84ba65d14610d8d578063f872858a14610db65761038c565b8063ec28438a14610c93578063ef422a1814610cbc578063f0cd1dac14610ce5578063f1d5f51714610d105761038c565b8063d158272d116100dc578063d158272d14610bd5578063da00097d14610c00578063dc44b6a014610c2b578063dd62ed3e14610c565761038c565b8063c816841b14610b42578063c860795214610b6d578063c867d60b14610b985761038c565b8063a0dd80401161016f578063a9059cbb11610149578063a9059cbb14610a88578063c2d4640e14610ac5578063c49b9a8014610aee578063c5d2418914610b175761038c565b8063a0dd8040146109f7578063a457c2d714610a22578063a5d69d1f14610a5f5761038c565b8063914eb66a116101ab578063914eb66a1461095f57806395d89b4114610976578063a073d37f146109a1578063a08e671f146109cc5761038c565b806388790a68146108cc5780638b42507f146108f75780638da5cb5b146109345761038c565b806339509351116102b657806357a5802f116102545780637d7846ff116102235780637d7846ff14610824578063807c2d9c1461084d57806382eefb4314610878578063844d591c146108a35761038c565b806357a5802f1461076657806361a23c691461079157806370a08231146107bc5780637d1db4a5146107f95761038c565b80634a74bb02116102905780634a74bb02146106aa5780634cb80fd5146106d55780635342acb4146106fe578063557ed1ba1461073b5761038c565b806339509351146106075780633b97084a146106445780633ecad2711461066d5761038c565b80632198cf6c1161032357806327c8f835116102fd57806327c8f8351461055b5780632b112e4914610586578063313ce567146105b157806337249b65146105dc5761038c565b80632198cf6c146104cc57806323b872dd146104f55780632563ae83146105325761038c565b80631694505e1161035f5780631694505e1461042257806318160ddd1461044d578063182a4760146104785780631870517a146104a35761038c565b806306fdde031461039157806308733214146103bc578063095ea7b3146103e55761038c565b3661038c57005b600080fd5b34801561039d57600080fd5b506103a6610de1565b6040516103b391906139ea565b60405180910390f35b3480156103c857600080fd5b506103e360048036038101906103de9190613a47565b610e73565b005b3480156103f157600080fd5b5061040c60048036038101906104079190613af8565b610f99565b6040516104199190613b53565b60405180910390f35b34801561042e57600080fd5b50610437610fb7565b6040516104449190613bcd565b60405180910390f35b34801561045957600080fd5b50610462610fdd565b60405161046f9190613bf7565b60405180910390f35b34801561048457600080fd5b5061048d610fe7565b60405161049a9190613c33565b60405180910390f35b3480156104af57600080fd5b506104ca60048036038101906104c59190613a47565b61100d565b005b3480156104d857600080fd5b506104f360048036038101906104ee9190613c7a565b611133565b005b34801561050157600080fd5b5061051c60048036038101906105179190613cba565b611223565b6040516105299190613b53565b60405180910390f35b34801561053e57600080fd5b5061055960048036038101906105549190613d0d565b6112fd565b005b34801561056757600080fd5b506105706113af565b60405161057d9190613d49565b60405180910390f35b34801561059257600080fd5b5061059b6113d3565b6040516105a89190613bf7565b60405180910390f35b3480156105bd57600080fd5b506105c6611417565b6040516105d39190613d80565b60405180910390f35b3480156105e857600080fd5b506105f161142e565b6040516105fe9190613bf7565b60405180910390f35b34801561061357600080fd5b5061062e60048036038101906106299190613af8565b611434565b60405161063b9190613b53565b60405180910390f35b34801561065057600080fd5b5061066b60048036038101906106669190613d9b565b6114e7565b005b34801561067957600080fd5b50610694600480360381019061068f9190613dc8565b6115c9565b6040516106a19190613b53565b60405180910390f35b3480156106b657600080fd5b506106bf6115e9565b6040516106cc9190613b53565b60405180910390f35b3480156106e157600080fd5b506106fc60048036038101906106f79190613dc8565b6115fc565b005b34801561070a57600080fd5b5061072560048036038101906107209190613dc8565b6116d5565b6040516107329190613b53565b60405180910390f35b34801561074757600080fd5b506107506116f5565b60405161075d9190613bf7565b60405180910390f35b34801561077257600080fd5b5061077b6116fd565b6040516107889190613bf7565b60405180910390f35b34801561079d57600080fd5b506107a6611703565b6040516107b39190613bf7565b60405180910390f35b3480156107c857600080fd5b506107e360048036038101906107de9190613dc8565b611709565b6040516107f09190613bf7565b60405180910390f35b34801561080557600080fd5b5061080e611752565b60405161081b9190613bf7565b60405180910390f35b34801561083057600080fd5b5061084b60048036038101906108469190613dc8565b611758565b005b34801561085957600080fd5b50610862611831565b60405161086f9190613bf7565b60405180910390f35b34801561088457600080fd5b5061088d611837565b60405161089a9190613bf7565b60405180910390f35b3480156108af57600080fd5b506108ca60048036038101906108c59190613c7a565b61183d565b005b3480156108d857600080fd5b506108e161192d565b6040516108ee9190613bf7565b60405180910390f35b34801561090357600080fd5b5061091e60048036038101906109199190613dc8565b611933565b60405161092b9190613b53565b60405180910390f35b34801561094057600080fd5b50610949611953565b6040516109569190613d49565b60405180910390f35b34801561096b57600080fd5b5061097461197c565b005b34801561098257600080fd5b5061098b611acf565b60405161099891906139ea565b60405180910390f35b3480156109ad57600080fd5b506109b6611b61565b6040516109c39190613bf7565b60405180910390f35b3480156109d857600080fd5b506109e1611b6b565b6040516109ee9190613bf7565b60405180910390f35b348015610a0357600080fd5b50610a0c611b71565b604051610a199190613bf7565b60405180910390f35b348015610a2e57600080fd5b50610a496004803603810190610a449190613af8565b611b77565b604051610a569190613b53565b60405180910390f35b348015610a6b57600080fd5b50610a866004803603810190610a819190613d0d565b611c44565b005b348015610a9457600080fd5b50610aaf6004803603810190610aaa9190613af8565b611cf6565b604051610abc9190613b53565b60405180910390f35b348015610ad157600080fd5b50610aec6004803603810190610ae79190613a47565b611d15565b005b348015610afa57600080fd5b50610b156004803603810190610b109190613d0d565b611e3b565b005b348015610b2357600080fd5b50610b2c611f24565b604051610b399190613bf7565b60405180910390f35b348015610b4e57600080fd5b50610b57611f2a565b604051610b649190613d49565b60405180910390f35b348015610b7957600080fd5b50610b82611f50565b604051610b8f9190613bf7565b60405180910390f35b348015610ba457600080fd5b50610bbf6004803603810190610bba9190613dc8565b611f56565b604051610bcc9190613b53565b60405180910390f35b348015610be157600080fd5b50610bea611f76565b604051610bf79190613c33565b60405180910390f35b348015610c0c57600080fd5b50610c15611f9c565b604051610c229190613b53565b60405180910390f35b348015610c3757600080fd5b50610c40611faf565b604051610c4d9190613bf7565b60405180910390f35b348015610c6257600080fd5b50610c7d6004803603810190610c789190613df5565b611fb5565b604051610c8a9190613bf7565b60405180910390f35b348015610c9f57600080fd5b50610cba6004803603810190610cb59190613d9b565b61203c565b005b348015610cc857600080fd5b50610ce36004803603810190610cde9190613c7a565b61212c565b005b348015610cf157600080fd5b50610cfa61221c565b604051610d079190613bf7565b60405180910390f35b348015610d1c57600080fd5b50610d376004803603810190610d329190613d9b565b612222565b005b348015610d4557600080fd5b50610d606004803603810190610d5b9190613dc8565b612312565b005b348015610d6e57600080fd5b50610d776124d3565b604051610d849190613bf7565b60405180910390f35b348015610d9957600080fd5b50610db46004803603810190610daf9190613c7a565b6124d9565b005b348015610dc257600080fd5b50610dcb6125c9565b604051610dd89190613b53565b60405180910390f35b606060038054610df090613e64565b80601f0160208091040260200160405190810160405280929190818152602001828054610e1c90613e64565b8015610e695780601f10610e3e57610100808354040283529160200191610e69565b820191906000526020600020905b815481529060010190602001808311610e4c57829003601f168201915b5050505050905090565b610e7b61263a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eff90613ee1565b60405180910390fd5b826010819055508160118190555080601281905550610f48601254610f3a6011546010546125dc90919063ffffffff16565b6125dc90919063ffffffff16565b60178190555060236017541115610f94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8b90613f4d565b60405180910390fd5b505050565b6000610fad610fa661263a565b8484612642565b6001905092915050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601954905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61101561263a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109990613ee1565b60405180910390fd5b82600d8190555081600e8190555080600f819055506110e2600f546110d4600e54600d546125dc90919063ffffffff16565b6125dc90919063ffffffff16565b6016819055506023601654111561112e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112590613fb9565b60405180910390fd5b505050565b61113b61263a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bf90613ee1565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600061123084848461280b565b506112f28461123d61263a565b6112ed85604051806060016040528060288152602001614ab160289139600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112a361263a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dee9092919063ffffffff16565b612642565b600190509392505050565b61130561263a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611392576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138990613ee1565b60405180910390fd5b80601e60176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006114126114017f0000000000000000000000000000000000000000000000000000000000000000611709565b601954612e5290919063ffffffff16565b905090565b6000600560009054906101000a900460ff16905090565b60125481565b60006114dd61144161263a565b846114d8856008600061145261263a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125dc90919063ffffffff16565b612642565b6001905092915050565b6114ef61263a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461157c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157390613ee1565b60405180910390fd5b600181116115bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b69061404b565b60405180910390fd5b80601c8190555050565b600c6020528060005260406000206000915054906101000a900460ff1681565b601e60159054906101000a900460ff1681565b61160461263a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611691576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168890613ee1565b60405180910390fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60096020528060005260406000206000915054906101000a900460ff1681565b600042905090565b60135481565b60145481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601a5481565b61176061263a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e490613ee1565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601b5481565b60175481565b61184561263a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c990613ee1565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60105481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61198461263a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0890613ee1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b606060048054611ade90613e64565b80601f0160208091040260200160405190810160405280929190818152602001828054611b0a90613e64565b8015611b575780601f10611b2c57610100808354040283529160200191611b57565b820191906000526020600020905b815481529060010190602001808311611b3a57829003601f168201915b5050505050905090565b6000601c54905090565b60185481565b60155481565b6000611c3a611b8461263a565b84611c3585604051806060016040528060258152602001614ad96025913960086000611bae61263a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dee9092919063ffffffff16565b612642565b6001905092915050565b611c4c61263a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd090613ee1565b60405180910390fd5b80601e60166101000a81548160ff02191690831515021790555050565b6000611d0a611d0361263a565b848461280b565b506001905092915050565b611d1d61263a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611daa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da190613ee1565b60405180910390fd5b826013819055508160148190555080601581905550611dea601554611ddc6014546013546125dc90919063ffffffff16565b6125dc90919063ffffffff16565b60188190555060466018541115611e36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2d906140dd565b60405180910390fd5b505050565b611e4361263a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ed0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec790613ee1565b60405180910390fd5b80601e60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051611f199190613b53565b60405180910390a150565b600e5481565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600a6020528060005260406000206000915054906101000a900460ff1681565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601e60169054906101000a900460ff1681565b600d5481565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61204461263a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c890613ee1565b60405180910390fd5b60c86019546120e0919061415b565b811015612122576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612119906141fe565b60405180910390fd5b80601a8190555050565b61213461263a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b890613ee1565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60165481565b61222a61263a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ae90613ee1565b60405180910390fd5b60c86019546122c6919061415b565b811015612308576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ff90614290565b60405180910390fd5b80601b8190555050565b61231a61263a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239e90613ee1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612416576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240d90614322565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b6124e161263a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461256e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256590613ee1565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601e60179054906101000a900460ff1681565b60008082846125eb9190614342565b905083811015612630576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612627906143c2565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036126b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a890614454565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612720576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612717906144e6565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516127fe9190613bf7565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361287b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287290614578565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036128ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e19061460a565b60405180910390fd5b601e60149054906101000a900460ff16156129115761290a848484612e9c565b9050612de7565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129b55750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a0057601a548211156129ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f69061469c565b60405180910390fd5b5b6000612a0b30611709565b90506000601c548210159050808015612a315750601e60149054906101000a900460ff16155b8015612a875750600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612a9f5750601e60159054906101000a900460ff165b15612ac957601e60169054906101000a900460ff1615612abf57601c5491505b612ac88261306f565b5b612b52846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dee9092919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c385750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612c4c57612c47878787613260565b612c4e565b845b9050601e60179054906101000a900460ff168015612cb65750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ce557601b54612cd982612ccb89611709565b6125dc90919063ffffffff16565b1115612ce457600080fd5b5b612d3781600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125dc90919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612dd79190613bf7565b60405180910390a3600193505050505b9392505050565b6000838311158290612e36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e2d91906139ea565b60405180910390fd5b5060008385612e4591906146bc565b9050809150509392505050565b6000612e9483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612dee565b905092915050565b6000612f27826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dee9092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612fbc82600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125dc90919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161305c9190613bf7565b60405180910390a3600190509392505050565b6001601e60146101000a81548160ff02191690831515021790555060006130c860026130ba6018546130ac6013548761348790919063ffffffff16565b61350190919063ffffffff16565b61350190919063ffffffff16565b905060006130df8284612e5290919063ffffffff16565b90506130ea8161354b565b6000479050600061311b61310a600260135461350190919063ffffffff16565b601854612e5290919063ffffffff16565b90506000613159600261314b8461313d6013548861348790919063ffffffff16565b61350190919063ffffffff16565b61350190919063ffffffff16565b90506000613184836131766015548761348790919063ffffffff16565b61350190919063ffffffff16565b905060006131ad8261319f8588612e5290919063ffffffff16565b612e5290919063ffffffff16565b905060008111156131e5576131e4600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826137c7565b5b600082111561321b5761321a600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836137c7565b5b60008311801561322b5750600087115b1561323b5761323a8784613812565b5b505050505050506000601e60146101000a81548160ff02191690831515021790555050565b60008060009050600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156132e8576132e160646132d36016548661348790919063ffffffff16565b61350190919063ffffffff16565b9050613366565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156133655761336260646133546017548661348790919063ffffffff16565b61350190919063ffffffff16565b90505b5b600081111561346a576133c181600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125dc90919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516134619190613bf7565b60405180910390a35b61347d8184612e5290919063ffffffff16565b9150509392505050565b600080830361349957600090506134fb565b600082846134a791906146f0565b90508284826134b6919061415b565b146134f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134ed906147a4565b60405180910390fd5b809150505b92915050565b600061354383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506138f7565b905092915050565b6000600267ffffffffffffffff811115613568576135676147c4565b5b6040519080825280602002602001820160405280156135965781602001602082028036833780820191505090505b50905030816000815181106135ae576135ad6147f3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613655573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136799190614837565b8160018151811061368d5761368c6147f3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506136f430601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612642565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161375895949392919061495d565b600060405180830381600087803b15801561377257600080fd5b505af1158015613786573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516137bb9291906149b7565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561380d573d6000803e3d6000fd5b505050565b61383f30601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612642565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061388b611953565b426040518863ffffffff1660e01b81526004016138ad969594939291906149e7565b60606040518083038185885af11580156138cb573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906138f09190614a5d565b5050505050565b6000808311829061393e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161393591906139ea565b60405180910390fd5b506000838561394d919061415b565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613994578082015181840152602081019050613979565b60008484015250505050565b6000601f19601f8301169050919050565b60006139bc8261395a565b6139c68185613965565b93506139d6818560208601613976565b6139df816139a0565b840191505092915050565b60006020820190508181036000830152613a0481846139b1565b905092915050565b600080fd5b6000819050919050565b613a2481613a11565b8114613a2f57600080fd5b50565b600081359050613a4181613a1b565b92915050565b600080600060608486031215613a6057613a5f613a0c565b5b6000613a6e86828701613a32565b9350506020613a7f86828701613a32565b9250506040613a9086828701613a32565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613ac582613a9a565b9050919050565b613ad581613aba565b8114613ae057600080fd5b50565b600081359050613af281613acc565b92915050565b60008060408385031215613b0f57613b0e613a0c565b5b6000613b1d85828601613ae3565b9250506020613b2e85828601613a32565b9150509250929050565b60008115159050919050565b613b4d81613b38565b82525050565b6000602082019050613b686000830184613b44565b92915050565b6000819050919050565b6000613b93613b8e613b8984613a9a565b613b6e565b613a9a565b9050919050565b6000613ba582613b78565b9050919050565b6000613bb782613b9a565b9050919050565b613bc781613bac565b82525050565b6000602082019050613be26000830184613bbe565b92915050565b613bf181613a11565b82525050565b6000602082019050613c0c6000830184613be8565b92915050565b6000613c1d82613a9a565b9050919050565b613c2d81613c12565b82525050565b6000602082019050613c486000830184613c24565b92915050565b613c5781613b38565b8114613c6257600080fd5b50565b600081359050613c7481613c4e565b92915050565b60008060408385031215613c9157613c90613a0c565b5b6000613c9f85828601613ae3565b9250506020613cb085828601613c65565b9150509250929050565b600080600060608486031215613cd357613cd2613a0c565b5b6000613ce186828701613ae3565b9350506020613cf286828701613ae3565b9250506040613d0386828701613a32565b9150509250925092565b600060208284031215613d2357613d22613a0c565b5b6000613d3184828501613c65565b91505092915050565b613d4381613aba565b82525050565b6000602082019050613d5e6000830184613d3a565b92915050565b600060ff82169050919050565b613d7a81613d64565b82525050565b6000602082019050613d956000830184613d71565b92915050565b600060208284031215613db157613db0613a0c565b5b6000613dbf84828501613a32565b91505092915050565b600060208284031215613dde57613ddd613a0c565b5b6000613dec84828501613ae3565b91505092915050565b60008060408385031215613e0c57613e0b613a0c565b5b6000613e1a85828601613ae3565b9250506020613e2b85828601613ae3565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613e7c57607f821691505b602082108103613e8f57613e8e613e35565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613ecb602083613965565b9150613ed682613e95565b602082019050919050565b60006020820190508181036000830152613efa81613ebe565b9050919050565b7f53656c6c20746178206d757374206265206c657373207468616e203335250000600082015250565b6000613f37601e83613965565b9150613f4282613f01565b602082019050919050565b60006020820190508181036000830152613f6681613f2a565b9050919050565b7f42757920746178206d757374206265206c657373207468616e20333525000000600082015250565b6000613fa3601d83613965565b9150613fae82613f6d565b602082019050919050565b60006020820190508181036000830152613fd281613f96565b9050919050565b7f4e756d546f6b656e734265666f7265537761702073686f756c64206265206e6f60008201527f7420300000000000000000000000000000000000000000000000000000000000602082015250565b6000614035602383613965565b915061404082613fd9565b604082019050919050565b6000602082019050818103600083015261406481614028565b9050919050565b7f446973747269627574696f6e20536861726573206d757374206265206c65737360008201527f207468616e203730250000000000000000000000000000000000000000000000602082015250565b60006140c7602983613965565b91506140d28261406b565b604082019050919050565b600060208201905081810360008301526140f6816140ba565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061416682613a11565b915061417183613a11565b925082614181576141806140fd565b5b828204905092915050565b7f43616e6e6f7420736574204d61785478416d6f756e74206c6f7765722074686160008201527f6e20302e35250000000000000000000000000000000000000000000000000000602082015250565b60006141e8602683613965565b91506141f38261418c565b604082019050919050565b60006020820190508181036000830152614217816141db565b9050919050565b7f43616e6e6f7420736574204d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b600061427a602483613965565b91506142858261421e565b604082019050919050565b600060208201905081810360008301526142a98161426d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061430c602683613965565b9150614317826142b0565b604082019050919050565b6000602082019050818103600083015261433b816142ff565b9050919050565b600061434d82613a11565b915061435883613a11565b92508282019050808211156143705761436f61412c565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006143ac601b83613965565b91506143b782614376565b602082019050919050565b600060208201905081810360008301526143db8161439f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061443e602483613965565b9150614449826143e2565b604082019050919050565b6000602082019050818103600083015261446d81614431565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006144d0602283613965565b91506144db82614474565b604082019050919050565b600060208201905081810360008301526144ff816144c3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614562602583613965565b915061456d82614506565b604082019050919050565b6000602082019050818103600083015261459181614555565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006145f4602383613965565b91506145ff82614598565b604082019050919050565b60006020820190508181036000830152614623816145e7565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b6000614686602883613965565b91506146918261462a565b604082019050919050565b600060208201905081810360008301526146b581614679565b9050919050565b60006146c782613a11565b91506146d283613a11565b92508282039050818111156146ea576146e961412c565b5b92915050565b60006146fb82613a11565b915061470683613a11565b925082820261471481613a11565b9150828204841483151761472b5761472a61412c565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061478e602183613965565b915061479982614732565b604082019050919050565b600060208201905081810360008301526147bd81614781565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061483181613acc565b92915050565b60006020828403121561484d5761484c613a0c565b5b600061485b84828501614822565b91505092915050565b6000819050919050565b600061488961488461487f84614864565b613b6e565b613a11565b9050919050565b6148998161486e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6148d481613aba565b82525050565b60006148e683836148cb565b60208301905092915050565b6000602082019050919050565b600061490a8261489f565b61491481856148aa565b935061491f836148bb565b8060005b8381101561495057815161493788826148da565b9750614942836148f2565b925050600181019050614923565b5085935050505092915050565b600060a0820190506149726000830188613be8565b61497f6020830187614890565b818103604083015261499181866148ff565b90506149a06060830185613d3a565b6149ad6080830184613be8565b9695505050505050565b60006040820190506149cc6000830185613be8565b81810360208301526149de81846148ff565b90509392505050565b600060c0820190506149fc6000830189613d3a565b614a096020830188613be8565b614a166040830187614890565b614a236060830186614890565b614a306080830185613d3a565b614a3d60a0830184613be8565b979650505050505050565b600081519050614a5781613a1b565b92915050565b600080600060608486031215614a7657614a75613a0c565b5b6000614a8486828701614a48565b9350506020614a9586828701614a48565b9250506040614aa686828701614a48565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203052bc87d8ccb854bf047d40fb93a61c64063757623eb1dd9426c3dbdc91174464736f6c63430008120033
Deployed Bytecode
0x6080604052600436106103855760003560e01c806388790a68116101d1578063c816841b11610102578063ec28438a116100a0578063f2fde38b1161006f578063f2fde38b14610d39578063f331c7b014610d62578063f84ba65d14610d8d578063f872858a14610db65761038c565b8063ec28438a14610c93578063ef422a1814610cbc578063f0cd1dac14610ce5578063f1d5f51714610d105761038c565b8063d158272d116100dc578063d158272d14610bd5578063da00097d14610c00578063dc44b6a014610c2b578063dd62ed3e14610c565761038c565b8063c816841b14610b42578063c860795214610b6d578063c867d60b14610b985761038c565b8063a0dd80401161016f578063a9059cbb11610149578063a9059cbb14610a88578063c2d4640e14610ac5578063c49b9a8014610aee578063c5d2418914610b175761038c565b8063a0dd8040146109f7578063a457c2d714610a22578063a5d69d1f14610a5f5761038c565b8063914eb66a116101ab578063914eb66a1461095f57806395d89b4114610976578063a073d37f146109a1578063a08e671f146109cc5761038c565b806388790a68146108cc5780638b42507f146108f75780638da5cb5b146109345761038c565b806339509351116102b657806357a5802f116102545780637d7846ff116102235780637d7846ff14610824578063807c2d9c1461084d57806382eefb4314610878578063844d591c146108a35761038c565b806357a5802f1461076657806361a23c691461079157806370a08231146107bc5780637d1db4a5146107f95761038c565b80634a74bb02116102905780634a74bb02146106aa5780634cb80fd5146106d55780635342acb4146106fe578063557ed1ba1461073b5761038c565b806339509351146106075780633b97084a146106445780633ecad2711461066d5761038c565b80632198cf6c1161032357806327c8f835116102fd57806327c8f8351461055b5780632b112e4914610586578063313ce567146105b157806337249b65146105dc5761038c565b80632198cf6c146104cc57806323b872dd146104f55780632563ae83146105325761038c565b80631694505e1161035f5780631694505e1461042257806318160ddd1461044d578063182a4760146104785780631870517a146104a35761038c565b806306fdde031461039157806308733214146103bc578063095ea7b3146103e55761038c565b3661038c57005b600080fd5b34801561039d57600080fd5b506103a6610de1565b6040516103b391906139ea565b60405180910390f35b3480156103c857600080fd5b506103e360048036038101906103de9190613a47565b610e73565b005b3480156103f157600080fd5b5061040c60048036038101906104079190613af8565b610f99565b6040516104199190613b53565b60405180910390f35b34801561042e57600080fd5b50610437610fb7565b6040516104449190613bcd565b60405180910390f35b34801561045957600080fd5b50610462610fdd565b60405161046f9190613bf7565b60405180910390f35b34801561048457600080fd5b5061048d610fe7565b60405161049a9190613c33565b60405180910390f35b3480156104af57600080fd5b506104ca60048036038101906104c59190613a47565b61100d565b005b3480156104d857600080fd5b506104f360048036038101906104ee9190613c7a565b611133565b005b34801561050157600080fd5b5061051c60048036038101906105179190613cba565b611223565b6040516105299190613b53565b60405180910390f35b34801561053e57600080fd5b5061055960048036038101906105549190613d0d565b6112fd565b005b34801561056757600080fd5b506105706113af565b60405161057d9190613d49565b60405180910390f35b34801561059257600080fd5b5061059b6113d3565b6040516105a89190613bf7565b60405180910390f35b3480156105bd57600080fd5b506105c6611417565b6040516105d39190613d80565b60405180910390f35b3480156105e857600080fd5b506105f161142e565b6040516105fe9190613bf7565b60405180910390f35b34801561061357600080fd5b5061062e60048036038101906106299190613af8565b611434565b60405161063b9190613b53565b60405180910390f35b34801561065057600080fd5b5061066b60048036038101906106669190613d9b565b6114e7565b005b34801561067957600080fd5b50610694600480360381019061068f9190613dc8565b6115c9565b6040516106a19190613b53565b60405180910390f35b3480156106b657600080fd5b506106bf6115e9565b6040516106cc9190613b53565b60405180910390f35b3480156106e157600080fd5b506106fc60048036038101906106f79190613dc8565b6115fc565b005b34801561070a57600080fd5b5061072560048036038101906107209190613dc8565b6116d5565b6040516107329190613b53565b60405180910390f35b34801561074757600080fd5b506107506116f5565b60405161075d9190613bf7565b60405180910390f35b34801561077257600080fd5b5061077b6116fd565b6040516107889190613bf7565b60405180910390f35b34801561079d57600080fd5b506107a6611703565b6040516107b39190613bf7565b60405180910390f35b3480156107c857600080fd5b506107e360048036038101906107de9190613dc8565b611709565b6040516107f09190613bf7565b60405180910390f35b34801561080557600080fd5b5061080e611752565b60405161081b9190613bf7565b60405180910390f35b34801561083057600080fd5b5061084b60048036038101906108469190613dc8565b611758565b005b34801561085957600080fd5b50610862611831565b60405161086f9190613bf7565b60405180910390f35b34801561088457600080fd5b5061088d611837565b60405161089a9190613bf7565b60405180910390f35b3480156108af57600080fd5b506108ca60048036038101906108c59190613c7a565b61183d565b005b3480156108d857600080fd5b506108e161192d565b6040516108ee9190613bf7565b60405180910390f35b34801561090357600080fd5b5061091e60048036038101906109199190613dc8565b611933565b60405161092b9190613b53565b60405180910390f35b34801561094057600080fd5b50610949611953565b6040516109569190613d49565b60405180910390f35b34801561096b57600080fd5b5061097461197c565b005b34801561098257600080fd5b5061098b611acf565b60405161099891906139ea565b60405180910390f35b3480156109ad57600080fd5b506109b6611b61565b6040516109c39190613bf7565b60405180910390f35b3480156109d857600080fd5b506109e1611b6b565b6040516109ee9190613bf7565b60405180910390f35b348015610a0357600080fd5b50610a0c611b71565b604051610a199190613bf7565b60405180910390f35b348015610a2e57600080fd5b50610a496004803603810190610a449190613af8565b611b77565b604051610a569190613b53565b60405180910390f35b348015610a6b57600080fd5b50610a866004803603810190610a819190613d0d565b611c44565b005b348015610a9457600080fd5b50610aaf6004803603810190610aaa9190613af8565b611cf6565b604051610abc9190613b53565b60405180910390f35b348015610ad157600080fd5b50610aec6004803603810190610ae79190613a47565b611d15565b005b348015610afa57600080fd5b50610b156004803603810190610b109190613d0d565b611e3b565b005b348015610b2357600080fd5b50610b2c611f24565b604051610b399190613bf7565b60405180910390f35b348015610b4e57600080fd5b50610b57611f2a565b604051610b649190613d49565b60405180910390f35b348015610b7957600080fd5b50610b82611f50565b604051610b8f9190613bf7565b60405180910390f35b348015610ba457600080fd5b50610bbf6004803603810190610bba9190613dc8565b611f56565b604051610bcc9190613b53565b60405180910390f35b348015610be157600080fd5b50610bea611f76565b604051610bf79190613c33565b60405180910390f35b348015610c0c57600080fd5b50610c15611f9c565b604051610c229190613b53565b60405180910390f35b348015610c3757600080fd5b50610c40611faf565b604051610c4d9190613bf7565b60405180910390f35b348015610c6257600080fd5b50610c7d6004803603810190610c789190613df5565b611fb5565b604051610c8a9190613bf7565b60405180910390f35b348015610c9f57600080fd5b50610cba6004803603810190610cb59190613d9b565b61203c565b005b348015610cc857600080fd5b50610ce36004803603810190610cde9190613c7a565b61212c565b005b348015610cf157600080fd5b50610cfa61221c565b604051610d079190613bf7565b60405180910390f35b348015610d1c57600080fd5b50610d376004803603810190610d329190613d9b565b612222565b005b348015610d4557600080fd5b50610d606004803603810190610d5b9190613dc8565b612312565b005b348015610d6e57600080fd5b50610d776124d3565b604051610d849190613bf7565b60405180910390f35b348015610d9957600080fd5b50610db46004803603810190610daf9190613c7a565b6124d9565b005b348015610dc257600080fd5b50610dcb6125c9565b604051610dd89190613b53565b60405180910390f35b606060038054610df090613e64565b80601f0160208091040260200160405190810160405280929190818152602001828054610e1c90613e64565b8015610e695780601f10610e3e57610100808354040283529160200191610e69565b820191906000526020600020905b815481529060010190602001808311610e4c57829003601f168201915b5050505050905090565b610e7b61263a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eff90613ee1565b60405180910390fd5b826010819055508160118190555080601281905550610f48601254610f3a6011546010546125dc90919063ffffffff16565b6125dc90919063ffffffff16565b60178190555060236017541115610f94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8b90613f4d565b60405180910390fd5b505050565b6000610fad610fa661263a565b8484612642565b6001905092915050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601954905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61101561263a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109990613ee1565b60405180910390fd5b82600d8190555081600e8190555080600f819055506110e2600f546110d4600e54600d546125dc90919063ffffffff16565b6125dc90919063ffffffff16565b6016819055506023601654111561112e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112590613fb9565b60405180910390fd5b505050565b61113b61263a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bf90613ee1565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600061123084848461280b565b506112f28461123d61263a565b6112ed85604051806060016040528060288152602001614ab160289139600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112a361263a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dee9092919063ffffffff16565b612642565b600190509392505050565b61130561263a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611392576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138990613ee1565b60405180910390fd5b80601e60176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b60006114126114017f000000000000000000000000000000000000000000000000000000000000dead611709565b601954612e5290919063ffffffff16565b905090565b6000600560009054906101000a900460ff16905090565b60125481565b60006114dd61144161263a565b846114d8856008600061145261263a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125dc90919063ffffffff16565b612642565b6001905092915050565b6114ef61263a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461157c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157390613ee1565b60405180910390fd5b600181116115bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b69061404b565b60405180910390fd5b80601c8190555050565b600c6020528060005260406000206000915054906101000a900460ff1681565b601e60159054906101000a900460ff1681565b61160461263a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611691576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168890613ee1565b60405180910390fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60096020528060005260406000206000915054906101000a900460ff1681565b600042905090565b60135481565b60145481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601a5481565b61176061263a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e490613ee1565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601b5481565b60175481565b61184561263a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c990613ee1565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60105481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61198461263a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0890613ee1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b606060048054611ade90613e64565b80601f0160208091040260200160405190810160405280929190818152602001828054611b0a90613e64565b8015611b575780601f10611b2c57610100808354040283529160200191611b57565b820191906000526020600020905b815481529060010190602001808311611b3a57829003601f168201915b5050505050905090565b6000601c54905090565b60185481565b60155481565b6000611c3a611b8461263a565b84611c3585604051806060016040528060258152602001614ad96025913960086000611bae61263a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dee9092919063ffffffff16565b612642565b6001905092915050565b611c4c61263a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd090613ee1565b60405180910390fd5b80601e60166101000a81548160ff02191690831515021790555050565b6000611d0a611d0361263a565b848461280b565b506001905092915050565b611d1d61263a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611daa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da190613ee1565b60405180910390fd5b826013819055508160148190555080601581905550611dea601554611ddc6014546013546125dc90919063ffffffff16565b6125dc90919063ffffffff16565b60188190555060466018541115611e36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2d906140dd565b60405180910390fd5b505050565b611e4361263a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ed0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec790613ee1565b60405180910390fd5b80601e60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051611f199190613b53565b60405180910390a150565b600e5481565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600a6020528060005260406000206000915054906101000a900460ff1681565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601e60169054906101000a900460ff1681565b600d5481565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61204461263a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c890613ee1565b60405180910390fd5b60c86019546120e0919061415b565b811015612122576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612119906141fe565b60405180910390fd5b80601a8190555050565b61213461263a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b890613ee1565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60165481565b61222a61263a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ae90613ee1565b60405180910390fd5b60c86019546122c6919061415b565b811015612308576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ff90614290565b60405180910390fd5b80601b8190555050565b61231a61263a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239e90613ee1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612416576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240d90614322565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b6124e161263a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461256e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256590613ee1565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601e60179054906101000a900460ff1681565b60008082846125eb9190614342565b905083811015612630576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612627906143c2565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036126b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a890614454565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612720576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612717906144e6565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516127fe9190613bf7565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361287b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287290614578565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036128ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e19061460a565b60405180910390fd5b601e60149054906101000a900460ff16156129115761290a848484612e9c565b9050612de7565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129b55750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a0057601a548211156129ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f69061469c565b60405180910390fd5b5b6000612a0b30611709565b90506000601c548210159050808015612a315750601e60149054906101000a900460ff16155b8015612a875750600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612a9f5750601e60159054906101000a900460ff165b15612ac957601e60169054906101000a900460ff1615612abf57601c5491505b612ac88261306f565b5b612b52846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dee9092919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c385750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612c4c57612c47878787613260565b612c4e565b845b9050601e60179054906101000a900460ff168015612cb65750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ce557601b54612cd982612ccb89611709565b6125dc90919063ffffffff16565b1115612ce457600080fd5b5b612d3781600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125dc90919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612dd79190613bf7565b60405180910390a3600193505050505b9392505050565b6000838311158290612e36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e2d91906139ea565b60405180910390fd5b5060008385612e4591906146bc565b9050809150509392505050565b6000612e9483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612dee565b905092915050565b6000612f27826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dee9092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612fbc82600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125dc90919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161305c9190613bf7565b60405180910390a3600190509392505050565b6001601e60146101000a81548160ff02191690831515021790555060006130c860026130ba6018546130ac6013548761348790919063ffffffff16565b61350190919063ffffffff16565b61350190919063ffffffff16565b905060006130df8284612e5290919063ffffffff16565b90506130ea8161354b565b6000479050600061311b61310a600260135461350190919063ffffffff16565b601854612e5290919063ffffffff16565b90506000613159600261314b8461313d6013548861348790919063ffffffff16565b61350190919063ffffffff16565b61350190919063ffffffff16565b90506000613184836131766015548761348790919063ffffffff16565b61350190919063ffffffff16565b905060006131ad8261319f8588612e5290919063ffffffff16565b612e5290919063ffffffff16565b905060008111156131e5576131e4600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826137c7565b5b600082111561321b5761321a600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836137c7565b5b60008311801561322b5750600087115b1561323b5761323a8784613812565b5b505050505050506000601e60146101000a81548160ff02191690831515021790555050565b60008060009050600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156132e8576132e160646132d36016548661348790919063ffffffff16565b61350190919063ffffffff16565b9050613366565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156133655761336260646133546017548661348790919063ffffffff16565b61350190919063ffffffff16565b90505b5b600081111561346a576133c181600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125dc90919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516134619190613bf7565b60405180910390a35b61347d8184612e5290919063ffffffff16565b9150509392505050565b600080830361349957600090506134fb565b600082846134a791906146f0565b90508284826134b6919061415b565b146134f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134ed906147a4565b60405180910390fd5b809150505b92915050565b600061354383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506138f7565b905092915050565b6000600267ffffffffffffffff811115613568576135676147c4565b5b6040519080825280602002602001820160405280156135965781602001602082028036833780820191505090505b50905030816000815181106135ae576135ad6147f3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613655573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136799190614837565b8160018151811061368d5761368c6147f3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506136f430601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612642565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161375895949392919061495d565b600060405180830381600087803b15801561377257600080fd5b505af1158015613786573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516137bb9291906149b7565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561380d573d6000803e3d6000fd5b505050565b61383f30601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612642565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061388b611953565b426040518863ffffffff1660e01b81526004016138ad969594939291906149e7565b60606040518083038185885af11580156138cb573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906138f09190614a5d565b5050505050565b6000808311829061393e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161393591906139ea565b60405180910390fd5b506000838561394d919061415b565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613994578082015181840152602081019050613979565b60008484015250505050565b6000601f19601f8301169050919050565b60006139bc8261395a565b6139c68185613965565b93506139d6818560208601613976565b6139df816139a0565b840191505092915050565b60006020820190508181036000830152613a0481846139b1565b905092915050565b600080fd5b6000819050919050565b613a2481613a11565b8114613a2f57600080fd5b50565b600081359050613a4181613a1b565b92915050565b600080600060608486031215613a6057613a5f613a0c565b5b6000613a6e86828701613a32565b9350506020613a7f86828701613a32565b9250506040613a9086828701613a32565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613ac582613a9a565b9050919050565b613ad581613aba565b8114613ae057600080fd5b50565b600081359050613af281613acc565b92915050565b60008060408385031215613b0f57613b0e613a0c565b5b6000613b1d85828601613ae3565b9250506020613b2e85828601613a32565b9150509250929050565b60008115159050919050565b613b4d81613b38565b82525050565b6000602082019050613b686000830184613b44565b92915050565b6000819050919050565b6000613b93613b8e613b8984613a9a565b613b6e565b613a9a565b9050919050565b6000613ba582613b78565b9050919050565b6000613bb782613b9a565b9050919050565b613bc781613bac565b82525050565b6000602082019050613be26000830184613bbe565b92915050565b613bf181613a11565b82525050565b6000602082019050613c0c6000830184613be8565b92915050565b6000613c1d82613a9a565b9050919050565b613c2d81613c12565b82525050565b6000602082019050613c486000830184613c24565b92915050565b613c5781613b38565b8114613c6257600080fd5b50565b600081359050613c7481613c4e565b92915050565b60008060408385031215613c9157613c90613a0c565b5b6000613c9f85828601613ae3565b9250506020613cb085828601613c65565b9150509250929050565b600080600060608486031215613cd357613cd2613a0c565b5b6000613ce186828701613ae3565b9350506020613cf286828701613ae3565b9250506040613d0386828701613a32565b9150509250925092565b600060208284031215613d2357613d22613a0c565b5b6000613d3184828501613c65565b91505092915050565b613d4381613aba565b82525050565b6000602082019050613d5e6000830184613d3a565b92915050565b600060ff82169050919050565b613d7a81613d64565b82525050565b6000602082019050613d956000830184613d71565b92915050565b600060208284031215613db157613db0613a0c565b5b6000613dbf84828501613a32565b91505092915050565b600060208284031215613dde57613ddd613a0c565b5b6000613dec84828501613ae3565b91505092915050565b60008060408385031215613e0c57613e0b613a0c565b5b6000613e1a85828601613ae3565b9250506020613e2b85828601613ae3565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613e7c57607f821691505b602082108103613e8f57613e8e613e35565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613ecb602083613965565b9150613ed682613e95565b602082019050919050565b60006020820190508181036000830152613efa81613ebe565b9050919050565b7f53656c6c20746178206d757374206265206c657373207468616e203335250000600082015250565b6000613f37601e83613965565b9150613f4282613f01565b602082019050919050565b60006020820190508181036000830152613f6681613f2a565b9050919050565b7f42757920746178206d757374206265206c657373207468616e20333525000000600082015250565b6000613fa3601d83613965565b9150613fae82613f6d565b602082019050919050565b60006020820190508181036000830152613fd281613f96565b9050919050565b7f4e756d546f6b656e734265666f7265537761702073686f756c64206265206e6f60008201527f7420300000000000000000000000000000000000000000000000000000000000602082015250565b6000614035602383613965565b915061404082613fd9565b604082019050919050565b6000602082019050818103600083015261406481614028565b9050919050565b7f446973747269627574696f6e20536861726573206d757374206265206c65737360008201527f207468616e203730250000000000000000000000000000000000000000000000602082015250565b60006140c7602983613965565b91506140d28261406b565b604082019050919050565b600060208201905081810360008301526140f6816140ba565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061416682613a11565b915061417183613a11565b925082614181576141806140fd565b5b828204905092915050565b7f43616e6e6f7420736574204d61785478416d6f756e74206c6f7765722074686160008201527f6e20302e35250000000000000000000000000000000000000000000000000000602082015250565b60006141e8602683613965565b91506141f38261418c565b604082019050919050565b60006020820190508181036000830152614217816141db565b9050919050565b7f43616e6e6f7420736574204d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b600061427a602483613965565b91506142858261421e565b604082019050919050565b600060208201905081810360008301526142a98161426d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061430c602683613965565b9150614317826142b0565b604082019050919050565b6000602082019050818103600083015261433b816142ff565b9050919050565b600061434d82613a11565b915061435883613a11565b92508282019050808211156143705761436f61412c565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006143ac601b83613965565b91506143b782614376565b602082019050919050565b600060208201905081810360008301526143db8161439f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061443e602483613965565b9150614449826143e2565b604082019050919050565b6000602082019050818103600083015261446d81614431565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006144d0602283613965565b91506144db82614474565b604082019050919050565b600060208201905081810360008301526144ff816144c3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614562602583613965565b915061456d82614506565b604082019050919050565b6000602082019050818103600083015261459181614555565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006145f4602383613965565b91506145ff82614598565b604082019050919050565b60006020820190508181036000830152614623816145e7565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b6000614686602883613965565b91506146918261462a565b604082019050919050565b600060208201905081810360008301526146b581614679565b9050919050565b60006146c782613a11565b91506146d283613a11565b92508282039050818111156146ea576146e961412c565b5b92915050565b60006146fb82613a11565b915061470683613a11565b925082820261471481613a11565b9150828204841483151761472b5761472a61412c565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061478e602183613965565b915061479982614732565b604082019050919050565b600060208201905081810360008301526147bd81614781565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061483181613acc565b92915050565b60006020828403121561484d5761484c613a0c565b5b600061485b84828501614822565b91505092915050565b6000819050919050565b600061488961488461487f84614864565b613b6e565b613a11565b9050919050565b6148998161486e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6148d481613aba565b82525050565b60006148e683836148cb565b60208301905092915050565b6000602082019050919050565b600061490a8261489f565b61491481856148aa565b935061491f836148bb565b8060005b8381101561495057815161493788826148da565b9750614942836148f2565b925050600181019050614923565b5085935050505092915050565b600060a0820190506149726000830188613be8565b61497f6020830187614890565b818103604083015261499181866148ff565b90506149a06060830185613d3a565b6149ad6080830184613be8565b9695505050505050565b60006040820190506149cc6000830185613be8565b81810360208301526149de81846148ff565b90509392505050565b600060c0820190506149fc6000830189613d3a565b614a096020830188613be8565b614a166040830187614890565b614a236060830186614890565b614a306080830185613d3a565b614a3d60a0830184613be8565b979650505050505050565b600081519050614a5781613a1b565b92915050565b600080600060608486031215614a7657614a75613a0c565b5b6000614a8486828701614a48565b9350506020614a9586828701614a48565b9250506040614aa686828701614a48565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203052bc87d8ccb854bf047d40fb93a61c64063757623eb1dd9426c3dbdc91174464736f6c63430008120033
Deployed Bytecode Sourcemap
14366:14680:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18087:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20759:447;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19381:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16089:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18364:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14741:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20314:437;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22045:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23744:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21924:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14883:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23205:128;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18273:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15543:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18750:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22388:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15275:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16204:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22591:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15104:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6435:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15590:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15631;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18472:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15915:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22738:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15970:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15760:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19895:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15457:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15220:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5801:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6026:145;;;;;;;;;;;;;:::i;:::-;;18178:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19253:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15804:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15672:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18976:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23068:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23569:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21218:480;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22889:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15371:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16137:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15500:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15161:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14610:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16251:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15329:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18599:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21710:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20171:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15717:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22188:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6179:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15413:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20032:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16303:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18087:83;18124:13;18157:5;18150:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18087:83;:::o;20759:447::-;5945:12;:10;:12::i;:::-;5935:22;;:6;;;;;;;;;;:22;;;5927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20910:15:::1;20890:17;:35;;;;20956:15;20936:17;:35;;;;21004:17;20982:19;:39;;;;21055:65;21100:19;;21055:40;21077:17;;21055;;:21;;:40;;;;:::i;:::-;:44;;:65;;;;:::i;:::-;21034:18;:86;;;;21161:2;21139:18;;:24;;21131:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20759:447:::0;;;:::o;19381:161::-;19456:4;19473:39;19482:12;:10;:12::i;:::-;19496:7;19505:6;19473:8;:39::i;:::-;19530:4;19523:11;;19381:161;;;;:::o;16089:41::-;;;;;;;;;;;;;:::o;18364:100::-;18417:7;18444:12;;18437:19;;18364:100;:::o;14741:101::-;;;;;;;;;;;;;:::o;20314:437::-;5945:12;:10;:12::i;:::-;5935:22;;:6;;;;;;;;;;:22;;;5927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20463:15:::1;20444:16;:34;;;;20508:15;20489:16;:34;;;;20555:17;20534:18;:38;;;;20605:62;20648:18;;20605:38;20626:16;;20605;;:20;;:38;;;;:::i;:::-;:42;;:62;;;;:::i;:::-;20585:17;:82;;;;20707:2;20686:17;;:23;;20678:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;20314:437:::0;;;:::o;22045:135::-;5945:12;:10;:12::i;:::-;5935:22;;:6;;;;;;;;;;:22;;;5927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22166:6:::1;22136:19;:27;22156:6;22136:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;22045:135:::0;;:::o;23744:313::-;23842:4;23859:36;23869:6;23877:9;23888:6;23859:9;:36::i;:::-;;23906:121;23915:6;23923:12;:10;:12::i;:::-;23937:89;23975:6;23937:89;;;;;;;;;;;;;;;;;:11;:19;23949:6;23937:19;;;;;;;;;;;;;;;:33;23957:12;:10;:12::i;:::-;23937:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;23906:8;:121::i;:::-;24045:4;24038:11;;23744:313;;;;;:::o;21924:113::-;5945:12;:10;:12::i;:::-;5935:22;;:6;;;;;;;;;;:22;;;5927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22021:8:::1;22002:16;;:27;;;;;;;;;;;;;;;;;;21924:113:::0;:::o;14883:81::-;;;:::o;23205:128::-;23258:7;23285:40;23302:22;23312:11;23302:9;:22::i;:::-;23285:12;;:16;;:40;;;;:::i;:::-;23278:47;;23205:128;:::o;18273:83::-;18314:5;18339:9;;;;;;;;;;;18332:16;;18273:83;:::o;15543:38::-;;;;:::o;18750:218::-;18838:4;18855:83;18864:12;:10;:12::i;:::-;18878:7;18887:50;18926:10;18887:11;:25;18899:12;:10;:12::i;:::-;18887:25;;;;;;;;;;;;;;;:34;18913:7;18887:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;18855:8;:83::i;:::-;18956:4;18949:11;;18750:218;;;;:::o;22388:195::-;5945:12;:10;:12::i;:::-;5935:22;;:6;;;;;;;;;;:22;;;5927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22489:1:::1;22478:8;:12;22470:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;22567:8;22541:23;:34;;;;22388:195:::0;:::o;15275:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;16204:40::-;;;;;;;;;;;;;:::o;22591:139::-;5945:12;:10;:12::i;:::-;5935:22;;:6;;;;;;;;;;:22;;;5927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22711:10:::1;22678:22;;:44;;;;;;;;;;;;;;;;;;22591:139:::0;:::o;15104:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;6435:90::-;6475:7;6502:15;6495:22;;6435:90;:::o;15590:34::-;;;;:::o;15631:::-;;;;:::o;18472:119::-;18538:7;18565:9;:18;18575:7;18565:18;;;;;;;;;;;;;;;;18558:25;;18472:119;;;:::o;15915:48::-;;;;:::o;22738:143::-;5945:12;:10;:12::i;:::-;5935:22;;:6;;;;;;;;;;:22;;;5927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22862:10:::1;22827:24;;:46;;;;;;;;;;;;;;;;;;22738:143:::0;:::o;15970:46::-;;;;:::o;15760:37::-;;;;:::o;19895:129::-;5945:12;:10;:12::i;:::-;5935:22;;:6;;;;;;;;;;:22;;;5927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20008:8:::1;19984:12;:21;19997:7;19984:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;19895:129:::0;;:::o;15457:36::-;;;;:::o;15220:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;5801:79::-;5839:7;5866:6;;;;;;;;;;;5859:13;;5801:79;:::o;6026:145::-;5945:12;:10;:12::i;:::-;5935:22;;:6;;;;;;;;;;:22;;;5927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6130:1:::1;6093:40;;6114:6;::::0;::::1;;;;;;;;6093:40;;;;;;;;;;;;6161:1;6144:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6026:145::o:0;18178:87::-;18217:13;18250:7;18243:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18178:87;:::o;19253:120::-;19315:7;19342:23;;19335:30;;19253:120;:::o;15804:44::-;;;;:::o;15672:36::-;;;;:::o;18976:269::-;19069:4;19086:129;19095:12;:10;:12::i;:::-;19109:7;19118:96;19157:15;19118:96;;;;;;;;;;;;;;;;;:11;:25;19130:12;:10;:12::i;:::-;19118:25;;;;;;;;;;;;;;;:34;19144:7;19118:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;19086:8;:129::i;:::-;19233:4;19226:11;;18976:269;;;;:::o;23068:125::-;5945:12;:10;:12::i;:::-;5935:22;;:6;;;;;;;;;;:22;;;5927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23177:8:::1;23149:25;;:36;;;;;;;;;;;;;;;;;;23068:125:::0;:::o;23569:167::-;23647:4;23664:42;23674:12;:10;:12::i;:::-;23688:9;23699:6;23664:9;:42::i;:::-;;23724:4;23717:11;;23569:167;;;;:::o;21218:480::-;5945:12;:10;:12::i;:::-;5935:22;;:6;;;;;;;;;;:22;;;5927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21384:17:::1;21366:15;:35;;;;21430:17;21412:15;:35;;;;21478:19;21458:17;:39;;;;21537:59;21578:17;;21537:36;21557:15;;21537;;:19;;:36;;;;:::i;:::-;:40;;:59;;;;:::i;:::-;21510:24;:86;;;;21642:2;21615:24;;:29;;21607:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;21218:480:::0;;;:::o;22889:171::-;5945:12;:10;:12::i;:::-;5935:22;;:6;;;;;;;;;;:22;;;5927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22990:8:::1;22966:21;;:32;;;;;;;;;;;;;;;;;;23014:38;23043:8;23014:38;;;;;;:::i;:::-;;;;;;;;22889:171:::0;:::o;15371:35::-;;;;:::o;16137:26::-;;;;;;;;;;;;;:::o;15500:36::-;;;;:::o;15161:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;14610:99::-;;;;;;;;;;;;;:::o;16251:45::-;;;;;;;;;;;;;:::o;15329:35::-;;;;:::o;18599:143::-;18680:7;18707:11;:18;18719:5;18707:18;;;;;;;;;;;;;;;:27;18726:7;18707:27;;;;;;;;;;;;;;;;18700:34;;18599:143;;;;:::o;21710:206::-;5945:12;:10;:12::i;:::-;5935:22;;:6;;;;;;;;;;:22;;;5927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21825:3:::1;21810:12;;:18;;;;:::i;:::-;21795:11;:33;;21787:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;21897:11;21882:12;:26;;;;21710:206:::0;:::o;20171:135::-;5945:12;:10;:12::i;:::-;5935:22;;:6;;;;;;;;;;:22;;;5927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20290:8:::1;20261:17;:26;20279:7;20261:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;20171:135:::0;;:::o;15717:36::-;;;;:::o;22188:192::-;5945:12;:10;:12::i;:::-;5935:22;;:6;;;;;;;;;;:22;;;5927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22295:3:::1;22280:12;;:18;;;;:::i;:::-;22268:8;:30;;22260:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;22364:8;22350:10;:22;;;;22188:192:::0;:::o;6179:244::-;5945:12;:10;:12::i;:::-;5935:22;;:6;;;;;;;;;;:22;;;5927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6288:1:::1;6268:22;;:8;:22;;::::0;6260:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6378:8;6349:38;;6370:6;::::0;::::1;;;;;;;;6349:38;;;;;;;;;;;;6407:8;6398:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6179:244:::0;:::o;15413:37::-;;;;:::o;20032:127::-;5945:12;:10;:12::i;:::-;5935:22;;:6;;;;;;;;;;:22;;;5927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20145:6:::1;20119:15;:23;20135:6;20119:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;20032:127:::0;;:::o;16303:35::-;;;;;;;;;;;;;:::o;1171:181::-;1229:7;1249:9;1265:1;1261;:5;;;;:::i;:::-;1249:17;;1290:1;1285;:6;;1277:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1343:1;1336:8;;;1171:181;;;;:::o;103:115::-;156:15;199:10;184:26;;103:115;:::o;19550:337::-;19660:1;19643:19;;:5;:19;;;19635:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19741:1;19722:21;;:7;:21;;;19714:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19825:6;19795:11;:18;19807:5;19795:18;;;;;;;;;;;;;;;:27;19814:7;19795:27;;;;;;;;;;;;;;;:36;;;;19863:7;19847:32;;19856:5;19847:32;;;19872:6;19847:32;;;;;;:::i;:::-;;;;;;;;19550:337;;;:::o;24065:1707::-;24152:4;24197:1;24179:20;;:6;:20;;;24171:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;24281:1;24260:23;;:9;:23;;;24252:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;24339:16;;;;;;;;;;;24336:1429;;;24389:41;24404:6;24412:9;24423:6;24389:14;:41::i;:::-;24382:48;;;;24336:1429;24486:15;:23;24502:6;24486:23;;;;;;;;;;;;;;;;;;;;;;;;;24485:24;:55;;;;;24514:15;:26;24530:9;24514:26;;;;;;;;;;;;;;;;;;;;;;;;;24513:27;24485:55;24482:170;;;24579:12;;24569:6;:22;;24561:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;24482:170;24680:28;24711:24;24729:4;24711:9;:24::i;:::-;24680:55;;24750:28;24805:23;;24781:20;:47;;24750:78;;24861:23;:44;;;;;24889:16;;;;;;;;;;;24888:17;24861:44;:69;;;;;24910:12;:20;24923:6;24910:20;;;;;;;;;;;;;;;;;;;;;;;;;24909:21;24861:69;:94;;;;;24934:21;;;;;;;;;;;24861:94;24857:305;;;24993:25;;;;;;;;;;;24990:97;;;25064:23;;25041:46;;24990:97;25106:36;25121:20;25106:14;:36::i;:::-;24857:305;25198:53;25220:6;25198:53;;;;;;;;;;;;;;;;;:9;:17;25208:6;25198:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;25178:9;:17;25188:6;25178:17;;;;;;;;;;;;;;;:73;;;;25268:19;25291:17;:25;25309:6;25291:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;25320:17;:28;25338:9;25320:28;;;;;;;;;;;;;;;;;;;;;;;;;25291:57;25290:148;;25404:34;25412:6;25420:9;25431:6;25404:7;:34::i;:::-;25290:148;;;25395:6;25290:148;25268:170;;25458:16;;;;;;;;;;;:51;;;;;25479:19;:30;25499:9;25479:30;;;;;;;;;;;;;;;;;;;;;;;;;25478:31;25458:51;25455:133;;;25577:10;;25536:37;25561:11;25536:20;25546:9;25536;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;25528:60;;;;;;25455:133;25628:37;25653:11;25628:9;:20;25638:9;25628:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;25605:9;:20;25615:9;25605:20;;;;;;;;;;;;;;;:60;;;;25704:9;25687:40;;25696:6;25687:40;;;25715:11;25687:40;;;;;;:::i;:::-;;;;;;;;25749:4;25742:11;;;;;24065:1707;;;;;;:::o;1504:192::-;1590:7;1623:1;1618;:6;;1626:12;1610:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1650:9;1666:1;1662;:5;;;;:::i;:::-;1650:17;;1687:1;1680:8;;;1504:192;;;;;:::o;1360:136::-;1418:7;1445:43;1449:1;1452;1445:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1438:50;;1360:136;;;;:::o;25780:330::-;25873:4;25910:53;25932:6;25910:53;;;;;;;;;;;;;;;;;:9;:17;25920:6;25910:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;25890:9;:17;25900:6;25890:17;;;;;;;;;;;;;;;:73;;;;25997:32;26022:6;25997:9;:20;26007:9;25997:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;25974:9;:20;25984:9;25974:20;;;;;;;;;;;;;;;:55;;;;26062:9;26045:35;;26054:6;26045:35;;;26073:6;26045:35;;;;;;:::i;:::-;;;;;;;;26098:4;26091:11;;25780:330;;;;;:::o;26118:1090::-;16780:4;16761:16;;:23;;;;;;;;;;;;;;;;;;26200:19:::1;26222:65;26285:1;26222:58;26255:24;;26222:28;26234:15;;26222:7;:11;;:28;;;;:::i;:::-;:32;;:58;;;;:::i;:::-;:62;;:65;;;;:::i;:::-;26200:87;;26298:21;26322:24;26334:11;26322:7;:11;;:24;;;;:::i;:::-;26298:48;;26359:31;26376:13;26359:16;:31::i;:::-;26401:22;26426:21;26401:46;;26460:19;26482:52;26511:22;26531:1;26511:15;;:19;;:22;;;;:::i;:::-;26482:24;;:28;;:52;;;;:::i;:::-;26460:74;;26555:26;26584:59;26641:1;26584:52;26624:11;26584:35;26603:15;;26584:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;26555:88;;26654:28;26685:54;26727:11;26685:37;26704:17;;26685:14;:18;;:37;;;;:::i;:::-;:41;;:54;;;;:::i;:::-;26654:85;;26750:26;26779:64;26822:20;26779:38;26798:18;26779:14;:18;;:38;;;;:::i;:::-;:42;;:64;;;;:::i;:::-;26750:93;;26880:1;26859:18;:22;26856:104;;;26896:64;26917:22;;;;;;;;;;;26941:18;26896:20;:64::i;:::-;26856:104;26999:1;26976:20;:24;26973:110;;;27015:68;27036:24;;;;;;;;;;;27062:20;27015;:68::i;:::-;26973:110;27120:1;27099:18;:22;:41;;;;;27139:1;27125:11;:15;27099:41;27096:104;;;27155:45;27168:11;27181:18;27155:12;:45::i;:::-;27096:104;26179:1029;;;;;;;16826:5:::0;16807:16;;:24;;;;;;;;;;;;;;;;;;26118:1090;:::o;28415:622::-;28501:7;28531:17;28551:1;28531:21;;28576:12;:20;28589:6;28576:20;;;;;;;;;;;;;;;;;;;;;;;;;28573:223;;;28625:38;28659:3;28625:29;28636:17;;28625:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;28613:50;;28573:223;;;28693:12;:23;28706:9;28693:23;;;;;;;;;;;;;;;;;;;;;;;;;28690:106;;;28745:39;28780:3;28745:30;28756:18;;28745:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;28733:51;;28690:106;28573:223;28831:1;28819:9;:13;28816:173;;;28876:39;28905:9;28876;:24;28894:4;28876:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;28849:9;:24;28867:4;28849:24;;;;;;;;;;;;;;;:66;;;;28960:4;28935:42;;28944:6;28935:42;;;28967:9;28935:42;;;;;;:::i;:::-;;;;;;;;28816:173;29008:21;29019:9;29008:6;:10;;:21;;;;:::i;:::-;29001:28;;;28415:622;;;;;:::o;1704:250::-;1762:7;1791:1;1786;:6;1782:47;;1816:1;1809:8;;;;1782:47;1841:9;1857:1;1853;:5;;;;:::i;:::-;1841:17;;1886:1;1881;1877;:5;;;;:::i;:::-;:10;1869:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1945:1;1938:8;;;1704:250;;;;;:::o;1962:132::-;2020:7;2047:39;2051:1;2054;2047:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2040:46;;1962:132;;;;:::o;27220:666::-;27346:21;27384:1;27370:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27346:40;;27415:4;27397;27402:1;27397:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;27441:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27431:4;27436:1;27431:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;27476:62;27493:4;27508:15;;;;;;;;;;;27526:11;27476:8;:62::i;:::-;27577:15;;;;;;;;;;;:66;;;27658:11;27684:1;27728:4;27755;27791:15;27577:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27843:35;27860:11;27873:4;27843:35;;;;;;;:::i;:::-;;;;;;;;27275:611;27220:666;:::o;23341:126::-;23433:9;:18;;:26;23452:6;23433:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23341:126;;:::o;27894:513::-;28042:62;28059:4;28074:15;;;;;;;;;;;28092:11;28042:8;:62::i;:::-;28147:15;;;;;;;;;;;:31;;;28186:9;28219:4;28239:11;28265:1;28308;28351:7;:5;:7::i;:::-;28373:15;28147:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;27894:513;;:::o;2102:278::-;2188:7;2220:1;2216;:5;2223:12;2208:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2247:9;2263:1;2259;:5;;;;:::i;:::-;2247:17;;2371:1;2364:8;;;2102:278;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:77;1713:7;1742:5;1731:16;;1676:77;;;:::o;1759:122::-;1832:24;1850:5;1832:24;:::i;:::-;1825:5;1822:35;1812:63;;1871:1;1868;1861:12;1812:63;1759:122;:::o;1887:139::-;1933:5;1971:6;1958:20;1949:29;;1987:33;2014:5;1987:33;:::i;:::-;1887:139;;;;:::o;2032:619::-;2109:6;2117;2125;2174:2;2162:9;2153:7;2149:23;2145:32;2142:119;;;2180:79;;:::i;:::-;2142:119;2300:1;2325:53;2370:7;2361:6;2350:9;2346:22;2325:53;:::i;:::-;2315:63;;2271:117;2427:2;2453:53;2498:7;2489:6;2478:9;2474:22;2453:53;:::i;:::-;2443:63;;2398:118;2555:2;2581:53;2626:7;2617:6;2606:9;2602:22;2581:53;:::i;:::-;2571:63;;2526:118;2032:619;;;;;:::o;2657:126::-;2694:7;2734:42;2727:5;2723:54;2712:65;;2657:126;;;:::o;2789:96::-;2826:7;2855:24;2873:5;2855:24;:::i;:::-;2844:35;;2789:96;;;:::o;2891:122::-;2964:24;2982:5;2964:24;:::i;:::-;2957:5;2954:35;2944:63;;3003:1;3000;2993:12;2944:63;2891:122;:::o;3019:139::-;3065:5;3103:6;3090:20;3081:29;;3119:33;3146:5;3119:33;:::i;:::-;3019:139;;;;:::o;3164:474::-;3232:6;3240;3289:2;3277:9;3268:7;3264:23;3260:32;3257:119;;;3295:79;;:::i;:::-;3257:119;3415:1;3440:53;3485:7;3476:6;3465:9;3461:22;3440:53;:::i;:::-;3430:63;;3386:117;3542:2;3568:53;3613:7;3604:6;3593:9;3589:22;3568:53;:::i;:::-;3558:63;;3513:118;3164:474;;;;;:::o;3644:90::-;3678:7;3721:5;3714:13;3707:21;3696:32;;3644:90;;;:::o;3740:109::-;3821:21;3836:5;3821:21;:::i;:::-;3816:3;3809:34;3740:109;;:::o;3855:210::-;3942:4;3980:2;3969:9;3965:18;3957:26;;3993:65;4055:1;4044:9;4040:17;4031:6;3993:65;:::i;:::-;3855:210;;;;:::o;4071:60::-;4099:3;4120:5;4113:12;;4071:60;;;:::o;4137:142::-;4187:9;4220:53;4238:34;4247:24;4265:5;4247:24;:::i;:::-;4238:34;:::i;:::-;4220:53;:::i;:::-;4207:66;;4137:142;;;:::o;4285:126::-;4335:9;4368:37;4399:5;4368:37;:::i;:::-;4355:50;;4285:126;;;:::o;4417:153::-;4494:9;4527:37;4558:5;4527:37;:::i;:::-;4514:50;;4417:153;;;:::o;4576:185::-;4690:64;4748:5;4690:64;:::i;:::-;4685:3;4678:77;4576:185;;:::o;4767:276::-;4887:4;4925:2;4914:9;4910:18;4902:26;;4938:98;5033:1;5022:9;5018:17;5009:6;4938:98;:::i;:::-;4767:276;;;;:::o;5049:118::-;5136:24;5154:5;5136:24;:::i;:::-;5131:3;5124:37;5049:118;;:::o;5173:222::-;5266:4;5304:2;5293:9;5289:18;5281:26;;5317:71;5385:1;5374:9;5370:17;5361:6;5317:71;:::i;:::-;5173:222;;;;:::o;5401:104::-;5446:7;5475:24;5493:5;5475:24;:::i;:::-;5464:35;;5401:104;;;:::o;5511:142::-;5614:32;5640:5;5614:32;:::i;:::-;5609:3;5602:45;5511:142;;:::o;5659:254::-;5768:4;5806:2;5795:9;5791:18;5783:26;;5819:87;5903:1;5892:9;5888:17;5879:6;5819:87;:::i;:::-;5659:254;;;;:::o;5919:116::-;5989:21;6004:5;5989:21;:::i;:::-;5982:5;5979:32;5969:60;;6025:1;6022;6015:12;5969:60;5919:116;:::o;6041:133::-;6084:5;6122:6;6109:20;6100:29;;6138:30;6162:5;6138:30;:::i;:::-;6041:133;;;;:::o;6180:468::-;6245:6;6253;6302:2;6290:9;6281:7;6277:23;6273:32;6270:119;;;6308:79;;:::i;:::-;6270:119;6428:1;6453:53;6498:7;6489:6;6478:9;6474:22;6453:53;:::i;:::-;6443:63;;6399:117;6555:2;6581:50;6623:7;6614:6;6603:9;6599:22;6581:50;:::i;:::-;6571:60;;6526:115;6180:468;;;;;:::o;6654:619::-;6731:6;6739;6747;6796:2;6784:9;6775:7;6771:23;6767:32;6764:119;;;6802:79;;:::i;:::-;6764:119;6922:1;6947:53;6992:7;6983:6;6972:9;6968:22;6947:53;:::i;:::-;6937:63;;6893:117;7049:2;7075:53;7120:7;7111:6;7100:9;7096:22;7075:53;:::i;:::-;7065:63;;7020:118;7177:2;7203:53;7248:7;7239:6;7228:9;7224:22;7203:53;:::i;:::-;7193:63;;7148:118;6654:619;;;;;:::o;7279:323::-;7335:6;7384:2;7372:9;7363:7;7359:23;7355:32;7352:119;;;7390:79;;:::i;:::-;7352:119;7510:1;7535:50;7577:7;7568:6;7557:9;7553:22;7535:50;:::i;:::-;7525:60;;7481:114;7279:323;;;;:::o;7608:118::-;7695:24;7713:5;7695:24;:::i;:::-;7690:3;7683:37;7608:118;;:::o;7732:222::-;7825:4;7863:2;7852:9;7848:18;7840:26;;7876:71;7944:1;7933:9;7929:17;7920:6;7876:71;:::i;:::-;7732:222;;;;:::o;7960:86::-;7995:7;8035:4;8028:5;8024:16;8013:27;;7960:86;;;:::o;8052:112::-;8135:22;8151:5;8135:22;:::i;:::-;8130:3;8123:35;8052:112;;:::o;8170:214::-;8259:4;8297:2;8286:9;8282:18;8274:26;;8310:67;8374:1;8363:9;8359:17;8350:6;8310:67;:::i;:::-;8170:214;;;;:::o;8390:329::-;8449:6;8498:2;8486:9;8477:7;8473:23;8469:32;8466:119;;;8504:79;;:::i;:::-;8466:119;8624:1;8649:53;8694:7;8685:6;8674:9;8670:22;8649:53;:::i;:::-;8639:63;;8595:117;8390:329;;;;:::o;8725:::-;8784:6;8833:2;8821:9;8812:7;8808:23;8804:32;8801:119;;;8839:79;;:::i;:::-;8801:119;8959:1;8984:53;9029:7;9020:6;9009:9;9005:22;8984:53;:::i;:::-;8974:63;;8930:117;8725:329;;;;:::o;9060:474::-;9128:6;9136;9185:2;9173:9;9164:7;9160:23;9156:32;9153:119;;;9191:79;;:::i;:::-;9153:119;9311:1;9336:53;9381:7;9372:6;9361:9;9357:22;9336:53;:::i;:::-;9326:63;;9282:117;9438:2;9464:53;9509:7;9500:6;9489:9;9485:22;9464:53;:::i;:::-;9454:63;;9409:118;9060:474;;;;;:::o;9540:180::-;9588:77;9585:1;9578:88;9685:4;9682:1;9675:15;9709:4;9706:1;9699:15;9726:320;9770:6;9807:1;9801:4;9797:12;9787:22;;9854:1;9848:4;9844:12;9875:18;9865:81;;9931:4;9923:6;9919:17;9909:27;;9865:81;9993:2;9985:6;9982:14;9962:18;9959:38;9956:84;;10012:18;;:::i;:::-;9956:84;9777:269;9726:320;;;:::o;10052:182::-;10192:34;10188:1;10180:6;10176:14;10169:58;10052:182;:::o;10240:366::-;10382:3;10403:67;10467:2;10462:3;10403:67;:::i;:::-;10396:74;;10479:93;10568:3;10479:93;:::i;:::-;10597:2;10592:3;10588:12;10581:19;;10240:366;;;:::o;10612:419::-;10778:4;10816:2;10805:9;10801:18;10793:26;;10865:9;10859:4;10855:20;10851:1;10840:9;10836:17;10829:47;10893:131;11019:4;10893:131;:::i;:::-;10885:139;;10612:419;;;:::o;11037:180::-;11177:32;11173:1;11165:6;11161:14;11154:56;11037:180;:::o;11223:366::-;11365:3;11386:67;11450:2;11445:3;11386:67;:::i;:::-;11379:74;;11462:93;11551:3;11462:93;:::i;:::-;11580:2;11575:3;11571:12;11564:19;;11223:366;;;:::o;11595:419::-;11761:4;11799:2;11788:9;11784:18;11776:26;;11848:9;11842:4;11838:20;11834:1;11823:9;11819:17;11812:47;11876:131;12002:4;11876:131;:::i;:::-;11868:139;;11595:419;;;:::o;12020:179::-;12160:31;12156:1;12148:6;12144:14;12137:55;12020:179;:::o;12205:366::-;12347:3;12368:67;12432:2;12427:3;12368:67;:::i;:::-;12361:74;;12444:93;12533:3;12444:93;:::i;:::-;12562:2;12557:3;12553:12;12546:19;;12205:366;;;:::o;12577:419::-;12743:4;12781:2;12770:9;12766:18;12758:26;;12830:9;12824:4;12820:20;12816:1;12805:9;12801:17;12794:47;12858:131;12984:4;12858:131;:::i;:::-;12850:139;;12577:419;;;:::o;13002:222::-;13142:34;13138:1;13130:6;13126:14;13119:58;13211:5;13206:2;13198:6;13194:15;13187:30;13002:222;:::o;13230:366::-;13372:3;13393:67;13457:2;13452:3;13393:67;:::i;:::-;13386:74;;13469:93;13558:3;13469:93;:::i;:::-;13587:2;13582:3;13578:12;13571:19;;13230:366;;;:::o;13602:419::-;13768:4;13806:2;13795:9;13791:18;13783:26;;13855:9;13849:4;13845:20;13841:1;13830:9;13826:17;13819:47;13883:131;14009:4;13883:131;:::i;:::-;13875:139;;13602:419;;;:::o;14027:228::-;14167:34;14163:1;14155:6;14151:14;14144:58;14236:11;14231:2;14223:6;14219:15;14212:36;14027:228;:::o;14261:366::-;14403:3;14424:67;14488:2;14483:3;14424:67;:::i;:::-;14417:74;;14500:93;14589:3;14500:93;:::i;:::-;14618:2;14613:3;14609:12;14602:19;;14261:366;;;:::o;14633:419::-;14799:4;14837:2;14826:9;14822:18;14814:26;;14886:9;14880:4;14876:20;14872:1;14861:9;14857:17;14850:47;14914:131;15040:4;14914:131;:::i;:::-;14906:139;;14633:419;;;:::o;15058:180::-;15106:77;15103:1;15096:88;15203:4;15200:1;15193:15;15227:4;15224:1;15217:15;15244:180;15292:77;15289:1;15282:88;15389:4;15386:1;15379:15;15413:4;15410:1;15403:15;15430:185;15470:1;15487:20;15505:1;15487:20;:::i;:::-;15482:25;;15521:20;15539:1;15521:20;:::i;:::-;15516:25;;15560:1;15550:35;;15565:18;;:::i;:::-;15550:35;15607:1;15604;15600:9;15595:14;;15430:185;;;;:::o;15621:225::-;15761:34;15757:1;15749:6;15745:14;15738:58;15830:8;15825:2;15817:6;15813:15;15806:33;15621:225;:::o;15852:366::-;15994:3;16015:67;16079:2;16074:3;16015:67;:::i;:::-;16008:74;;16091:93;16180:3;16091:93;:::i;:::-;16209:2;16204:3;16200:12;16193:19;;15852:366;;;:::o;16224:419::-;16390:4;16428:2;16417:9;16413:18;16405:26;;16477:9;16471:4;16467:20;16463:1;16452:9;16448:17;16441:47;16505:131;16631:4;16505:131;:::i;:::-;16497:139;;16224:419;;;:::o;16649:223::-;16789:34;16785:1;16777:6;16773:14;16766:58;16858:6;16853:2;16845:6;16841:15;16834:31;16649:223;:::o;16878:366::-;17020:3;17041:67;17105:2;17100:3;17041:67;:::i;:::-;17034:74;;17117:93;17206:3;17117:93;:::i;:::-;17235:2;17230:3;17226:12;17219:19;;16878:366;;;:::o;17250:419::-;17416:4;17454:2;17443:9;17439:18;17431:26;;17503:9;17497:4;17493:20;17489:1;17478:9;17474:17;17467:47;17531:131;17657:4;17531:131;:::i;:::-;17523:139;;17250:419;;;:::o;17675:225::-;17815:34;17811:1;17803:6;17799:14;17792:58;17884:8;17879:2;17871:6;17867:15;17860:33;17675:225;:::o;17906:366::-;18048:3;18069:67;18133:2;18128:3;18069:67;:::i;:::-;18062:74;;18145:93;18234:3;18145:93;:::i;:::-;18263:2;18258:3;18254:12;18247:19;;17906:366;;;:::o;18278:419::-;18444:4;18482:2;18471:9;18467:18;18459:26;;18531:9;18525:4;18521:20;18517:1;18506:9;18502:17;18495:47;18559:131;18685:4;18559:131;:::i;:::-;18551:139;;18278:419;;;:::o;18703:191::-;18743:3;18762:20;18780:1;18762:20;:::i;:::-;18757:25;;18796:20;18814:1;18796:20;:::i;:::-;18791:25;;18839:1;18836;18832:9;18825:16;;18860:3;18857:1;18854:10;18851:36;;;18867:18;;:::i;:::-;18851:36;18703:191;;;;:::o;18900:177::-;19040:29;19036:1;19028:6;19024:14;19017:53;18900:177;:::o;19083:366::-;19225:3;19246:67;19310:2;19305:3;19246:67;:::i;:::-;19239:74;;19322:93;19411:3;19322:93;:::i;:::-;19440:2;19435:3;19431:12;19424:19;;19083:366;;;:::o;19455:419::-;19621:4;19659:2;19648:9;19644:18;19636:26;;19708:9;19702:4;19698:20;19694:1;19683:9;19679:17;19672:47;19736:131;19862:4;19736:131;:::i;:::-;19728:139;;19455:419;;;:::o;19880:223::-;20020:34;20016:1;20008:6;20004:14;19997:58;20089:6;20084:2;20076:6;20072:15;20065:31;19880:223;:::o;20109:366::-;20251:3;20272:67;20336:2;20331:3;20272:67;:::i;:::-;20265:74;;20348:93;20437:3;20348:93;:::i;:::-;20466:2;20461:3;20457:12;20450:19;;20109:366;;;:::o;20481:419::-;20647:4;20685:2;20674:9;20670:18;20662:26;;20734:9;20728:4;20724:20;20720:1;20709:9;20705:17;20698:47;20762:131;20888:4;20762:131;:::i;:::-;20754:139;;20481:419;;;:::o;20906:221::-;21046:34;21042:1;21034:6;21030:14;21023:58;21115:4;21110:2;21102:6;21098:15;21091:29;20906:221;:::o;21133:366::-;21275:3;21296:67;21360:2;21355:3;21296:67;:::i;:::-;21289:74;;21372:93;21461:3;21372:93;:::i;:::-;21490:2;21485:3;21481:12;21474:19;;21133:366;;;:::o;21505:419::-;21671:4;21709:2;21698:9;21694:18;21686:26;;21758:9;21752:4;21748:20;21744:1;21733:9;21729:17;21722:47;21786:131;21912:4;21786:131;:::i;:::-;21778:139;;21505:419;;;:::o;21930:224::-;22070:34;22066:1;22058:6;22054:14;22047:58;22139:7;22134:2;22126:6;22122:15;22115:32;21930:224;:::o;22160:366::-;22302:3;22323:67;22387:2;22382:3;22323:67;:::i;:::-;22316:74;;22399:93;22488:3;22399:93;:::i;:::-;22517:2;22512:3;22508:12;22501:19;;22160:366;;;:::o;22532:419::-;22698:4;22736:2;22725:9;22721:18;22713:26;;22785:9;22779:4;22775:20;22771:1;22760:9;22756:17;22749:47;22813:131;22939:4;22813:131;:::i;:::-;22805:139;;22532:419;;;:::o;22957:222::-;23097:34;23093:1;23085:6;23081:14;23074:58;23166:5;23161:2;23153:6;23149:15;23142:30;22957:222;:::o;23185:366::-;23327:3;23348:67;23412:2;23407:3;23348:67;:::i;:::-;23341:74;;23424:93;23513:3;23424:93;:::i;:::-;23542:2;23537:3;23533:12;23526:19;;23185:366;;;:::o;23557:419::-;23723:4;23761:2;23750:9;23746:18;23738:26;;23810:9;23804:4;23800:20;23796:1;23785:9;23781:17;23774:47;23838:131;23964:4;23838:131;:::i;:::-;23830:139;;23557:419;;;:::o;23982:227::-;24122:34;24118:1;24110:6;24106:14;24099:58;24191:10;24186:2;24178:6;24174:15;24167:35;23982:227;:::o;24215:366::-;24357:3;24378:67;24442:2;24437:3;24378:67;:::i;:::-;24371:74;;24454:93;24543:3;24454:93;:::i;:::-;24572:2;24567:3;24563:12;24556:19;;24215:366;;;:::o;24587:419::-;24753:4;24791:2;24780:9;24776:18;24768:26;;24840:9;24834:4;24830:20;24826:1;24815:9;24811:17;24804:47;24868:131;24994:4;24868:131;:::i;:::-;24860:139;;24587:419;;;:::o;25012:194::-;25052:4;25072:20;25090:1;25072:20;:::i;:::-;25067:25;;25106:20;25124:1;25106:20;:::i;:::-;25101:25;;25150:1;25147;25143:9;25135:17;;25174:1;25168:4;25165:11;25162:37;;;25179:18;;:::i;:::-;25162:37;25012:194;;;;:::o;25212:410::-;25252:7;25275:20;25293:1;25275:20;:::i;:::-;25270:25;;25309:20;25327:1;25309:20;:::i;:::-;25304:25;;25364:1;25361;25357:9;25386:30;25404:11;25386:30;:::i;:::-;25375:41;;25565:1;25556:7;25552:15;25549:1;25546:22;25526:1;25519:9;25499:83;25476:139;;25595:18;;:::i;:::-;25476:139;25260:362;25212:410;;;;:::o;25628:220::-;25768:34;25764:1;25756:6;25752:14;25745:58;25837:3;25832:2;25824:6;25820:15;25813:28;25628:220;:::o;25854:366::-;25996:3;26017:67;26081:2;26076:3;26017:67;:::i;:::-;26010:74;;26093:93;26182:3;26093:93;:::i;:::-;26211:2;26206:3;26202:12;26195:19;;25854:366;;;:::o;26226:419::-;26392:4;26430:2;26419:9;26415:18;26407:26;;26479:9;26473:4;26469:20;26465:1;26454:9;26450:17;26443:47;26507:131;26633:4;26507:131;:::i;:::-;26499:139;;26226:419;;;:::o;26651:180::-;26699:77;26696:1;26689:88;26796:4;26793:1;26786:15;26820:4;26817:1;26810:15;26837:180;26885:77;26882:1;26875:88;26982:4;26979:1;26972:15;27006:4;27003:1;26996:15;27023:143;27080:5;27111:6;27105:13;27096:22;;27127:33;27154:5;27127:33;:::i;:::-;27023:143;;;;:::o;27172:351::-;27242:6;27291:2;27279:9;27270:7;27266:23;27262:32;27259:119;;;27297:79;;:::i;:::-;27259:119;27417:1;27442:64;27498:7;27489:6;27478:9;27474:22;27442:64;:::i;:::-;27432:74;;27388:128;27172:351;;;;:::o;27529:85::-;27574:7;27603:5;27592:16;;27529:85;;;:::o;27620:158::-;27678:9;27711:61;27729:42;27738:32;27764:5;27738:32;:::i;:::-;27729:42;:::i;:::-;27711:61;:::i;:::-;27698:74;;27620:158;;;:::o;27784:147::-;27879:45;27918:5;27879:45;:::i;:::-;27874:3;27867:58;27784:147;;:::o;27937:114::-;28004:6;28038:5;28032:12;28022:22;;27937:114;;;:::o;28057:184::-;28156:11;28190:6;28185:3;28178:19;28230:4;28225:3;28221:14;28206:29;;28057:184;;;;:::o;28247:132::-;28314:4;28337:3;28329:11;;28367:4;28362:3;28358:14;28350:22;;28247:132;;;:::o;28385:108::-;28462:24;28480:5;28462:24;:::i;:::-;28457:3;28450:37;28385:108;;:::o;28499:179::-;28568:10;28589:46;28631:3;28623:6;28589:46;:::i;:::-;28667:4;28662:3;28658:14;28644:28;;28499:179;;;;:::o;28684:113::-;28754:4;28786;28781:3;28777:14;28769:22;;28684:113;;;:::o;28833:732::-;28952:3;28981:54;29029:5;28981:54;:::i;:::-;29051:86;29130:6;29125:3;29051:86;:::i;:::-;29044:93;;29161:56;29211:5;29161:56;:::i;:::-;29240:7;29271:1;29256:284;29281:6;29278:1;29275:13;29256:284;;;29357:6;29351:13;29384:63;29443:3;29428:13;29384:63;:::i;:::-;29377:70;;29470:60;29523:6;29470:60;:::i;:::-;29460:70;;29316:224;29303:1;29300;29296:9;29291:14;;29256:284;;;29260:14;29556:3;29549:10;;28957:608;;;28833:732;;;;:::o;29571:831::-;29834:4;29872:3;29861:9;29857:19;29849:27;;29886:71;29954:1;29943:9;29939:17;29930:6;29886:71;:::i;:::-;29967:80;30043:2;30032:9;30028:18;30019:6;29967:80;:::i;:::-;30094:9;30088:4;30084:20;30079:2;30068:9;30064:18;30057:48;30122:108;30225:4;30216:6;30122:108;:::i;:::-;30114:116;;30240:72;30308:2;30297:9;30293:18;30284:6;30240:72;:::i;:::-;30322:73;30390:3;30379:9;30375:19;30366:6;30322:73;:::i;:::-;29571:831;;;;;;;;:::o;30408:483::-;30579:4;30617:2;30606:9;30602:18;30594:26;;30630:71;30698:1;30687:9;30683:17;30674:6;30630:71;:::i;:::-;30748:9;30742:4;30738:20;30733:2;30722:9;30718:18;30711:48;30776:108;30879:4;30870:6;30776:108;:::i;:::-;30768:116;;30408:483;;;;;:::o;30897:807::-;31146:4;31184:3;31173:9;31169:19;31161:27;;31198:71;31266:1;31255:9;31251:17;31242:6;31198:71;:::i;:::-;31279:72;31347:2;31336:9;31332:18;31323:6;31279:72;:::i;:::-;31361:80;31437:2;31426:9;31422:18;31413:6;31361:80;:::i;:::-;31451;31527:2;31516:9;31512:18;31503:6;31451:80;:::i;:::-;31541:73;31609:3;31598:9;31594:19;31585:6;31541:73;:::i;:::-;31624;31692:3;31681:9;31677:19;31668:6;31624:73;:::i;:::-;30897:807;;;;;;;;;:::o;31710:143::-;31767:5;31798:6;31792:13;31783:22;;31814:33;31841:5;31814:33;:::i;:::-;31710:143;;;;:::o;31859:663::-;31947:6;31955;31963;32012:2;32000:9;31991:7;31987:23;31983:32;31980:119;;;32018:79;;:::i;:::-;31980:119;32138:1;32163:64;32219:7;32210:6;32199:9;32195:22;32163:64;:::i;:::-;32153:74;;32109:128;32276:2;32302:64;32358:7;32349:6;32338:9;32334:22;32302:64;:::i;:::-;32292:74;;32247:129;32415:2;32441:64;32497:7;32488:6;32477:9;32473:22;32441:64;:::i;:::-;32431:74;;32386:129;31859:663;;;;;:::o
Swarm Source
ipfs://3052bc87d8ccb854bf047d40fb93a61c64063757623eb1dd9426c3dbdc911744
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.