ERC-20
Overview
Max Total Supply
1,000,000,000,000 CLIFFORK
Holders
17
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
3,548,826,030.304353230861939935 CLIFFORKValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
CliffordFork
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-12-19 */ /** *Submitted for verification at Etherscan.io on 2021-12-15 */ // SPDX-License-Identifier: MIT pragma solidity 0.8.9; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } 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 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 IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ 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); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be to transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // 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 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } } library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); /** * @dev Multiplies two int256 variables and fails on overflow. */ function mul(int256 a, int256 b) internal pure returns (int256) { int256 c = a * b; // Detect overflow when multiplying MIN_INT256 with -1 require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } /** * @dev Division of two int256 variables and fails on overflow. */ function div(int256 a, int256 b) internal pure returns (int256) { // Prevent overflow when dividing MIN_INT256 by -1 require(b != -1 || a != MIN_INT256); // Solidity already throws when dividing by 0. return a / b; } /** * @dev Subtracts two int256 variables and fails on overflow. */ function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } /** * @dev Adds two int256 variables and fails on overflow. */ function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } /** * @dev Converts to absolute value, and fails on overflow. */ function abs(int256 a) internal pure returns (int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } function toUint256Safe(int256 a) internal pure returns (uint256) { require(a >= 0); return uint256(a); } } library SafeMathUint { function toInt256Safe(uint256 a) internal pure returns (int256) { int256 b = int256(a); require(b >= 0); return b; } } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract CliffordFork is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; address public constant deadAddress = address(0xdead); bool private swapping; address public marketingWallet; address public devWallet; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; uint256 public percentForLPBurn = 50; // 25 = .25% bool public lpBurnEnabled = true; uint256 public lpBurnFrequency = 100 seconds; uint256 public lastLpBurnTime; uint256 public manualBurnFrequency = 1 minutes; uint256 public lastManualLpBurnTime; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; // Anti-bot and anti-whale mappings and variables mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch bool public transferDelayEnabled = true; uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyLiquidityFee; uint256 public buyDevFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public sellLiquidityFee; uint256 public sellDevFee; uint256 public tokensForMarketing; uint256 public tokensForLiquidity; uint256 public tokensForDev; /******************/ // exlcude from fees and max transaction amount mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public _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) public automatedMarketMakerPairs; event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet); event devWalletUpdated(address indexed newWallet, address indexed oldWallet); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event AutoNukeLP(); event ManualNukeLP(); constructor() ERC20("Clifford Fork", "CLIFFORK") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 _buyMarketingFee = 4; uint256 _buyLiquidityFee = 10; uint256 _buyDevFee = 1; uint256 _sellMarketingFee = 5; uint256 _sellLiquidityFee = 14; uint256 _sellDevFee = 1; uint256 totalSupply = 1 * 1e12 * 1e18; maxTransactionAmount = totalSupply * 50 / 1000; // 0.1% maxTransactionAmountTxn maxWallet = totalSupply * 50 / 1000; // .5% maxWallet swapTokensAtAmount = totalSupply * 500 / 10000; // 0.05% swap wallet buyMarketingFee = _buyMarketingFee; buyLiquidityFee = _buyLiquidityFee; buyDevFee = _buyDevFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee; sellMarketingFee = _sellMarketingFee; sellLiquidityFee = _sellLiquidityFee; sellDevFee = _sellDevFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; marketingWallet = address(owner()); // set as marketing wallet devWallet = address(owner()); // set as dev wallet // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(msg.sender, totalSupply); } receive() external payable { } // once enabled, can never be turned off function enableTrading() external onlyOwner { tradingActive = true; swapEnabled = true; lastLpBurnTime = block.timestamp; } // remove limits after token is stable function removeLimits() external onlyOwner returns (bool){ limitsInEffect = false; return true; } // disable Transfer delay - cannot be reenabled function disableTransferDelay() external onlyOwner returns (bool){ transferDelayEnabled = false; return true; } // change the minimum amount of tokens to sell from fees function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){ require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply."); require(newAmount <= totalSupply() * 5 / 1000, "Swap amount cannot be higher than 0.5% total supply."); swapTokensAtAmount = newAmount; return true; } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set maxTransactionAmount lower than 0.1%"); maxTransactionAmount = newNum * (10**18); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxWallet lower than 0.5%"); maxWallet = newNum * (10**18); } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner(){ swapEnabled = enabled; } function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner { buyMarketingFee = _marketingFee; buyLiquidityFee = _liquidityFee; buyDevFee = _devFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee; require(buyTotalFees <= 20, "Must keep fees at 20% or less"); } function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner { sellMarketingFee = _marketingFee; sellLiquidityFee = _liquidityFee; sellDevFee = _devFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; require(sellTotalFees <= 25, "Must keep fees at 25% or less"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updateMarketingWallet(address newMarketingWallet) external onlyOwner { emit marketingWalletUpdated(newMarketingWallet, marketingWallet); marketingWallet = newMarketingWallet; } function updateDevWallet(address newWallet) external onlyOwner { emit devWalletUpdated(newWallet, devWallet); devWallet = newWallet; } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } event BoughtEarly(address indexed sniper); 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"); if(amount == 0) { super._transfer(from, to, 0); return; } if(limitsInEffect){ if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ){ if(!tradingActive){ require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active."); } // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. if (transferDelayEnabled){ if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){ require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed."); _holderLastTransferTimestamp[tx.origin] = block.number; } } //when buy if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount."); require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } //when sell else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount."); } else if(!_isExcludedMaxTransactionAmount[to]){ require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } if(!swapping && automatedMarketMakerPairs[to] && lpBurnEnabled && block.timestamp >= lastLpBurnTime + lpBurnFrequency && !_isExcludedFromFees[from]){ autoBurnLiquidityPairTokens(); } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if(takeFee){ // on sell if (automatedMarketMakerPairs[to] && sellTotalFees > 0){ fees = amount.mul(sellTotalFees).div(100); tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees; tokensForDev += fees * sellDevFee / sellTotalFees; tokensForMarketing += fees * sellMarketingFee / sellTotalFees; } // on buy else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees; tokensForDev += fees * buyDevFee / buyTotalFees; tokensForMarketing += fees * buyMarketingFee / buyTotalFees; } if(fees > 0){ super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable deadAddress, block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev; bool success; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} if(contractBalance > swapTokensAtAmount * 20){ contractBalance = swapTokensAtAmount * 20; } // Halve the amount of liquidity tokens 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 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap); uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev; tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDev = 0; (success,) = address(devWallet).call{value: ethForDev}(""); if(liquidityTokens > 0 && ethForLiquidity > 0){ addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity); } (success,) = address(marketingWallet).call{value: address(this).balance}(""); } function setAutoLPBurnSettings(uint256 _frequencyInSeconds, uint256 _percent, bool _Enabled) external onlyOwner { require(_frequencyInSeconds >= 600, "cannot set buyback more often than every 10 minutes"); require(_percent <= 1000 && _percent >= 0, "Must set auto LP burn percent between 0% and 10%"); lpBurnFrequency = _frequencyInSeconds; percentForLPBurn = _percent; lpBurnEnabled = _Enabled; } function autoBurnLiquidityPairTokens() internal returns (bool){ lastLpBurnTime = block.timestamp; // get balance of liquidity pair uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair); // calculate amount to burn uint256 amountToBurn = liquidityPairBalance.mul(percentForLPBurn).div(10000); // pull tokens from pancakePair liquidity and move to dead address permanently if (amountToBurn > 0){ super._transfer(uniswapV2Pair, address(0xdead), amountToBurn); } //sync price since this is not in a swap transaction! IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair); pair.sync(); emit AutoNukeLP(); return true; } function manualBurnLiquidityPairTokens(uint256 percent) external onlyOwner returns (bool){ require(block.timestamp > lastManualLpBurnTime + manualBurnFrequency , "Must wait for cooldown to finish"); require(percent <= 1000, "May not nuke more than 10% of tokens in LP"); lastManualLpBurnTime = block.timestamp; // get balance of liquidity pair uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair); // calculate amount to burn uint256 amountToBurn = liquidityPairBalance.mul(percent).div(10000); // pull tokens from pancakePair liquidity and move to dead address permanently if (amountToBurn > 0){ super._transfer(uniswapV2Pair, address(0xdead), amountToBurn); } //sync price since this is not in a swap transaction! IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair); pair.sync(); emit ManualNukeLP(); return true; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"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":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","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":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastManualLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnLiquidityPairTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","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":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526032600b556001600c60006101000a81548160ff0219169083151502179055506064600d55603c600f556001601160006101000a81548160ff0219169083151502179055506000601160016101000a81548160ff0219169083151502179055506000601160026101000a81548160ff0219169083151502179055506001601360006101000a81548160ff021916908315150217905550348015620000a757600080fd5b506040518060400160405280600d81526020017f436c6966666f726420466f726b000000000000000000000000000000000000008152506040518060400160405280600881526020017f434c4946464f524b00000000000000000000000000000000000000000000000081525081600390805190602001906200012c92919062000bee565b5080600490805190602001906200014592919062000bee565b50505060006200015a620006ba60201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d905062000225816001620006c260201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002a057600080fd5b505afa158015620002b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002db919062000d08565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200033e57600080fd5b505afa15801562000353573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000379919062000d08565b6040518363ffffffff1660e01b81526004016200039892919062000d4b565b602060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ee919062000d08565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200043660a0516001620006c260201b60201c565b6200044b60a0516001620007bf60201b60201c565b6000600490506000600a90506000600190506000600590506000600e905060006001905060006c0c9f2c9cd04674edea4000000090506103e860328262000493919062000db1565b6200049f919062000e41565b6008819055506103e8603282620004b7919062000db1565b620004c3919062000e41565b600a819055506127106101f482620004dc919062000db1565b620004e8919062000e41565b60098190555086601581905550856016819055508460178190555060175460165460155462000518919062000e79565b62000524919062000e79565b6014819055508360198190555082601a8190555081601b81905550601b54601a5460195462000554919062000e79565b62000560919062000e79565b601881905550620005766200086060201b60201c565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005c66200086060201b60201c565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620006286200061a6200086060201b60201c565b60016200088a60201b60201c565b6200063b3060016200088a60201b60201c565b6200065061dead60016200088a60201b60201c565b62000672620006646200086060201b60201c565b6001620006c260201b60201c565b62000685306001620006c260201b60201c565b6200069a61dead6001620006c260201b60201c565b620006ac3382620009d760201b60201c565b50505050505050506200110a565b600033905090565b620006d2620006ba60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000764576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200075b9062000f37565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200089a620006ba60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200092c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009239062000f37565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620009cb919062000f76565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000a4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a419062000fe3565b60405180910390fd5b62000a5e6000838362000b8660201b60201c565b62000a7a8160025462000b8b60201b620028961790919060201c565b60028190555062000ad8816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000b8b60201b620028961790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b7a919062001016565b60405180910390a35050565b505050565b600080828462000b9c919062000e79565b90508381101562000be4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bdb9062001083565b60405180910390fd5b8091505092915050565b82805462000bfc90620010d4565b90600052602060002090601f01602090048101928262000c20576000855562000c6c565b82601f1062000c3b57805160ff191683800117855562000c6c565b8280016001018555821562000c6c579182015b8281111562000c6b57825182559160200191906001019062000c4e565b5b50905062000c7b919062000c7f565b5090565b5b8082111562000c9a57600081600090555060010162000c80565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000cd08262000ca3565b9050919050565b62000ce28162000cc3565b811462000cee57600080fd5b50565b60008151905062000d028162000cd7565b92915050565b60006020828403121562000d215762000d2062000c9e565b5b600062000d318482850162000cf1565b91505092915050565b62000d458162000cc3565b82525050565b600060408201905062000d62600083018562000d3a565b62000d71602083018462000d3a565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000dbe8262000d78565b915062000dcb8362000d78565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000e075762000e0662000d82565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e4e8262000d78565b915062000e5b8362000d78565b92508262000e6e5762000e6d62000e12565b5b828204905092915050565b600062000e868262000d78565b915062000e938362000d78565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000ecb5762000eca62000d82565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000f1f60208362000ed6565b915062000f2c8262000ee7565b602082019050919050565b6000602082019050818103600083015262000f528162000f10565b9050919050565b60008115159050919050565b62000f708162000f59565b82525050565b600060208201905062000f8d600083018462000f65565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000fcb601f8362000ed6565b915062000fd88262000f93565b602082019050919050565b6000602082019050818103600083015262000ffe8162000fbc565b9050919050565b620010108162000d78565b82525050565b60006020820190506200102d600083018462001005565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006200106b601b8362000ed6565b9150620010788262001033565b602082019050919050565b600060208201905081810360008301526200109e816200105c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620010ed57607f821691505b60208210811415620011045762001103620010a5565b5b50919050565b60805160a051615c7b62001192600039600081816113b501528181611bf9015281816126ea015281816127b0015281816127dd01528181612e7f01528181613fce0152818161409601526140c3015260008181610f3a01528181612e27015281816142cb015281816143bb015281816143e20152818161447e01526144a50152615c7b6000f3fe60806040526004361061039b5760003560e01c80638da5cb5b116101dc578063bbc0c74211610102578063d85ba063116100a0578063f11a24d31161006f578063f11a24d314610dab578063f637434214610dd6578063f8b45b0514610e01578063fe72b27a14610e2c576103a2565b8063d85ba06314610ced578063dd62ed3e14610d18578063e2f4560514610d55578063e884f26014610d80576103a2565b8063c18bc195116100dc578063c18bc19514610c31578063c876d0b914610c5a578063c8c8ebe414610c85578063d257b34f14610cb0576103a2565b8063bbc0c74214610bb4578063c024666814610bdf578063c17b5b8c14610c08576103a2565b80639ec22c0e1161017a578063a4c82a0011610149578063a4c82a0014610ae6578063a9059cbb14610b11578063aacebbe314610b4e578063b62496f514610b77576103a2565b80639ec22c0e14610a285780639fccce3214610a53578063a0d82dc514610a7e578063a457c2d714610aa9576103a2565b8063924de9b7116101b6578063924de9b71461098057806395d89b41146109a95780639a7a23d6146109d45780639c3b4fdc146109fd576103a2565b80638da5cb5b146108ff5780638ea5220f1461092a5780639213691314610955576103a2565b8063313ce567116102c157806370a082311161025f57806375f0a8741161022e57806375f0a874146108695780637bce5a04146108945780638095d564146108bf5780638a8c523c146108e8576103a2565b806370a08231146107af578063730c1888146107ec578063751039fc146108155780637571336a14610840576103a2565b80634a62bb651161029b5780634a62bb65146106f15780634fbee1931461071c5780636a486a8e146107595780636ddd171314610784576103a2565b8063313ce5671461065e578063395093511461068957806349bd5a5e146106c6576103a2565b8063199ffc721161033957806323b872dd1161030857806323b872dd146105a057806327c8f835146105dd5780632c3e486c146106085780632e82f1a014610633576103a2565b8063199ffc72146104f65780631a8145bb146105215780631f3fed8f1461054c578063203e727e14610577576103a2565b80631694505e116103755780631694505e1461044c57806318160ddd146104775780631816467f146104a2578063184c16c5146104cb576103a2565b806306fdde03146103a7578063095ea7b3146103d257806310d5de531461040f576103a2565b366103a257005b600080fd5b3480156103b357600080fd5b506103bc610e69565b6040516103c991906145fc565b60405180910390f35b3480156103de57600080fd5b506103f960048036038101906103f491906146b7565b610efb565b6040516104069190614712565b60405180910390f35b34801561041b57600080fd5b506104366004803603810190610431919061472d565b610f19565b6040516104439190614712565b60405180910390f35b34801561045857600080fd5b50610461610f38565b60405161046e91906147b9565b60405180910390f35b34801561048357600080fd5b5061048c610f5c565b60405161049991906147e3565b60405180910390f35b3480156104ae57600080fd5b506104c960048036038101906104c4919061472d565b610f66565b005b3480156104d757600080fd5b506104e06110bd565b6040516104ed91906147e3565b60405180910390f35b34801561050257600080fd5b5061050b6110c3565b60405161051891906147e3565b60405180910390f35b34801561052d57600080fd5b506105366110c9565b60405161054391906147e3565b60405180910390f35b34801561055857600080fd5b506105616110cf565b60405161056e91906147e3565b60405180910390f35b34801561058357600080fd5b5061059e600480360381019061059991906147fe565b6110d5565b005b3480156105ac57600080fd5b506105c760048036038101906105c2919061482b565b6111ff565b6040516105d49190614712565b60405180910390f35b3480156105e957600080fd5b506105f26112d8565b6040516105ff919061488d565b60405180910390f35b34801561061457600080fd5b5061061d6112de565b60405161062a91906147e3565b60405180910390f35b34801561063f57600080fd5b506106486112e4565b6040516106559190614712565b60405180910390f35b34801561066a57600080fd5b506106736112f7565b60405161068091906148c4565b60405180910390f35b34801561069557600080fd5b506106b060048036038101906106ab91906146b7565b611300565b6040516106bd9190614712565b60405180910390f35b3480156106d257600080fd5b506106db6113b3565b6040516106e8919061488d565b60405180910390f35b3480156106fd57600080fd5b506107066113d7565b6040516107139190614712565b60405180910390f35b34801561072857600080fd5b50610743600480360381019061073e919061472d565b6113ea565b6040516107509190614712565b60405180910390f35b34801561076557600080fd5b5061076e611440565b60405161077b91906147e3565b60405180910390f35b34801561079057600080fd5b50610799611446565b6040516107a69190614712565b60405180910390f35b3480156107bb57600080fd5b506107d660048036038101906107d1919061472d565b611459565b6040516107e391906147e3565b60405180910390f35b3480156107f857600080fd5b50610813600480360381019061080e919061490b565b6114a1565b005b34801561082157600080fd5b5061082a6115fc565b6040516108379190614712565b60405180910390f35b34801561084c57600080fd5b506108676004803603810190610862919061495e565b6116b7565b005b34801561087557600080fd5b5061087e6117a9565b60405161088b919061488d565b60405180910390f35b3480156108a057600080fd5b506108a96117cf565b6040516108b691906147e3565b60405180910390f35b3480156108cb57600080fd5b506108e660048036038101906108e1919061499e565b6117d5565b005b3480156108f457600080fd5b506108fd6118ee565b005b34801561090b57600080fd5b506109146119c4565b604051610921919061488d565b60405180910390f35b34801561093657600080fd5b5061093f6119ee565b60405161094c919061488d565b60405180910390f35b34801561096157600080fd5b5061096a611a14565b60405161097791906147e3565b60405180910390f35b34801561098c57600080fd5b506109a760048036038101906109a291906149f1565b611a1a565b005b3480156109b557600080fd5b506109be611ace565b6040516109cb91906145fc565b60405180910390f35b3480156109e057600080fd5b506109fb60048036038101906109f6919061495e565b611b60565b005b348015610a0957600080fd5b50610a12611c94565b604051610a1f91906147e3565b60405180910390f35b348015610a3457600080fd5b50610a3d611c9a565b604051610a4a91906147e3565b60405180910390f35b348015610a5f57600080fd5b50610a68611ca0565b604051610a7591906147e3565b60405180910390f35b348015610a8a57600080fd5b50610a93611ca6565b604051610aa091906147e3565b60405180910390f35b348015610ab557600080fd5b50610ad06004803603810190610acb91906146b7565b611cac565b604051610add9190614712565b60405180910390f35b348015610af257600080fd5b50610afb611d79565b604051610b0891906147e3565b60405180910390f35b348015610b1d57600080fd5b50610b386004803603810190610b3391906146b7565b611d7f565b604051610b459190614712565b60405180910390f35b348015610b5a57600080fd5b50610b756004803603810190610b70919061472d565b611d9d565b005b348015610b8357600080fd5b50610b9e6004803603810190610b99919061472d565b611ef4565b604051610bab9190614712565b60405180910390f35b348015610bc057600080fd5b50610bc9611f14565b604051610bd69190614712565b60405180910390f35b348015610beb57600080fd5b50610c066004803603810190610c01919061495e565b611f27565b005b348015610c1457600080fd5b50610c2f6004803603810190610c2a919061499e565b612067565b005b348015610c3d57600080fd5b50610c586004803603810190610c5391906147fe565b612181565b005b348015610c6657600080fd5b50610c6f6122ab565b604051610c7c9190614712565b60405180910390f35b348015610c9157600080fd5b50610c9a6122be565b604051610ca791906147e3565b60405180910390f35b348015610cbc57600080fd5b50610cd76004803603810190610cd291906147fe565b6122c4565b604051610ce49190614712565b60405180910390f35b348015610cf957600080fd5b50610d02612434565b604051610d0f91906147e3565b60405180910390f35b348015610d2457600080fd5b50610d3f6004803603810190610d3a9190614a1e565b61243a565b604051610d4c91906147e3565b60405180910390f35b348015610d6157600080fd5b50610d6a6124c1565b604051610d7791906147e3565b60405180910390f35b348015610d8c57600080fd5b50610d956124c7565b604051610da29190614712565b60405180910390f35b348015610db757600080fd5b50610dc0612582565b604051610dcd91906147e3565b60405180910390f35b348015610de257600080fd5b50610deb612588565b604051610df891906147e3565b60405180910390f35b348015610e0d57600080fd5b50610e1661258e565b604051610e2391906147e3565b60405180910390f35b348015610e3857600080fd5b50610e536004803603810190610e4e91906147fe565b612594565b604051610e609190614712565b60405180910390f35b606060038054610e7890614a8d565b80601f0160208091040260200160405190810160405280929190818152602001828054610ea490614a8d565b8015610ef15780601f10610ec657610100808354040283529160200191610ef1565b820191906000526020600020905b815481529060010190602001808311610ed457829003601f168201915b5050505050905090565b6000610f0f610f086128f4565b84846128fc565b6001905092915050565b602080528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610f6e6128f4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ffd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff490614b0b565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b600b5481565b601d5481565b601c5481565b6110dd6128f4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461116c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116390614b0b565b60405180910390fd5b670de0b6b3a76400006103e86001611182610f5c565b61118c9190614b5a565b6111969190614be3565b6111a09190614be3565b8110156111e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d990614c86565b60405180910390fd5b670de0b6b3a7640000816111f69190614b5a565b60088190555050565b600061120c848484612ac7565b6112cd846112186128f4565b6112c885604051806060016040528060288152602001615bf960289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061127e6128f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461385f9092919063ffffffff16565b6128fc565b600190509392505050565b61dead81565b600d5481565b600c60009054906101000a900460ff1681565b60006012905090565b60006113a961130d6128f4565b846113a4856001600061131e6128f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461289690919063ffffffff16565b6128fc565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601160009054906101000a900460ff1681565b6000601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60185481565b601160029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114a96128f4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152f90614b0b565b60405180910390fd5b61025883101561157d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157490614d18565b60405180910390fd5b6103e88211158015611590575060008210155b6115cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c690614daa565b60405180910390fd5b82600d8190555081600b8190555080600c60006101000a81548160ff021916908315150217905550505050565b60006116066128f4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611695576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168c90614b0b565b60405180910390fd5b6000601160006101000a81548160ff0219169083151502179055506001905090565b6116bf6128f4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461174e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174590614b0b565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b6117dd6128f4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461186c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186390614b0b565b60405180910390fd5b8260158190555081601681905550806017819055506017546016546015546118949190614dca565b61189e9190614dca565b6014819055506014805411156118e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e090614e6c565b60405180910390fd5b505050565b6118f66128f4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611985576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197c90614b0b565b60405180910390fd5b6001601160016101000a81548160ff0219169083151502179055506001601160026101000a81548160ff02191690831515021790555042600e81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b611a226128f4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ab1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa890614b0b565b60405180910390fd5b80601160026101000a81548160ff02191690831515021790555050565b606060048054611add90614a8d565b80601f0160208091040260200160405190810160405280929190818152602001828054611b0990614a8d565b8015611b565780601f10611b2b57610100808354040283529160200191611b56565b820191906000526020600020905b815481529060010190602001808311611b3957829003601f168201915b5050505050905090565b611b686128f4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bee90614b0b565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7d90614efe565b60405180910390fd5b611c9082826138c3565b5050565b60175481565b60105481565b601e5481565b601b5481565b6000611d6f611cb96128f4565b84611d6a85604051806060016040528060258152602001615c216025913960016000611ce36128f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461385f9092919063ffffffff16565b6128fc565b6001905092915050565b600e5481565b6000611d93611d8c6128f4565b8484612ac7565b6001905092915050565b611da56128f4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2b90614b0b565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60216020528060005260406000206000915054906101000a900460ff1681565b601160019054906101000a900460ff1681565b611f2f6128f4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb590614b0b565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161205b9190614712565b60405180910390a25050565b61206f6128f4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f590614b0b565b60405180910390fd5b8260198190555081601a8190555080601b81905550601b54601a546019546121269190614dca565b6121309190614dca565b6018819055506019601854111561217c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217390614f6a565b60405180910390fd5b505050565b6121896128f4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220f90614b0b565b60405180910390fd5b670de0b6b3a76400006103e8600561222e610f5c565b6122389190614b5a565b6122429190614be3565b61224c9190614be3565b81101561228e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228590614ffc565b60405180910390fd5b670de0b6b3a7640000816122a29190614b5a565b600a8190555050565b601360009054906101000a900460ff1681565b60085481565b60006122ce6128f4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461235d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235490614b0b565b60405180910390fd5b620186a0600161236b610f5c565b6123759190614b5a565b61237f9190614be3565b8210156123c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b89061508e565b60405180910390fd5b6103e860056123ce610f5c565b6123d89190614b5a565b6123e29190614be3565b821115612424576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241b90615120565b60405180910390fd5b8160098190555060019050919050565b60145481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b60006124d16128f4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612560576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255790614b0b565b60405180910390fd5b6000601360006101000a81548160ff0219169083151502179055506001905090565b60165481565b601a5481565b600a5481565b600061259e6128f4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461262d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262490614b0b565b60405180910390fd5b600f5460105461263d9190614dca565b421161267e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126759061518c565b60405180910390fd5b6103e88211156126c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ba9061521e565b60405180910390fd5b4260108190555060003073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401612725919061488d565b60206040518083038186803b15801561273d57600080fd5b505afa158015612751573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127759190615253565b905060006127a0612710612792868561396490919063ffffffff16565b6139df90919063ffffffff16565b905060008111156127d9576127d87f000000000000000000000000000000000000000000000000000000000000000061dead83613a29565b5b60007f000000000000000000000000000000000000000000000000000000000000000090508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561284657600080fd5b505af115801561285a573d6000803e3d6000fd5b505050507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb60405160405180910390a160019350505050919050565b60008082846128a59190614dca565b9050838110156128ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e1906152cc565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561296c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129639061535e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d3906153f0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612aba91906147e3565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2e90615482565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ba7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9e90615514565b60405180910390fd5b6000811415612bc157612bbc83836000613a29565b61385a565b601160009054906101000a900460ff161561328457612bde6119c4565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612c4c5750612c1c6119c4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c855750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612cbf575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612cd85750600560149054906101000a900460ff16155b1561328357601160019054906101000a900460ff16612dd257601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d925750601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612dd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dc890615580565b60405180910390fd5b5b601360009054906101000a900460ff1615612f9a57612def6119c4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612e7657507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ece57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612f995743601260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612f54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4b90615638565b60405180910390fd5b43601260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561303d5750602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156130e457600854811115613087576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161307e906156ca565b60405180910390fd5b600a5461309383611459565b8261309e9190614dca565b11156130df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130d690615736565b60405180910390fd5b613282565b602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131875750602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131d6576008548111156131d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131c8906157c8565b60405180910390fd5b613281565b602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661328057600a5461323383611459565b8261323e9190614dca565b111561327f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161327690615736565b60405180910390fd5b5b5b5b5b5b600061328f30611459565b9050600060095482101590508080156132b45750601160029054906101000a900460ff165b80156132cd5750600560149054906101000a900460ff16155b80156133235750602160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133795750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133cf5750601f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613413576001600560146101000a81548160ff0219169083151502179055506133f7613cbe565b6000600560146101000a81548160ff0219169083151502179055505b600560149054906101000a900460ff161580156134795750602160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80156134915750600c60009054906101000a900460ff165b80156134ac5750600d54600e546134a89190614dca565b4210155b80156135025750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156135115761350f613fa5565b505b6000600560149054906101000a900460ff16159050601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806135c75750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156135d157600090505b6000811561384a57602160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561363457506000601854115b156137015761366160646136536018548861396490919063ffffffff16565b6139df90919063ffffffff16565b9050601854601a54826136749190614b5a565b61367e9190614be3565b601d600082825461368f9190614dca565b92505081905550601854601b54826136a79190614b5a565b6136b19190614be3565b601e60008282546136c29190614dca565b92505081905550601854601954826136da9190614b5a565b6136e49190614be3565b601c60008282546136f59190614dca565b92505081905550613826565b602160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561375c57506000601454115b1561382557613789606461377b6014548861396490919063ffffffff16565b6139df90919063ffffffff16565b90506014546016548261379c9190614b5a565b6137a69190614be3565b601d60008282546137b79190614dca565b92505081905550601454601754826137cf9190614b5a565b6137d99190614be3565b601e60008282546137ea9190614dca565b92505081905550601454601554826138029190614b5a565b61380c9190614be3565b601c600082825461381d9190614dca565b925050819055505b5b600081111561383b5761383a873083613a29565b5b808561384791906157e8565b94505b613855878787613a29565b505050505b505050565b60008383111582906138a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161389e91906145fc565b60405180910390fd5b50600083856138b691906157e8565b9050809150509392505050565b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60008083141561397757600090506139d9565b600082846139859190614b5a565b90508284826139949190614be3565b146139d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139cb9061588e565b60405180910390fd5b809150505b92915050565b6000613a2183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061417a565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613a99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a9090615482565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613b09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b0090615514565b60405180910390fd5b613b148383836141dd565b613b7f81604051806060016040528060268152602001615bd3602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461385f9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c12816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461289690919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613cb191906147e3565b60405180910390a3505050565b6000613cc930611459565b90506000601e54601c54601d54613ce09190614dca565b613cea9190614dca565b9050600080831480613cfc5750600082145b15613d0957505050613fa3565b6014600954613d189190614b5a565b831115613d31576014600954613d2e9190614b5a565b92505b6000600283601d5486613d449190614b5a565b613d4e9190614be3565b613d589190614be3565b90506000613d6f82866141e290919063ffffffff16565b90506000479050613d7f8261422c565b6000613d9482476141e290919063ffffffff16565b90506000613dbf87613db1601c548561396490919063ffffffff16565b6139df90919063ffffffff16565b90506000613dea88613ddc601e548661396490919063ffffffff16565b6139df90919063ffffffff16565b90506000818385613dfb91906157e8565b613e0591906157e8565b90506000601d819055506000601c819055506000601e81905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613e65906158df565b60006040518083038185875af1925050503d8060008114613ea2576040519150601f19603f3d011682016040523d82523d6000602084013e613ea7565b606091505b505080985050600087118015613ebd5750600081115b15613f0a57613ecc8782614478565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601d54604051613f01939291906158f4565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613f50906158df565b60006040518083038185875af1925050503d8060008114613f8d576040519150601f19603f3d011682016040523d82523d6000602084013e613f92565b606091505b505080985050505050505050505050505b565b600042600e8190555060003073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401614009919061488d565b60206040518083038186803b15801561402157600080fd5b505afa158015614035573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140599190615253565b90506000614086612710614078600b548561396490919063ffffffff16565b6139df90919063ffffffff16565b905060008111156140bf576140be7f000000000000000000000000000000000000000000000000000000000000000061dead83613a29565b5b60007f000000000000000000000000000000000000000000000000000000000000000090508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561412c57600080fd5b505af1158015614140573d6000803e3d6000fd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a16001935050505090565b600080831182906141c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016141b891906145fc565b60405180910390fd5b50600083856141d09190614be3565b9050809150509392505050565b505050565b600061422483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061385f565b905092915050565b6000600267ffffffffffffffff8111156142495761424861592b565b5b6040519080825280602002602001820160405280156142775781602001602082028036833780820191505090505b509050308160008151811061428f5761428e61595a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561432f57600080fd5b505afa158015614343573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614367919061599e565b8160018151811061437b5761437a61595a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506143e0307f0000000000000000000000000000000000000000000000000000000000000000846128fc565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614442959493929190615ac4565b600060405180830381600087803b15801561445c57600080fd5b505af1158015614470573d6000803e3d6000fd5b505050505050565b6144a3307f0000000000000000000000000000000000000000000000000000000000000000846128fc565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161450a96959493929190615b1e565b6060604051808303818588803b15801561452357600080fd5b505af1158015614537573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061455c9190615b7f565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561459d578082015181840152602081019050614582565b838111156145ac576000848401525b50505050565b6000601f19601f8301169050919050565b60006145ce82614563565b6145d8818561456e565b93506145e881856020860161457f565b6145f1816145b2565b840191505092915050565b6000602082019050818103600083015261461681846145c3565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061464e82614623565b9050919050565b61465e81614643565b811461466957600080fd5b50565b60008135905061467b81614655565b92915050565b6000819050919050565b61469481614681565b811461469f57600080fd5b50565b6000813590506146b18161468b565b92915050565b600080604083850312156146ce576146cd61461e565b5b60006146dc8582860161466c565b92505060206146ed858286016146a2565b9150509250929050565b60008115159050919050565b61470c816146f7565b82525050565b60006020820190506147276000830184614703565b92915050565b6000602082840312156147435761474261461e565b5b60006147518482850161466c565b91505092915050565b6000819050919050565b600061477f61477a61477584614623565b61475a565b614623565b9050919050565b600061479182614764565b9050919050565b60006147a382614786565b9050919050565b6147b381614798565b82525050565b60006020820190506147ce60008301846147aa565b92915050565b6147dd81614681565b82525050565b60006020820190506147f860008301846147d4565b92915050565b6000602082840312156148145761481361461e565b5b6000614822848285016146a2565b91505092915050565b6000806000606084860312156148445761484361461e565b5b60006148528682870161466c565b93505060206148638682870161466c565b9250506040614874868287016146a2565b9150509250925092565b61488781614643565b82525050565b60006020820190506148a2600083018461487e565b92915050565b600060ff82169050919050565b6148be816148a8565b82525050565b60006020820190506148d960008301846148b5565b92915050565b6148e8816146f7565b81146148f357600080fd5b50565b600081359050614905816148df565b92915050565b6000806000606084860312156149245761492361461e565b5b6000614932868287016146a2565b9350506020614943868287016146a2565b9250506040614954868287016148f6565b9150509250925092565b600080604083850312156149755761497461461e565b5b60006149838582860161466c565b9250506020614994858286016148f6565b9150509250929050565b6000806000606084860312156149b7576149b661461e565b5b60006149c5868287016146a2565b93505060206149d6868287016146a2565b92505060406149e7868287016146a2565b9150509250925092565b600060208284031215614a0757614a0661461e565b5b6000614a15848285016148f6565b91505092915050565b60008060408385031215614a3557614a3461461e565b5b6000614a438582860161466c565b9250506020614a548582860161466c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614aa557607f821691505b60208210811415614ab957614ab8614a5e565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614af560208361456e565b9150614b0082614abf565b602082019050919050565b60006020820190508181036000830152614b2481614ae8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614b6582614681565b9150614b7083614681565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614ba957614ba8614b2b565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614bee82614681565b9150614bf983614681565b925082614c0957614c08614bb4565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614c70602f8361456e565b9150614c7b82614c14565b604082019050919050565b60006020820190508181036000830152614c9f81614c63565b9050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b6000614d0260338361456e565b9150614d0d82614ca6565b604082019050919050565b60006020820190508181036000830152614d3181614cf5565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b6000614d9460308361456e565b9150614d9f82614d38565b604082019050919050565b60006020820190508181036000830152614dc381614d87565b9050919050565b6000614dd582614681565b9150614de083614681565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614e1557614e14614b2b565b5b828201905092915050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b6000614e56601d8361456e565b9150614e6182614e20565b602082019050919050565b60006020820190508181036000830152614e8581614e49565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614ee860398361456e565b9150614ef382614e8c565b604082019050919050565b60006020820190508181036000830152614f1781614edb565b9050919050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b6000614f54601d8361456e565b9150614f5f82614f1e565b602082019050919050565b60006020820190508181036000830152614f8381614f47565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614fe660248361456e565b9150614ff182614f8a565b604082019050919050565b6000602082019050818103600083015261501581614fd9565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061507860358361456e565b91506150838261501c565b604082019050919050565b600060208201905081810360008301526150a78161506b565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b600061510a60348361456e565b9150615115826150ae565b604082019050919050565b60006020820190508181036000830152615139816150fd565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b600061517660208361456e565b915061518182615140565b602082019050919050565b600060208201905081810360008301526151a581615169565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b6000615208602a8361456e565b9150615213826151ac565b604082019050919050565b60006020820190508181036000830152615237816151fb565b9050919050565b60008151905061524d8161468b565b92915050565b6000602082840312156152695761526861461e565b5b60006152778482850161523e565b91505092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006152b6601b8361456e565b91506152c182615280565b602082019050919050565b600060208201905081810360008301526152e5816152a9565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061534860248361456e565b9150615353826152ec565b604082019050919050565b600060208201905081810360008301526153778161533b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006153da60228361456e565b91506153e58261537e565b604082019050919050565b60006020820190508181036000830152615409816153cd565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061546c60258361456e565b915061547782615410565b604082019050919050565b6000602082019050818103600083015261549b8161545f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006154fe60238361456e565b9150615509826154a2565b604082019050919050565b6000602082019050818103600083015261552d816154f1565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061556a60168361456e565b915061557582615534565b602082019050919050565b600060208201905081810360008301526155998161555d565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b600061562260498361456e565b915061562d826155a0565b606082019050919050565b6000602082019050818103600083015261565181615615565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006156b460358361456e565b91506156bf82615658565b604082019050919050565b600060208201905081810360008301526156e3816156a7565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061572060138361456e565b915061572b826156ea565b602082019050919050565b6000602082019050818103600083015261574f81615713565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006157b260368361456e565b91506157bd82615756565b604082019050919050565b600060208201905081810360008301526157e1816157a5565b9050919050565b60006157f382614681565b91506157fe83614681565b92508282101561581157615810614b2b565b5b828203905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061587860218361456e565b91506158838261581c565b604082019050919050565b600060208201905081810360008301526158a78161586b565b9050919050565b600081905092915050565b50565b60006158c96000836158ae565b91506158d4826158b9565b600082019050919050565b60006158ea826158bc565b9150819050919050565b600060608201905061590960008301866147d4565b61591660208301856147d4565b61592360408301846147d4565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061599881614655565b92915050565b6000602082840312156159b4576159b361461e565b5b60006159c284828501615989565b91505092915050565b6000819050919050565b60006159f06159eb6159e6846159cb565b61475a565b614681565b9050919050565b615a00816159d5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615a3b81614643565b82525050565b6000615a4d8383615a32565b60208301905092915050565b6000602082019050919050565b6000615a7182615a06565b615a7b8185615a11565b9350615a8683615a22565b8060005b83811015615ab7578151615a9e8882615a41565b9750615aa983615a59565b925050600181019050615a8a565b5085935050505092915050565b600060a082019050615ad960008301886147d4565b615ae660208301876159f7565b8181036040830152615af88186615a66565b9050615b07606083018561487e565b615b1460808301846147d4565b9695505050505050565b600060c082019050615b33600083018961487e565b615b4060208301886147d4565b615b4d60408301876159f7565b615b5a60608301866159f7565b615b67608083018561487e565b615b7460a08301846147d4565b979650505050505050565b600080600060608486031215615b9857615b9761461e565b5b6000615ba68682870161523e565b9350506020615bb78682870161523e565b9250506040615bc88682870161523e565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206c4799e73db895ab0d559f0eff890632cc45cc5c789263c340d399fa24947e2564736f6c63430008090033
Deployed Bytecode
0x60806040526004361061039b5760003560e01c80638da5cb5b116101dc578063bbc0c74211610102578063d85ba063116100a0578063f11a24d31161006f578063f11a24d314610dab578063f637434214610dd6578063f8b45b0514610e01578063fe72b27a14610e2c576103a2565b8063d85ba06314610ced578063dd62ed3e14610d18578063e2f4560514610d55578063e884f26014610d80576103a2565b8063c18bc195116100dc578063c18bc19514610c31578063c876d0b914610c5a578063c8c8ebe414610c85578063d257b34f14610cb0576103a2565b8063bbc0c74214610bb4578063c024666814610bdf578063c17b5b8c14610c08576103a2565b80639ec22c0e1161017a578063a4c82a0011610149578063a4c82a0014610ae6578063a9059cbb14610b11578063aacebbe314610b4e578063b62496f514610b77576103a2565b80639ec22c0e14610a285780639fccce3214610a53578063a0d82dc514610a7e578063a457c2d714610aa9576103a2565b8063924de9b7116101b6578063924de9b71461098057806395d89b41146109a95780639a7a23d6146109d45780639c3b4fdc146109fd576103a2565b80638da5cb5b146108ff5780638ea5220f1461092a5780639213691314610955576103a2565b8063313ce567116102c157806370a082311161025f57806375f0a8741161022e57806375f0a874146108695780637bce5a04146108945780638095d564146108bf5780638a8c523c146108e8576103a2565b806370a08231146107af578063730c1888146107ec578063751039fc146108155780637571336a14610840576103a2565b80634a62bb651161029b5780634a62bb65146106f15780634fbee1931461071c5780636a486a8e146107595780636ddd171314610784576103a2565b8063313ce5671461065e578063395093511461068957806349bd5a5e146106c6576103a2565b8063199ffc721161033957806323b872dd1161030857806323b872dd146105a057806327c8f835146105dd5780632c3e486c146106085780632e82f1a014610633576103a2565b8063199ffc72146104f65780631a8145bb146105215780631f3fed8f1461054c578063203e727e14610577576103a2565b80631694505e116103755780631694505e1461044c57806318160ddd146104775780631816467f146104a2578063184c16c5146104cb576103a2565b806306fdde03146103a7578063095ea7b3146103d257806310d5de531461040f576103a2565b366103a257005b600080fd5b3480156103b357600080fd5b506103bc610e69565b6040516103c991906145fc565b60405180910390f35b3480156103de57600080fd5b506103f960048036038101906103f491906146b7565b610efb565b6040516104069190614712565b60405180910390f35b34801561041b57600080fd5b506104366004803603810190610431919061472d565b610f19565b6040516104439190614712565b60405180910390f35b34801561045857600080fd5b50610461610f38565b60405161046e91906147b9565b60405180910390f35b34801561048357600080fd5b5061048c610f5c565b60405161049991906147e3565b60405180910390f35b3480156104ae57600080fd5b506104c960048036038101906104c4919061472d565b610f66565b005b3480156104d757600080fd5b506104e06110bd565b6040516104ed91906147e3565b60405180910390f35b34801561050257600080fd5b5061050b6110c3565b60405161051891906147e3565b60405180910390f35b34801561052d57600080fd5b506105366110c9565b60405161054391906147e3565b60405180910390f35b34801561055857600080fd5b506105616110cf565b60405161056e91906147e3565b60405180910390f35b34801561058357600080fd5b5061059e600480360381019061059991906147fe565b6110d5565b005b3480156105ac57600080fd5b506105c760048036038101906105c2919061482b565b6111ff565b6040516105d49190614712565b60405180910390f35b3480156105e957600080fd5b506105f26112d8565b6040516105ff919061488d565b60405180910390f35b34801561061457600080fd5b5061061d6112de565b60405161062a91906147e3565b60405180910390f35b34801561063f57600080fd5b506106486112e4565b6040516106559190614712565b60405180910390f35b34801561066a57600080fd5b506106736112f7565b60405161068091906148c4565b60405180910390f35b34801561069557600080fd5b506106b060048036038101906106ab91906146b7565b611300565b6040516106bd9190614712565b60405180910390f35b3480156106d257600080fd5b506106db6113b3565b6040516106e8919061488d565b60405180910390f35b3480156106fd57600080fd5b506107066113d7565b6040516107139190614712565b60405180910390f35b34801561072857600080fd5b50610743600480360381019061073e919061472d565b6113ea565b6040516107509190614712565b60405180910390f35b34801561076557600080fd5b5061076e611440565b60405161077b91906147e3565b60405180910390f35b34801561079057600080fd5b50610799611446565b6040516107a69190614712565b60405180910390f35b3480156107bb57600080fd5b506107d660048036038101906107d1919061472d565b611459565b6040516107e391906147e3565b60405180910390f35b3480156107f857600080fd5b50610813600480360381019061080e919061490b565b6114a1565b005b34801561082157600080fd5b5061082a6115fc565b6040516108379190614712565b60405180910390f35b34801561084c57600080fd5b506108676004803603810190610862919061495e565b6116b7565b005b34801561087557600080fd5b5061087e6117a9565b60405161088b919061488d565b60405180910390f35b3480156108a057600080fd5b506108a96117cf565b6040516108b691906147e3565b60405180910390f35b3480156108cb57600080fd5b506108e660048036038101906108e1919061499e565b6117d5565b005b3480156108f457600080fd5b506108fd6118ee565b005b34801561090b57600080fd5b506109146119c4565b604051610921919061488d565b60405180910390f35b34801561093657600080fd5b5061093f6119ee565b60405161094c919061488d565b60405180910390f35b34801561096157600080fd5b5061096a611a14565b60405161097791906147e3565b60405180910390f35b34801561098c57600080fd5b506109a760048036038101906109a291906149f1565b611a1a565b005b3480156109b557600080fd5b506109be611ace565b6040516109cb91906145fc565b60405180910390f35b3480156109e057600080fd5b506109fb60048036038101906109f6919061495e565b611b60565b005b348015610a0957600080fd5b50610a12611c94565b604051610a1f91906147e3565b60405180910390f35b348015610a3457600080fd5b50610a3d611c9a565b604051610a4a91906147e3565b60405180910390f35b348015610a5f57600080fd5b50610a68611ca0565b604051610a7591906147e3565b60405180910390f35b348015610a8a57600080fd5b50610a93611ca6565b604051610aa091906147e3565b60405180910390f35b348015610ab557600080fd5b50610ad06004803603810190610acb91906146b7565b611cac565b604051610add9190614712565b60405180910390f35b348015610af257600080fd5b50610afb611d79565b604051610b0891906147e3565b60405180910390f35b348015610b1d57600080fd5b50610b386004803603810190610b3391906146b7565b611d7f565b604051610b459190614712565b60405180910390f35b348015610b5a57600080fd5b50610b756004803603810190610b70919061472d565b611d9d565b005b348015610b8357600080fd5b50610b9e6004803603810190610b99919061472d565b611ef4565b604051610bab9190614712565b60405180910390f35b348015610bc057600080fd5b50610bc9611f14565b604051610bd69190614712565b60405180910390f35b348015610beb57600080fd5b50610c066004803603810190610c01919061495e565b611f27565b005b348015610c1457600080fd5b50610c2f6004803603810190610c2a919061499e565b612067565b005b348015610c3d57600080fd5b50610c586004803603810190610c5391906147fe565b612181565b005b348015610c6657600080fd5b50610c6f6122ab565b604051610c7c9190614712565b60405180910390f35b348015610c9157600080fd5b50610c9a6122be565b604051610ca791906147e3565b60405180910390f35b348015610cbc57600080fd5b50610cd76004803603810190610cd291906147fe565b6122c4565b604051610ce49190614712565b60405180910390f35b348015610cf957600080fd5b50610d02612434565b604051610d0f91906147e3565b60405180910390f35b348015610d2457600080fd5b50610d3f6004803603810190610d3a9190614a1e565b61243a565b604051610d4c91906147e3565b60405180910390f35b348015610d6157600080fd5b50610d6a6124c1565b604051610d7791906147e3565b60405180910390f35b348015610d8c57600080fd5b50610d956124c7565b604051610da29190614712565b60405180910390f35b348015610db757600080fd5b50610dc0612582565b604051610dcd91906147e3565b60405180910390f35b348015610de257600080fd5b50610deb612588565b604051610df891906147e3565b60405180910390f35b348015610e0d57600080fd5b50610e1661258e565b604051610e2391906147e3565b60405180910390f35b348015610e3857600080fd5b50610e536004803603810190610e4e91906147fe565b612594565b604051610e609190614712565b60405180910390f35b606060038054610e7890614a8d565b80601f0160208091040260200160405190810160405280929190818152602001828054610ea490614a8d565b8015610ef15780601f10610ec657610100808354040283529160200191610ef1565b820191906000526020600020905b815481529060010190602001808311610ed457829003601f168201915b5050505050905090565b6000610f0f610f086128f4565b84846128fc565b6001905092915050565b602080528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610f6e6128f4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ffd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff490614b0b565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b600b5481565b601d5481565b601c5481565b6110dd6128f4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461116c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116390614b0b565b60405180910390fd5b670de0b6b3a76400006103e86001611182610f5c565b61118c9190614b5a565b6111969190614be3565b6111a09190614be3565b8110156111e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d990614c86565b60405180910390fd5b670de0b6b3a7640000816111f69190614b5a565b60088190555050565b600061120c848484612ac7565b6112cd846112186128f4565b6112c885604051806060016040528060288152602001615bf960289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061127e6128f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461385f9092919063ffffffff16565b6128fc565b600190509392505050565b61dead81565b600d5481565b600c60009054906101000a900460ff1681565b60006012905090565b60006113a961130d6128f4565b846113a4856001600061131e6128f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461289690919063ffffffff16565b6128fc565b6001905092915050565b7f00000000000000000000000098945e7fdf06812d22c4819495f20225eb08331281565b601160009054906101000a900460ff1681565b6000601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60185481565b601160029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114a96128f4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152f90614b0b565b60405180910390fd5b61025883101561157d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157490614d18565b60405180910390fd5b6103e88211158015611590575060008210155b6115cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c690614daa565b60405180910390fd5b82600d8190555081600b8190555080600c60006101000a81548160ff021916908315150217905550505050565b60006116066128f4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611695576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168c90614b0b565b60405180910390fd5b6000601160006101000a81548160ff0219169083151502179055506001905090565b6116bf6128f4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461174e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174590614b0b565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b6117dd6128f4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461186c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186390614b0b565b60405180910390fd5b8260158190555081601681905550806017819055506017546016546015546118949190614dca565b61189e9190614dca565b6014819055506014805411156118e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e090614e6c565b60405180910390fd5b505050565b6118f66128f4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611985576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197c90614b0b565b60405180910390fd5b6001601160016101000a81548160ff0219169083151502179055506001601160026101000a81548160ff02191690831515021790555042600e81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b611a226128f4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ab1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa890614b0b565b60405180910390fd5b80601160026101000a81548160ff02191690831515021790555050565b606060048054611add90614a8d565b80601f0160208091040260200160405190810160405280929190818152602001828054611b0990614a8d565b8015611b565780601f10611b2b57610100808354040283529160200191611b56565b820191906000526020600020905b815481529060010190602001808311611b3957829003601f168201915b5050505050905090565b611b686128f4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bee90614b0b565b60405180910390fd5b7f00000000000000000000000098945e7fdf06812d22c4819495f20225eb08331273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7d90614efe565b60405180910390fd5b611c9082826138c3565b5050565b60175481565b60105481565b601e5481565b601b5481565b6000611d6f611cb96128f4565b84611d6a85604051806060016040528060258152602001615c216025913960016000611ce36128f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461385f9092919063ffffffff16565b6128fc565b6001905092915050565b600e5481565b6000611d93611d8c6128f4565b8484612ac7565b6001905092915050565b611da56128f4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2b90614b0b565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60216020528060005260406000206000915054906101000a900460ff1681565b601160019054906101000a900460ff1681565b611f2f6128f4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb590614b0b565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161205b9190614712565b60405180910390a25050565b61206f6128f4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f590614b0b565b60405180910390fd5b8260198190555081601a8190555080601b81905550601b54601a546019546121269190614dca565b6121309190614dca565b6018819055506019601854111561217c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217390614f6a565b60405180910390fd5b505050565b6121896128f4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220f90614b0b565b60405180910390fd5b670de0b6b3a76400006103e8600561222e610f5c565b6122389190614b5a565b6122429190614be3565b61224c9190614be3565b81101561228e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228590614ffc565b60405180910390fd5b670de0b6b3a7640000816122a29190614b5a565b600a8190555050565b601360009054906101000a900460ff1681565b60085481565b60006122ce6128f4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461235d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235490614b0b565b60405180910390fd5b620186a0600161236b610f5c565b6123759190614b5a565b61237f9190614be3565b8210156123c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b89061508e565b60405180910390fd5b6103e860056123ce610f5c565b6123d89190614b5a565b6123e29190614be3565b821115612424576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241b90615120565b60405180910390fd5b8160098190555060019050919050565b60145481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b60006124d16128f4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612560576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255790614b0b565b60405180910390fd5b6000601360006101000a81548160ff0219169083151502179055506001905090565b60165481565b601a5481565b600a5481565b600061259e6128f4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461262d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262490614b0b565b60405180910390fd5b600f5460105461263d9190614dca565b421161267e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126759061518c565b60405180910390fd5b6103e88211156126c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ba9061521e565b60405180910390fd5b4260108190555060003073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000098945e7fdf06812d22c4819495f20225eb0833126040518263ffffffff1660e01b8152600401612725919061488d565b60206040518083038186803b15801561273d57600080fd5b505afa158015612751573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127759190615253565b905060006127a0612710612792868561396490919063ffffffff16565b6139df90919063ffffffff16565b905060008111156127d9576127d87f00000000000000000000000098945e7fdf06812d22c4819495f20225eb08331261dead83613a29565b5b60007f00000000000000000000000098945e7fdf06812d22c4819495f20225eb08331290508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561284657600080fd5b505af115801561285a573d6000803e3d6000fd5b505050507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb60405160405180910390a160019350505050919050565b60008082846128a59190614dca565b9050838110156128ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e1906152cc565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561296c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129639061535e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d3906153f0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612aba91906147e3565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2e90615482565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ba7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9e90615514565b60405180910390fd5b6000811415612bc157612bbc83836000613a29565b61385a565b601160009054906101000a900460ff161561328457612bde6119c4565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612c4c5750612c1c6119c4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c855750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612cbf575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612cd85750600560149054906101000a900460ff16155b1561328357601160019054906101000a900460ff16612dd257601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d925750601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612dd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dc890615580565b60405180910390fd5b5b601360009054906101000a900460ff1615612f9a57612def6119c4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612e7657507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ece57507f00000000000000000000000098945e7fdf06812d22c4819495f20225eb08331273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612f995743601260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612f54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4b90615638565b60405180910390fd5b43601260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561303d5750602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156130e457600854811115613087576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161307e906156ca565b60405180910390fd5b600a5461309383611459565b8261309e9190614dca565b11156130df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130d690615736565b60405180910390fd5b613282565b602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131875750602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131d6576008548111156131d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131c8906157c8565b60405180910390fd5b613281565b602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661328057600a5461323383611459565b8261323e9190614dca565b111561327f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161327690615736565b60405180910390fd5b5b5b5b5b5b600061328f30611459565b9050600060095482101590508080156132b45750601160029054906101000a900460ff165b80156132cd5750600560149054906101000a900460ff16155b80156133235750602160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133795750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133cf5750601f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613413576001600560146101000a81548160ff0219169083151502179055506133f7613cbe565b6000600560146101000a81548160ff0219169083151502179055505b600560149054906101000a900460ff161580156134795750602160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80156134915750600c60009054906101000a900460ff165b80156134ac5750600d54600e546134a89190614dca565b4210155b80156135025750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156135115761350f613fa5565b505b6000600560149054906101000a900460ff16159050601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806135c75750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156135d157600090505b6000811561384a57602160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561363457506000601854115b156137015761366160646136536018548861396490919063ffffffff16565b6139df90919063ffffffff16565b9050601854601a54826136749190614b5a565b61367e9190614be3565b601d600082825461368f9190614dca565b92505081905550601854601b54826136a79190614b5a565b6136b19190614be3565b601e60008282546136c29190614dca565b92505081905550601854601954826136da9190614b5a565b6136e49190614be3565b601c60008282546136f59190614dca565b92505081905550613826565b602160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561375c57506000601454115b1561382557613789606461377b6014548861396490919063ffffffff16565b6139df90919063ffffffff16565b90506014546016548261379c9190614b5a565b6137a69190614be3565b601d60008282546137b79190614dca565b92505081905550601454601754826137cf9190614b5a565b6137d99190614be3565b601e60008282546137ea9190614dca565b92505081905550601454601554826138029190614b5a565b61380c9190614be3565b601c600082825461381d9190614dca565b925050819055505b5b600081111561383b5761383a873083613a29565b5b808561384791906157e8565b94505b613855878787613a29565b505050505b505050565b60008383111582906138a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161389e91906145fc565b60405180910390fd5b50600083856138b691906157e8565b9050809150509392505050565b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60008083141561397757600090506139d9565b600082846139859190614b5a565b90508284826139949190614be3565b146139d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139cb9061588e565b60405180910390fd5b809150505b92915050565b6000613a2183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061417a565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613a99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a9090615482565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613b09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b0090615514565b60405180910390fd5b613b148383836141dd565b613b7f81604051806060016040528060268152602001615bd3602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461385f9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c12816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461289690919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613cb191906147e3565b60405180910390a3505050565b6000613cc930611459565b90506000601e54601c54601d54613ce09190614dca565b613cea9190614dca565b9050600080831480613cfc5750600082145b15613d0957505050613fa3565b6014600954613d189190614b5a565b831115613d31576014600954613d2e9190614b5a565b92505b6000600283601d5486613d449190614b5a565b613d4e9190614be3565b613d589190614be3565b90506000613d6f82866141e290919063ffffffff16565b90506000479050613d7f8261422c565b6000613d9482476141e290919063ffffffff16565b90506000613dbf87613db1601c548561396490919063ffffffff16565b6139df90919063ffffffff16565b90506000613dea88613ddc601e548661396490919063ffffffff16565b6139df90919063ffffffff16565b90506000818385613dfb91906157e8565b613e0591906157e8565b90506000601d819055506000601c819055506000601e81905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613e65906158df565b60006040518083038185875af1925050503d8060008114613ea2576040519150601f19603f3d011682016040523d82523d6000602084013e613ea7565b606091505b505080985050600087118015613ebd5750600081115b15613f0a57613ecc8782614478565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601d54604051613f01939291906158f4565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613f50906158df565b60006040518083038185875af1925050503d8060008114613f8d576040519150601f19603f3d011682016040523d82523d6000602084013e613f92565b606091505b505080985050505050505050505050505b565b600042600e8190555060003073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000098945e7fdf06812d22c4819495f20225eb0833126040518263ffffffff1660e01b8152600401614009919061488d565b60206040518083038186803b15801561402157600080fd5b505afa158015614035573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140599190615253565b90506000614086612710614078600b548561396490919063ffffffff16565b6139df90919063ffffffff16565b905060008111156140bf576140be7f00000000000000000000000098945e7fdf06812d22c4819495f20225eb08331261dead83613a29565b5b60007f00000000000000000000000098945e7fdf06812d22c4819495f20225eb08331290508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561412c57600080fd5b505af1158015614140573d6000803e3d6000fd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a16001935050505090565b600080831182906141c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016141b891906145fc565b60405180910390fd5b50600083856141d09190614be3565b9050809150509392505050565b505050565b600061422483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061385f565b905092915050565b6000600267ffffffffffffffff8111156142495761424861592b565b5b6040519080825280602002602001820160405280156142775781602001602082028036833780820191505090505b509050308160008151811061428f5761428e61595a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561432f57600080fd5b505afa158015614343573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614367919061599e565b8160018151811061437b5761437a61595a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506143e0307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846128fc565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614442959493929190615ac4565b600060405180830381600087803b15801561445c57600080fd5b505af1158015614470573d6000803e3d6000fd5b505050505050565b6144a3307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846128fc565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161450a96959493929190615b1e565b6060604051808303818588803b15801561452357600080fd5b505af1158015614537573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061455c9190615b7f565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561459d578082015181840152602081019050614582565b838111156145ac576000848401525b50505050565b6000601f19601f8301169050919050565b60006145ce82614563565b6145d8818561456e565b93506145e881856020860161457f565b6145f1816145b2565b840191505092915050565b6000602082019050818103600083015261461681846145c3565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061464e82614623565b9050919050565b61465e81614643565b811461466957600080fd5b50565b60008135905061467b81614655565b92915050565b6000819050919050565b61469481614681565b811461469f57600080fd5b50565b6000813590506146b18161468b565b92915050565b600080604083850312156146ce576146cd61461e565b5b60006146dc8582860161466c565b92505060206146ed858286016146a2565b9150509250929050565b60008115159050919050565b61470c816146f7565b82525050565b60006020820190506147276000830184614703565b92915050565b6000602082840312156147435761474261461e565b5b60006147518482850161466c565b91505092915050565b6000819050919050565b600061477f61477a61477584614623565b61475a565b614623565b9050919050565b600061479182614764565b9050919050565b60006147a382614786565b9050919050565b6147b381614798565b82525050565b60006020820190506147ce60008301846147aa565b92915050565b6147dd81614681565b82525050565b60006020820190506147f860008301846147d4565b92915050565b6000602082840312156148145761481361461e565b5b6000614822848285016146a2565b91505092915050565b6000806000606084860312156148445761484361461e565b5b60006148528682870161466c565b93505060206148638682870161466c565b9250506040614874868287016146a2565b9150509250925092565b61488781614643565b82525050565b60006020820190506148a2600083018461487e565b92915050565b600060ff82169050919050565b6148be816148a8565b82525050565b60006020820190506148d960008301846148b5565b92915050565b6148e8816146f7565b81146148f357600080fd5b50565b600081359050614905816148df565b92915050565b6000806000606084860312156149245761492361461e565b5b6000614932868287016146a2565b9350506020614943868287016146a2565b9250506040614954868287016148f6565b9150509250925092565b600080604083850312156149755761497461461e565b5b60006149838582860161466c565b9250506020614994858286016148f6565b9150509250929050565b6000806000606084860312156149b7576149b661461e565b5b60006149c5868287016146a2565b93505060206149d6868287016146a2565b92505060406149e7868287016146a2565b9150509250925092565b600060208284031215614a0757614a0661461e565b5b6000614a15848285016148f6565b91505092915050565b60008060408385031215614a3557614a3461461e565b5b6000614a438582860161466c565b9250506020614a548582860161466c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614aa557607f821691505b60208210811415614ab957614ab8614a5e565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614af560208361456e565b9150614b0082614abf565b602082019050919050565b60006020820190508181036000830152614b2481614ae8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614b6582614681565b9150614b7083614681565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614ba957614ba8614b2b565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614bee82614681565b9150614bf983614681565b925082614c0957614c08614bb4565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614c70602f8361456e565b9150614c7b82614c14565b604082019050919050565b60006020820190508181036000830152614c9f81614c63565b9050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b6000614d0260338361456e565b9150614d0d82614ca6565b604082019050919050565b60006020820190508181036000830152614d3181614cf5565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b6000614d9460308361456e565b9150614d9f82614d38565b604082019050919050565b60006020820190508181036000830152614dc381614d87565b9050919050565b6000614dd582614681565b9150614de083614681565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614e1557614e14614b2b565b5b828201905092915050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b6000614e56601d8361456e565b9150614e6182614e20565b602082019050919050565b60006020820190508181036000830152614e8581614e49565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614ee860398361456e565b9150614ef382614e8c565b604082019050919050565b60006020820190508181036000830152614f1781614edb565b9050919050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b6000614f54601d8361456e565b9150614f5f82614f1e565b602082019050919050565b60006020820190508181036000830152614f8381614f47565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614fe660248361456e565b9150614ff182614f8a565b604082019050919050565b6000602082019050818103600083015261501581614fd9565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061507860358361456e565b91506150838261501c565b604082019050919050565b600060208201905081810360008301526150a78161506b565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b600061510a60348361456e565b9150615115826150ae565b604082019050919050565b60006020820190508181036000830152615139816150fd565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b600061517660208361456e565b915061518182615140565b602082019050919050565b600060208201905081810360008301526151a581615169565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b6000615208602a8361456e565b9150615213826151ac565b604082019050919050565b60006020820190508181036000830152615237816151fb565b9050919050565b60008151905061524d8161468b565b92915050565b6000602082840312156152695761526861461e565b5b60006152778482850161523e565b91505092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006152b6601b8361456e565b91506152c182615280565b602082019050919050565b600060208201905081810360008301526152e5816152a9565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061534860248361456e565b9150615353826152ec565b604082019050919050565b600060208201905081810360008301526153778161533b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006153da60228361456e565b91506153e58261537e565b604082019050919050565b60006020820190508181036000830152615409816153cd565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061546c60258361456e565b915061547782615410565b604082019050919050565b6000602082019050818103600083015261549b8161545f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006154fe60238361456e565b9150615509826154a2565b604082019050919050565b6000602082019050818103600083015261552d816154f1565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061556a60168361456e565b915061557582615534565b602082019050919050565b600060208201905081810360008301526155998161555d565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b600061562260498361456e565b915061562d826155a0565b606082019050919050565b6000602082019050818103600083015261565181615615565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006156b460358361456e565b91506156bf82615658565b604082019050919050565b600060208201905081810360008301526156e3816156a7565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061572060138361456e565b915061572b826156ea565b602082019050919050565b6000602082019050818103600083015261574f81615713565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006157b260368361456e565b91506157bd82615756565b604082019050919050565b600060208201905081810360008301526157e1816157a5565b9050919050565b60006157f382614681565b91506157fe83614681565b92508282101561581157615810614b2b565b5b828203905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061587860218361456e565b91506158838261581c565b604082019050919050565b600060208201905081810360008301526158a78161586b565b9050919050565b600081905092915050565b50565b60006158c96000836158ae565b91506158d4826158b9565b600082019050919050565b60006158ea826158bc565b9150819050919050565b600060608201905061590960008301866147d4565b61591660208301856147d4565b61592360408301846147d4565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061599881614655565b92915050565b6000602082840312156159b4576159b361461e565b5b60006159c284828501615989565b91505092915050565b6000819050919050565b60006159f06159eb6159e6846159cb565b61475a565b614681565b9050919050565b615a00816159d5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615a3b81614643565b82525050565b6000615a4d8383615a32565b60208301905092915050565b6000602082019050919050565b6000615a7182615a06565b615a7b8185615a11565b9350615a8683615a22565b8060005b83811015615ab7578151615a9e8882615a41565b9750615aa983615a59565b925050600181019050615a8a565b5085935050505092915050565b600060a082019050615ad960008301886147d4565b615ae660208301876159f7565b8181036040830152615af88186615a66565b9050615b07606083018561487e565b615b1460808301846147d4565b9695505050505050565b600060c082019050615b33600083018961487e565b615b4060208301886147d4565b615b4d60408301876159f7565b615b5a60608301866159f7565b615b67608083018561487e565b615b7460a08301846147d4565b979650505050505050565b600080600060608486031215615b9857615b9761461e565b5b6000615ba68682870161523e565b9350506020615bb78682870161523e565b9250506040615bc88682870161523e565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206c4799e73db895ab0d559f0eff890632cc45cc5c789263c340d399fa24947e2564736f6c63430008090033
Deployed Bytecode Sourcemap
28608:18216:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7660:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9827:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30269:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28690:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8780:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36980:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29266:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29078:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30048:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30008;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34529:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10478:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28793:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29173:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29134:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8622:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11242:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28748:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29363:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37151:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29859:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29443:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8951:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44532:447;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33742:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34998:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28885:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29748;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35355:369;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33531:155;;;;;;;;;;;;;:::i;:::-;;21483:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28922:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29894:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35242:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7879:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36312:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29822:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29319:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30088:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29970:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11963:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29224:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9291:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36760:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30491:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29403:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36122:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35736:378;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34771:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29666:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28959:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34136:381;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29714:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9529:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29001:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33927:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29785:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29932:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29041:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45803:1018;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7660:100;7714:13;7747:5;7740:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7660:100;:::o;9827:169::-;9910:4;9927:39;9936:12;:10;:12::i;:::-;9950:7;9959:6;9927:8;:39::i;:::-;9984:4;9977:11;;9827:169;;;;:::o;30269:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;28690:51::-;;;:::o;8780:108::-;8841:7;8868:12;;8861:19;;8780:108;:::o;36980:157::-;21705:12;:10;:12::i;:::-;21695:22;;:6;;;;;;;;;;;:22;;;21687:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37087:9:::1;;;;;;;;;;;37059:38;;37076:9;37059:38;;;;;;;;;;;;37120:9;37108;;:21;;;;;;;;;;;;;;;;;;36980:157:::0;:::o;29266:46::-;;;;:::o;29078:36::-;;;;:::o;30048:33::-;;;;:::o;30008:::-;;;;:::o;34529:234::-;21705:12;:10;:12::i;:::-;21695:22;;:6;;;;;;;;;;;:22;;;21687:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34648:4:::1;34642;34638:1;34622:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;34621:31;;;;:::i;:::-;34611:6;:41;;34603:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;34748:6;34738;:17;;;;:::i;:::-;34715:20;:40;;;;34529:234:::0;:::o;10478:355::-;10618:4;10635:36;10645:6;10653:9;10664:6;10635:9;:36::i;:::-;10682:121;10691:6;10699:12;:10;:12::i;:::-;10713:89;10751:6;10713:89;;;;;;;;;;;;;;;;;:11;:19;10725:6;10713:19;;;;;;;;;;;;;;;:33;10733:12;:10;:12::i;:::-;10713:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;10682:8;:121::i;:::-;10821:4;10814:11;;10478:355;;;;;:::o;28793:53::-;28839:6;28793:53;:::o;29173:44::-;;;;:::o;29134:32::-;;;;;;;;;;;;;:::o;8622:93::-;8680:5;8705:2;8698:9;;8622:93;:::o;11242:218::-;11330:4;11347:83;11356:12;:10;:12::i;:::-;11370:7;11379:50;11418:10;11379:11;:25;11391:12;:10;:12::i;:::-;11379:25;;;;;;;;;;;;;;;:34;11405:7;11379:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;11347:8;:83::i;:::-;11448:4;11441:11;;11242:218;;;;:::o;28748:38::-;;;:::o;29363:33::-;;;;;;;;;;;;;:::o;37151:125::-;37216:4;37240:19;:28;37260:7;37240:28;;;;;;;;;;;;;;;;;;;;;;;;;37233:35;;37151:125;;;:::o;29859:28::-;;;;:::o;29443:31::-;;;;;;;;;;;;;:::o;8951:127::-;9025:7;9052:9;:18;9062:7;9052:18;;;;;;;;;;;;;;;;9045:25;;8951:127;;;:::o;44532:447::-;21705:12;:10;:12::i;:::-;21695:22;;:6;;;;;;;;;;;:22;;;21687:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;44686:3:::1;44663:19;:26;;44655:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;44776:4;44764:8;:16;;:33;;;;;44796:1;44784:8;:13;;44764:33;44756:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;44879:19;44861:15;:37;;;;44928:8;44909:16;:27;;;;44963:8;44947:13;;:24;;;;;;;;;;;;;;;;;;44532:447:::0;;;:::o;33742:120::-;33794:4;21705:12;:10;:12::i;:::-;21695:22;;:6;;;;;;;;;;;:22;;;21687:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33827:5:::1;33810:14;;:22;;;;;;;;;;;;;;;;;;33850:4;33843:11;;33742:120:::0;:::o;34998:144::-;21705:12;:10;:12::i;:::-;21695:22;;:6;;;;;;;;;;;:22;;;21687:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35130:4:::1;35088:31;:39;35120:6;35088:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;34998:144:::0;;:::o;28885:30::-;;;;;;;;;;;;;:::o;29748:::-;;;;:::o;35355:369::-;21705:12;:10;:12::i;:::-;21695:22;;:6;;;;;;;;;;;:22;;;21687:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35489:13:::1;35471:15;:31;;;;35531:13;35513:15;:31;;;;35567:7;35555:9;:19;;;;35636:9;;35618:15;;35600;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;35585:12;:60;;;;35680:2;35664:12:::0;::::1;:18;;35656:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;35355:369:::0;;;:::o;33531:155::-;21705:12;:10;:12::i;:::-;21695:22;;:6;;;;;;;;;;;:22;;;21687:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33602:4:::1;33586:13;;:20;;;;;;;;;;;;;;;;;;33631:4;33617:11;;:18;;;;;;;;;;;;;;;;;;33663:15;33646:14;:32;;;;33531:155::o:0;21483:79::-;21521:7;21548:6;;;;;;;;;;;21541:13;;21483:79;:::o;28922:24::-;;;;;;;;;;;;;:::o;29894:31::-;;;;:::o;35242:101::-;21705:12;:10;:12::i;:::-;21695:22;;:6;;;;;;;;;;;:22;;;21687:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35328:7:::1;35314:11;;:21;;;;;;;;;;;;;;;;;;35242:101:::0;:::o;7879:104::-;7935:13;7968:7;7961:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7879:104;:::o;36312:244::-;21705:12;:10;:12::i;:::-;21695:22;;:6;;;;;;;;;;;:22;;;21687:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36419:13:::1;36411:21;;:4;:21;;;;36403:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;36507:41;36536:4;36542:5;36507:28;:41::i;:::-;36312:244:::0;;:::o;29822:24::-;;;;:::o;29319:35::-;;;;:::o;30088:27::-;;;;:::o;29970:25::-;;;;:::o;11963:269::-;12056:4;12073:129;12082:12;:10;:12::i;:::-;12096:7;12105:96;12144:15;12105:96;;;;;;;;;;;;;;;;;:11;:25;12117:12;:10;:12::i;:::-;12105:25;;;;;;;;;;;;;;;:34;12131:7;12105:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;12073:8;:129::i;:::-;12220:4;12213:11;;11963:269;;;;:::o;29224:29::-;;;;:::o;9291:175::-;9377:4;9394:42;9404:12;:10;:12::i;:::-;9418:9;9429:6;9394:9;:42::i;:::-;9454:4;9447:11;;9291:175;;;;:::o;36760:208::-;21705:12;:10;:12::i;:::-;21695:22;;:6;;;;;;;;;;;:22;;;21687:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36897:15:::1;;;;;;;;;;;36854:59;;36877:18;36854:59;;;;;;;;;;;;36942:18;36924:15;;:36;;;;;;;;;;;;;;;;;;36760:208:::0;:::o;30491:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;29403:33::-;;;;;;;;;;;;;:::o;36122:182::-;21705:12;:10;:12::i;:::-;21695:22;;:6;;;;;;;;;;;:22;;;21687:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36238:8:::1;36207:19;:28;36227:7;36207:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;36278:7;36262:34;;;36287:8;36262:34;;;;;;:::i;:::-;;;;;;;;36122:182:::0;;:::o;35736:378::-;21705:12;:10;:12::i;:::-;21695:22;;:6;;;;;;;;;;;:22;;;21687:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35872:13:::1;35853:16;:32;;;;35915:13;35896:16;:32;;;;35952:7;35939:10;:20;;;;36024:10;;36005:16;;35986;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;35970:13;:64;;;;36070:2;36053:13;;:19;;36045:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;35736:378:::0;;;:::o;34771:215::-;21705:12;:10;:12::i;:::-;21695:22;;:6;;;;;;;;;;;:22;;;21687:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34893:4:::1;34887;34883:1;34867:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;34866:31;;;;:::i;:::-;34856:6;:41;;34848:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;34971:6;34961;:17;;;;:::i;:::-;34949:9;:29;;;;34771:215:::0;:::o;29666:39::-;;;;;;;;;;;;;:::o;28959:35::-;;;;:::o;34136:381::-;34217:4;21705:12;:10;:12::i;:::-;21695:22;;:6;;;;;;;;;;;:22;;;21687:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34273:6:::1;34269:1;34253:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;34240:9;:39;;34232:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;34388:4;34384:1;34368:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;34355:9;:37;;34347:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;34480:9;34459:18;:30;;;;34506:4;34499:11;;34136:381:::0;;;:::o;29714:27::-;;;;:::o;9529:151::-;9618:7;9645:11;:18;9657:5;9645:18;;;;;;;;;;;;;;;:27;9664:7;9645:27;;;;;;;;;;;;;;;;9638:34;;9529:151;;;;:::o;29001:33::-;;;;:::o;33927:134::-;33987:4;21705:12;:10;:12::i;:::-;21695:22;;:6;;;;;;;;;;;:22;;;21687:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34026:5:::1;34003:20;;:28;;;;;;;;;;;;;;;;;;34049:4;34042:11;;33927:134:::0;:::o;29785:30::-;;;;:::o;29932:31::-;;;;:::o;29041:24::-;;;;:::o;45803:1018::-;45887:4;21705:12;:10;:12::i;:::-;21695:22;;:6;;;;;;;;;;;:22;;;21687:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;45952:19:::1;;45929:20;;:42;;;;:::i;:::-;45911:15;:60;45903:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;46039:4;46028:7;:15;;46020:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;46124:15;46101:20;:38;;;;46202:28;46233:4;:14;;;46248:13;46233:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;46202:60;;46320:20;46343:44;46381:5;46343:33;46368:7;46343:20;:24;;:33;;;;:::i;:::-;:37;;:44;;;;:::i;:::-;46320:67;;46515:1;46500:12;:16;46496:109;;;46532:61;46548:13;46571:6;46580:12;46532:15;:61::i;:::-;46496:109;46688:19;46725:13;46688:51;;46750:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;46777:14;;;;;;;;;;46809:4;46802:11;;;;;45803:1018:::0;;;:::o;16527:181::-;16585:7;16605:9;16621:1;16617;:5;;;;:::i;:::-;16605:17;;16646:1;16641;:6;;16633:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;16699:1;16692:8;;;16527:181;;;;:::o;296:98::-;349:7;376:10;369:17;;296:98;:::o;15149:380::-;15302:1;15285:19;;:5;:19;;;;15277:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15383:1;15364:21;;:7;:21;;;;15356:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15467:6;15437:11;:18;15449:5;15437:18;;;;;;;;;;;;;;;:27;15456:7;15437:27;;;;;;;;;;;;;;;:36;;;;15505:7;15489:32;;15498:5;15489:32;;;15514:6;15489:32;;;;;;:::i;:::-;;;;;;;;15149:380;;;:::o;37338:4358::-;37486:1;37470:18;;:4;:18;;;;37462:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37563:1;37549:16;;:2;:16;;;;37541:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;37640:1;37630:6;:11;37627:92;;;37658:28;37674:4;37680:2;37684:1;37658:15;:28::i;:::-;37701:7;;37627:92;37742:14;;;;;;;;;;;37739:1841;;;37802:7;:5;:7::i;:::-;37794:15;;:4;:15;;;;:49;;;;;37836:7;:5;:7::i;:::-;37830:13;;:2;:13;;;;37794:49;:86;;;;;37878:1;37864:16;;:2;:16;;;;37794:86;:128;;;;;37915:6;37901:21;;:2;:21;;;;37794:128;:158;;;;;37944:8;;;;;;;;;;;37943:9;37794:158;37772:1797;;;37990:13;;;;;;;;;;;37986:148;;38035:19;:25;38055:4;38035:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;38064:19;:23;38084:2;38064:23;;;;;;;;;;;;;;;;;;;;;;;;;38035:52;38027:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;37986:148;38292:20;;;;;;;;;;;38288:423;;;38346:7;:5;:7::i;:::-;38340:13;;:2;:13;;;;:47;;;;;38371:15;38357:30;;:2;:30;;;;38340:47;:79;;;;;38405:13;38391:28;;:2;:28;;;;38340:79;38336:356;;;38497:12;38455:28;:39;38484:9;38455:39;;;;;;;;;;;;;;;;:54;38447:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;38656:12;38614:28;:39;38643:9;38614:39;;;;;;;;;;;;;;;:54;;;;38336:356;38288:423;38780:25;:31;38806:4;38780:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;38816:31;:35;38848:2;38816:35;;;;;;;;;;;;;;;;;;;;;;;;;38815:36;38780:71;38776:778;;;38898:20;;38888:6;:30;;38880:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;39037:9;;39020:13;39030:2;39020:9;:13::i;:::-;39011:6;:22;;;;:::i;:::-;:35;;39003:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;38776:778;;;39164:25;:29;39190:2;39164:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;39198:31;:37;39230:4;39198:37;;;;;;;;;;;;;;;;;;;;;;;;;39197:38;39164:71;39160:394;;;39282:20;;39272:6;:30;;39264:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;39160:394;;;39408:31;:35;39440:2;39408:35;;;;;;;;;;;;;;;;;;;;;;;;;39404:150;;39501:9;;39484:13;39494:2;39484:9;:13::i;:::-;39475:6;:22;;;;:::i;:::-;:35;;39467:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;39404:150;39160:394;38776:778;37772:1797;37739:1841;39614:28;39645:24;39663:4;39645:9;:24::i;:::-;39614:55;;39690:12;39729:18;;39705:20;:42;;39690:57;;39778:7;:35;;;;;39802:11;;;;;;;;;;;39778:35;:61;;;;;39831:8;;;;;;;;;;;39830:9;39778:61;:110;;;;;39857:25;:31;39883:4;39857:31;;;;;;;;;;;;;;;;;;;;;;;;;39856:32;39778:110;:153;;;;;39906:19;:25;39926:4;39906:25;;;;;;;;;;;;;;;;;;;;;;;;;39905:26;39778:153;:194;;;;;39949:19;:23;39969:2;39949:23;;;;;;;;;;;;;;;;;;;;;;;;;39948:24;39778:194;39760:338;;;40010:4;39999:8;;:15;;;;;;;;;;;;;;;;;;40043:10;:8;:10::i;:::-;40081:5;40070:8;;:16;;;;;;;;;;;;;;;;;;39760:338;40122:8;;;;;;;;;;;40121:9;:42;;;;;40134:25;:29;40160:2;40134:29;;;;;;;;;;;;;;;;;;;;;;;;;40121:42;:59;;;;;40167:13;;;;;;;;;;;40121:59;:114;;;;;40220:15;;40203:14;;:32;;;;:::i;:::-;40184:15;:51;;40121:114;:144;;;;;40240:19;:25;40260:4;40240:25;;;;;;;;;;;;;;;;;;;;;;;;;40239:26;40121:144;40118:204;;;40281:29;:27;:29::i;:::-;;40118:204;40334:12;40350:8;;;;;;;;;;;40349:9;40334:24;;40459:19;:25;40479:4;40459:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;40488:19;:23;40508:2;40488:23;;;;;;;;;;;;;;;;;;;;;;;;;40459:52;40456:99;;;40538:5;40528:15;;40456:99;40575:12;40679:7;40676:967;;;40730:25;:29;40756:2;40730:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;40779:1;40763:13;;:17;40730:50;40726:748;;;40807:34;40837:3;40807:25;40818:13;;40807:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;40800:41;;40908:13;;40889:16;;40882:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;40860:18;;:61;;;;;;;:::i;:::-;;;;;;;;40976:13;;40963:10;;40956:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;40940:12;;:49;;;;;;;:::i;:::-;;;;;;;;41056:13;;41037:16;;41030:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;41008:18;;:61;;;;;;;:::i;:::-;;;;;;;;40726:748;;;41130:25;:31;41156:4;41130:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;41180:1;41165:12;;:16;41130:51;41127:347;;;41206:33;41235:3;41206:24;41217:12;;41206:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;41199:40;;41302:12;;41284:15;;41277:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;41255:18;;:59;;;;;;;:::i;:::-;;;;;;;;41368:12;;41356:9;;41349:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;41333:12;;:47;;;;;;;:::i;:::-;;;;;;;;41446:12;;41428:15;;41421:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;41399:18;;:59;;;;;;;:::i;:::-;;;;;;;;41127:347;40726:748;41512:1;41505:4;:8;41502:93;;;41537:42;41553:4;41567;41574;41537:15;:42::i;:::-;41502:93;41627:4;41617:14;;;;;:::i;:::-;;;40676:967;41655:33;41671:4;41677:2;41681:6;41655:15;:33::i;:::-;37451:4245;;;;37338:4358;;;;:::o;17430:192::-;17516:7;17549:1;17544;:6;;17552:12;17536:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;17576:9;17592:1;17588;:5;;;;:::i;:::-;17576:17;;17613:1;17606:8;;;17430:192;;;;;:::o;36564:188::-;36681:5;36647:25;:31;36673:4;36647:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;36738:5;36704:40;;36732:4;36704:40;;;;;;;;;;;;36564:188;;:::o;17881:471::-;17939:7;18189:1;18184;:6;18180:47;;;18214:1;18207:8;;;;18180:47;18239:9;18255:1;18251;:5;;;;:::i;:::-;18239:17;;18284:1;18279;18275;:5;;;;:::i;:::-;:10;18267:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;18343:1;18336:8;;;17881:471;;;;;:::o;18828:132::-;18886:7;18913:39;18917:1;18920;18913:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;18906:46;;18828:132;;;;:::o;12722:573::-;12880:1;12862:20;;:6;:20;;;;12854:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12964:1;12943:23;;:9;:23;;;;12935:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13019:47;13040:6;13048:9;13059:6;13019:20;:47::i;:::-;13099:71;13121:6;13099:71;;;;;;;;;;;;;;;;;:9;:17;13109:6;13099:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;13079:9;:17;13089:6;13079:17;;;;;;;;;;;;;;;:91;;;;13204:32;13229:6;13204:9;:20;13214:9;13204:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;13181:9;:20;13191:9;13181:20;;;;;;;;;;;;;;;:55;;;;13269:9;13252:35;;13261:6;13252:35;;;13280:6;13252:35;;;;;;:::i;:::-;;;;;;;;12722:573;;;:::o;42854:1666::-;42893:23;42919:24;42937:4;42919:9;:24::i;:::-;42893:50;;42954:25;43024:12;;43003:18;;42982;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;42954:82;;43047:12;43102:1;43083:15;:20;:46;;;;43128:1;43107:17;:22;43083:46;43080:60;;;43132:7;;;;;43080:60;43194:2;43173:18;;:23;;;;:::i;:::-;43155:15;:41;43152:111;;;43249:2;43228:18;;:23;;;;:::i;:::-;43210:41;;43152:111;43332:23;43417:1;43397:17;43376:18;;43358:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;43332:86;;43429:26;43458:36;43478:15;43458;:19;;:36;;;;:::i;:::-;43429:65;;43515:25;43543:21;43515:49;;43577:36;43594:18;43577:16;:36::i;:::-;43635:18;43656:44;43682:17;43656:21;:25;;:44;;;;:::i;:::-;43635:65;;43721:23;43747:57;43786:17;43747:34;43762:18;;43747:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;43721:83;;43815:17;43835:51;43868:17;43835:28;43850:12;;43835:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;43815:71;;43917:23;43974:9;43956:15;43943:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;43917:66;;44035:1;44014:18;:22;;;;44068:1;44047:18;:22;;;;44095:1;44080:12;:16;;;;44138:9;;;;;;;;;;;44130:23;;44161:9;44130:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44117:58;;;;;44217:1;44199:15;:19;:42;;;;;44240:1;44222:15;:19;44199:42;44196:210;;;44257:46;44270:15;44287;44257:12;:46::i;:::-;44323:71;44338:18;44358:15;44375:18;;44323:71;;;;;;;;:::i;:::-;;;;;;;;44196:210;44457:15;;;;;;;;;;;44449:29;;44486:21;44449:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44436:76;;;;;42882:1638;;;;;;;;;;42854:1666;:::o;44991:804::-;45048:4;45091:15;45074:14;:32;;;;45169:28;45200:4;:14;;;45215:13;45200:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;45169:60;;45287:20;45310:53;45357:5;45310:42;45335:16;;45310:20;:24;;:42;;;;:::i;:::-;:46;;:53;;;;:::i;:::-;45287:76;;45491:1;45476:12;:16;45472:109;;;45508:61;45524:13;45547:6;45556:12;45508:15;:61::i;:::-;45472:109;45664:19;45701:13;45664:51;;45726:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45753:12;;;;;;;;;;45783:4;45776:11;;;;;44991:804;:::o;19456:278::-;19542:7;19574:1;19570;:5;19577:12;19562:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;19601:9;19617:1;19613;:5;;;;:::i;:::-;19601:17;;19725:1;19718:8;;;19456:278;;;;;:::o;16132:125::-;;;;:::o;16991:136::-;17049:7;17076:43;17080:1;17083;17076:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;17069:50;;16991:136;;;;:::o;41704:601::-;41832:21;41870:1;41856:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41832:40;;41901:4;41883;41888:1;41883:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;41927:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;41917:4;41922:1;41917:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;41962:62;41979:4;41994:15;42012:11;41962:8;:62::i;:::-;42063:15;:66;;;42144:11;42170:1;42214:4;42241;42261:15;42063:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41759:546;41704:601;:::o;42329:517::-;42477:62;42494:4;42509:15;42527:11;42477:8;:62::i;:::-;42582:15;:31;;;42621:9;42654:4;42674:11;42700:1;42743;28839:6;42812:15;42582:256;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;42329:517;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:60::-;3857:3;3878:5;3871:12;;3829:60;;;:::o;3895:142::-;3945:9;3978:53;3996:34;4005:24;4023:5;4005:24;:::i;:::-;3996:34;:::i;:::-;3978:53;:::i;:::-;3965:66;;3895:142;;;:::o;4043:126::-;4093:9;4126:37;4157:5;4126:37;:::i;:::-;4113:50;;4043:126;;;:::o;4175:153::-;4252:9;4285:37;4316:5;4285:37;:::i;:::-;4272:50;;4175:153;;;:::o;4334:185::-;4448:64;4506:5;4448:64;:::i;:::-;4443:3;4436:77;4334:185;;:::o;4525:276::-;4645:4;4683:2;4672:9;4668:18;4660:26;;4696:98;4791:1;4780:9;4776:17;4767:6;4696:98;:::i;:::-;4525:276;;;;:::o;4807:118::-;4894:24;4912:5;4894:24;:::i;:::-;4889:3;4882:37;4807:118;;:::o;4931:222::-;5024:4;5062:2;5051:9;5047:18;5039:26;;5075:71;5143:1;5132:9;5128:17;5119:6;5075:71;:::i;:::-;4931:222;;;;:::o;5159:329::-;5218:6;5267:2;5255:9;5246:7;5242:23;5238:32;5235:119;;;5273:79;;:::i;:::-;5235:119;5393:1;5418:53;5463:7;5454:6;5443:9;5439:22;5418:53;:::i;:::-;5408:63;;5364:117;5159:329;;;;:::o;5494:619::-;5571:6;5579;5587;5636:2;5624:9;5615:7;5611:23;5607:32;5604:119;;;5642:79;;:::i;:::-;5604:119;5762:1;5787:53;5832:7;5823:6;5812:9;5808:22;5787:53;:::i;:::-;5777:63;;5733:117;5889:2;5915:53;5960:7;5951:6;5940:9;5936:22;5915:53;:::i;:::-;5905:63;;5860:118;6017:2;6043:53;6088:7;6079:6;6068:9;6064:22;6043:53;:::i;:::-;6033:63;;5988:118;5494:619;;;;;:::o;6119:118::-;6206:24;6224:5;6206:24;:::i;:::-;6201:3;6194:37;6119:118;;:::o;6243:222::-;6336:4;6374:2;6363:9;6359:18;6351:26;;6387:71;6455:1;6444:9;6440:17;6431:6;6387:71;:::i;:::-;6243:222;;;;:::o;6471:86::-;6506:7;6546:4;6539:5;6535:16;6524:27;;6471:86;;;:::o;6563:112::-;6646:22;6662:5;6646:22;:::i;:::-;6641:3;6634:35;6563:112;;:::o;6681:214::-;6770:4;6808:2;6797:9;6793:18;6785:26;;6821:67;6885:1;6874:9;6870:17;6861:6;6821:67;:::i;:::-;6681:214;;;;:::o;6901:116::-;6971:21;6986:5;6971:21;:::i;:::-;6964:5;6961:32;6951:60;;7007:1;7004;6997:12;6951:60;6901:116;:::o;7023:133::-;7066:5;7104:6;7091:20;7082:29;;7120:30;7144:5;7120:30;:::i;:::-;7023:133;;;;:::o;7162:613::-;7236:6;7244;7252;7301:2;7289:9;7280:7;7276:23;7272:32;7269:119;;;7307:79;;:::i;:::-;7269:119;7427:1;7452:53;7497:7;7488:6;7477:9;7473:22;7452:53;:::i;:::-;7442:63;;7398:117;7554:2;7580:53;7625:7;7616:6;7605:9;7601:22;7580:53;:::i;:::-;7570:63;;7525:118;7682:2;7708:50;7750:7;7741:6;7730:9;7726:22;7708:50;:::i;:::-;7698:60;;7653:115;7162:613;;;;;:::o;7781:468::-;7846:6;7854;7903:2;7891:9;7882:7;7878:23;7874:32;7871:119;;;7909:79;;:::i;:::-;7871:119;8029:1;8054:53;8099:7;8090:6;8079:9;8075:22;8054:53;:::i;:::-;8044:63;;8000:117;8156:2;8182:50;8224:7;8215:6;8204:9;8200:22;8182:50;:::i;:::-;8172:60;;8127:115;7781:468;;;;;:::o;8255:619::-;8332:6;8340;8348;8397:2;8385:9;8376:7;8372:23;8368:32;8365:119;;;8403:79;;:::i;:::-;8365:119;8523:1;8548:53;8593:7;8584:6;8573:9;8569:22;8548:53;:::i;:::-;8538:63;;8494:117;8650:2;8676:53;8721:7;8712:6;8701:9;8697:22;8676:53;:::i;:::-;8666:63;;8621:118;8778:2;8804:53;8849:7;8840:6;8829:9;8825:22;8804:53;:::i;:::-;8794:63;;8749:118;8255:619;;;;;:::o;8880:323::-;8936:6;8985:2;8973:9;8964:7;8960:23;8956:32;8953:119;;;8991:79;;:::i;:::-;8953:119;9111:1;9136:50;9178:7;9169:6;9158:9;9154:22;9136:50;:::i;:::-;9126:60;;9082:114;8880:323;;;;:::o;9209:474::-;9277:6;9285;9334:2;9322:9;9313:7;9309:23;9305:32;9302:119;;;9340:79;;:::i;:::-;9302:119;9460:1;9485:53;9530:7;9521:6;9510:9;9506:22;9485:53;:::i;:::-;9475:63;;9431:117;9587:2;9613:53;9658:7;9649:6;9638:9;9634:22;9613:53;:::i;:::-;9603:63;;9558:118;9209:474;;;;;:::o;9689:180::-;9737:77;9734:1;9727:88;9834:4;9831:1;9824:15;9858:4;9855:1;9848:15;9875:320;9919:6;9956:1;9950:4;9946:12;9936:22;;10003:1;9997:4;9993:12;10024:18;10014:81;;10080:4;10072:6;10068:17;10058:27;;10014:81;10142:2;10134:6;10131:14;10111:18;10108:38;10105:84;;;10161:18;;:::i;:::-;10105:84;9926:269;9875:320;;;:::o;10201:182::-;10341:34;10337:1;10329:6;10325:14;10318:58;10201:182;:::o;10389:366::-;10531:3;10552:67;10616:2;10611:3;10552:67;:::i;:::-;10545:74;;10628:93;10717:3;10628:93;:::i;:::-;10746:2;10741:3;10737:12;10730:19;;10389:366;;;:::o;10761:419::-;10927:4;10965:2;10954:9;10950:18;10942:26;;11014:9;11008:4;11004:20;11000:1;10989:9;10985:17;10978:47;11042:131;11168:4;11042:131;:::i;:::-;11034:139;;10761:419;;;:::o;11186:180::-;11234:77;11231:1;11224:88;11331:4;11328:1;11321:15;11355:4;11352:1;11345:15;11372:348;11412:7;11435:20;11453:1;11435:20;:::i;:::-;11430:25;;11469:20;11487:1;11469:20;:::i;:::-;11464:25;;11657:1;11589:66;11585:74;11582:1;11579:81;11574:1;11567:9;11560:17;11556:105;11553:131;;;11664:18;;:::i;:::-;11553:131;11712:1;11709;11705:9;11694:20;;11372:348;;;;:::o;11726:180::-;11774:77;11771:1;11764:88;11871:4;11868:1;11861:15;11895:4;11892:1;11885:15;11912:185;11952:1;11969:20;11987:1;11969:20;:::i;:::-;11964:25;;12003:20;12021:1;12003:20;:::i;:::-;11998:25;;12042:1;12032:35;;12047:18;;:::i;:::-;12032:35;12089:1;12086;12082:9;12077:14;;11912:185;;;;:::o;12103:234::-;12243:34;12239:1;12231:6;12227:14;12220:58;12312:17;12307:2;12299:6;12295:15;12288:42;12103:234;:::o;12343:366::-;12485:3;12506:67;12570:2;12565:3;12506:67;:::i;:::-;12499:74;;12582:93;12671:3;12582:93;:::i;:::-;12700:2;12695:3;12691:12;12684:19;;12343:366;;;:::o;12715:419::-;12881:4;12919:2;12908:9;12904:18;12896:26;;12968:9;12962:4;12958:20;12954:1;12943:9;12939:17;12932:47;12996:131;13122:4;12996:131;:::i;:::-;12988:139;;12715:419;;;:::o;13140:238::-;13280:34;13276:1;13268:6;13264:14;13257:58;13349:21;13344:2;13336:6;13332:15;13325:46;13140:238;:::o;13384:366::-;13526:3;13547:67;13611:2;13606:3;13547:67;:::i;:::-;13540:74;;13623:93;13712:3;13623:93;:::i;:::-;13741:2;13736:3;13732:12;13725:19;;13384:366;;;:::o;13756:419::-;13922:4;13960:2;13949:9;13945:18;13937:26;;14009:9;14003:4;13999:20;13995:1;13984:9;13980:17;13973:47;14037:131;14163:4;14037:131;:::i;:::-;14029:139;;13756:419;;;:::o;14181:235::-;14321:34;14317:1;14309:6;14305:14;14298:58;14390:18;14385:2;14377:6;14373:15;14366:43;14181:235;:::o;14422:366::-;14564:3;14585:67;14649:2;14644:3;14585:67;:::i;:::-;14578:74;;14661:93;14750:3;14661:93;:::i;:::-;14779:2;14774:3;14770:12;14763:19;;14422:366;;;:::o;14794:419::-;14960:4;14998:2;14987:9;14983:18;14975:26;;15047:9;15041:4;15037:20;15033:1;15022:9;15018:17;15011:47;15075:131;15201:4;15075:131;:::i;:::-;15067:139;;14794:419;;;:::o;15219:305::-;15259:3;15278:20;15296:1;15278:20;:::i;:::-;15273:25;;15312:20;15330:1;15312:20;:::i;:::-;15307:25;;15466:1;15398:66;15394:74;15391:1;15388:81;15385:107;;;15472:18;;:::i;:::-;15385:107;15516:1;15513;15509:9;15502:16;;15219:305;;;;:::o;15530:179::-;15670:31;15666:1;15658:6;15654:14;15647:55;15530:179;:::o;15715:366::-;15857:3;15878:67;15942:2;15937:3;15878:67;:::i;:::-;15871:74;;15954:93;16043:3;15954:93;:::i;:::-;16072:2;16067:3;16063:12;16056:19;;15715:366;;;:::o;16087:419::-;16253:4;16291:2;16280:9;16276:18;16268:26;;16340:9;16334:4;16330:20;16326:1;16315:9;16311:17;16304:47;16368:131;16494:4;16368:131;:::i;:::-;16360:139;;16087:419;;;:::o;16512:244::-;16652:34;16648:1;16640:6;16636:14;16629:58;16721:27;16716:2;16708:6;16704:15;16697:52;16512:244;:::o;16762:366::-;16904:3;16925:67;16989:2;16984:3;16925:67;:::i;:::-;16918:74;;17001:93;17090:3;17001:93;:::i;:::-;17119:2;17114:3;17110:12;17103:19;;16762:366;;;:::o;17134:419::-;17300:4;17338:2;17327:9;17323:18;17315:26;;17387:9;17381:4;17377:20;17373:1;17362:9;17358:17;17351:47;17415:131;17541:4;17415:131;:::i;:::-;17407:139;;17134:419;;;:::o;17559:179::-;17699:31;17695:1;17687:6;17683:14;17676:55;17559:179;:::o;17744:366::-;17886:3;17907:67;17971:2;17966:3;17907:67;:::i;:::-;17900:74;;17983:93;18072:3;17983:93;:::i;:::-;18101:2;18096:3;18092:12;18085:19;;17744:366;;;:::o;18116:419::-;18282:4;18320:2;18309:9;18305:18;18297:26;;18369:9;18363:4;18359:20;18355:1;18344:9;18340:17;18333:47;18397:131;18523:4;18397:131;:::i;:::-;18389:139;;18116:419;;;:::o;18541:223::-;18681:34;18677:1;18669:6;18665:14;18658:58;18750:6;18745:2;18737:6;18733:15;18726:31;18541:223;:::o;18770:366::-;18912:3;18933:67;18997:2;18992:3;18933:67;:::i;:::-;18926:74;;19009:93;19098:3;19009:93;:::i;:::-;19127:2;19122:3;19118:12;19111:19;;18770:366;;;:::o;19142:419::-;19308:4;19346:2;19335:9;19331:18;19323:26;;19395:9;19389:4;19385:20;19381:1;19370:9;19366:17;19359:47;19423:131;19549:4;19423:131;:::i;:::-;19415:139;;19142:419;;;:::o;19567:240::-;19707:34;19703:1;19695:6;19691:14;19684:58;19776:23;19771:2;19763:6;19759:15;19752:48;19567:240;:::o;19813:366::-;19955:3;19976:67;20040:2;20035:3;19976:67;:::i;:::-;19969:74;;20052:93;20141:3;20052:93;:::i;:::-;20170:2;20165:3;20161:12;20154:19;;19813:366;;;:::o;20185:419::-;20351:4;20389:2;20378:9;20374:18;20366:26;;20438:9;20432:4;20428:20;20424:1;20413:9;20409:17;20402:47;20466:131;20592:4;20466:131;:::i;:::-;20458:139;;20185:419;;;:::o;20610:239::-;20750:34;20746:1;20738:6;20734:14;20727:58;20819:22;20814:2;20806:6;20802:15;20795:47;20610:239;:::o;20855:366::-;20997:3;21018:67;21082:2;21077:3;21018:67;:::i;:::-;21011:74;;21094:93;21183:3;21094:93;:::i;:::-;21212:2;21207:3;21203:12;21196:19;;20855:366;;;:::o;21227:419::-;21393:4;21431:2;21420:9;21416:18;21408:26;;21480:9;21474:4;21470:20;21466:1;21455:9;21451:17;21444:47;21508:131;21634:4;21508:131;:::i;:::-;21500:139;;21227:419;;;:::o;21652:182::-;21792:34;21788:1;21780:6;21776:14;21769:58;21652:182;:::o;21840:366::-;21982:3;22003:67;22067:2;22062:3;22003:67;:::i;:::-;21996:74;;22079:93;22168:3;22079:93;:::i;:::-;22197:2;22192:3;22188:12;22181:19;;21840:366;;;:::o;22212:419::-;22378:4;22416:2;22405:9;22401:18;22393:26;;22465:9;22459:4;22455:20;22451:1;22440:9;22436:17;22429:47;22493:131;22619:4;22493:131;:::i;:::-;22485:139;;22212:419;;;:::o;22637:229::-;22777:34;22773:1;22765:6;22761:14;22754:58;22846:12;22841:2;22833:6;22829:15;22822:37;22637:229;:::o;22872:366::-;23014:3;23035:67;23099:2;23094:3;23035:67;:::i;:::-;23028:74;;23111:93;23200:3;23111:93;:::i;:::-;23229:2;23224:3;23220:12;23213:19;;22872:366;;;:::o;23244:419::-;23410:4;23448:2;23437:9;23433:18;23425:26;;23497:9;23491:4;23487:20;23483:1;23472:9;23468:17;23461:47;23525:131;23651:4;23525:131;:::i;:::-;23517:139;;23244:419;;;:::o;23669:143::-;23726:5;23757:6;23751:13;23742:22;;23773:33;23800:5;23773:33;:::i;:::-;23669:143;;;;:::o;23818:351::-;23888:6;23937:2;23925:9;23916:7;23912:23;23908:32;23905:119;;;23943:79;;:::i;:::-;23905:119;24063:1;24088:64;24144:7;24135:6;24124:9;24120:22;24088:64;:::i;:::-;24078:74;;24034:128;23818:351;;;;:::o;24175:177::-;24315:29;24311:1;24303:6;24299:14;24292:53;24175:177;:::o;24358:366::-;24500:3;24521:67;24585:2;24580:3;24521:67;:::i;:::-;24514:74;;24597:93;24686:3;24597:93;:::i;:::-;24715:2;24710:3;24706:12;24699:19;;24358:366;;;:::o;24730:419::-;24896:4;24934:2;24923:9;24919:18;24911:26;;24983:9;24977:4;24973:20;24969:1;24958:9;24954:17;24947:47;25011:131;25137:4;25011:131;:::i;:::-;25003:139;;24730:419;;;:::o;25155:223::-;25295:34;25291:1;25283:6;25279:14;25272:58;25364:6;25359:2;25351:6;25347:15;25340:31;25155:223;:::o;25384:366::-;25526:3;25547:67;25611:2;25606:3;25547:67;:::i;:::-;25540:74;;25623:93;25712:3;25623:93;:::i;:::-;25741:2;25736:3;25732:12;25725:19;;25384:366;;;:::o;25756:419::-;25922:4;25960:2;25949:9;25945:18;25937:26;;26009:9;26003:4;25999:20;25995:1;25984:9;25980:17;25973:47;26037:131;26163:4;26037:131;:::i;:::-;26029:139;;25756:419;;;:::o;26181:221::-;26321:34;26317:1;26309:6;26305:14;26298:58;26390:4;26385:2;26377:6;26373:15;26366:29;26181:221;:::o;26408:366::-;26550:3;26571:67;26635:2;26630:3;26571:67;:::i;:::-;26564:74;;26647:93;26736:3;26647:93;:::i;:::-;26765:2;26760:3;26756:12;26749:19;;26408:366;;;:::o;26780:419::-;26946:4;26984:2;26973:9;26969:18;26961:26;;27033:9;27027:4;27023:20;27019:1;27008:9;27004:17;26997:47;27061:131;27187:4;27061:131;:::i;:::-;27053:139;;26780:419;;;:::o;27205:224::-;27345:34;27341:1;27333:6;27329:14;27322:58;27414:7;27409:2;27401:6;27397:15;27390:32;27205:224;:::o;27435:366::-;27577:3;27598:67;27662:2;27657:3;27598:67;:::i;:::-;27591:74;;27674:93;27763:3;27674:93;:::i;:::-;27792:2;27787:3;27783:12;27776:19;;27435:366;;;:::o;27807:419::-;27973:4;28011:2;28000:9;27996:18;27988:26;;28060:9;28054:4;28050:20;28046:1;28035:9;28031:17;28024:47;28088:131;28214:4;28088:131;:::i;:::-;28080:139;;27807:419;;;:::o;28232:222::-;28372:34;28368:1;28360:6;28356:14;28349:58;28441:5;28436:2;28428:6;28424:15;28417:30;28232:222;:::o;28460:366::-;28602:3;28623:67;28687:2;28682:3;28623:67;:::i;:::-;28616:74;;28699:93;28788:3;28699:93;:::i;:::-;28817:2;28812:3;28808:12;28801:19;;28460:366;;;:::o;28832:419::-;28998:4;29036:2;29025:9;29021:18;29013:26;;29085:9;29079:4;29075:20;29071:1;29060:9;29056:17;29049:47;29113:131;29239:4;29113:131;:::i;:::-;29105:139;;28832:419;;;:::o;29257:172::-;29397:24;29393:1;29385:6;29381:14;29374:48;29257:172;:::o;29435:366::-;29577:3;29598:67;29662:2;29657:3;29598:67;:::i;:::-;29591:74;;29674:93;29763:3;29674:93;:::i;:::-;29792:2;29787:3;29783:12;29776:19;;29435:366;;;:::o;29807:419::-;29973:4;30011:2;30000:9;29996:18;29988:26;;30060:9;30054:4;30050:20;30046:1;30035:9;30031:17;30024:47;30088:131;30214:4;30088:131;:::i;:::-;30080:139;;29807:419;;;:::o;30232:297::-;30372:34;30368:1;30360:6;30356:14;30349:58;30441:34;30436:2;30428:6;30424:15;30417:59;30510:11;30505:2;30497:6;30493:15;30486:36;30232:297;:::o;30535:366::-;30677:3;30698:67;30762:2;30757:3;30698:67;:::i;:::-;30691:74;;30774:93;30863:3;30774:93;:::i;:::-;30892:2;30887:3;30883:12;30876:19;;30535:366;;;:::o;30907:419::-;31073:4;31111:2;31100:9;31096:18;31088:26;;31160:9;31154:4;31150:20;31146:1;31135:9;31131:17;31124:47;31188:131;31314:4;31188:131;:::i;:::-;31180:139;;30907:419;;;:::o;31332:240::-;31472:34;31468:1;31460:6;31456:14;31449:58;31541:23;31536:2;31528:6;31524:15;31517:48;31332:240;:::o;31578:366::-;31720:3;31741:67;31805:2;31800:3;31741:67;:::i;:::-;31734:74;;31817:93;31906:3;31817:93;:::i;:::-;31935:2;31930:3;31926:12;31919:19;;31578:366;;;:::o;31950:419::-;32116:4;32154:2;32143:9;32139:18;32131:26;;32203:9;32197:4;32193:20;32189:1;32178:9;32174:17;32167:47;32231:131;32357:4;32231:131;:::i;:::-;32223:139;;31950:419;;;:::o;32375:169::-;32515:21;32511:1;32503:6;32499:14;32492:45;32375:169;:::o;32550:366::-;32692:3;32713:67;32777:2;32772:3;32713:67;:::i;:::-;32706:74;;32789:93;32878:3;32789:93;:::i;:::-;32907:2;32902:3;32898:12;32891:19;;32550:366;;;:::o;32922:419::-;33088:4;33126:2;33115:9;33111:18;33103:26;;33175:9;33169:4;33165:20;33161:1;33150:9;33146:17;33139:47;33203:131;33329:4;33203:131;:::i;:::-;33195:139;;32922:419;;;:::o;33347:241::-;33487:34;33483:1;33475:6;33471:14;33464:58;33556:24;33551:2;33543:6;33539:15;33532:49;33347:241;:::o;33594:366::-;33736:3;33757:67;33821:2;33816:3;33757:67;:::i;:::-;33750:74;;33833:93;33922:3;33833:93;:::i;:::-;33951:2;33946:3;33942:12;33935:19;;33594:366;;;:::o;33966:419::-;34132:4;34170:2;34159:9;34155:18;34147:26;;34219:9;34213:4;34209:20;34205:1;34194:9;34190:17;34183:47;34247:131;34373:4;34247:131;:::i;:::-;34239:139;;33966:419;;;:::o;34391:191::-;34431:4;34451:20;34469:1;34451:20;:::i;:::-;34446:25;;34485:20;34503:1;34485:20;:::i;:::-;34480:25;;34524:1;34521;34518:8;34515:34;;;34529:18;;:::i;:::-;34515:34;34574:1;34571;34567:9;34559:17;;34391:191;;;;:::o;34588:220::-;34728:34;34724:1;34716:6;34712:14;34705:58;34797:3;34792:2;34784:6;34780:15;34773:28;34588:220;:::o;34814:366::-;34956:3;34977:67;35041:2;35036:3;34977:67;:::i;:::-;34970:74;;35053:93;35142:3;35053:93;:::i;:::-;35171:2;35166:3;35162:12;35155:19;;34814:366;;;:::o;35186:419::-;35352:4;35390:2;35379:9;35375:18;35367:26;;35439:9;35433:4;35429:20;35425:1;35414:9;35410:17;35403:47;35467:131;35593:4;35467:131;:::i;:::-;35459:139;;35186:419;;;:::o;35611:147::-;35712:11;35749:3;35734:18;;35611:147;;;;:::o;35764:114::-;;:::o;35884:398::-;36043:3;36064:83;36145:1;36140:3;36064:83;:::i;:::-;36057:90;;36156:93;36245:3;36156:93;:::i;:::-;36274:1;36269:3;36265:11;36258:18;;35884:398;;;:::o;36288:379::-;36472:3;36494:147;36637:3;36494:147;:::i;:::-;36487:154;;36658:3;36651:10;;36288:379;;;:::o;36673:442::-;36822:4;36860:2;36849:9;36845:18;36837:26;;36873:71;36941:1;36930:9;36926:17;36917:6;36873:71;:::i;:::-;36954:72;37022:2;37011:9;37007:18;36998:6;36954:72;:::i;:::-;37036;37104:2;37093:9;37089:18;37080:6;37036:72;:::i;:::-;36673:442;;;;;;:::o;37121:180::-;37169:77;37166:1;37159:88;37266:4;37263:1;37256:15;37290:4;37287:1;37280:15;37307:180;37355:77;37352:1;37345:88;37452:4;37449:1;37442:15;37476:4;37473:1;37466:15;37493:143;37550:5;37581:6;37575:13;37566:22;;37597:33;37624:5;37597:33;:::i;:::-;37493:143;;;;:::o;37642:351::-;37712:6;37761:2;37749:9;37740:7;37736:23;37732:32;37729:119;;;37767:79;;:::i;:::-;37729:119;37887:1;37912:64;37968:7;37959:6;37948:9;37944:22;37912:64;:::i;:::-;37902:74;;37858:128;37642:351;;;;:::o;37999:85::-;38044:7;38073:5;38062:16;;37999:85;;;:::o;38090:158::-;38148:9;38181:61;38199:42;38208:32;38234:5;38208:32;:::i;:::-;38199:42;:::i;:::-;38181:61;:::i;:::-;38168:74;;38090:158;;;:::o;38254:147::-;38349:45;38388:5;38349:45;:::i;:::-;38344:3;38337:58;38254:147;;:::o;38407:114::-;38474:6;38508:5;38502:12;38492:22;;38407:114;;;:::o;38527:184::-;38626:11;38660:6;38655:3;38648:19;38700:4;38695:3;38691:14;38676:29;;38527:184;;;;:::o;38717:132::-;38784:4;38807:3;38799:11;;38837:4;38832:3;38828:14;38820:22;;38717:132;;;:::o;38855:108::-;38932:24;38950:5;38932:24;:::i;:::-;38927:3;38920:37;38855:108;;:::o;38969:179::-;39038:10;39059:46;39101:3;39093:6;39059:46;:::i;:::-;39137:4;39132:3;39128:14;39114:28;;38969:179;;;;:::o;39154:113::-;39224:4;39256;39251:3;39247:14;39239:22;;39154:113;;;:::o;39303:732::-;39422:3;39451:54;39499:5;39451:54;:::i;:::-;39521:86;39600:6;39595:3;39521:86;:::i;:::-;39514:93;;39631:56;39681:5;39631:56;:::i;:::-;39710:7;39741:1;39726:284;39751:6;39748:1;39745:13;39726:284;;;39827:6;39821:13;39854:63;39913:3;39898:13;39854:63;:::i;:::-;39847:70;;39940:60;39993:6;39940:60;:::i;:::-;39930:70;;39786:224;39773:1;39770;39766:9;39761:14;;39726:284;;;39730:14;40026:3;40019:10;;39427:608;;;39303:732;;;;:::o;40041:831::-;40304:4;40342:3;40331:9;40327:19;40319:27;;40356:71;40424:1;40413:9;40409:17;40400:6;40356:71;:::i;:::-;40437:80;40513:2;40502:9;40498:18;40489:6;40437:80;:::i;:::-;40564:9;40558:4;40554:20;40549:2;40538:9;40534:18;40527:48;40592:108;40695:4;40686:6;40592:108;:::i;:::-;40584:116;;40710:72;40778:2;40767:9;40763:18;40754:6;40710:72;:::i;:::-;40792:73;40860:3;40849:9;40845:19;40836:6;40792:73;:::i;:::-;40041:831;;;;;;;;:::o;40878:807::-;41127:4;41165:3;41154:9;41150:19;41142:27;;41179:71;41247:1;41236:9;41232:17;41223:6;41179:71;:::i;:::-;41260:72;41328:2;41317:9;41313:18;41304:6;41260:72;:::i;:::-;41342:80;41418:2;41407:9;41403:18;41394:6;41342:80;:::i;:::-;41432;41508:2;41497:9;41493:18;41484:6;41432:80;:::i;:::-;41522:73;41590:3;41579:9;41575:19;41566:6;41522:73;:::i;:::-;41605;41673:3;41662:9;41658:19;41649:6;41605:73;:::i;:::-;40878:807;;;;;;;;;:::o;41691:663::-;41779:6;41787;41795;41844:2;41832:9;41823:7;41819:23;41815:32;41812:119;;;41850:79;;:::i;:::-;41812:119;41970:1;41995:64;42051:7;42042:6;42031:9;42027:22;41995:64;:::i;:::-;41985:74;;41941:128;42108:2;42134:64;42190:7;42181:6;42170:9;42166:22;42134:64;:::i;:::-;42124:74;;42079:129;42247:2;42273:64;42329:7;42320:6;42309:9;42305:22;42273:64;:::i;:::-;42263:74;;42218:129;41691:663;;;;;:::o
Swarm Source
ipfs://6c4799e73db895ab0d559f0eff890632cc45cc5c789263c340d399fa24947e25
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.