Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 137 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 15810162 | 741 days ago | IN | 0 ETH | 0.00062141 | ||||
Approve | 15526773 | 781 days ago | IN | 0 ETH | 0.00031537 | ||||
Approve | 15416659 | 799 days ago | IN | 0 ETH | 0.00071242 | ||||
Approve | 15416654 | 799 days ago | IN | 0 ETH | 0.00058172 | ||||
Approve | 15408252 | 800 days ago | IN | 0 ETH | 0.0003821 | ||||
Approve | 15401558 | 802 days ago | IN | 0 ETH | 0.00047242 | ||||
Approve | 15401008 | 802 days ago | IN | 0 ETH | 0.00024068 | ||||
Approve | 15397057 | 802 days ago | IN | 0 ETH | 0.00070945 | ||||
Approve | 15396826 | 802 days ago | IN | 0 ETH | 0.00034481 | ||||
Approve | 15396817 | 802 days ago | IN | 0 ETH | 0.00031709 | ||||
Approve | 15396731 | 802 days ago | IN | 0 ETH | 0.00048992 | ||||
Approve | 15396723 | 802 days ago | IN | 0 ETH | 0.00047287 | ||||
Approve | 15396695 | 802 days ago | IN | 0 ETH | 0.00041452 | ||||
Approve | 15396687 | 802 days ago | IN | 0 ETH | 0.00043535 | ||||
Approve | 15396683 | 802 days ago | IN | 0 ETH | 0.00022883 | ||||
Approve | 15396665 | 802 days ago | IN | 0 ETH | 0.00044045 | ||||
Approve | 15396621 | 802 days ago | IN | 0 ETH | 0.00040656 | ||||
Approve | 15396520 | 802 days ago | IN | 0 ETH | 0.00062161 | ||||
Approve | 15396519 | 802 days ago | IN | 0 ETH | 0.00096925 | ||||
Approve | 15396515 | 802 days ago | IN | 0 ETH | 0.00068255 | ||||
Approve | 15396500 | 802 days ago | IN | 0 ETH | 0.00073511 | ||||
Approve | 15396498 | 802 days ago | IN | 0 ETH | 0.00060291 | ||||
Approve | 15396449 | 802 days ago | IN | 0 ETH | 0.00031031 | ||||
Approve | 15396444 | 802 days ago | IN | 0 ETH | 0.00022932 | ||||
Approve | 15396427 | 802 days ago | IN | 0 ETH | 0.00045882 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
15810163 | 741 days ago | 0.00023889 ETH | ||||
15810163 | 741 days ago | 0.00053913 ETH | ||||
15810163 | 741 days ago | 0.00215652 ETH | ||||
15810163 | 741 days ago | 0.00269565 ETH | ||||
15526776 | 781 days ago | 0.00005995 ETH | ||||
15526776 | 781 days ago | 0.00013538 ETH | ||||
15526776 | 781 days ago | 0.00054154 ETH | ||||
15526776 | 781 days ago | 0.00067693 ETH | ||||
15508489 | 784 days ago | 0.00006036 ETH | ||||
15508489 | 784 days ago | 0.0001363 ETH | ||||
15508489 | 784 days ago | 0.00054523 ETH | ||||
15508489 | 784 days ago | 0.00068154 ETH | ||||
15401568 | 802 days ago | 0.00007874 ETH | ||||
15401568 | 802 days ago | 0.0001778 ETH | ||||
15401568 | 802 days ago | 0.00071122 ETH | ||||
15401568 | 802 days ago | 0.00088903 ETH | ||||
15401019 | 802 days ago | 0.00002346 ETH | ||||
15401019 | 802 days ago | 0.00005298 ETH | ||||
15401019 | 802 days ago | 0.00021192 ETH | ||||
15401019 | 802 days ago | 0.0002649 ETH | ||||
15400873 | 802 days ago | 0.00031367 ETH | ||||
15400873 | 802 days ago | 0.00070774 ETH | ||||
15400873 | 802 days ago | 0.00283096 ETH | ||||
15400873 | 802 days ago | 0.0035387 ETH | ||||
15399201 | 802 days ago | 0.0000442 ETH |
Loading...
Loading
Contract Name:
PIXIU
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-08-23 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address to, 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 from, address to, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, _allowances[owner][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = _allowances[owner][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; } _balances[to] += amount; emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } /* * @dev Contract starts here */ contract PIXIU is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 private uniswapV2Router; address private uniswapV2Pair; mapping (address => bool) private _isBlacklisted; bool private _swapping; uint256 private _liveBlock; address private _fundingWallet; address public burnAddress = address(0x000000000000000000000000000000000000dEaD); uint256 public maxTransactionAmount; uint256 public maxWallet; uint256 public swapTokensThreshold; bool public limitsInEffect = true; bool public feesDisabled = false; bool public tradingLive = false; uint256 private _fundingFee = 4; uint256 private _liquidityFee = 1; uint256 private _burnFee = 0; uint256 private _tokensForFunding; uint256 private _tokensForLiquidity; uint256 public totalFees = _fundingFee + _liquidityFee + _burnFee; // exlcude from fees and max transaction amount mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) private _isExcludedMaxTransactionAmount; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping (address => bool) private _automatedMarketMakerPairs; // to stop bot spam buys and sells on launch mapping(address => uint256) private _holderLastTransferBlock; /** * @dev Throws if called by any account other than the _fundingWallet */ modifier teamOROwner() { require(_fundingWallet == _msgSender() || owner() == _msgSender(), "Caller is not the _fundingWallet address nor owner."); _; } constructor() ERC20("Pixiu", "PIXIU") payable { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); _isExcludedMaxTransactionAmount[address(_uniswapV2Router)] = true; uniswapV2Router = _uniswapV2Router; uint256 totalSupply = 1e9 * 1e18; maxTransactionAmount = totalSupply * 3 / 100; maxWallet = totalSupply * 3 / 100; swapTokensThreshold = totalSupply * 2 / 1000; _fundingWallet = owner(); // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); _isExcludedMaxTransactionAmount[owner()] = true; _isExcludedMaxTransactionAmount[address(this)] = true; _isExcludedMaxTransactionAmount[address(0xdead)] = true; /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(burnAddress, totalSupply / 100 * 50); _mint(address(this), totalSupply / 100 * 50); } /** * @dev Once live, can never be switched off */ function startTrading(uint256 number, uint256 supplyPercentToLP) external teamOROwner { uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH()); _isExcludedMaxTransactionAmount[address(uniswapV2Pair)] = true; _automatedMarketMakerPairs[address(uniswapV2Pair)] = true; _approve(address(this), address(uniswapV2Router), totalSupply()); uniswapV2Router.addLiquidityETH{value: address(this).balance} ( address(this), totalSupply() / 100 * supplyPercentToLP, 0, 0, owner(), block.timestamp ); _liveBlock = block.number.add(number); tradingLive = true; } /** * @dev Remove limits after token is somewhat stable */ function removeLimits() external teamOROwner { limitsInEffect = false; } /** * @dev Exclude from fee calculation */ function excludeFromFees(address account, bool excluded) public teamOROwner { _isExcludedFromFees[account] = excluded; } /** * @dev Update token fees (max set to initial fee) */ function updateFees(uint256 fundingFee, uint256 liquidityFee, uint256 burnFee) external teamOROwner { require(fundingFee.add(liquidityFee).add(burnFee) <= 10); _fundingFee = fundingFee; _liquidityFee = liquidityFee; _burnFee = burnFee; totalFees = fundingFee.add(liquidityFee).add(burnFee); } /** * @dev Enable and disable backend fees */ function setFeeState(bool state) external teamOROwner { feesDisabled = state; } /** * @dev Update wallet that receives fees and newly added LP */ function updateTeamWallet(address newWallet) external teamOROwner { _fundingWallet = newWallet; } /** * @dev Very important function. * Updates the threshold of how many tokens that must be in the contract calculation for fees to be taken */ function updateSwapTokensThreshold(uint256 newThreshold) external teamOROwner returns (bool) { require(newThreshold >= totalSupply() * 1 / 100000, "Swap threshold cannot be lower than 0.001% total supply."); require(newThreshold <= totalSupply() * 5 / 1000, "Swap threshold cannot be higher than 0.5% total supply."); swapTokensThreshold = newThreshold; return true; } /** * @dev Check if an address is excluded from the fee calculation */ function isExcludedFromFees(address account) external view returns(bool) { return _isExcludedFromFees[account]; } /** * @dev Can be used to block certain addresses (mainly for trading bots and sniping bots) */ function blacklist(address[] memory addresses) public onlyOwner { for (uint i = 0; i < addresses.length; i++) { if (addresses[i] != uniswapV2Pair && addresses[i] != address(uniswapV2Router)) { _isBlacklisted[addresses[i]] = true; } } } /** * @dev Remove blacklisted addresses */ function removeBlacklist(address[] memory addresses) public onlyOwner { for (uint i = 0; i < addresses.length; i++) { _isBlacklisted[addresses[i]] = false; } } /** * @dev Check if an address is blacklisted */ function blacklisted(address addr) public view returns (bool) { return _isBlacklisted[addr]; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(!_isBlacklisted[from], "You have been blacklisted, you are unable to transfer or swap."); if (amount == 0) { super._transfer(from, to, 0); return; } // burn if (!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) { uint256 burnAmount = amount.div(100) * _burnFee; _transfer(from, burnAddress, burnAmount); amount -= burnAmount; } // all to secure a smooth launch if (limitsInEffect) { if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !_swapping ) { if (!tradingLive) require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "_transfer:: Trading is not active."); if (_liveBlock >= block.number) _isBlacklisted[to] = true; if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){ require(_holderLastTransferBlock[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed."); _holderLastTransferBlock[tx.origin] = block.number; } // on buy if (_automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransactionAmount, "_transfer:: Buy transfer amount exceeds the maxTransactionAmount."); require(amount + balanceOf(to) <= maxWallet, "_transfer:: Max wallet exceeded"); } // on sell else if (_automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTransactionAmount, "_transfer:: Sell transfer amount exceeds the maxTransactionAmount."); } else if (!_isExcludedMaxTransactionAmount[to]) { require(amount + balanceOf(to) <= maxWallet, "_transfer:: Max wallet exceeded"); } } } if ( !_swapping && !_automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { _swapping = true; swapBack(); _swapping = false; } bool takeFee = !_swapping; // if any addy belongs to _isExcludedFromFee or isn't a swap then remove the fee if ( feesDisabled || _isExcludedFromFees[from] || _isExcludedFromFees[to] || (!_automatedMarketMakerPairs[from] && !_automatedMarketMakerPairs[to]) ) takeFee = false; uint256 fees = 0; if (takeFee) { fees = amount.mul(totalFees).div(100); _tokensForLiquidity += fees * _liquidityFee / totalFees; _tokensForFunding += fees * _fundingFee / totalFees; if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function _swapTokensForETH(uint256 tokenAmount) internal { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) internal { _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, 0, _fundingWallet, block.timestamp ); } function swapBack() internal { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = _tokensForLiquidity + _tokensForFunding; if (contractBalance == 0) return; if (contractBalance > swapTokensThreshold) contractBalance = swapTokensThreshold; uint256 liquidityTokens = contractBalance * _tokensForLiquidity / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; _swapTokensForETH(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForFunding = ethBalance.mul(_tokensForFunding).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForFunding; _tokensForFunding = 0; _tokensForLiquidity = 0; payable(_fundingWallet).transfer(ethForFunding); if (liquidityTokens > 0 && ethForLiquidity > 0) { _addLiquidity(liquidityTokens, ethForLiquidity); } } /** * @dev Transfer funds stuck in contract */ function withdrawContractFunds() external { payable(_fundingWallet).transfer(address(this).balance); } /** * @dev In case swap wont do it and sells/buys might be blocked */ function forceSwap() external teamOROwner { _swapTokensForETH(balanceOf(address(this))); } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"blacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feesDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"forceSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"removeBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setFeeState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"number","type":"uint256"},{"internalType":"uint256","name":"supplyPercentToLP","type":"uint256"}],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingLive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"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":[{"internalType":"uint256","name":"fundingFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"burnFee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"updateSwapTokensThreshold","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawContractFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405261dead600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601060006101000a81548160ff0219169083151502179055506000601060016101000a81548160ff0219169083151502179055506000601060026101000a81548160ff021916908315150217905550600460115560016012556000601355601354601254601154620000bc919062000a9b565b620000c8919062000a9b565b6016556040518060400160405280600581526020017f50697869750000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f504958495500000000000000000000000000000000000000000000000000000081525081600390805190602001906200014f929190620008be565b50806004908051906020019062000168929190620008be565b5050506200018b6200017f620004f160201b60201c565b620004f960201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006b033b2e3c9fd0803ce8000000905060646003826200025f919062000b30565b6200026b919062000af8565b600d81905550606460038262000282919062000b30565b6200028e919062000af8565b600e819055506103e8600282620002a6919062000b30565b620002b2919062000af8565b600f81905550620002c8620005bf60201b60201c565b600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200032a6200031c620005bf60201b60201c565b6001620005e960201b60201c565b6200033d306001620005e960201b60201c565b6200035261dead6001620005e960201b60201c565b60016018600062000368620005bf60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016018600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620004bb600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166032606484620004a3919062000af8565b620004af919062000b30565b6200073b60201b60201c565b620004e9306032606484620004d1919062000af8565b620004dd919062000b30565b6200073b60201b60201c565b505062000c5e565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620005f9620004f160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806200069e575062000660620004f160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000686620005bf60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16145b620006e0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006d79062000a29565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620007ae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007a59062000a4b565b60405180910390fd5b620007c260008383620008b460201b60201c565b8060026000828254620007d6919062000a9b565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200082d919062000a9b565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000894919062000a6d565b60405180910390a3620008b060008383620008b960201b60201c565b5050565b505050565b505050565b828054620008cc9062000b9b565b90600052602060002090601f016020900481019282620008f057600085556200093c565b82601f106200090b57805160ff19168380011785556200093c565b828001600101855582156200093c579182015b828111156200093b5782518255916020019190600101906200091e565b5b5090506200094b91906200094f565b5090565b5b808211156200096a57600081600090555060010162000950565b5090565b60006200097d60338362000a8a565b91507f43616c6c6572206973206e6f7420746865205f66756e64696e6757616c6c657460008301527f2061646472657373206e6f72206f776e65722e000000000000000000000000006020830152604082019050919050565b6000620009e5601f8362000a8a565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b62000a238162000b91565b82525050565b6000602082019050818103600083015262000a44816200096e565b9050919050565b6000602082019050818103600083015262000a6681620009d6565b9050919050565b600060208201905062000a84600083018462000a18565b92915050565b600082825260208201905092915050565b600062000aa88262000b91565b915062000ab58362000b91565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000aed5762000aec62000bd1565b5b828201905092915050565b600062000b058262000b91565b915062000b128362000b91565b92508262000b255762000b2462000c00565b5b828204905092915050565b600062000b3d8262000b91565b915062000b4a8362000b91565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000b865762000b8562000bd1565b5b828202905092915050565b6000819050919050565b6000600282049050600182168062000bb457607f821691505b6020821081141562000bcb5762000bca62000c2f565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b614d098062000c6e6000396000f3fe6080604052600436106102085760003560e01c8063751039fc11610118578063c0246668116100a0578063dbac26e91161006f578063dbac26e914610764578063dd62ed3e146107a1578063df778d26146107de578063f2fde38b146107f5578063f8b45b051461081e5761020f565b8063c0246668146106bc578063c8c8ebe4146106e5578063cef8513914610710578063d691a7341461073b5761020f565b80638da5cb5b116100e75780638da5cb5b146105c357806395d89b41146105ee578063a457c2d714610619578063a9059cbb14610656578063bb5e048a146106935761020f565b8063751039fc1461051d5780637911ef9d146105345780637cb332bb1461055d5780638baa63b2146105865761020f565b806323b872dd1161019b5780634fbee1931161016a5780634fbee1931461043657806365cffb1e1461047357806370a082311461049e57806370d5ae05146104db578063715018a6146105065761020f565b806323b872dd14610366578063313ce567146103a357806339509351146103ce5780634a62bb651461040b5761020f565b806313114a9d116101d757806313114a9d146102d057806318160ddd146102fb5780632100942314610326578063224290851461033d5761020f565b8063041f173f1461021457806306fdde031461023d578063095ea7b31461026857806311704f52146102a55761020f565b3661020f57005b600080fd5b34801561022057600080fd5b5061023b60048036038101906102369190613b91565b610849565b005b34801561024957600080fd5b50610252610ab2565b60405161025f91906145f3565b60405180910390f35b34801561027457600080fd5b5061028f600480360381019061028a9190613b55565b610b44565b60405161029c91906145d8565b60405180910390f35b3480156102b157600080fd5b506102ba610b67565b6040516102c791906145d8565b60405180910390f35b3480156102dc57600080fd5b506102e5610b7a565b6040516102f29190614855565b60405180910390f35b34801561030757600080fd5b50610310610b80565b60405161031d9190614855565b60405180910390f35b34801561033257600080fd5b5061033b610b8a565b005b34801561034957600080fd5b50610364600480360381019061035f9190613c60565b610bf5565b005b34801561037257600080fd5b5061038d60048036038101906103889190613aca565b610d47565b60405161039a91906145d8565b60405180910390f35b3480156103af57600080fd5b506103b8610d76565b6040516103c591906148ca565b60405180910390f35b3480156103da57600080fd5b506103f560048036038101906103f09190613b55565b610d7f565b60405161040291906145d8565b60405180910390f35b34801561041757600080fd5b50610420610e29565b60405161042d91906145d8565b60405180910390f35b34801561044257600080fd5b5061045d60048036038101906104589190613a3c565b610e3c565b60405161046a91906145d8565b60405180910390f35b34801561047f57600080fd5b50610488610e92565b60405161049591906145d8565b60405180910390f35b3480156104aa57600080fd5b506104c560048036038101906104c09190613a3c565b610ea5565b6040516104d29190614855565b60405180910390f35b3480156104e757600080fd5b506104f0610eed565b6040516104fd9190614533565b60405180910390f35b34801561051257600080fd5b5061051b610f13565b005b34801561052957600080fd5b50610532610f9b565b005b34801561054057600080fd5b5061055b60048036038101906105569190613b91565b611093565b005b34801561056957600080fd5b50610584600480360381019061057f9190613a3c565b6111ca565b005b34801561059257600080fd5b506105ad60048036038101906105a89190613bfb565b6112e9565b6040516105ba91906145d8565b60405180910390f35b3480156105cf57600080fd5b506105d861149d565b6040516105e59190614533565b60405180910390f35b3480156105fa57600080fd5b506106036114c7565b60405161061091906145f3565b60405180910390f35b34801561062557600080fd5b50610640600480360381019061063b9190613b55565b611559565b60405161064d91906145d8565b60405180910390f35b34801561066257600080fd5b5061067d60048036038101906106789190613b55565b611643565b60405161068a91906145d8565b60405180910390f35b34801561069f57600080fd5b506106ba60048036038101906106b59190613bd2565b611666565b005b3480156106c857600080fd5b506106e360048036038101906106de9190613b19565b61175e565b005b3480156106f157600080fd5b506106fa611894565b6040516107079190614855565b60405180910390f35b34801561071c57600080fd5b5061072561189a565b6040516107329190614855565b60405180910390f35b34801561074757600080fd5b50610762600480360381019061075d9190613c24565b6118a0565b005b34801561077057600080fd5b5061078b60048036038101906107869190613a3c565b611dc7565b60405161079891906145d8565b60405180910390f35b3480156107ad57600080fd5b506107c860048036038101906107c39190613a8e565b611e1d565b6040516107d59190614855565b60405180910390f35b3480156107ea57600080fd5b506107f3611ea4565b005b34801561080157600080fd5b5061081c60048036038101906108179190613a3c565b611f92565b005b34801561082a57600080fd5b5061083361208a565b6040516108409190614855565b60405180910390f35b610851612090565b73ffffffffffffffffffffffffffffffffffffffff1661086f61149d565b73ffffffffffffffffffffffffffffffffffffffff16146108c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108bc90614755565b60405180910390fd5b60005b8151811015610aae57600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16828281518110610943577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16141580156109fd5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168282815181106109dc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b15610a9b57600160086000848481518110610a41577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8080610aa690614b78565b9150506108c8565b5050565b606060038054610ac190614b46565b80601f0160208091040260200160405190810160405280929190818152602001828054610aed90614b46565b8015610b3a5780601f10610b0f57610100808354040283529160200191610b3a565b820191906000526020600020905b815481529060010190602001808311610b1d57829003601f168201915b5050505050905090565b600080610b4f612090565b9050610b5c818585612098565b600191505092915050565b601060029054906101000a900460ff1681565b60165481565b6000600254905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610bf2573d6000803e3d6000fd5b50565b610bfd612090565b73ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610c915750610c5b612090565b73ffffffffffffffffffffffffffffffffffffffff16610c7961149d565b73ffffffffffffffffffffffffffffffffffffffff16145b610cd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc7906146f5565b60405180910390fd5b600a610cf782610ce9858761226390919063ffffffff16565b61226390919063ffffffff16565b1115610d0257600080fd5b826011819055508160128190555080601381905550610d3c81610d2e848661226390919063ffffffff16565b61226390919063ffffffff16565b601681905550505050565b600080610d52612090565b9050610d5f858285612279565b610d6a858585612305565b60019150509392505050565b60006012905090565b600080610d8a612090565b9050610e1e818585600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e199190614997565b612098565b600191505092915050565b601060009054906101000a900460ff1681565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601060019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f1b612090565b73ffffffffffffffffffffffffffffffffffffffff16610f3961149d565b73ffffffffffffffffffffffffffffffffffffffff1614610f8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8690614755565b60405180910390fd5b610f996000613052565b565b610fa3612090565b73ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806110375750611001612090565b73ffffffffffffffffffffffffffffffffffffffff1661101f61149d565b73ffffffffffffffffffffffffffffffffffffffff16145b611076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106d906146f5565b60405180910390fd5b6000601060006101000a81548160ff021916908315150217905550565b61109b612090565b73ffffffffffffffffffffffffffffffffffffffff166110b961149d565b73ffffffffffffffffffffffffffffffffffffffff161461110f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110690614755565b60405180910390fd5b60005b81518110156111c65760006008600084848151811061115a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806111be90614b78565b915050611112565b5050565b6111d2612090565b73ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806112665750611230612090565b73ffffffffffffffffffffffffffffffffffffffff1661124e61149d565b73ffffffffffffffffffffffffffffffffffffffff16145b6112a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129c906146f5565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006112f3612090565b73ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806113875750611351612090565b73ffffffffffffffffffffffffffffffffffffffff1661136f61149d565b73ffffffffffffffffffffffffffffffffffffffff16145b6113c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bd906146f5565b60405180910390fd5b620186a060016113d4610b80565b6113de9190614a1e565b6113e891906149ed565b82101561142a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611421906146d5565b60405180910390fd5b6103e86005611437610b80565b6114419190614a1e565b61144b91906149ed565b82111561148d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611484906146b5565b60405180910390fd5b81600f8190555060019050919050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546114d690614b46565b80601f016020809104026020016040519081016040528092919081815260200182805461150290614b46565b801561154f5780601f106115245761010080835404028352916020019161154f565b820191906000526020600020905b81548152906001019060200180831161153257829003601f168201915b5050505050905090565b600080611564612090565b90506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508381101561162a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162190614835565b60405180910390fd5b6116378286868403612098565b60019250505092915050565b60008061164e612090565b905061165b818585612305565b600191505092915050565b61166e612090565b73ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061170257506116cc612090565b73ffffffffffffffffffffffffffffffffffffffff166116ea61149d565b73ffffffffffffffffffffffffffffffffffffffff16145b611741576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611738906146f5565b60405180910390fd5b80601060016101000a81548160ff02191690831515021790555050565b611766612090565b73ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806117fa57506117c4612090565b73ffffffffffffffffffffffffffffffffffffffff166117e261149d565b73ffffffffffffffffffffffffffffffffffffffff16145b611839576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611830906146f5565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600d5481565b600f5481565b6118a8612090565b73ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061193c5750611906612090565b73ffffffffffffffffffffffffffffffffffffffff1661192461149d565b73ffffffffffffffffffffffffffffffffffffffff16145b61197b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611972906146f5565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156119e357600080fd5b505afa1580156119f7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1b9190613a65565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611a9f57600080fd5b505afa158015611ab3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad79190613a65565b6040518363ffffffff1660e01b8152600401611af492919061454e565b602060405180830381600087803b158015611b0e57600080fd5b505af1158015611b22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b469190613a65565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160186000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160196000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611cae30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611ca9610b80565b612098565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730846064611cf9610b80565b611d0391906149ed565b611d0d9190614a1e565b600080611d1861149d565b426040518863ffffffff1660e01b8152600401611d3a96959493929190614577565b6060604051808303818588803b158015611d5357600080fd5b505af1158015611d67573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611d8c9190613caf565b505050611da2824361226390919063ffffffff16565b600a819055506001601060026101000a81548160ff0219169083151502179055505050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611eac612090565b73ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480611f405750611f0a612090565b73ffffffffffffffffffffffffffffffffffffffff16611f2861149d565b73ffffffffffffffffffffffffffffffffffffffff16145b611f7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f76906146f5565b60405180910390fd5b611f90611f8b30610ea5565b613118565b565b611f9a612090565b73ffffffffffffffffffffffffffffffffffffffff16611fb861149d565b73ffffffffffffffffffffffffffffffffffffffff161461200e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200590614755565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561207e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207590614635565b60405180910390fd5b61208781613052565b50565b600e5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612108576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ff906147d5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612178576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216f90614655565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516122569190614855565b60405180910390a3505050565b600081836122719190614997565b905092915050565b60006122858484611e1d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146122ff57818110156122f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e890614675565b60405180910390fd5b6122fe8484848403612098565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236c90614795565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156123e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123dc90614615565b60405180910390fd5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612472576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612469906147b5565b60405180910390fd5b600081141561248c57612487838360006133dc565b61304d565b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156125305750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561259757600060135461254e60648461365d90919063ffffffff16565b6125589190614a1e565b905061258784600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612305565b80826125939190614a78565b9150505b601060009054906101000a900460ff1615612caa576125b461149d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561262257506125f261149d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561265b5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612695575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156126ae5750600960009054906101000a900460ff16155b15612ca957601060029054906101000a900460ff166127a857601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127685750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6127a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279e90614735565b60405180910390fd5b5b43600a541061280a576001600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b61281261149d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561289b5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128f55750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156129c05743601a60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061297b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297290614715565b60405180910390fd5b43601a60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a635750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b0a57600d54811115612aad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa4906147f5565b60405180910390fd5b600e54612ab983610ea5565b82612ac49190614997565b1115612b05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612afc90614815565b60405180910390fd5b612ca8565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612bad5750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612bfc57600d54811115612bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bee90614775565b60405180910390fd5b612ca7565b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612ca657600e54612c5983610ea5565b82612c649190614997565b1115612ca5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9c90614815565b60405180910390fd5b5b5b5b5b5b600960009054906101000a900460ff16158015612d115750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d675750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612dbd5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e01576001600960006101000a81548160ff021916908315150217905550612de5613673565b6000600960006101000a81548160ff0219169083151502179055505b6000600960009054906101000a900460ff16159050601060019054906101000a900460ff1680612e7a5750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612ece5750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612f795750601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612f785750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b15612f8357600090505b6000811561303f57612fb36064612fa5601654866137f890919063ffffffff16565b61365d90919063ffffffff16565b905060165460125482612fc69190614a1e565b612fd091906149ed565b60156000828254612fe19190614997565b9250508190555060165460115482612ff99190614a1e565b61300391906149ed565b601460008282546130149190614997565b9250508190555060008111156130305761302f8530836133dc565b5b808361303c9190614a78565b92505b61304a8585856133dc565b50505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600267ffffffffffffffff81111561315b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156131895781602001602082028036833780820191505090505b50905030816000815181106131c7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561326957600080fd5b505afa15801561327d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132a19190613a65565b816001815181106132db577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061334230600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612098565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016133a6959493929190614870565b600060405180830381600087803b1580156133c057600080fd5b505af11580156133d4573d6000803e3d6000fd5b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561344c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161344390614795565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156134bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134b390614615565b60405180910390fd5b6134c783838361380e565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561354d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161354490614695565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546135e09190614997565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516136449190614855565b60405180910390a3613657848484613813565b50505050565b6000818361366b91906149ed565b905092915050565b600061367e30610ea5565b905060006014546015546136929190614997565b905060008214156136a45750506137f6565b600f548211156136b457600f5491505b6000600282601554856136c79190614a1e565b6136d191906149ed565b6136db91906149ed565b905060006136f2828561381890919063ffffffff16565b9050600047905061370282613118565b6000613717824761381890919063ffffffff16565b9050600061374286613734601454856137f890919063ffffffff16565b61365d90919063ffffffff16565b9050600081836137529190614a78565b905060006014819055506000601581905550600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156137cc573d6000803e3d6000fd5b506000861180156137dd5750600081115b156137ed576137ec868261382e565b5b50505050505050505b565b600081836138069190614a1e565b905092915050565b505050565b505050565b600081836138269190614a78565b905092915050565b61385b30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612098565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016138e496959493929190614577565b6060604051808303818588803b1580156138fd57600080fd5b505af1158015613911573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906139369190613caf565b5050505050565b600061395061394b84614916565b6148e5565b9050808382526020820190508285602086028201111561396f57600080fd5b60005b8581101561399f578161398588826139a9565b845260208401935060208301925050600181019050613972565b5050509392505050565b6000813590506139b881614c8e565b92915050565b6000815190506139cd81614c8e565b92915050565b600082601f8301126139e457600080fd5b81356139f484826020860161393d565b91505092915050565b600081359050613a0c81614ca5565b92915050565b600081359050613a2181614cbc565b92915050565b600081519050613a3681614cbc565b92915050565b600060208284031215613a4e57600080fd5b6000613a5c848285016139a9565b91505092915050565b600060208284031215613a7757600080fd5b6000613a85848285016139be565b91505092915050565b60008060408385031215613aa157600080fd5b6000613aaf858286016139a9565b9250506020613ac0858286016139a9565b9150509250929050565b600080600060608486031215613adf57600080fd5b6000613aed868287016139a9565b9350506020613afe868287016139a9565b9250506040613b0f86828701613a12565b9150509250925092565b60008060408385031215613b2c57600080fd5b6000613b3a858286016139a9565b9250506020613b4b858286016139fd565b9150509250929050565b60008060408385031215613b6857600080fd5b6000613b76858286016139a9565b9250506020613b8785828601613a12565b9150509250929050565b600060208284031215613ba357600080fd5b600082013567ffffffffffffffff811115613bbd57600080fd5b613bc9848285016139d3565b91505092915050565b600060208284031215613be457600080fd5b6000613bf2848285016139fd565b91505092915050565b600060208284031215613c0d57600080fd5b6000613c1b84828501613a12565b91505092915050565b60008060408385031215613c3757600080fd5b6000613c4585828601613a12565b9250506020613c5685828601613a12565b9150509250929050565b600080600060608486031215613c7557600080fd5b6000613c8386828701613a12565b9350506020613c9486828701613a12565b9250506040613ca586828701613a12565b9150509250925092565b600080600060608486031215613cc457600080fd5b6000613cd286828701613a27565b9350506020613ce386828701613a27565b9250506040613cf486828701613a27565b9150509250925092565b6000613d0a8383613d16565b60208301905092915050565b613d1f81614aac565b82525050565b613d2e81614aac565b82525050565b6000613d3f82614952565b613d498185614975565b9350613d5483614942565b8060005b83811015613d85578151613d6c8882613cfe565b9750613d7783614968565b925050600181019050613d58565b5085935050505092915050565b613d9b81614abe565b82525050565b613daa81614b01565b82525050565b6000613dbb8261495d565b613dc58185614986565b9350613dd5818560208601614b13565b613dde81614c7d565b840191505092915050565b6000613df6602383614986565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613e5c602683614986565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613ec2602283614986565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613f28601d83614986565b91507f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006000830152602082019050919050565b6000613f68602683614986565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613fce603783614986565b91507f53776170207468726573686f6c642063616e6e6f74206265206869676865722060008301527f7468616e20302e352520746f74616c20737570706c792e0000000000000000006020830152604082019050919050565b6000614034603883614986565b91507f53776170207468726573686f6c642063616e6e6f74206265206c6f776572207460008301527f68616e20302e3030312520746f74616c20737570706c792e00000000000000006020830152604082019050919050565b600061409a603383614986565b91507f43616c6c6572206973206e6f7420746865205f66756e64696e6757616c6c657460008301527f2061646472657373206e6f72206f776e65722e000000000000000000000000006020830152604082019050919050565b6000614100604983614986565b91507f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008301527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208301527f20616c6c6f7765642e00000000000000000000000000000000000000000000006040830152606082019050919050565b600061418c602283614986565b91507f5f7472616e736665723a3a2054726164696e67206973206e6f7420616374697660008301527f652e0000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006141f2602083614986565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000614232604283614986565b91507f5f7472616e736665723a3a2053656c6c207472616e7366657220616d6f756e7460008301527f206578636565647320746865206d61785472616e73616374696f6e416d6f756e60208301527f742e0000000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b60006142be602583614986565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614324603e83614986565b91507f596f752068617665206265656e20626c61636b6c69737465642c20796f75206160008301527f726520756e61626c6520746f207472616e73666572206f7220737761702e00006020830152604082019050919050565b600061438a602483614986565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006143f0604183614986565b91507f5f7472616e736665723a3a20427579207472616e7366657220616d6f756e742060008301527f6578636565647320746865206d61785472616e73616374696f6e416d6f756e7460208301527f2e000000000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b600061447c601f83614986565b91507f5f7472616e736665723a3a204d61782077616c6c6574206578636565646564006000830152602082019050919050565b60006144bc602583614986565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b61451e81614aea565b82525050565b61452d81614af4565b82525050565b60006020820190506145486000830184613d25565b92915050565b60006040820190506145636000830185613d25565b6145706020830184613d25565b9392505050565b600060c08201905061458c6000830189613d25565b6145996020830188614515565b6145a66040830187613da1565b6145b36060830186613da1565b6145c06080830185613d25565b6145cd60a0830184614515565b979650505050505050565b60006020820190506145ed6000830184613d92565b92915050565b6000602082019050818103600083015261460d8184613db0565b905092915050565b6000602082019050818103600083015261462e81613de9565b9050919050565b6000602082019050818103600083015261464e81613e4f565b9050919050565b6000602082019050818103600083015261466e81613eb5565b9050919050565b6000602082019050818103600083015261468e81613f1b565b9050919050565b600060208201905081810360008301526146ae81613f5b565b9050919050565b600060208201905081810360008301526146ce81613fc1565b9050919050565b600060208201905081810360008301526146ee81614027565b9050919050565b6000602082019050818103600083015261470e8161408d565b9050919050565b6000602082019050818103600083015261472e816140f3565b9050919050565b6000602082019050818103600083015261474e8161417f565b9050919050565b6000602082019050818103600083015261476e816141e5565b9050919050565b6000602082019050818103600083015261478e81614225565b9050919050565b600060208201905081810360008301526147ae816142b1565b9050919050565b600060208201905081810360008301526147ce81614317565b9050919050565b600060208201905081810360008301526147ee8161437d565b9050919050565b6000602082019050818103600083015261480e816143e3565b9050919050565b6000602082019050818103600083015261482e8161446f565b9050919050565b6000602082019050818103600083015261484e816144af565b9050919050565b600060208201905061486a6000830184614515565b92915050565b600060a0820190506148856000830188614515565b6148926020830187613da1565b81810360408301526148a48186613d34565b90506148b36060830185613d25565b6148c06080830184614515565b9695505050505050565b60006020820190506148df6000830184614524565b92915050565b6000604051905081810181811067ffffffffffffffff8211171561490c5761490b614c4e565b5b8060405250919050565b600067ffffffffffffffff82111561493157614930614c4e565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006149a282614aea565b91506149ad83614aea565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156149e2576149e1614bc1565b5b828201905092915050565b60006149f882614aea565b9150614a0383614aea565b925082614a1357614a12614bf0565b5b828204905092915050565b6000614a2982614aea565b9150614a3483614aea565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614a6d57614a6c614bc1565b5b828202905092915050565b6000614a8382614aea565b9150614a8e83614aea565b925082821015614aa157614aa0614bc1565b5b828203905092915050565b6000614ab782614aca565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614b0c82614aea565b9050919050565b60005b83811015614b31578082015181840152602081019050614b16565b83811115614b40576000848401525b50505050565b60006002820490506001821680614b5e57607f821691505b60208210811415614b7257614b71614c1f565b5b50919050565b6000614b8382614aea565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614bb657614bb5614bc1565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b614c9781614aac565b8114614ca257600080fd5b50565b614cae81614abe565b8114614cb957600080fd5b50565b614cc581614aea565b8114614cd057600080fd5b5056fea26469706673582212202745b16b2eebc76d91fdddcb93bc23748be24526e8af21b977870fafd36fbc8d64736f6c63430008000033
Deployed Bytecode
0x6080604052600436106102085760003560e01c8063751039fc11610118578063c0246668116100a0578063dbac26e91161006f578063dbac26e914610764578063dd62ed3e146107a1578063df778d26146107de578063f2fde38b146107f5578063f8b45b051461081e5761020f565b8063c0246668146106bc578063c8c8ebe4146106e5578063cef8513914610710578063d691a7341461073b5761020f565b80638da5cb5b116100e75780638da5cb5b146105c357806395d89b41146105ee578063a457c2d714610619578063a9059cbb14610656578063bb5e048a146106935761020f565b8063751039fc1461051d5780637911ef9d146105345780637cb332bb1461055d5780638baa63b2146105865761020f565b806323b872dd1161019b5780634fbee1931161016a5780634fbee1931461043657806365cffb1e1461047357806370a082311461049e57806370d5ae05146104db578063715018a6146105065761020f565b806323b872dd14610366578063313ce567146103a357806339509351146103ce5780634a62bb651461040b5761020f565b806313114a9d116101d757806313114a9d146102d057806318160ddd146102fb5780632100942314610326578063224290851461033d5761020f565b8063041f173f1461021457806306fdde031461023d578063095ea7b31461026857806311704f52146102a55761020f565b3661020f57005b600080fd5b34801561022057600080fd5b5061023b60048036038101906102369190613b91565b610849565b005b34801561024957600080fd5b50610252610ab2565b60405161025f91906145f3565b60405180910390f35b34801561027457600080fd5b5061028f600480360381019061028a9190613b55565b610b44565b60405161029c91906145d8565b60405180910390f35b3480156102b157600080fd5b506102ba610b67565b6040516102c791906145d8565b60405180910390f35b3480156102dc57600080fd5b506102e5610b7a565b6040516102f29190614855565b60405180910390f35b34801561030757600080fd5b50610310610b80565b60405161031d9190614855565b60405180910390f35b34801561033257600080fd5b5061033b610b8a565b005b34801561034957600080fd5b50610364600480360381019061035f9190613c60565b610bf5565b005b34801561037257600080fd5b5061038d60048036038101906103889190613aca565b610d47565b60405161039a91906145d8565b60405180910390f35b3480156103af57600080fd5b506103b8610d76565b6040516103c591906148ca565b60405180910390f35b3480156103da57600080fd5b506103f560048036038101906103f09190613b55565b610d7f565b60405161040291906145d8565b60405180910390f35b34801561041757600080fd5b50610420610e29565b60405161042d91906145d8565b60405180910390f35b34801561044257600080fd5b5061045d60048036038101906104589190613a3c565b610e3c565b60405161046a91906145d8565b60405180910390f35b34801561047f57600080fd5b50610488610e92565b60405161049591906145d8565b60405180910390f35b3480156104aa57600080fd5b506104c560048036038101906104c09190613a3c565b610ea5565b6040516104d29190614855565b60405180910390f35b3480156104e757600080fd5b506104f0610eed565b6040516104fd9190614533565b60405180910390f35b34801561051257600080fd5b5061051b610f13565b005b34801561052957600080fd5b50610532610f9b565b005b34801561054057600080fd5b5061055b60048036038101906105569190613b91565b611093565b005b34801561056957600080fd5b50610584600480360381019061057f9190613a3c565b6111ca565b005b34801561059257600080fd5b506105ad60048036038101906105a89190613bfb565b6112e9565b6040516105ba91906145d8565b60405180910390f35b3480156105cf57600080fd5b506105d861149d565b6040516105e59190614533565b60405180910390f35b3480156105fa57600080fd5b506106036114c7565b60405161061091906145f3565b60405180910390f35b34801561062557600080fd5b50610640600480360381019061063b9190613b55565b611559565b60405161064d91906145d8565b60405180910390f35b34801561066257600080fd5b5061067d60048036038101906106789190613b55565b611643565b60405161068a91906145d8565b60405180910390f35b34801561069f57600080fd5b506106ba60048036038101906106b59190613bd2565b611666565b005b3480156106c857600080fd5b506106e360048036038101906106de9190613b19565b61175e565b005b3480156106f157600080fd5b506106fa611894565b6040516107079190614855565b60405180910390f35b34801561071c57600080fd5b5061072561189a565b6040516107329190614855565b60405180910390f35b34801561074757600080fd5b50610762600480360381019061075d9190613c24565b6118a0565b005b34801561077057600080fd5b5061078b60048036038101906107869190613a3c565b611dc7565b60405161079891906145d8565b60405180910390f35b3480156107ad57600080fd5b506107c860048036038101906107c39190613a8e565b611e1d565b6040516107d59190614855565b60405180910390f35b3480156107ea57600080fd5b506107f3611ea4565b005b34801561080157600080fd5b5061081c60048036038101906108179190613a3c565b611f92565b005b34801561082a57600080fd5b5061083361208a565b6040516108409190614855565b60405180910390f35b610851612090565b73ffffffffffffffffffffffffffffffffffffffff1661086f61149d565b73ffffffffffffffffffffffffffffffffffffffff16146108c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108bc90614755565b60405180910390fd5b60005b8151811015610aae57600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16828281518110610943577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16141580156109fd5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168282815181106109dc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b15610a9b57600160086000848481518110610a41577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8080610aa690614b78565b9150506108c8565b5050565b606060038054610ac190614b46565b80601f0160208091040260200160405190810160405280929190818152602001828054610aed90614b46565b8015610b3a5780601f10610b0f57610100808354040283529160200191610b3a565b820191906000526020600020905b815481529060010190602001808311610b1d57829003601f168201915b5050505050905090565b600080610b4f612090565b9050610b5c818585612098565b600191505092915050565b601060029054906101000a900460ff1681565b60165481565b6000600254905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610bf2573d6000803e3d6000fd5b50565b610bfd612090565b73ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610c915750610c5b612090565b73ffffffffffffffffffffffffffffffffffffffff16610c7961149d565b73ffffffffffffffffffffffffffffffffffffffff16145b610cd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc7906146f5565b60405180910390fd5b600a610cf782610ce9858761226390919063ffffffff16565b61226390919063ffffffff16565b1115610d0257600080fd5b826011819055508160128190555080601381905550610d3c81610d2e848661226390919063ffffffff16565b61226390919063ffffffff16565b601681905550505050565b600080610d52612090565b9050610d5f858285612279565b610d6a858585612305565b60019150509392505050565b60006012905090565b600080610d8a612090565b9050610e1e818585600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e199190614997565b612098565b600191505092915050565b601060009054906101000a900460ff1681565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601060019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f1b612090565b73ffffffffffffffffffffffffffffffffffffffff16610f3961149d565b73ffffffffffffffffffffffffffffffffffffffff1614610f8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8690614755565b60405180910390fd5b610f996000613052565b565b610fa3612090565b73ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806110375750611001612090565b73ffffffffffffffffffffffffffffffffffffffff1661101f61149d565b73ffffffffffffffffffffffffffffffffffffffff16145b611076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106d906146f5565b60405180910390fd5b6000601060006101000a81548160ff021916908315150217905550565b61109b612090565b73ffffffffffffffffffffffffffffffffffffffff166110b961149d565b73ffffffffffffffffffffffffffffffffffffffff161461110f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110690614755565b60405180910390fd5b60005b81518110156111c65760006008600084848151811061115a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806111be90614b78565b915050611112565b5050565b6111d2612090565b73ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806112665750611230612090565b73ffffffffffffffffffffffffffffffffffffffff1661124e61149d565b73ffffffffffffffffffffffffffffffffffffffff16145b6112a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129c906146f5565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006112f3612090565b73ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806113875750611351612090565b73ffffffffffffffffffffffffffffffffffffffff1661136f61149d565b73ffffffffffffffffffffffffffffffffffffffff16145b6113c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bd906146f5565b60405180910390fd5b620186a060016113d4610b80565b6113de9190614a1e565b6113e891906149ed565b82101561142a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611421906146d5565b60405180910390fd5b6103e86005611437610b80565b6114419190614a1e565b61144b91906149ed565b82111561148d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611484906146b5565b60405180910390fd5b81600f8190555060019050919050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546114d690614b46565b80601f016020809104026020016040519081016040528092919081815260200182805461150290614b46565b801561154f5780601f106115245761010080835404028352916020019161154f565b820191906000526020600020905b81548152906001019060200180831161153257829003601f168201915b5050505050905090565b600080611564612090565b90506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508381101561162a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162190614835565b60405180910390fd5b6116378286868403612098565b60019250505092915050565b60008061164e612090565b905061165b818585612305565b600191505092915050565b61166e612090565b73ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061170257506116cc612090565b73ffffffffffffffffffffffffffffffffffffffff166116ea61149d565b73ffffffffffffffffffffffffffffffffffffffff16145b611741576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611738906146f5565b60405180910390fd5b80601060016101000a81548160ff02191690831515021790555050565b611766612090565b73ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806117fa57506117c4612090565b73ffffffffffffffffffffffffffffffffffffffff166117e261149d565b73ffffffffffffffffffffffffffffffffffffffff16145b611839576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611830906146f5565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600d5481565b600f5481565b6118a8612090565b73ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061193c5750611906612090565b73ffffffffffffffffffffffffffffffffffffffff1661192461149d565b73ffffffffffffffffffffffffffffffffffffffff16145b61197b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611972906146f5565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156119e357600080fd5b505afa1580156119f7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1b9190613a65565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611a9f57600080fd5b505afa158015611ab3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad79190613a65565b6040518363ffffffff1660e01b8152600401611af492919061454e565b602060405180830381600087803b158015611b0e57600080fd5b505af1158015611b22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b469190613a65565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160186000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160196000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611cae30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611ca9610b80565b612098565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730846064611cf9610b80565b611d0391906149ed565b611d0d9190614a1e565b600080611d1861149d565b426040518863ffffffff1660e01b8152600401611d3a96959493929190614577565b6060604051808303818588803b158015611d5357600080fd5b505af1158015611d67573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611d8c9190613caf565b505050611da2824361226390919063ffffffff16565b600a819055506001601060026101000a81548160ff0219169083151502179055505050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611eac612090565b73ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480611f405750611f0a612090565b73ffffffffffffffffffffffffffffffffffffffff16611f2861149d565b73ffffffffffffffffffffffffffffffffffffffff16145b611f7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f76906146f5565b60405180910390fd5b611f90611f8b30610ea5565b613118565b565b611f9a612090565b73ffffffffffffffffffffffffffffffffffffffff16611fb861149d565b73ffffffffffffffffffffffffffffffffffffffff161461200e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200590614755565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561207e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207590614635565b60405180910390fd5b61208781613052565b50565b600e5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612108576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ff906147d5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612178576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216f90614655565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516122569190614855565b60405180910390a3505050565b600081836122719190614997565b905092915050565b60006122858484611e1d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146122ff57818110156122f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e890614675565b60405180910390fd5b6122fe8484848403612098565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236c90614795565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156123e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123dc90614615565b60405180910390fd5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612472576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612469906147b5565b60405180910390fd5b600081141561248c57612487838360006133dc565b61304d565b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156125305750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561259757600060135461254e60648461365d90919063ffffffff16565b6125589190614a1e565b905061258784600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612305565b80826125939190614a78565b9150505b601060009054906101000a900460ff1615612caa576125b461149d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561262257506125f261149d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561265b5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612695575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156126ae5750600960009054906101000a900460ff16155b15612ca957601060029054906101000a900460ff166127a857601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127685750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6127a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279e90614735565b60405180910390fd5b5b43600a541061280a576001600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b61281261149d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561289b5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128f55750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156129c05743601a60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061297b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297290614715565b60405180910390fd5b43601a60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a635750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b0a57600d54811115612aad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa4906147f5565b60405180910390fd5b600e54612ab983610ea5565b82612ac49190614997565b1115612b05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612afc90614815565b60405180910390fd5b612ca8565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612bad5750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612bfc57600d54811115612bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bee90614775565b60405180910390fd5b612ca7565b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612ca657600e54612c5983610ea5565b82612c649190614997565b1115612ca5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9c90614815565b60405180910390fd5b5b5b5b5b5b600960009054906101000a900460ff16158015612d115750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d675750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612dbd5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e01576001600960006101000a81548160ff021916908315150217905550612de5613673565b6000600960006101000a81548160ff0219169083151502179055505b6000600960009054906101000a900460ff16159050601060019054906101000a900460ff1680612e7a5750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612ece5750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612f795750601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612f785750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b15612f8357600090505b6000811561303f57612fb36064612fa5601654866137f890919063ffffffff16565b61365d90919063ffffffff16565b905060165460125482612fc69190614a1e565b612fd091906149ed565b60156000828254612fe19190614997565b9250508190555060165460115482612ff99190614a1e565b61300391906149ed565b601460008282546130149190614997565b9250508190555060008111156130305761302f8530836133dc565b5b808361303c9190614a78565b92505b61304a8585856133dc565b50505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600267ffffffffffffffff81111561315b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156131895781602001602082028036833780820191505090505b50905030816000815181106131c7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561326957600080fd5b505afa15801561327d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132a19190613a65565b816001815181106132db577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061334230600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612098565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016133a6959493929190614870565b600060405180830381600087803b1580156133c057600080fd5b505af11580156133d4573d6000803e3d6000fd5b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561344c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161344390614795565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156134bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134b390614615565b60405180910390fd5b6134c783838361380e565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561354d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161354490614695565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546135e09190614997565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516136449190614855565b60405180910390a3613657848484613813565b50505050565b6000818361366b91906149ed565b905092915050565b600061367e30610ea5565b905060006014546015546136929190614997565b905060008214156136a45750506137f6565b600f548211156136b457600f5491505b6000600282601554856136c79190614a1e565b6136d191906149ed565b6136db91906149ed565b905060006136f2828561381890919063ffffffff16565b9050600047905061370282613118565b6000613717824761381890919063ffffffff16565b9050600061374286613734601454856137f890919063ffffffff16565b61365d90919063ffffffff16565b9050600081836137529190614a78565b905060006014819055506000601581905550600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156137cc573d6000803e3d6000fd5b506000861180156137dd5750600081115b156137ed576137ec868261382e565b5b50505050505050505b565b600081836138069190614a1e565b905092915050565b505050565b505050565b600081836138269190614a78565b905092915050565b61385b30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612098565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016138e496959493929190614577565b6060604051808303818588803b1580156138fd57600080fd5b505af1158015613911573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906139369190613caf565b5050505050565b600061395061394b84614916565b6148e5565b9050808382526020820190508285602086028201111561396f57600080fd5b60005b8581101561399f578161398588826139a9565b845260208401935060208301925050600181019050613972565b5050509392505050565b6000813590506139b881614c8e565b92915050565b6000815190506139cd81614c8e565b92915050565b600082601f8301126139e457600080fd5b81356139f484826020860161393d565b91505092915050565b600081359050613a0c81614ca5565b92915050565b600081359050613a2181614cbc565b92915050565b600081519050613a3681614cbc565b92915050565b600060208284031215613a4e57600080fd5b6000613a5c848285016139a9565b91505092915050565b600060208284031215613a7757600080fd5b6000613a85848285016139be565b91505092915050565b60008060408385031215613aa157600080fd5b6000613aaf858286016139a9565b9250506020613ac0858286016139a9565b9150509250929050565b600080600060608486031215613adf57600080fd5b6000613aed868287016139a9565b9350506020613afe868287016139a9565b9250506040613b0f86828701613a12565b9150509250925092565b60008060408385031215613b2c57600080fd5b6000613b3a858286016139a9565b9250506020613b4b858286016139fd565b9150509250929050565b60008060408385031215613b6857600080fd5b6000613b76858286016139a9565b9250506020613b8785828601613a12565b9150509250929050565b600060208284031215613ba357600080fd5b600082013567ffffffffffffffff811115613bbd57600080fd5b613bc9848285016139d3565b91505092915050565b600060208284031215613be457600080fd5b6000613bf2848285016139fd565b91505092915050565b600060208284031215613c0d57600080fd5b6000613c1b84828501613a12565b91505092915050565b60008060408385031215613c3757600080fd5b6000613c4585828601613a12565b9250506020613c5685828601613a12565b9150509250929050565b600080600060608486031215613c7557600080fd5b6000613c8386828701613a12565b9350506020613c9486828701613a12565b9250506040613ca586828701613a12565b9150509250925092565b600080600060608486031215613cc457600080fd5b6000613cd286828701613a27565b9350506020613ce386828701613a27565b9250506040613cf486828701613a27565b9150509250925092565b6000613d0a8383613d16565b60208301905092915050565b613d1f81614aac565b82525050565b613d2e81614aac565b82525050565b6000613d3f82614952565b613d498185614975565b9350613d5483614942565b8060005b83811015613d85578151613d6c8882613cfe565b9750613d7783614968565b925050600181019050613d58565b5085935050505092915050565b613d9b81614abe565b82525050565b613daa81614b01565b82525050565b6000613dbb8261495d565b613dc58185614986565b9350613dd5818560208601614b13565b613dde81614c7d565b840191505092915050565b6000613df6602383614986565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613e5c602683614986565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613ec2602283614986565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613f28601d83614986565b91507f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006000830152602082019050919050565b6000613f68602683614986565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613fce603783614986565b91507f53776170207468726573686f6c642063616e6e6f74206265206869676865722060008301527f7468616e20302e352520746f74616c20737570706c792e0000000000000000006020830152604082019050919050565b6000614034603883614986565b91507f53776170207468726573686f6c642063616e6e6f74206265206c6f776572207460008301527f68616e20302e3030312520746f74616c20737570706c792e00000000000000006020830152604082019050919050565b600061409a603383614986565b91507f43616c6c6572206973206e6f7420746865205f66756e64696e6757616c6c657460008301527f2061646472657373206e6f72206f776e65722e000000000000000000000000006020830152604082019050919050565b6000614100604983614986565b91507f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008301527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208301527f20616c6c6f7765642e00000000000000000000000000000000000000000000006040830152606082019050919050565b600061418c602283614986565b91507f5f7472616e736665723a3a2054726164696e67206973206e6f7420616374697660008301527f652e0000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006141f2602083614986565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000614232604283614986565b91507f5f7472616e736665723a3a2053656c6c207472616e7366657220616d6f756e7460008301527f206578636565647320746865206d61785472616e73616374696f6e416d6f756e60208301527f742e0000000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b60006142be602583614986565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614324603e83614986565b91507f596f752068617665206265656e20626c61636b6c69737465642c20796f75206160008301527f726520756e61626c6520746f207472616e73666572206f7220737761702e00006020830152604082019050919050565b600061438a602483614986565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006143f0604183614986565b91507f5f7472616e736665723a3a20427579207472616e7366657220616d6f756e742060008301527f6578636565647320746865206d61785472616e73616374696f6e416d6f756e7460208301527f2e000000000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b600061447c601f83614986565b91507f5f7472616e736665723a3a204d61782077616c6c6574206578636565646564006000830152602082019050919050565b60006144bc602583614986565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b61451e81614aea565b82525050565b61452d81614af4565b82525050565b60006020820190506145486000830184613d25565b92915050565b60006040820190506145636000830185613d25565b6145706020830184613d25565b9392505050565b600060c08201905061458c6000830189613d25565b6145996020830188614515565b6145a66040830187613da1565b6145b36060830186613da1565b6145c06080830185613d25565b6145cd60a0830184614515565b979650505050505050565b60006020820190506145ed6000830184613d92565b92915050565b6000602082019050818103600083015261460d8184613db0565b905092915050565b6000602082019050818103600083015261462e81613de9565b9050919050565b6000602082019050818103600083015261464e81613e4f565b9050919050565b6000602082019050818103600083015261466e81613eb5565b9050919050565b6000602082019050818103600083015261468e81613f1b565b9050919050565b600060208201905081810360008301526146ae81613f5b565b9050919050565b600060208201905081810360008301526146ce81613fc1565b9050919050565b600060208201905081810360008301526146ee81614027565b9050919050565b6000602082019050818103600083015261470e8161408d565b9050919050565b6000602082019050818103600083015261472e816140f3565b9050919050565b6000602082019050818103600083015261474e8161417f565b9050919050565b6000602082019050818103600083015261476e816141e5565b9050919050565b6000602082019050818103600083015261478e81614225565b9050919050565b600060208201905081810360008301526147ae816142b1565b9050919050565b600060208201905081810360008301526147ce81614317565b9050919050565b600060208201905081810360008301526147ee8161437d565b9050919050565b6000602082019050818103600083015261480e816143e3565b9050919050565b6000602082019050818103600083015261482e8161446f565b9050919050565b6000602082019050818103600083015261484e816144af565b9050919050565b600060208201905061486a6000830184614515565b92915050565b600060a0820190506148856000830188614515565b6148926020830187613da1565b81810360408301526148a48186613d34565b90506148b36060830185613d25565b6148c06080830184614515565b9695505050505050565b60006020820190506148df6000830184614524565b92915050565b6000604051905081810181811067ffffffffffffffff8211171561490c5761490b614c4e565b5b8060405250919050565b600067ffffffffffffffff82111561493157614930614c4e565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006149a282614aea565b91506149ad83614aea565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156149e2576149e1614bc1565b5b828201905092915050565b60006149f882614aea565b9150614a0383614aea565b925082614a1357614a12614bf0565b5b828204905092915050565b6000614a2982614aea565b9150614a3483614aea565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614a6d57614a6c614bc1565b5b828202905092915050565b6000614a8382614aea565b9150614a8e83614aea565b925082821015614aa157614aa0614bc1565b5b828203905092915050565b6000614ab782614aca565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614b0c82614aea565b9050919050565b60005b83811015614b31578082015181840152602081019050614b16565b83811115614b40576000848401525b50505050565b60006002820490506001821680614b5e57607f821691505b60208210811415614b7257614b71614c1f565b5b50919050565b6000614b8382614aea565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614bb657614bb5614bc1565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b614c9781614aac565b8114614ca257600080fd5b50565b614cae81614abe565b8114614cb957600080fd5b50565b614cc581614aea565b8114614cd057600080fd5b5056fea26469706673582212202745b16b2eebc76d91fdddcb93bc23748be24526e8af21b977870fafd36fbc8d64736f6c63430008000033
Deployed Bytecode Sourcemap
18200:12650:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24096:301;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1633:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2565:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18816:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19053:65;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1954:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30497:116;;;;;;;;;;;;;:::i;:::-;;22463:346;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2774:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1853:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3077:240;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18737:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23846:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18777:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2070:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18518:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14995:103;;;;;;;;;;;;;:::i;:::-;;22093:86;;;;;;;;;;;;;:::i;:::-;;24467:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23064:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23348:404;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14772:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1741:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3325:438;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2205:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22882:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22245:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18611:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18686:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21249:762;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24738:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2406:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30706:104;;;;;;;;;;;;;:::i;:::-;;15106:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18653:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24096:301;14918:12;:10;:12::i;:::-;14907:23;;:7;:5;:7::i;:::-;:23;;;14899:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24176:6:::1;24171:219;24192:9;:16;24188:1;:20;24171:219;;;24250:13;;;;;;;;;;;24234:29;;:9;24244:1;24234:12;;;;;;;;;;;;;;;;;;;;;;:29;;;;:73;;;;;24291:15;;;;;;;;;;;24267:40;;:9;24277:1;24267:12;;;;;;;;;;;;;;;;;;;;;;:40;;;;24234:73;24230:149;;;24359:4;24328:14;:28;24343:9;24353:1;24343:12;;;;;;;;;;;;;;;;;;;;;;24328:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;24230:149;24210:3;;;;;:::i;:::-;;;;24171:219;;;;24096:301:::0;:::o;1633:100::-;1687:13;1720:5;1713:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1633:100;:::o;2565:201::-;2648:4;2665:13;2681:12;:10;:12::i;:::-;2665:28;;2704:32;2713:5;2720:7;2729:6;2704:8;:32::i;:::-;2754:4;2747:11;;;2565:201;;;;:::o;18816:31::-;;;;;;;;;;;;;:::o;19053:65::-;;;;:::o;1954:108::-;2015:7;2042:12;;2035:19;;1954:108;:::o;30497:116::-;30558:14;;;;;;;;;;;30550:32;;:55;30583:21;30550:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30497:116::o;22463:346::-;19808:12;:10;:12::i;:::-;19790:30;;:14;;;;;;;;;;;:30;;;:57;;;;19835:12;:10;:12::i;:::-;19824:23;;:7;:5;:7::i;:::-;:23;;;19790:57;19782:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;22627:2:::1;22582:41;22615:7;22582:28;22597:12;22582:10;:14;;:28;;;;:::i;:::-;:32;;:41;;;;:::i;:::-;:47;;22574:56;;;::::0;::::1;;22657:10;22643:11;:24;;;;22694:12;22678:13;:28;;;;22728:7;22717:8;:18;;;;22760:41;22793:7;22760:28;22775:12;22760:10;:14;;:28;;;;:::i;:::-;:32;;:41;;;;:::i;:::-;22748:9;:53;;;;22463:346:::0;;;:::o;2774:295::-;2905:4;2922:15;2940:12;:10;:12::i;:::-;2922:30;;2963:38;2979:4;2985:7;2994:6;2963:15;:38::i;:::-;3012:27;3022:4;3028:2;3032:6;3012:9;:27::i;:::-;3057:4;3050:11;;;2774:295;;;;;:::o;1853:93::-;1911:5;1936:2;1929:9;;1853:93;:::o;3077:240::-;3165:4;3182:13;3198:12;:10;:12::i;:::-;3182:28;;3221:66;3230:5;3237:7;3276:10;3246:11;:18;3258:5;3246:18;;;;;;;;;;;;;;;:27;3265:7;3246:27;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;3221:8;:66::i;:::-;3305:4;3298:11;;;3077:240;;;;:::o;18737:33::-;;;;;;;;;;;;;:::o;23846:127::-;23913:4;23937:19;:28;23957:7;23937:28;;;;;;;;;;;;;;;;;;;;;;;;;23930:35;;23846:127;;;:::o;18777:32::-;;;;;;;;;;;;;:::o;2070:127::-;2144:7;2171:9;:18;2181:7;2171:18;;;;;;;;;;;;;;;;2164:25;;2070:127;;;:::o;18518:80::-;;;;;;;;;;;;;:::o;14995:103::-;14918:12;:10;:12::i;:::-;14907:23;;:7;:5;:7::i;:::-;:23;;;14899:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15060:30:::1;15087:1;15060:18;:30::i;:::-;14995:103::o:0;22093:86::-;19808:12;:10;:12::i;:::-;19790:30;;:14;;;;;;;;;;;:30;;;:57;;;;19835:12;:10;:12::i;:::-;19824:23;;:7;:5;:7::i;:::-;:23;;;19790:57;19782:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;22166:5:::1;22149:14;;:22;;;;;;;;;;;;;;;;;;22093:86::o:0;24467:195::-;14918:12;:10;:12::i;:::-;14907:23;;:7;:5;:7::i;:::-;:23;;;14899:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24553:6:::1;24548:107;24569:9;:16;24565:1;:20;24548:107;;;24638:5;24607:14;:28;24622:9;24632:1;24622:12;;;;;;;;;;;;;;;;;;;;;;24607:28;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;24587:3;;;;;:::i;:::-;;;;24548:107;;;;24467:195:::0;:::o;23064:111::-;19808:12;:10;:12::i;:::-;19790:30;;:14;;;;;;;;;;;:30;;;:57;;;;19835:12;:10;:12::i;:::-;19824:23;;:7;:5;:7::i;:::-;:23;;;19790:57;19782:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;23158:9:::1;23141:14;;:26;;;;;;;;;;;;;;;;;;23064:111:::0;:::o;23348:404::-;23435:4;19808:12;:10;:12::i;:::-;19790:30;;:14;;;;;;;;;;;:30;;;:57;;;;19835:12;:10;:12::i;:::-;19824:23;;:7;:5;:7::i;:::-;:23;;;19790:57;19782:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;23495:6:::1;23491:1;23475:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;23459:12;:42;;23451:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;23616:4;23612:1;23596:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;23580:12;:40;;23572:108;;;;;;;;;;;;:::i;:::-;;;;;;;;;23712:12;23690:19;:34;;;;23741:4;23734:11;;23348:404:::0;;;:::o;14772:87::-;14818:7;14845:6;;;;;;;;;;;14838:13;;14772:87;:::o;1741:104::-;1797:13;1830:7;1823:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1741:104;:::o;3325:438::-;3418:4;3435:13;3451:12;:10;:12::i;:::-;3435:28;;3474:24;3501:11;:18;3513:5;3501:18;;;;;;;;;;;;;;;:27;3520:7;3501:27;;;;;;;;;;;;;;;;3474:54;;3567:15;3547:16;:35;;3539:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;3660:60;3669:5;3676:7;3704:15;3685:16;:34;3660:8;:60::i;:::-;3751:4;3744:11;;;;3325:438;;;;:::o;2205:193::-;2284:4;2301:13;2317:12;:10;:12::i;:::-;2301:28;;2340;2350:5;2357:2;2361:6;2340:9;:28::i;:::-;2386:4;2379:11;;;2205:193;;;;:::o;22882:93::-;19808:12;:10;:12::i;:::-;19790:30;;:14;;;;;;;;;;;:30;;;:57;;;;19835:12;:10;:12::i;:::-;19824:23;;:7;:5;:7::i;:::-;:23;;;19790:57;19782:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;22962:5:::1;22947:12;;:20;;;;;;;;;;;;;;;;;;22882:93:::0;:::o;22245:134::-;19808:12;:10;:12::i;:::-;19790:30;;:14;;;;;;;;;;;:30;;;:57;;;;19835:12;:10;:12::i;:::-;19824:23;;:7;:5;:7::i;:::-;:23;;;19790:57;19782:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;22363:8:::1;22332:19;:28;22352:7;22332:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;22245:134:::0;;:::o;18611:35::-;;;;:::o;18686:34::-;;;;:::o;21249:762::-;19808:12;:10;:12::i;:::-;19790:30;;:14;;;;;;;;;;;:30;;;:57;;;;19835:12;:10;:12::i;:::-;19824:23;;:7;:5;:7::i;:::-;:23;;;19790:57;19782:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;21380:15:::1;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21362:55;;;21426:4;21433:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21362:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21346:13;;:110;;;;;;;;;;;;;;;;;;21525:4;21467:31;:55;21507:13;;;;;;;;;;;21467:55;;;;;;;;;;;;;;;;:62;;;;;;;;;;;;;;;;;;21593:4;21540:26;:50;21575:13;;;;;;;;;;;21540:50;;;;;;;;;;;;;;;;:57;;;;;;;;;;;;;;;;;;21610:64;21627:4;21642:15;;;;;;;;;;;21660:13;:11;:13::i;:::-;21610:8;:64::i;:::-;21685:15;;;;;;;;;;;:31;;;21724:21;21770:4;21812:17;21806:3;21790:13;:11;:13::i;:::-;:19;;;;:::i;:::-;:39;;;;:::i;:::-;21844:1;21860::::0;21876:7:::1;:5;:7::i;:::-;21898:15;21685:239;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21950:24;21967:6;21950:12;:16;;:24;;;;:::i;:::-;21937:10;:37;;;;21999:4;21985:11;;:18;;;;;;;;;;;;;;;;;;21249:762:::0;;:::o;24738:108::-;24794:4;24818:14;:20;24833:4;24818:20;;;;;;;;;;;;;;;;;;;;;;;;;24811:27;;24738:108;;;:::o;2406:151::-;2495:7;2522:11;:18;2534:5;2522:18;;;;;;;;;;;;;;;:27;2541:7;2522:27;;;;;;;;;;;;;;;;2515:34;;2406:151;;;;:::o;30706:104::-;19808:12;:10;:12::i;:::-;19790:30;;:14;;;;;;;;;;;:30;;;:57;;;;19835:12;:10;:12::i;:::-;19824:23;;:7;:5;:7::i;:::-;:23;;;19790:57;19782:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;30759:43:::1;30777:24;30795:4;30777:9;:24::i;:::-;30759:17;:43::i;:::-;30706:104::o:0;15106:201::-;14918:12;:10;:12::i;:::-;14907:23;;:7;:5;:7::i;:::-;:23;;;14899:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15215:1:::1;15195:22;;:8;:22;;;;15187:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;15271:28;15290:8;15271:18;:28::i;:::-;15106:201:::0;:::o;18653:24::-;;;;:::o;95:98::-;148:7;175:10;168:17;;95:98;:::o;5456:380::-;5609:1;5592:19;;:5;:19;;;;5584:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5690:1;5671:21;;:7;:21;;;;5663:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5774:6;5744:11;:18;5756:5;5744:18;;;;;;;;;;;;;;;:27;5763:7;5744:27;;;;;;;;;;;;;;;:36;;;;5812:7;5796:32;;5805:5;5796:32;;;5821:6;5796:32;;;;;;:::i;:::-;;;;;;;;5456:380;;;:::o;16886:98::-;16944:7;16975:1;16971;:5;;;;:::i;:::-;16964:12;;16886:98;;;;:::o;5844:453::-;5979:24;6006:25;6016:5;6023:7;6006:9;:25::i;:::-;5979:52;;6066:17;6046:16;:37;6042:248;;6128:6;6108:16;:26;;6100:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6212:51;6221:5;6228:7;6256:6;6237:16;:25;6212:8;:51::i;:::-;6042:248;5844:453;;;;:::o;24854:3599::-;25002:1;24986:18;;:4;:18;;;;24978:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25079:1;25065:16;;:2;:16;;;;25057:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;25141:14;:20;25156:4;25141:20;;;;;;;;;;;;;;;;;;;;;;;;;25140:21;25132:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;25263:1;25253:6;:11;25249:93;;;25281:28;25297:4;25303:2;25307:1;25281:15;:28::i;:::-;25324:7;;25249:93;25376:19;:25;25396:4;25376:25;;;;;;;;;;;;;;;;;;;;;;;;;25375:26;:54;;;;;25406:19;:23;25426:2;25406:23;;;;;;;;;;;;;;;;;;;;;;;;;25405:24;25375:54;25371:224;;;25446:18;25485:8;;25467:15;25478:3;25467:6;:10;;:15;;;;:::i;:::-;:26;;;;:::i;:::-;25446:47;;25508:40;25518:4;25524:11;;;;;;;;;;;25537:10;25508:9;:40::i;:::-;25573:10;25563:20;;;;;:::i;:::-;;;25371:224;;25653:14;;;;;;;;;;;25649:1691;;;25714:7;:5;:7::i;:::-;25706:15;;:4;:15;;;;:49;;;;;25748:7;:5;:7::i;:::-;25742:13;;:2;:13;;;;25706:49;:86;;;;;25790:1;25776:16;;:2;:16;;;;25706:86;:128;;;;;25827:6;25813:21;;:2;:21;;;;25706:128;:159;;;;;25856:9;;;;;;;;;;;25855:10;25706:159;25684:1645;;;25905:11;;;;;;;;;;;25900:117;;25926:19;:25;25946:4;25926:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;25955:19;:23;25975:2;25955:23;;;;;;;;;;;;;;;;;;;;;;;;;25926:52;25918:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;25900:117;26054:12;26040:10;;:26;26036:57;;26089:4;26068:14;:18;26083:2;26068:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;26036:57;26124:7;:5;:7::i;:::-;26118:13;;:2;:13;;;;:47;;;;;26149:15;;;;;;;;;;;26135:30;;:2;:30;;;;26118:47;:79;;;;;26183:13;;;;;;;;;;;26169:28;;:2;:28;;;;26118:79;26114:336;;;26267:12;26229:24;:35;26254:9;26229:35;;;;;;;;;;;;;;;;:50;26221:136;;;;;;;;;;;;:::i;:::-;;;;;;;;;26418:12;26380:24;:35;26405:9;26380:35;;;;;;;;;;;;;;;:50;;;;26114:336;26501:26;:32;26528:4;26501:32;;;;;;;;;;;;;;;;;;;;;;;;;:72;;;;;26538:31;:35;26570:2;26538:35;;;;;;;;;;;;;;;;;;;;;;;;;26537:36;26501:72;26497:817;;;26616:20;;26606:6;:30;;26598:108;;;;;;;;;;;;:::i;:::-;;;;;;;;;26763:9;;26746:13;26756:2;26746:9;:13::i;:::-;26737:6;:22;;;;:::i;:::-;:35;;26729:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;26497:817;;;26901:26;:30;26928:2;26901:30;;;;;;;;;;;;;;;;;;;;;;;;;:72;;;;;26936:31;:37;26968:4;26936:37;;;;;;;;;;;;;;;;;;;;;;;;;26935:38;26901:72;26897:417;;;27016:20;;27006:6;:30;;26998:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;26897:417;;;27155:31;:35;27187:2;27155:35;;;;;;;;;;;;;;;;;;;;;;;;;27150:164;;27249:9;;27232:13;27242:2;27232:9;:13::i;:::-;27223:6;:22;;;;:::i;:::-;:35;;27215:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;27150:164;26897:417;26497:817;25684:1645;25649:1691;27379:9;;;;;;;;;;;27378:10;:60;;;;;27406:26;:32;27433:4;27406:32;;;;;;;;;;;;;;;;;;;;;;;;;27405:33;27378:60;:103;;;;;27456:19;:25;27476:4;27456:25;;;;;;;;;;;;;;;;;;;;;;;;;27455:26;27378:103;:144;;;;;27499:19;:23;27519:2;27499:23;;;;;;;;;;;;;;;;;;;;;;;;;27498:24;27378:144;27360:274;;;27561:4;27549:9;;:16;;;;;;;;;;;;;;;;;;27580:10;:8;:10::i;:::-;27617:5;27605:9;;:17;;;;;;;;;;;;;;;;;;27360:274;27646:12;27662:9;;;;;;;;;;;27661:10;27646:25;;27792:12;;;;;;;;;;;:54;;;;27821:19;:25;27841:4;27821:25;;;;;;;;;;;;;;;;;;;;;;;;;27792:54;:95;;;;27864:19;:23;27884:2;27864:23;;;;;;;;;;;;;;;;;;;;;;;;;27792:95;:183;;;;27907:26;:32;27934:4;27907:32;;;;;;;;;;;;;;;;;;;;;;;;;27906:33;:68;;;;;27944:26;:30;27971:2;27944:30;;;;;;;;;;;;;;;;;;;;;;;;;27943:31;27906:68;27792:183;27774:228;;;27997:5;27987:15;;27774:228;28023:12;28054:7;28050:350;;;28085:30;28111:3;28085:21;28096:9;;28085:6;:10;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;28078:37;;28178:9;;28162:13;;28155:4;:20;;;;:::i;:::-;:32;;;;:::i;:::-;28132:19;;:55;;;;;;;:::i;:::-;;;;;;;;28244:9;;28230:11;;28223:4;:18;;;;:::i;:::-;:30;;;;:::i;:::-;28202:17;;:51;;;;;;;:::i;:::-;;;;;;;;28281:1;28274:4;:8;28270:91;;;28303:42;28319:4;28333;28340;28303:15;:42::i;:::-;28270:91;28384:4;28374:14;;;;;:::i;:::-;;;28050:350;28412:33;28428:4;28434:2;28438:6;28412:15;:33::i;:::-;24854:3599;;;;;;:::o;15315:191::-;15389:16;15408:6;;;;;;;;;;;15389:25;;15434:8;15425:6;;:17;;;;;;;;;;;;;;;;;;15489:8;15458:40;;15479:8;15458:40;;;;;;;;;;;;15315:191;;:::o;28461:477::-;28529:21;28567:1;28553:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28529:40;;28598:4;28580;28585:1;28580:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;28624:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28614:4;28619:1;28614:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;28659:62;28676:4;28691:15;;;;;;;;;;;28709:11;28659:8;:62::i;:::-;28734:15;;;;;;;;;;;:66;;;28815:11;28841:1;28857:4;28884;28904:15;28734:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28461:477;;:::o;3771:671::-;3918:1;3902:18;;:4;:18;;;;3894:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3995:1;3981:16;;:2;:16;;;;3973:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;4050:38;4071:4;4077:2;4081:6;4050:20;:38::i;:::-;4101:19;4123:9;:15;4133:4;4123:15;;;;;;;;;;;;;;;;4101:37;;4172:6;4157:11;:21;;4149:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;4289:6;4275:11;:20;4257:9;:15;4267:4;4257:15;;;;;;;;;;;;;;;:38;;;;4334:6;4317:9;:13;4327:2;4317:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;4373:2;4358:26;;4367:4;4358:26;;;4377:6;4358:26;;;;;;:::i;:::-;;;;;;;;4397:37;4417:4;4423:2;4427:6;4397:19;:37::i;:::-;3771:671;;;;:::o;17204:98::-;17262:7;17293:1;17289;:5;;;;:::i;:::-;17282:12;;17204:98;;;;:::o;29325:1102::-;29365:23;29391:24;29409:4;29391:9;:24::i;:::-;29365:50;;29426:25;29476:17;;29454:19;;:39;;;;:::i;:::-;29426:67;;29529:1;29510:15;:20;29506:33;;;29532:7;;;;29506:33;29571:19;;29553:15;:37;29549:80;;;29610:19;;29592:37;;29549:80;29642:23;29728:1;29708:17;29686:19;;29668:15;:37;;;;:::i;:::-;:57;;;;:::i;:::-;:61;;;;:::i;:::-;29642:87;;29740:26;29769:36;29789:15;29769;:19;;:36;;;;:::i;:::-;29740:65;;29818:25;29846:21;29818:49;;29880:37;29898:18;29880:17;:37::i;:::-;29938:18;29959:44;29985:17;29959:21;:25;;:44;;;;:::i;:::-;29938:65;;30014:21;30038:56;30076:17;30038:33;30053:17;;30038:10;:14;;:33;;;;:::i;:::-;:37;;:56;;;;:::i;:::-;30014:80;;30105:23;30144:13;30131:10;:26;;;;:::i;:::-;30105:52;;30190:1;30170:17;:21;;;;30224:1;30202:19;:23;;;;30246:14;;;;;;;;;;;30238:32;;:47;30271:13;30238:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30320:1;30302:15;:19;:42;;;;;30343:1;30325:15;:19;30302:42;30298:122;;;30361:47;30375:15;30392;30361:13;:47::i;:::-;30298:122;29325:1102;;;;;;;;;:::o;17098:98::-;17156:7;17187:1;17183;:5;;;;:::i;:::-;17176:12;;17098:98;;;;:::o;6305:125::-;;;;:::o;6438:124::-;;;;:::o;16992:98::-;17050:7;17081:1;17077;:5;;;;:::i;:::-;17070:12;;16992:98;;;;:::o;28946:371::-;29029:62;29046:4;29061:15;;;;;;;;;;;29079:11;29029:8;:62::i;:::-;29104:15;;;;;;;;;;;:31;;;29143:9;29176:4;29196:11;29222:1;29238;29254:14;;;;;;;;;;;29283:15;29104:205;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28946:371;;:::o;24:622:1:-;;145:80;160:64;217:6;160:64;:::i;:::-;145:80;:::i;:::-;136:89;;245:5;273:6;266:5;259:21;299:4;292:5;288:16;281:23;;324:6;374:3;366:4;358:6;354:17;349:3;345:27;342:36;339:2;;;391:1;388;381:12;339:2;419:1;404:236;429:6;426:1;423:13;404:236;;;496:3;524:37;557:3;545:10;524:37;:::i;:::-;519:3;512:50;591:4;586:3;582:14;575:21;;625:4;620:3;616:14;609:21;;464:176;451:1;448;444:9;439:14;;404:236;;;408:14;126:520;;;;;;;:::o;652:139::-;;736:6;723:20;714:29;;752:33;779:5;752:33;:::i;:::-;704:87;;;;:::o;797:143::-;;885:6;879:13;870:22;;901:33;928:5;901:33;:::i;:::-;860:80;;;;:::o;963:303::-;;1083:3;1076:4;1068:6;1064:17;1060:27;1050:2;;1101:1;1098;1091:12;1050:2;1141:6;1128:20;1166:94;1256:3;1248:6;1241:4;1233:6;1229:17;1166:94;:::i;:::-;1157:103;;1040:226;;;;;:::o;1272:133::-;;1353:6;1340:20;1331:29;;1369:30;1393:5;1369:30;:::i;:::-;1321:84;;;;:::o;1411:139::-;;1495:6;1482:20;1473:29;;1511:33;1538:5;1511:33;:::i;:::-;1463:87;;;;:::o;1556:143::-;;1644:6;1638:13;1629:22;;1660:33;1687:5;1660:33;:::i;:::-;1619:80;;;;:::o;1705:262::-;;1813:2;1801:9;1792:7;1788:23;1784:32;1781:2;;;1829:1;1826;1819:12;1781:2;1872:1;1897:53;1942:7;1933:6;1922:9;1918:22;1897:53;:::i;:::-;1887:63;;1843:117;1771:196;;;;:::o;1973:284::-;;2092:2;2080:9;2071:7;2067:23;2063:32;2060:2;;;2108:1;2105;2098:12;2060:2;2151:1;2176:64;2232:7;2223:6;2212:9;2208:22;2176:64;:::i;:::-;2166:74;;2122:128;2050:207;;;;:::o;2263:407::-;;;2388:2;2376:9;2367:7;2363:23;2359:32;2356:2;;;2404:1;2401;2394:12;2356:2;2447:1;2472:53;2517:7;2508:6;2497:9;2493:22;2472:53;:::i;:::-;2462:63;;2418:117;2574:2;2600:53;2645:7;2636:6;2625:9;2621:22;2600:53;:::i;:::-;2590:63;;2545:118;2346:324;;;;;:::o;2676:552::-;;;;2818:2;2806:9;2797:7;2793:23;2789:32;2786:2;;;2834:1;2831;2824:12;2786:2;2877:1;2902:53;2947:7;2938:6;2927:9;2923:22;2902:53;:::i;:::-;2892:63;;2848:117;3004:2;3030:53;3075:7;3066:6;3055:9;3051:22;3030:53;:::i;:::-;3020:63;;2975:118;3132:2;3158:53;3203:7;3194:6;3183:9;3179:22;3158:53;:::i;:::-;3148:63;;3103:118;2776:452;;;;;:::o;3234:401::-;;;3356:2;3344:9;3335:7;3331:23;3327:32;3324:2;;;3372:1;3369;3362:12;3324:2;3415:1;3440:53;3485:7;3476:6;3465:9;3461:22;3440:53;:::i;:::-;3430:63;;3386:117;3542:2;3568:50;3610:7;3601:6;3590:9;3586:22;3568:50;:::i;:::-;3558:60;;3513:115;3314:321;;;;;:::o;3641:407::-;;;3766:2;3754:9;3745:7;3741:23;3737:32;3734:2;;;3782:1;3779;3772:12;3734:2;3825:1;3850:53;3895:7;3886:6;3875:9;3871:22;3850:53;:::i;:::-;3840:63;;3796:117;3952:2;3978:53;4023:7;4014:6;4003:9;3999:22;3978:53;:::i;:::-;3968:63;;3923:118;3724:324;;;;;:::o;4054:405::-;;4187:2;4175:9;4166:7;4162:23;4158:32;4155:2;;;4203:1;4200;4193:12;4155:2;4274:1;4263:9;4259:17;4246:31;4304:18;4296:6;4293:30;4290:2;;;4336:1;4333;4326:12;4290:2;4364:78;4434:7;4425:6;4414:9;4410:22;4364:78;:::i;:::-;4354:88;;4217:235;4145:314;;;;:::o;4465:256::-;;4570:2;4558:9;4549:7;4545:23;4541:32;4538:2;;;4586:1;4583;4576:12;4538:2;4629:1;4654:50;4696:7;4687:6;4676:9;4672:22;4654:50;:::i;:::-;4644:60;;4600:114;4528:193;;;;:::o;4727:262::-;;4835:2;4823:9;4814:7;4810:23;4806:32;4803:2;;;4851:1;4848;4841:12;4803:2;4894:1;4919:53;4964:7;4955:6;4944:9;4940:22;4919:53;:::i;:::-;4909:63;;4865:117;4793:196;;;;:::o;4995:407::-;;;5120:2;5108:9;5099:7;5095:23;5091:32;5088:2;;;5136:1;5133;5126:12;5088:2;5179:1;5204:53;5249:7;5240:6;5229:9;5225:22;5204:53;:::i;:::-;5194:63;;5150:117;5306:2;5332:53;5377:7;5368:6;5357:9;5353:22;5332:53;:::i;:::-;5322:63;;5277:118;5078:324;;;;;:::o;5408:552::-;;;;5550:2;5538:9;5529:7;5525:23;5521:32;5518:2;;;5566:1;5563;5556:12;5518:2;5609:1;5634:53;5679:7;5670:6;5659:9;5655:22;5634:53;:::i;:::-;5624:63;;5580:117;5736:2;5762:53;5807:7;5798:6;5787:9;5783:22;5762:53;:::i;:::-;5752:63;;5707:118;5864:2;5890:53;5935:7;5926:6;5915:9;5911:22;5890:53;:::i;:::-;5880:63;;5835:118;5508:452;;;;;:::o;5966:596::-;;;;6119:2;6107:9;6098:7;6094:23;6090:32;6087:2;;;6135:1;6132;6125:12;6087:2;6178:1;6203:64;6259:7;6250:6;6239:9;6235:22;6203:64;:::i;:::-;6193:74;;6149:128;6316:2;6342:64;6398:7;6389:6;6378:9;6374:22;6342:64;:::i;:::-;6332:74;;6287:129;6455:2;6481:64;6537:7;6528:6;6517:9;6513:22;6481:64;:::i;:::-;6471:74;;6426:129;6077:485;;;;;:::o;6568:179::-;;6658:46;6700:3;6692:6;6658:46;:::i;:::-;6736:4;6731:3;6727:14;6713:28;;6648:99;;;;:::o;6753:108::-;6830:24;6848:5;6830:24;:::i;:::-;6825:3;6818:37;6808:53;;:::o;6867:118::-;6954:24;6972:5;6954:24;:::i;:::-;6949:3;6942:37;6932:53;;:::o;7021:732::-;;7169:54;7217:5;7169:54;:::i;:::-;7239:86;7318:6;7313:3;7239:86;:::i;:::-;7232:93;;7349:56;7399:5;7349:56;:::i;:::-;7428:7;7459:1;7444:284;7469:6;7466:1;7463:13;7444:284;;;7545:6;7539:13;7572:63;7631:3;7616:13;7572:63;:::i;:::-;7565:70;;7658:60;7711:6;7658:60;:::i;:::-;7648:70;;7504:224;7491:1;7488;7484:9;7479:14;;7444:284;;;7448:14;7744:3;7737:10;;7145:608;;;;;;;:::o;7759:109::-;7840:21;7855:5;7840:21;:::i;:::-;7835:3;7828:34;7818:50;;:::o;7874:147::-;7969:45;8008:5;7969:45;:::i;:::-;7964:3;7957:58;7947:74;;:::o;8027:364::-;;8143:39;8176:5;8143:39;:::i;:::-;8198:71;8262:6;8257:3;8198:71;:::i;:::-;8191:78;;8278:52;8323:6;8318:3;8311:4;8304:5;8300:16;8278:52;:::i;:::-;8355:29;8377:6;8355:29;:::i;:::-;8350:3;8346:39;8339:46;;8119:272;;;;;:::o;8397:367::-;;8560:67;8624:2;8619:3;8560:67;:::i;:::-;8553:74;;8657:34;8653:1;8648:3;8644:11;8637:55;8723:5;8718:2;8713:3;8709:12;8702:27;8755:2;8750:3;8746:12;8739:19;;8543:221;;;:::o;8770:370::-;;8933:67;8997:2;8992:3;8933:67;:::i;:::-;8926:74;;9030:34;9026:1;9021:3;9017:11;9010:55;9096:8;9091:2;9086:3;9082:12;9075:30;9131:2;9126:3;9122:12;9115:19;;8916:224;;;:::o;9146:366::-;;9309:67;9373:2;9368:3;9309:67;:::i;:::-;9302:74;;9406:34;9402:1;9397:3;9393:11;9386:55;9472:4;9467:2;9462:3;9458:12;9451:26;9503:2;9498:3;9494:12;9487:19;;9292:220;;;:::o;9518:327::-;;9681:67;9745:2;9740:3;9681:67;:::i;:::-;9674:74;;9778:31;9774:1;9769:3;9765:11;9758:52;9836:2;9831:3;9827:12;9820:19;;9664:181;;;:::o;9851:370::-;;10014:67;10078:2;10073:3;10014:67;:::i;:::-;10007:74;;10111:34;10107:1;10102:3;10098:11;10091:55;10177:8;10172:2;10167:3;10163:12;10156:30;10212:2;10207:3;10203:12;10196:19;;9997:224;;;:::o;10227:387::-;;10390:67;10454:2;10449:3;10390:67;:::i;:::-;10383:74;;10487:34;10483:1;10478:3;10474:11;10467:55;10553:25;10548:2;10543:3;10539:12;10532:47;10605:2;10600:3;10596:12;10589:19;;10373:241;;;:::o;10620:388::-;;10783:67;10847:2;10842:3;10783:67;:::i;:::-;10776:74;;10880:34;10876:1;10871:3;10867:11;10860:55;10946:26;10941:2;10936:3;10932:12;10925:48;10999:2;10994:3;10990:12;10983:19;;10766:242;;;:::o;11014:383::-;;11177:67;11241:2;11236:3;11177:67;:::i;:::-;11170:74;;11274:34;11270:1;11265:3;11261:11;11254:55;11340:21;11335:2;11330:3;11326:12;11319:43;11388:2;11383:3;11379:12;11372:19;;11160:237;;;:::o;11403:439::-;;11566:67;11630:2;11625:3;11566:67;:::i;:::-;11559:74;;11663:34;11659:1;11654:3;11650:11;11643:55;11729:34;11724:2;11719:3;11715:12;11708:56;11795:11;11790:2;11785:3;11781:12;11774:33;11833:2;11828:3;11824:12;11817:19;;11549:293;;;:::o;11848:366::-;;12011:67;12075:2;12070:3;12011:67;:::i;:::-;12004:74;;12108:34;12104:1;12099:3;12095:11;12088:55;12174:4;12169:2;12164:3;12160:12;12153:26;12205:2;12200:3;12196:12;12189:19;;11994:220;;;:::o;12220:330::-;;12383:67;12447:2;12442:3;12383:67;:::i;:::-;12376:74;;12480:34;12476:1;12471:3;12467:11;12460:55;12541:2;12536:3;12532:12;12525:19;;12366:184;;;:::o;12556:432::-;;12719:67;12783:2;12778:3;12719:67;:::i;:::-;12712:74;;12816:34;12812:1;12807:3;12803:11;12796:55;12882:34;12877:2;12872:3;12868:12;12861:56;12948:4;12943:2;12938:3;12934:12;12927:26;12979:2;12974:3;12970:12;12963:19;;12702:286;;;:::o;12994:369::-;;13157:67;13221:2;13216:3;13157:67;:::i;:::-;13150:74;;13254:34;13250:1;13245:3;13241:11;13234:55;13320:7;13315:2;13310:3;13306:12;13299:29;13354:2;13349:3;13345:12;13338:19;;13140:223;;;:::o;13369:394::-;;13532:67;13596:2;13591:3;13532:67;:::i;:::-;13525:74;;13629:34;13625:1;13620:3;13616:11;13609:55;13695:32;13690:2;13685:3;13681:12;13674:54;13754:2;13749:3;13745:12;13738:19;;13515:248;;;:::o;13769:368::-;;13932:67;13996:2;13991:3;13932:67;:::i;:::-;13925:74;;14029:34;14025:1;14020:3;14016:11;14009:55;14095:6;14090:2;14085:3;14081:12;14074:28;14128:2;14123:3;14119:12;14112:19;;13915:222;;;:::o;14143:431::-;;14306:67;14370:2;14365:3;14306:67;:::i;:::-;14299:74;;14403:34;14399:1;14394:3;14390:11;14383:55;14469:34;14464:2;14459:3;14455:12;14448:56;14535:3;14530:2;14525:3;14521:12;14514:25;14565:2;14560:3;14556:12;14549:19;;14289:285;;;:::o;14580:329::-;;14743:67;14807:2;14802:3;14743:67;:::i;:::-;14736:74;;14840:33;14836:1;14831:3;14827:11;14820:54;14900:2;14895:3;14891:12;14884:19;;14726:183;;;:::o;14915:369::-;;15078:67;15142:2;15137:3;15078:67;:::i;:::-;15071:74;;15175:34;15171:1;15166:3;15162:11;15155:55;15241:7;15236:2;15231:3;15227:12;15220:29;15275:2;15270:3;15266:12;15259:19;;15061:223;;;:::o;15290:118::-;15377:24;15395:5;15377:24;:::i;:::-;15372:3;15365:37;15355:53;;:::o;15414:112::-;15497:22;15513:5;15497:22;:::i;:::-;15492:3;15485:35;15475:51;;:::o;15532:222::-;;15663:2;15652:9;15648:18;15640:26;;15676:71;15744:1;15733:9;15729:17;15720:6;15676:71;:::i;:::-;15630:124;;;;:::o;15760:332::-;;15919:2;15908:9;15904:18;15896:26;;15932:71;16000:1;15989:9;15985:17;15976:6;15932:71;:::i;:::-;16013:72;16081:2;16070:9;16066:18;16057:6;16013:72;:::i;:::-;15886:206;;;;;:::o;16098:807::-;;16385:3;16374:9;16370:19;16362:27;;16399:71;16467:1;16456:9;16452:17;16443:6;16399:71;:::i;:::-;16480:72;16548:2;16537:9;16533:18;16524:6;16480:72;:::i;:::-;16562:80;16638:2;16627:9;16623:18;16614:6;16562:80;:::i;:::-;16652;16728:2;16717:9;16713:18;16704:6;16652:80;:::i;:::-;16742:73;16810:3;16799:9;16795:19;16786:6;16742:73;:::i;:::-;16825;16893:3;16882:9;16878:19;16869:6;16825:73;:::i;:::-;16352:553;;;;;;;;;:::o;16911:210::-;;17036:2;17025:9;17021:18;17013:26;;17049:65;17111:1;17100:9;17096:17;17087:6;17049:65;:::i;:::-;17003:118;;;;:::o;17127:313::-;;17278:2;17267:9;17263:18;17255:26;;17327:9;17321:4;17317:20;17313:1;17302:9;17298:17;17291:47;17355:78;17428:4;17419:6;17355:78;:::i;:::-;17347:86;;17245:195;;;;:::o;17446:419::-;;17650:2;17639:9;17635:18;17627:26;;17699:9;17693:4;17689:20;17685:1;17674:9;17670:17;17663:47;17727:131;17853:4;17727:131;:::i;:::-;17719:139;;17617:248;;;:::o;17871:419::-;;18075:2;18064:9;18060:18;18052:26;;18124:9;18118:4;18114:20;18110:1;18099:9;18095:17;18088:47;18152:131;18278:4;18152:131;:::i;:::-;18144:139;;18042:248;;;:::o;18296:419::-;;18500:2;18489:9;18485:18;18477:26;;18549:9;18543:4;18539:20;18535:1;18524:9;18520:17;18513:47;18577:131;18703:4;18577:131;:::i;:::-;18569:139;;18467:248;;;:::o;18721:419::-;;18925:2;18914:9;18910:18;18902:26;;18974:9;18968:4;18964:20;18960:1;18949:9;18945:17;18938:47;19002:131;19128:4;19002:131;:::i;:::-;18994:139;;18892:248;;;:::o;19146:419::-;;19350:2;19339:9;19335:18;19327:26;;19399:9;19393:4;19389:20;19385:1;19374:9;19370:17;19363:47;19427:131;19553:4;19427:131;:::i;:::-;19419:139;;19317:248;;;:::o;19571:419::-;;19775:2;19764:9;19760:18;19752:26;;19824:9;19818:4;19814:20;19810:1;19799:9;19795:17;19788:47;19852:131;19978:4;19852:131;:::i;:::-;19844:139;;19742:248;;;:::o;19996:419::-;;20200:2;20189:9;20185:18;20177:26;;20249:9;20243:4;20239:20;20235:1;20224:9;20220:17;20213:47;20277:131;20403:4;20277:131;:::i;:::-;20269:139;;20167:248;;;:::o;20421:419::-;;20625:2;20614:9;20610:18;20602:26;;20674:9;20668:4;20664:20;20660:1;20649:9;20645:17;20638:47;20702:131;20828:4;20702:131;:::i;:::-;20694:139;;20592:248;;;:::o;20846:419::-;;21050:2;21039:9;21035:18;21027:26;;21099:9;21093:4;21089:20;21085:1;21074:9;21070:17;21063:47;21127:131;21253:4;21127:131;:::i;:::-;21119:139;;21017:248;;;:::o;21271:419::-;;21475:2;21464:9;21460:18;21452:26;;21524:9;21518:4;21514:20;21510:1;21499:9;21495:17;21488:47;21552:131;21678:4;21552:131;:::i;:::-;21544:139;;21442:248;;;:::o;21696:419::-;;21900:2;21889:9;21885:18;21877:26;;21949:9;21943:4;21939:20;21935:1;21924:9;21920:17;21913:47;21977:131;22103:4;21977:131;:::i;:::-;21969:139;;21867:248;;;:::o;22121:419::-;;22325:2;22314:9;22310:18;22302:26;;22374:9;22368:4;22364:20;22360:1;22349:9;22345:17;22338:47;22402:131;22528:4;22402:131;:::i;:::-;22394:139;;22292:248;;;:::o;22546:419::-;;22750:2;22739:9;22735:18;22727:26;;22799:9;22793:4;22789:20;22785:1;22774:9;22770:17;22763:47;22827:131;22953:4;22827:131;:::i;:::-;22819:139;;22717:248;;;:::o;22971:419::-;;23175:2;23164:9;23160:18;23152:26;;23224:9;23218:4;23214:20;23210:1;23199:9;23195:17;23188:47;23252:131;23378:4;23252:131;:::i;:::-;23244:139;;23142:248;;;:::o;23396:419::-;;23600:2;23589:9;23585:18;23577:26;;23649:9;23643:4;23639:20;23635:1;23624:9;23620:17;23613:47;23677:131;23803:4;23677:131;:::i;:::-;23669:139;;23567:248;;;:::o;23821:419::-;;24025:2;24014:9;24010:18;24002:26;;24074:9;24068:4;24064:20;24060:1;24049:9;24045:17;24038:47;24102:131;24228:4;24102:131;:::i;:::-;24094:139;;23992:248;;;:::o;24246:419::-;;24450:2;24439:9;24435:18;24427:26;;24499:9;24493:4;24489:20;24485:1;24474:9;24470:17;24463:47;24527:131;24653:4;24527:131;:::i;:::-;24519:139;;24417:248;;;:::o;24671:419::-;;24875:2;24864:9;24860:18;24852:26;;24924:9;24918:4;24914:20;24910:1;24899:9;24895:17;24888:47;24952:131;25078:4;24952:131;:::i;:::-;24944:139;;24842:248;;;:::o;25096:222::-;;25227:2;25216:9;25212:18;25204:26;;25240:71;25308:1;25297:9;25293:17;25284:6;25240:71;:::i;:::-;25194:124;;;;:::o;25324:831::-;;25625:3;25614:9;25610:19;25602:27;;25639:71;25707:1;25696:9;25692:17;25683:6;25639:71;:::i;:::-;25720:80;25796:2;25785:9;25781:18;25772:6;25720:80;:::i;:::-;25847:9;25841:4;25837:20;25832:2;25821:9;25817:18;25810:48;25875:108;25978:4;25969:6;25875:108;:::i;:::-;25867:116;;25993:72;26061:2;26050:9;26046:18;26037:6;25993:72;:::i;:::-;26075:73;26143:3;26132:9;26128:19;26119:6;26075:73;:::i;:::-;25592:563;;;;;;;;:::o;26161:214::-;;26288:2;26277:9;26273:18;26265:26;;26301:67;26365:1;26354:9;26350:17;26341:6;26301:67;:::i;:::-;26255:120;;;;:::o;26381:283::-;;26447:2;26441:9;26431:19;;26489:4;26481:6;26477:17;26596:6;26584:10;26581:22;26560:18;26548:10;26545:34;26542:62;26539:2;;;26607:18;;:::i;:::-;26539:2;26647:10;26643:2;26636:22;26421:243;;;;:::o;26670:311::-;;26837:18;26829:6;26826:30;26823:2;;;26859:18;;:::i;:::-;26823:2;26909:4;26901:6;26897:17;26889:25;;26969:4;26963;26959:15;26951:23;;26752:229;;;:::o;26987:132::-;;27077:3;27069:11;;27107:4;27102:3;27098:14;27090:22;;27059:60;;;:::o;27125:114::-;;27226:5;27220:12;27210:22;;27199:40;;;:::o;27245:99::-;;27331:5;27325:12;27315:22;;27304:40;;;:::o;27350:113::-;;27452:4;27447:3;27443:14;27435:22;;27425:38;;;:::o;27469:184::-;;27602:6;27597:3;27590:19;27642:4;27637:3;27633:14;27618:29;;27580:73;;;;:::o;27659:169::-;;27777:6;27772:3;27765:19;27817:4;27812:3;27808:14;27793:29;;27755:73;;;;:::o;27834:305::-;;27893:20;27911:1;27893:20;:::i;:::-;27888:25;;27927:20;27945:1;27927:20;:::i;:::-;27922:25;;28081:1;28013:66;28009:74;28006:1;28003:81;28000:2;;;28087:18;;:::i;:::-;28000:2;28131:1;28128;28124:9;28117:16;;27878:261;;;;:::o;28145:185::-;;28202:20;28220:1;28202:20;:::i;:::-;28197:25;;28236:20;28254:1;28236:20;:::i;:::-;28231:25;;28275:1;28265:2;;28280:18;;:::i;:::-;28265:2;28322:1;28319;28315:9;28310:14;;28187:143;;;;:::o;28336:348::-;;28399:20;28417:1;28399:20;:::i;:::-;28394:25;;28433:20;28451:1;28433:20;:::i;:::-;28428:25;;28621:1;28553:66;28549:74;28546:1;28543:81;28538:1;28531:9;28524:17;28520:105;28517:2;;;28628:18;;:::i;:::-;28517:2;28676:1;28673;28669:9;28658:20;;28384:300;;;;:::o;28690:191::-;;28750:20;28768:1;28750:20;:::i;:::-;28745:25;;28784:20;28802:1;28784:20;:::i;:::-;28779:25;;28823:1;28820;28817:8;28814:2;;;28828:18;;:::i;:::-;28814:2;28873:1;28870;28866:9;28858:17;;28735:146;;;;:::o;28887:96::-;;28953:24;28971:5;28953:24;:::i;:::-;28942:35;;28932:51;;;:::o;28989:90::-;;29066:5;29059:13;29052:21;29041:32;;29031:48;;;:::o;29085:126::-;;29162:42;29155:5;29151:54;29140:65;;29130:81;;;:::o;29217:77::-;;29283:5;29272:16;;29262:32;;;:::o;29300:86::-;;29375:4;29368:5;29364:16;29353:27;;29343:43;;;:::o;29392:121::-;;29483:24;29501:5;29483:24;:::i;:::-;29470:37;;29460:53;;;:::o;29519:307::-;29587:1;29597:113;29611:6;29608:1;29605:13;29597:113;;;29696:1;29691:3;29687:11;29681:18;29677:1;29672:3;29668:11;29661:39;29633:2;29630:1;29626:10;29621:15;;29597:113;;;29728:6;29725:1;29722:13;29719:2;;;29808:1;29799:6;29794:3;29790:16;29783:27;29719:2;29568:258;;;;:::o;29832:320::-;;29913:1;29907:4;29903:12;29893:22;;29960:1;29954:4;29950:12;29981:18;29971:2;;30037:4;30029:6;30025:17;30015:27;;29971:2;30099;30091:6;30088:14;30068:18;30065:38;30062:2;;;30118:18;;:::i;:::-;30062:2;29883:269;;;;:::o;30158:233::-;;30220:24;30238:5;30220:24;:::i;:::-;30211:33;;30266:66;30259:5;30256:77;30253:2;;;30336:18;;:::i;:::-;30253:2;30383:1;30376:5;30372:13;30365:20;;30201:190;;;:::o;30397:180::-;30445:77;30442:1;30435:88;30542:4;30539:1;30532:15;30566:4;30563:1;30556:15;30583:180;30631:77;30628:1;30621:88;30728:4;30725:1;30718:15;30752:4;30749:1;30742:15;30769:180;30817:77;30814:1;30807:88;30914:4;30911:1;30904:15;30938:4;30935:1;30928:15;30955:180;31003:77;31000:1;30993:88;31100:4;31097:1;31090:15;31124:4;31121:1;31114:15;31141:102;;31233:2;31229:7;31224:2;31217:5;31213:14;31209:28;31199:38;;31189:54;;;:::o;31249:122::-;31322:24;31340:5;31322:24;:::i;:::-;31315:5;31312:35;31302:2;;31361:1;31358;31351:12;31302:2;31292:79;:::o;31377:116::-;31447:21;31462:5;31447:21;:::i;:::-;31440:5;31437:32;31427:2;;31483:1;31480;31473:12;31427:2;31417:76;:::o;31499:122::-;31572:24;31590:5;31572:24;:::i;:::-;31565:5;31562:35;31552:2;;31611:1;31608;31601:12;31552:2;31542:79;:::o
Swarm Source
ipfs://2745b16b2eebc76d91fdddcb93bc23748be24526e8af21b977870fafd36fbc8d
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $2,451.14 | 0.174 | $426.42 |
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.