ERC-20
Overview
Max Total Supply
10,000,000,000,000 SCAMP
Holders
249
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.28668934840747558 SCAMPValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
SCAMP
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-05-18 */ // https://scamspumpthehardest.com/ // https://twitter.com/SCAMPcoin // https://t.me/scampportal // SPDX-License-Identifier: MIT pragma solidity ^0.8.13; 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 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); /** * * 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"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } 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 SCAMP is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool private swapping; address private devOpsWallet; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; bool public enableEarlySellTax = true; // Anti-bot and anti-whale mappings and variables mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch // Seller Map mapping (address => uint256) private _holderFirstBuyTimestamp; // Blacklist Map mapping (address => bool) private _blacklist; bool public transferDelayEnabled = true; uint256 public buyTotalFees; uint256 public buyDevOpsFee; uint256 public buyLiquidityFee; uint256 public sellTotalFees; uint256 public sellDevOpsFee; uint256 public sellLiquidityFee; uint256 public earlySellLiquidityFee; uint256 public earlySellDevOpsFee; uint256 public tokensForDevOps; uint256 public tokensForLiquidity; uint256 public tokensForDev; // block number of opened trading uint256 launchedAt; /******************/ // exclude 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 devOpsWalletUpdated(address indexed newWallet, address indexed oldWallet); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event AutoNukeLP(); event ManualNukeLP(); constructor() ERC20("scams pump the hardest", "SCAMP") { 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 _buyDevOpsFee = 0; uint256 _buyLiquidityFee = 0; uint256 _sellDevOpsFee = 0; uint256 _sellLiquidityFee = 0; uint256 _earlySellLiquidityFee = 0; uint256 _earlySellDevOpsFee = 0; uint256 totalSupply = 1 * 1e13 * 1e18; maxTransactionAmount = totalSupply * 30 / 1000; // 3% maxTransactionAmountTxn maxWallet = totalSupply * 30 / 1000; // 3% maxWallet swapTokensAtAmount = totalSupply * 10 / 10000; // 0.1% swap wallet buyDevOpsFee = _buyDevOpsFee; buyLiquidityFee = _buyLiquidityFee; buyTotalFees = buyDevOpsFee + buyLiquidityFee; sellDevOpsFee = _sellDevOpsFee; sellLiquidityFee = _sellLiquidityFee; sellTotalFees = sellDevOpsFee + sellLiquidityFee; earlySellLiquidityFee = _earlySellLiquidityFee; earlySellDevOpsFee = _earlySellDevOpsFee; devOpsWallet = address(0x4cAFFc4388F856Ca99a96186E30aF6C05981d14d); // set as devOps wallet // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromFees(address(0x4cAFFc4388F856Ca99a96186E30aF6C05981d14d), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); excludeFromMaxTransaction(address(0x4cAFFc4388F856Ca99a96186E30aF6C05981d14d), 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; launchedAt = block.number; } // 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; } function setEarlySellTax(bool onoff) external onlyOwner { enableEarlySellTax = onoff; } // 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 _devOpsFee, uint256 _liquidityFee) external onlyOwner { buyDevOpsFee = _devOpsFee; buyLiquidityFee = _liquidityFee; buyTotalFees = buyDevOpsFee + buyLiquidityFee; require(buyTotalFees <= 20, "Must keep fees at 20% or less"); } function updateSellFees(uint256 _devOpsFee, uint256 _liquidityFee, uint256 _earlySellLiquidityFee, uint256 _earlySellDevOpsFee) external onlyOwner { sellDevOpsFee = _devOpsFee; sellLiquidityFee = _liquidityFee; earlySellLiquidityFee = _earlySellLiquidityFee; earlySellDevOpsFee = _earlySellDevOpsFee; sellTotalFees = sellDevOpsFee + sellLiquidityFee; require(sellTotalFees <= 20, "Must keep fees at 20% or less"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function blacklistAccount (address account, bool isBlacklisted) public onlyOwner { require(block.number < launchedAt + 40, "Waited too long to blacklist"); _blacklist[account] = isBlacklisted; } 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 updateDevOpsWallet(address newDevOpsWallet) external onlyOwner { emit devOpsWalletUpdated(newDevOpsWallet, devOpsWallet); devOpsWallet = newDevOpsWallet; } 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"); require(!_blacklist[to] && !_blacklist[from], "You have been blacklisted from transfering tokens"); 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"); } } } // early sell logic bool isBuy = from == uniswapV2Pair; if (!isBuy && enableEarlySellTax) { if (_holderFirstBuyTimestamp[from] != 0 && (_holderFirstBuyTimestamp[from] + (24 hours) >= block.timestamp)) { sellLiquidityFee = earlySellLiquidityFee; sellDevOpsFee = earlySellDevOpsFee; sellTotalFees = sellDevOpsFee + sellLiquidityFee; } } else { if (_holderFirstBuyTimestamp[to] == 0) { _holderFirstBuyTimestamp[to] = block.timestamp; } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } 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; tokensForDevOps += fees * sellDevOpsFee / sellTotalFees; } // on buy else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees; tokensForDevOps += fees * buyDevOpsFee / 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 address(this), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForDevOps + 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 ethForDevOps = ethBalance.mul(tokensForDevOps).div(totalTokensToSwap); uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForDevOps - ethForDev; tokensForLiquidity = 0; tokensForDevOps = 0; tokensForDev = 0; if(liquidityTokens > 0 && ethForLiquidity > 0){ addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity); } (success,) = address(devOpsWallet).call{value: address(this).balance}(""); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"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":"devOpsWalletUpdated","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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"isBlacklisted","type":"bool"}],"name":"blacklistAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyDevOpsFee","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":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlySellDevOpsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earlySellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableEarlySellTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevOpsFee","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":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setEarlySellTax","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":"tokensForDevOps","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":"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":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_devOpsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newDevOpsWallet","type":"address"}],"name":"updateDevOpsWallet","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":"_devOpsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_earlySellLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_earlySellDevOpsFee","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
60c06040526001600a60006101000a81548160ff0219169083151502179055506000600a60016101000a81548160ff0219169083151502179055506000600a60026101000a81548160ff0219169083151502179055506001600a60036101000a81548160ff0219169083151502179055506001600e60006101000a81548160ff0219169083151502179055503480156200009857600080fd5b506040518060400160405280601681526020017f7363616d732070756d70207468652068617264657374000000000000000000008152506040518060400160405280600581526020017f5343414d50000000000000000000000000000000000000000000000000000000815250816003908162000116919062000de3565b50806004908162000128919062000de3565b50505060006200013d6200063660201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620002088160016200063e60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000288573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ae919062000f34565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000316573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033c919062000f34565b6040518363ffffffff1660e01b81526004016200035b92919062000f77565b6020604051808303816000875af11580156200037b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a1919062000f34565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620003e960a05160016200063e60201b60201c565b620003fe60a05160016200073b60201b60201c565b60008060008060008060006c7e37be2022c0914b268000000090506103e8601e826200042b919062000fd3565b6200043791906200104d565b6007819055506103e8601e826200044f919062000fd3565b6200045b91906200104d565b600981905550612710600a8262000473919062000fd3565b6200047f91906200104d565b6008819055508660108190555085601181905550601154601054620004a5919062001085565b600f819055508460138190555083601481905550601454601354620004cb919062001085565b6012819055508260158190555081601681905550734caffc4388f856ca99a96186e30af6c05981d14d600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200055662000548620007dc60201b60201c565b60016200080660201b60201c565b620005693060016200080660201b60201c565b6200057e61dead60016200080660201b60201c565b620005a5734caffc4388f856ca99a96186e30af6c05981d14d60016200080660201b60201c565b620005c7620005b9620007dc60201b60201c565b60016200063e60201b60201c565b620005da3060016200063e60201b60201c565b620005ef61dead60016200063e60201b60201c565b62000616734caffc4388f856ca99a96186e30af6c05981d14d60016200063e60201b60201c565b6200062833826200095360201b60201c565b50505050505050506200128f565b600033905090565b6200064e6200063660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620006e0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006d79062001121565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620008166200063660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620008a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200089f9062001121565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000947919062001160565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620009c5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009bc90620011cd565b60405180910390fd5b620009d96000838362000b0160201b60201c565b620009f58160025462000b0660201b6200259b1790919060201c565b60028190555062000a53816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000b0660201b6200259b1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000af5919062001200565b60405180910390a35050565b505050565b600080828462000b17919062001085565b90508381101562000b5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b56906200126d565b60405180910390fd5b8091505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000beb57607f821691505b60208210810362000c015762000c0062000ba3565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c6b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c2c565b62000c77868362000c2c565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000cc462000cbe62000cb88462000c8f565b62000c99565b62000c8f565b9050919050565b6000819050919050565b62000ce08362000ca3565b62000cf862000cef8262000ccb565b84845462000c39565b825550505050565b600090565b62000d0f62000d00565b62000d1c81848462000cd5565b505050565b5b8181101562000d445762000d3860008262000d05565b60018101905062000d22565b5050565b601f82111562000d935762000d5d8162000c07565b62000d688462000c1c565b8101602085101562000d78578190505b62000d9062000d878562000c1c565b83018262000d21565b50505b505050565b600082821c905092915050565b600062000db86000198460080262000d98565b1980831691505092915050565b600062000dd3838362000da5565b9150826002028217905092915050565b62000dee8262000b69565b67ffffffffffffffff81111562000e0a5762000e0962000b74565b5b62000e16825462000bd2565b62000e2382828562000d48565b600060209050601f83116001811462000e5b576000841562000e46578287015190505b62000e52858262000dc5565b86555062000ec2565b601f19841662000e6b8662000c07565b60005b8281101562000e955784890151825560018201915060208501945060208101905062000e6e565b8683101562000eb5578489015162000eb1601f89168262000da5565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000efc8262000ecf565b9050919050565b62000f0e8162000eef565b811462000f1a57600080fd5b50565b60008151905062000f2e8162000f03565b92915050565b60006020828403121562000f4d5762000f4c62000eca565b5b600062000f5d8482850162000f1d565b91505092915050565b62000f718162000eef565b82525050565b600060408201905062000f8e600083018562000f66565b62000f9d602083018462000f66565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000fe08262000c8f565b915062000fed8362000c8f565b925082820262000ffd8162000c8f565b9150828204841483151762001017576200101662000fa4565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200105a8262000c8f565b9150620010678362000c8f565b9250826200107a57620010796200101e565b5b828204905092915050565b6000620010928262000c8f565b91506200109f8362000c8f565b9250828201905080821115620010ba57620010b962000fa4565b5b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062001109602083620010c0565b91506200111682620010d1565b602082019050919050565b600060208201905081810360008301526200113c81620010fa565b9050919050565b60008115159050919050565b6200115a8162001143565b82525050565b60006020820190506200117760008301846200114f565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620011b5601f83620010c0565b9150620011c2826200117d565b602082019050919050565b60006020820190508181036000830152620011e881620011a6565b9050919050565b620011fa8162000c8f565b82525050565b6000602082019050620012176000830184620011ef565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062001255601b83620010c0565b915062001262826200121d565b602082019050919050565b60006020820190508181036000830152620012888162001246565b9050919050565b60805160a0516156d6620012f4600039600081816111a40152818161198501528181612c62015261306b015260008181610d6901528181612c0a01528181613e5101528181613f3201528181613f5901528181613ff5015261401c01526156d66000f3fe60806040526004361061031e5760003560e01c8063924de9b7116101ab578063c0246668116100f7578063e2f4560511610095578063f11a24d31161006f578063f11a24d314610bed578063f2fde38b14610c18578063f637434214610c41578063f8b45b0514610c6c57610325565b8063e2f4560514610b6e578063e7ad9fcd14610b99578063e884f26014610bc257610325565b8063c8c8ebe4116100d1578063c8c8ebe414610a9e578063d257b34f14610ac9578063d85ba06314610b06578063dd62ed3e14610b3157610325565b8063c024666814610a21578063c18bc19514610a4a578063c876d0b914610a7357610325565b8063a4d15b6411610164578063b2b2c0bb1161013e578063b2b2c0bb14610965578063b62496f514610990578063bbc0c742146109cd578063bde73318146109f857610325565b8063a4d15b64146108d2578063a5cf68ef146108fd578063a9059cbb1461092857610325565b8063924de9b7146107c457806395d89b41146107ed5780639a7a23d6146108185780639fccce3214610841578063a26577781461086c578063a457c2d71461089557610325565b80634a62bb651161026a57806370a08231116102235780637571336a116101fd5780637571336a1461072e578063762d868a146107575780638a8c523c146107825780638da5cb5b1461079957610325565b806370a08231146106af578063715018a6146106ec578063751039fc1461070357610325565b80634a62bb651461059d5780634fbee193146105c8578063541a43cf1461060557806366ca9b83146106305780636a486a8e146106595780636ddd17131461068457610325565b80631b5cc613116102d75780632d5a5d34116102b15780632d5a5d34146104e1578063313ce5671461050a578063395093511461053557806349bd5a5e1461057257610325565b80631b5cc61314610450578063203e727e1461047b57806323b872dd146104a457610325565b806306fdde031461032a578063095ea7b31461035557806310d5de53146103925780631694505e146103cf57806318160ddd146103fa5780631a8145bb1461042557610325565b3661032557005b600080fd5b34801561033657600080fd5b5061033f610c97565b60405161034c91906141bc565b60405180910390f35b34801561036157600080fd5b5061037c60048036038101906103779190614277565b610d29565b60405161038991906142d2565b60405180910390f35b34801561039e57600080fd5b506103b960048036038101906103b491906142ed565b610d47565b6040516103c691906142d2565b60405180910390f35b3480156103db57600080fd5b506103e4610d67565b6040516103f19190614379565b60405180910390f35b34801561040657600080fd5b5061040f610d8b565b60405161041c91906143a3565b60405180910390f35b34801561043157600080fd5b5061043a610d95565b60405161044791906143a3565b60405180910390f35b34801561045c57600080fd5b50610465610d9b565b60405161047291906143a3565b60405180910390f35b34801561048757600080fd5b506104a2600480360381019061049d91906143be565b610da1565b005b3480156104b057600080fd5b506104cb60048036038101906104c691906143eb565b610ecb565b6040516104d891906142d2565b60405180910390f35b3480156104ed57600080fd5b506105086004803603810190610503919061446a565b610fa4565b005b34801561051657600080fd5b5061051f6110e6565b60405161052c91906144c6565b60405180910390f35b34801561054157600080fd5b5061055c60048036038101906105579190614277565b6110ef565b60405161056991906142d2565b60405180910390f35b34801561057e57600080fd5b506105876111a2565b60405161059491906144f0565b60405180910390f35b3480156105a957600080fd5b506105b26111c6565b6040516105bf91906142d2565b60405180910390f35b3480156105d457600080fd5b506105ef60048036038101906105ea91906142ed565b6111d9565b6040516105fc91906142d2565b60405180910390f35b34801561061157600080fd5b5061061a61122f565b60405161062791906143a3565b60405180910390f35b34801561063c57600080fd5b506106576004803603810190610652919061450b565b611235565b005b34801561066557600080fd5b5061066e61133a565b60405161067b91906143a3565b60405180910390f35b34801561069057600080fd5b50610699611340565b6040516106a691906142d2565b60405180910390f35b3480156106bb57600080fd5b506106d660048036038101906106d191906142ed565b611353565b6040516106e391906143a3565b60405180910390f35b3480156106f857600080fd5b5061070161139b565b005b34801561070f57600080fd5b506107186114f3565b60405161072591906142d2565b60405180910390f35b34801561073a57600080fd5b506107556004803603810190610750919061446a565b6115ae565b005b34801561076357600080fd5b5061076c6116a0565b60405161077991906143a3565b60405180910390f35b34801561078e57600080fd5b506107976116a6565b005b3480156107a557600080fd5b506107ae61177c565b6040516107bb91906144f0565b60405180910390f35b3480156107d057600080fd5b506107eb60048036038101906107e6919061454b565b6117a6565b005b3480156107f957600080fd5b5061080261185a565b60405161080f91906141bc565b60405180910390f35b34801561082457600080fd5b5061083f600480360381019061083a919061446a565b6118ec565b005b34801561084d57600080fd5b50610856611a1f565b60405161086391906143a3565b60405180910390f35b34801561087857600080fd5b50610893600480360381019061088e919061454b565b611a25565b005b3480156108a157600080fd5b506108bc60048036038101906108b79190614277565b611ad9565b6040516108c991906142d2565b60405180910390f35b3480156108de57600080fd5b506108e7611ba6565b6040516108f491906142d2565b60405180910390f35b34801561090957600080fd5b50610912611bb9565b60405161091f91906143a3565b60405180910390f35b34801561093457600080fd5b5061094f600480360381019061094a9190614277565b611bbf565b60405161095c91906142d2565b60405180910390f35b34801561097157600080fd5b5061097a611bdd565b60405161098791906143a3565b60405180910390f35b34801561099c57600080fd5b506109b760048036038101906109b291906142ed565b611be3565b6040516109c491906142d2565b60405180910390f35b3480156109d957600080fd5b506109e2611c03565b6040516109ef91906142d2565b60405180910390f35b348015610a0457600080fd5b50610a1f6004803603810190610a1a91906142ed565b611c16565b005b348015610a2d57600080fd5b50610a486004803603810190610a43919061446a565b611d6d565b005b348015610a5657600080fd5b50610a716004803603810190610a6c91906143be565b611ead565b005b348015610a7f57600080fd5b50610a88611fd7565b604051610a9591906142d2565b60405180910390f35b348015610aaa57600080fd5b50610ab3611fea565b604051610ac091906143a3565b60405180910390f35b348015610ad557600080fd5b50610af06004803603810190610aeb91906143be565b611ff0565b604051610afd91906142d2565b60405180910390f35b348015610b1257600080fd5b50610b1b612160565b604051610b2891906143a3565b60405180910390f35b348015610b3d57600080fd5b50610b586004803603810190610b539190614578565b612166565b604051610b6591906143a3565b60405180910390f35b348015610b7a57600080fd5b50610b836121ed565b604051610b9091906143a3565b60405180910390f35b348015610ba557600080fd5b50610bc06004803603810190610bbb91906145b8565b6121f3565b005b348015610bce57600080fd5b50610bd7612308565b604051610be491906142d2565b60405180910390f35b348015610bf957600080fd5b50610c026123c3565b604051610c0f91906143a3565b60405180910390f35b348015610c2457600080fd5b50610c3f6004803603810190610c3a91906142ed565b6123c9565b005b348015610c4d57600080fd5b50610c5661258f565b604051610c6391906143a3565b60405180910390f35b348015610c7857600080fd5b50610c81612595565b604051610c8e91906143a3565b60405180910390f35b606060038054610ca69061464e565b80601f0160208091040260200160405190810160405280929190818152602001828054610cd29061464e565b8015610d1f5780601f10610cf457610100808354040283529160200191610d1f565b820191906000526020600020905b815481529060010190602001808311610d0257829003601f168201915b5050505050905090565b6000610d3d610d366125f9565b8484612601565b6001905092915050565b601c6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b60185481565b60165481565b610da96125f9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2f906146cb565b60405180910390fd5b670de0b6b3a76400006103e86001610e4e610d8b565b610e58919061471a565b610e62919061478b565b610e6c919061478b565b811015610eae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea59061482e565b60405180910390fd5b670de0b6b3a764000081610ec2919061471a565b60078190555050565b6000610ed88484846127ca565b610f9984610ee46125f9565b610f948560405180606001604052806028815260200161565460289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f4a6125f9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136ae9092919063ffffffff16565b612601565b600190509392505050565b610fac6125f9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461103b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611032906146cb565b60405180910390fd5b6028601a5461104a919061484e565b431061108b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611082906148ce565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006012905090565b60006111986110fc6125f9565b84611193856001600061110d6125f9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259b90919063ffffffff16565b612601565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600a60009054906101000a900460ff1681565b6000601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60155481565b61123d6125f9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c3906146cb565b60405180910390fd5b81601081905550806011819055506011546010546112ea919061484e565b600f819055506014600f541115611336576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132d9061493a565b60405180910390fd5b5050565b60125481565b600a60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113a36125f9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611432576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611429906146cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006114fd6125f9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461158c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611583906146cb565b60405180910390fd5b6000600a60006101000a81548160ff0219169083151502179055506001905090565b6115b66125f9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611645576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163c906146cb565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b6116ae6125f9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461173d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611734906146cb565b60405180910390fd5b6001600a60016101000a81548160ff0219169083151502179055506001600a60026101000a81548160ff02191690831515021790555043601a81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6117ae6125f9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461183d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611834906146cb565b60405180910390fd5b80600a60026101000a81548160ff02191690831515021790555050565b6060600480546118699061464e565b80601f01602080910402602001604051908101604052809291908181526020018280546118959061464e565b80156118e25780601f106118b7576101008083540402835291602001916118e2565b820191906000526020600020905b8154815290600101906020018083116118c557829003601f168201915b5050505050905090565b6118f46125f9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611983576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197a906146cb565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a08906149cc565b60405180910390fd5b611a1b8282613712565b5050565b60195481565b611a2d6125f9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab3906146cb565b60405180910390fd5b80600a60036101000a81548160ff02191690831515021790555050565b6000611b9c611ae66125f9565b84611b978560405180606001604052806025815260200161567c6025913960016000611b106125f9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136ae9092919063ffffffff16565b612601565b6001905092915050565b600a60039054906101000a900460ff1681565b60105481565b6000611bd3611bcc6125f9565b84846127ca565b6001905092915050565b60175481565b601d6020528060005260406000206000915054906101000a900460ff1681565b600a60019054906101000a900460ff1681565b611c1e6125f9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca4906146cb565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fbdcddef9ef45c223fdd883851191fd9fa95aa9b793f97f720258493ceed93d7560405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611d756125f9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfb906146cb565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611ea191906142d2565b60405180910390a25050565b611eb56125f9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3b906146cb565b60405180910390fd5b670de0b6b3a76400006103e86005611f5a610d8b565b611f64919061471a565b611f6e919061478b565b611f78919061478b565b811015611fba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb190614a5e565b60405180910390fd5b670de0b6b3a764000081611fce919061471a565b60098190555050565b600e60009054906101000a900460ff1681565b60075481565b6000611ffa6125f9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612089576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612080906146cb565b60405180910390fd5b620186a06001612097610d8b565b6120a1919061471a565b6120ab919061478b565b8210156120ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e490614af0565b60405180910390fd5b6103e860056120fa610d8b565b612104919061471a565b61210e919061478b565b821115612150576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214790614b82565b60405180910390fd5b8160088190555060019050919050565b600f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b6121fb6125f9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461228a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612281906146cb565b60405180910390fd5b836013819055508260148190555081601581905550806016819055506014546013546122b6919061484e565b60128190555060146012541115612302576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f99061493a565b60405180910390fd5b50505050565b60006123126125f9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612398906146cb565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b60115481565b6123d16125f9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612460576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612457906146cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036124cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c690614c14565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60145481565b60095481565b60008082846125aa919061484e565b9050838110156125ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e690614c80565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612670576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266790614d12565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d690614da4565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516127bd91906143a3565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612839576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283090614e36565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289f90614ec8565b60405180910390fd5b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561294c5750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61298b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298290614f5a565b60405180910390fd5b600081036129a45761299f838360006137b3565b6136a9565b600a60009054906101000a900460ff1615613067576129c161177c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612a2f57506129ff61177c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a685750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612aa2575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612abb5750600560149054906101000a900460ff16155b1561306657600a60019054906101000a900460ff16612bb557601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612b755750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612bb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bab90614fc6565b60405180910390fd5b5b600e60009054906101000a900460ff1615612d7d57612bd261177c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612c5957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612cb157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612d7c5743600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612d37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2e9061507e565b60405180910390fd5b43600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e205750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ec757600754811115612e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6190615110565b60405180910390fd5b600954612e7683611353565b82612e81919061484e565b1115612ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb99061517c565b60405180910390fd5b613065565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f6a5750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612fb957600754811115612fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fab9061520e565b60405180910390fd5b613064565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166130635760095461301683611353565b82613021919061484e565b1115613062576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130599061517c565b60405180910390fd5b5b5b5b5b5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16149050801580156130d45750600a60039054906101000a900460ff165b156131a9576000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415801561317657504262015180600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613173919061484e565b10155b156131a45760155460148190555060165460138190555060145460135461319d919061484e565b6012819055505b613236565b6000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036132355742600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b600061324130611353565b9050600060085482101590508080156132665750600a60029054906101000a900460ff165b801561327f5750600560149054906101000a900460ff16155b80156132d55750601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561332b5750601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133815750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133c5576001600560146101000a81548160ff0219169083151502179055506133a9613a46565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061347b5750601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561348557600090505b6000811561369857601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134e857506000601254115b1561358257613515606461350760125489613c9f90919063ffffffff16565b613d1990919063ffffffff16565b905060125460145482613528919061471a565b613532919061478b565b60186000828254613543919061484e565b925050819055506012546013548261355b919061471a565b613565919061478b565b60176000828254613576919061484e565b92505081905550613674565b601d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156135dd57506000600f54115b156136735761360a60646135fc600f5489613c9f90919063ffffffff16565b613d1990919063ffffffff16565b9050600f546011548261361d919061471a565b613627919061478b565b60186000828254613638919061484e565b92505081905550600f5460105482613650919061471a565b61365a919061478b565b6017600082825461366b919061484e565b925050819055505b5b6000811115613689576136888830836137b3565b5b8086613695919061522e565b95505b6136a38888886137b3565b50505050505b505050565b60008383111582906136f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136ed91906141bc565b60405180910390fd5b5060008385613705919061522e565b9050809150509392505050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613822576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161381990614e36565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613891576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161388890614ec8565b60405180910390fd5b61389c838383613d63565b6139078160405180606001604052806026815260200161562e602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136ae9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061399a816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259b90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613a3991906143a3565b60405180910390a3505050565b6000613a5130611353565b90506000601954601754601854613a68919061484e565b613a72919061484e565b9050600080831480613a845750600082145b15613a9157505050613c9d565b6014600854613aa0919061471a565b831115613ab9576014600854613ab6919061471a565b92505b600060028360185486613acc919061471a565b613ad6919061478b565b613ae0919061478b565b90506000613af78286613d6890919063ffffffff16565b90506000479050613b0782613db2565b6000613b1c8247613d6890919063ffffffff16565b90506000613b4787613b3960175485613c9f90919063ffffffff16565b613d1990919063ffffffff16565b90506000613b7288613b6460195486613c9f90919063ffffffff16565b613d1990919063ffffffff16565b90506000818385613b83919061522e565b613b8d919061522e565b9050600060188190555060006017819055506000601981905550600087118015613bb75750600081115b15613c0457613bc68782613fef565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601854604051613bfb93929190615262565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613c4a906152ca565b60006040518083038185875af1925050503d8060008114613c87576040519150601f19603f3d011682016040523d82523d6000602084013e613c8c565b606091505b505080985050505050505050505050505b565b6000808303613cb15760009050613d13565b60008284613cbf919061471a565b9050828482613cce919061478b565b14613d0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d0590615351565b60405180910390fd5b809150505b92915050565b6000613d5b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506140c9565b905092915050565b505050565b6000613daa83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506136ae565b905092915050565b6000600267ffffffffffffffff811115613dcf57613dce615371565b5b604051908082528060200260200182016040528015613dfd5781602001602082028036833780820191505090505b5090503081600081518110613e1557613e146153a0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613eba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ede91906153e4565b81600181518110613ef257613ef16153a0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f57307f000000000000000000000000000000000000000000000000000000000000000084612601565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613fb995949392919061550a565b600060405180830381600087803b158015613fd357600080fd5b505af1158015613fe7573d6000803e3d6000fd5b505050505050565b61401a307f000000000000000000000000000000000000000000000000000000000000000084612601565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b815260040161407f96959493929190615564565b60606040518083038185885af115801561409d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906140c291906155da565b5050505050565b60008083118290614110576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161410791906141bc565b60405180910390fd5b506000838561411f919061478b565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561416657808201518184015260208101905061414b565b60008484015250505050565b6000601f19601f8301169050919050565b600061418e8261412c565b6141988185614137565b93506141a8818560208601614148565b6141b181614172565b840191505092915050565b600060208201905081810360008301526141d68184614183565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061420e826141e3565b9050919050565b61421e81614203565b811461422957600080fd5b50565b60008135905061423b81614215565b92915050565b6000819050919050565b61425481614241565b811461425f57600080fd5b50565b6000813590506142718161424b565b92915050565b6000806040838503121561428e5761428d6141de565b5b600061429c8582860161422c565b92505060206142ad85828601614262565b9150509250929050565b60008115159050919050565b6142cc816142b7565b82525050565b60006020820190506142e760008301846142c3565b92915050565b600060208284031215614303576143026141de565b5b60006143118482850161422c565b91505092915050565b6000819050919050565b600061433f61433a614335846141e3565b61431a565b6141e3565b9050919050565b600061435182614324565b9050919050565b600061436382614346565b9050919050565b61437381614358565b82525050565b600060208201905061438e600083018461436a565b92915050565b61439d81614241565b82525050565b60006020820190506143b86000830184614394565b92915050565b6000602082840312156143d4576143d36141de565b5b60006143e284828501614262565b91505092915050565b600080600060608486031215614404576144036141de565b5b60006144128682870161422c565b93505060206144238682870161422c565b925050604061443486828701614262565b9150509250925092565b614447816142b7565b811461445257600080fd5b50565b6000813590506144648161443e565b92915050565b60008060408385031215614481576144806141de565b5b600061448f8582860161422c565b92505060206144a085828601614455565b9150509250929050565b600060ff82169050919050565b6144c0816144aa565b82525050565b60006020820190506144db60008301846144b7565b92915050565b6144ea81614203565b82525050565b600060208201905061450560008301846144e1565b92915050565b60008060408385031215614522576145216141de565b5b600061453085828601614262565b925050602061454185828601614262565b9150509250929050565b600060208284031215614561576145606141de565b5b600061456f84828501614455565b91505092915050565b6000806040838503121561458f5761458e6141de565b5b600061459d8582860161422c565b92505060206145ae8582860161422c565b9150509250929050565b600080600080608085870312156145d2576145d16141de565b5b60006145e087828801614262565b94505060206145f187828801614262565b935050604061460287828801614262565b925050606061461387828801614262565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061466657607f821691505b6020821081036146795761467861461f565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006146b5602083614137565b91506146c08261467f565b602082019050919050565b600060208201905081810360008301526146e4816146a8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061472582614241565b915061473083614241565b925082820261473e81614241565b91508282048414831517614755576147546146eb565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061479682614241565b91506147a183614241565b9250826147b1576147b061475c565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614818602f83614137565b9150614823826147bc565b604082019050919050565b600060208201905081810360008301526148478161480b565b9050919050565b600061485982614241565b915061486483614241565b925082820190508082111561487c5761487b6146eb565b5b92915050565b7f57616974656420746f6f206c6f6e6720746f20626c61636b6c69737400000000600082015250565b60006148b8601c83614137565b91506148c382614882565b602082019050919050565b600060208201905081810360008301526148e7816148ab565b9050919050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b6000614924601d83614137565b915061492f826148ee565b602082019050919050565b6000602082019050818103600083015261495381614917565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006149b6603983614137565b91506149c18261495a565b604082019050919050565b600060208201905081810360008301526149e5816149a9565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614a48602483614137565b9150614a53826149ec565b604082019050919050565b60006020820190508181036000830152614a7781614a3b565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614ada603583614137565b9150614ae582614a7e565b604082019050919050565b60006020820190508181036000830152614b0981614acd565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614b6c603483614137565b9150614b7782614b10565b604082019050919050565b60006020820190508181036000830152614b9b81614b5f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614bfe602683614137565b9150614c0982614ba2565b604082019050919050565b60006020820190508181036000830152614c2d81614bf1565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614c6a601b83614137565b9150614c7582614c34565b602082019050919050565b60006020820190508181036000830152614c9981614c5d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614cfc602483614137565b9150614d0782614ca0565b604082019050919050565b60006020820190508181036000830152614d2b81614cef565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614d8e602283614137565b9150614d9982614d32565b604082019050919050565b60006020820190508181036000830152614dbd81614d81565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614e20602583614137565b9150614e2b82614dc4565b604082019050919050565b60006020820190508181036000830152614e4f81614e13565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614eb2602383614137565b9150614ebd82614e56565b604082019050919050565b60006020820190508181036000830152614ee181614ea5565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460008201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b6000614f44603183614137565b9150614f4f82614ee8565b604082019050919050565b60006020820190508181036000830152614f7381614f37565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614fb0601683614137565b9150614fbb82614f7a565b602082019050919050565b60006020820190508181036000830152614fdf81614fa3565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000615068604983614137565b915061507382614fe6565b606082019050919050565b600060208201905081810360008301526150978161505b565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006150fa603583614137565b91506151058261509e565b604082019050919050565b60006020820190508181036000830152615129816150ed565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000615166601383614137565b915061517182615130565b602082019050919050565b6000602082019050818103600083015261519581615159565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006151f8603683614137565b91506152038261519c565b604082019050919050565b60006020820190508181036000830152615227816151eb565b9050919050565b600061523982614241565b915061524483614241565b925082820390508181111561525c5761525b6146eb565b5b92915050565b60006060820190506152776000830186614394565b6152846020830185614394565b6152916040830184614394565b949350505050565b600081905092915050565b50565b60006152b4600083615299565b91506152bf826152a4565b600082019050919050565b60006152d5826152a7565b9150819050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061533b602183614137565b9150615346826152df565b604082019050919050565b6000602082019050818103600083015261536a8161532e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506153de81614215565b92915050565b6000602082840312156153fa576153f96141de565b5b6000615408848285016153cf565b91505092915050565b6000819050919050565b600061543661543161542c84615411565b61431a565b614241565b9050919050565b6154468161541b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61548181614203565b82525050565b60006154938383615478565b60208301905092915050565b6000602082019050919050565b60006154b78261544c565b6154c18185615457565b93506154cc83615468565b8060005b838110156154fd5781516154e48882615487565b97506154ef8361549f565b9250506001810190506154d0565b5085935050505092915050565b600060a08201905061551f6000830188614394565b61552c602083018761543d565b818103604083015261553e81866154ac565b905061554d60608301856144e1565b61555a6080830184614394565b9695505050505050565b600060c08201905061557960008301896144e1565b6155866020830188614394565b615593604083018761543d565b6155a0606083018661543d565b6155ad60808301856144e1565b6155ba60a0830184614394565b979650505050505050565b6000815190506155d48161424b565b92915050565b6000806000606084860312156155f3576155f26141de565b5b6000615601868287016155c5565b9350506020615612868287016155c5565b9250506040615623868287016155c5565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203bf26186f3630018503c392b50e1c1eafe21f8498a7742ba053599f35784d70b64736f6c63430008120033
Deployed Bytecode
0x60806040526004361061031e5760003560e01c8063924de9b7116101ab578063c0246668116100f7578063e2f4560511610095578063f11a24d31161006f578063f11a24d314610bed578063f2fde38b14610c18578063f637434214610c41578063f8b45b0514610c6c57610325565b8063e2f4560514610b6e578063e7ad9fcd14610b99578063e884f26014610bc257610325565b8063c8c8ebe4116100d1578063c8c8ebe414610a9e578063d257b34f14610ac9578063d85ba06314610b06578063dd62ed3e14610b3157610325565b8063c024666814610a21578063c18bc19514610a4a578063c876d0b914610a7357610325565b8063a4d15b6411610164578063b2b2c0bb1161013e578063b2b2c0bb14610965578063b62496f514610990578063bbc0c742146109cd578063bde73318146109f857610325565b8063a4d15b64146108d2578063a5cf68ef146108fd578063a9059cbb1461092857610325565b8063924de9b7146107c457806395d89b41146107ed5780639a7a23d6146108185780639fccce3214610841578063a26577781461086c578063a457c2d71461089557610325565b80634a62bb651161026a57806370a08231116102235780637571336a116101fd5780637571336a1461072e578063762d868a146107575780638a8c523c146107825780638da5cb5b1461079957610325565b806370a08231146106af578063715018a6146106ec578063751039fc1461070357610325565b80634a62bb651461059d5780634fbee193146105c8578063541a43cf1461060557806366ca9b83146106305780636a486a8e146106595780636ddd17131461068457610325565b80631b5cc613116102d75780632d5a5d34116102b15780632d5a5d34146104e1578063313ce5671461050a578063395093511461053557806349bd5a5e1461057257610325565b80631b5cc61314610450578063203e727e1461047b57806323b872dd146104a457610325565b806306fdde031461032a578063095ea7b31461035557806310d5de53146103925780631694505e146103cf57806318160ddd146103fa5780631a8145bb1461042557610325565b3661032557005b600080fd5b34801561033657600080fd5b5061033f610c97565b60405161034c91906141bc565b60405180910390f35b34801561036157600080fd5b5061037c60048036038101906103779190614277565b610d29565b60405161038991906142d2565b60405180910390f35b34801561039e57600080fd5b506103b960048036038101906103b491906142ed565b610d47565b6040516103c691906142d2565b60405180910390f35b3480156103db57600080fd5b506103e4610d67565b6040516103f19190614379565b60405180910390f35b34801561040657600080fd5b5061040f610d8b565b60405161041c91906143a3565b60405180910390f35b34801561043157600080fd5b5061043a610d95565b60405161044791906143a3565b60405180910390f35b34801561045c57600080fd5b50610465610d9b565b60405161047291906143a3565b60405180910390f35b34801561048757600080fd5b506104a2600480360381019061049d91906143be565b610da1565b005b3480156104b057600080fd5b506104cb60048036038101906104c691906143eb565b610ecb565b6040516104d891906142d2565b60405180910390f35b3480156104ed57600080fd5b506105086004803603810190610503919061446a565b610fa4565b005b34801561051657600080fd5b5061051f6110e6565b60405161052c91906144c6565b60405180910390f35b34801561054157600080fd5b5061055c60048036038101906105579190614277565b6110ef565b60405161056991906142d2565b60405180910390f35b34801561057e57600080fd5b506105876111a2565b60405161059491906144f0565b60405180910390f35b3480156105a957600080fd5b506105b26111c6565b6040516105bf91906142d2565b60405180910390f35b3480156105d457600080fd5b506105ef60048036038101906105ea91906142ed565b6111d9565b6040516105fc91906142d2565b60405180910390f35b34801561061157600080fd5b5061061a61122f565b60405161062791906143a3565b60405180910390f35b34801561063c57600080fd5b506106576004803603810190610652919061450b565b611235565b005b34801561066557600080fd5b5061066e61133a565b60405161067b91906143a3565b60405180910390f35b34801561069057600080fd5b50610699611340565b6040516106a691906142d2565b60405180910390f35b3480156106bb57600080fd5b506106d660048036038101906106d191906142ed565b611353565b6040516106e391906143a3565b60405180910390f35b3480156106f857600080fd5b5061070161139b565b005b34801561070f57600080fd5b506107186114f3565b60405161072591906142d2565b60405180910390f35b34801561073a57600080fd5b506107556004803603810190610750919061446a565b6115ae565b005b34801561076357600080fd5b5061076c6116a0565b60405161077991906143a3565b60405180910390f35b34801561078e57600080fd5b506107976116a6565b005b3480156107a557600080fd5b506107ae61177c565b6040516107bb91906144f0565b60405180910390f35b3480156107d057600080fd5b506107eb60048036038101906107e6919061454b565b6117a6565b005b3480156107f957600080fd5b5061080261185a565b60405161080f91906141bc565b60405180910390f35b34801561082457600080fd5b5061083f600480360381019061083a919061446a565b6118ec565b005b34801561084d57600080fd5b50610856611a1f565b60405161086391906143a3565b60405180910390f35b34801561087857600080fd5b50610893600480360381019061088e919061454b565b611a25565b005b3480156108a157600080fd5b506108bc60048036038101906108b79190614277565b611ad9565b6040516108c991906142d2565b60405180910390f35b3480156108de57600080fd5b506108e7611ba6565b6040516108f491906142d2565b60405180910390f35b34801561090957600080fd5b50610912611bb9565b60405161091f91906143a3565b60405180910390f35b34801561093457600080fd5b5061094f600480360381019061094a9190614277565b611bbf565b60405161095c91906142d2565b60405180910390f35b34801561097157600080fd5b5061097a611bdd565b60405161098791906143a3565b60405180910390f35b34801561099c57600080fd5b506109b760048036038101906109b291906142ed565b611be3565b6040516109c491906142d2565b60405180910390f35b3480156109d957600080fd5b506109e2611c03565b6040516109ef91906142d2565b60405180910390f35b348015610a0457600080fd5b50610a1f6004803603810190610a1a91906142ed565b611c16565b005b348015610a2d57600080fd5b50610a486004803603810190610a43919061446a565b611d6d565b005b348015610a5657600080fd5b50610a716004803603810190610a6c91906143be565b611ead565b005b348015610a7f57600080fd5b50610a88611fd7565b604051610a9591906142d2565b60405180910390f35b348015610aaa57600080fd5b50610ab3611fea565b604051610ac091906143a3565b60405180910390f35b348015610ad557600080fd5b50610af06004803603810190610aeb91906143be565b611ff0565b604051610afd91906142d2565b60405180910390f35b348015610b1257600080fd5b50610b1b612160565b604051610b2891906143a3565b60405180910390f35b348015610b3d57600080fd5b50610b586004803603810190610b539190614578565b612166565b604051610b6591906143a3565b60405180910390f35b348015610b7a57600080fd5b50610b836121ed565b604051610b9091906143a3565b60405180910390f35b348015610ba557600080fd5b50610bc06004803603810190610bbb91906145b8565b6121f3565b005b348015610bce57600080fd5b50610bd7612308565b604051610be491906142d2565b60405180910390f35b348015610bf957600080fd5b50610c026123c3565b604051610c0f91906143a3565b60405180910390f35b348015610c2457600080fd5b50610c3f6004803603810190610c3a91906142ed565b6123c9565b005b348015610c4d57600080fd5b50610c5661258f565b604051610c6391906143a3565b60405180910390f35b348015610c7857600080fd5b50610c81612595565b604051610c8e91906143a3565b60405180910390f35b606060038054610ca69061464e565b80601f0160208091040260200160405190810160405280929190818152602001828054610cd29061464e565b8015610d1f5780601f10610cf457610100808354040283529160200191610d1f565b820191906000526020600020905b815481529060010190602001808311610d0257829003601f168201915b5050505050905090565b6000610d3d610d366125f9565b8484612601565b6001905092915050565b601c6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b60185481565b60165481565b610da96125f9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2f906146cb565b60405180910390fd5b670de0b6b3a76400006103e86001610e4e610d8b565b610e58919061471a565b610e62919061478b565b610e6c919061478b565b811015610eae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea59061482e565b60405180910390fd5b670de0b6b3a764000081610ec2919061471a565b60078190555050565b6000610ed88484846127ca565b610f9984610ee46125f9565b610f948560405180606001604052806028815260200161565460289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f4a6125f9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136ae9092919063ffffffff16565b612601565b600190509392505050565b610fac6125f9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461103b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611032906146cb565b60405180910390fd5b6028601a5461104a919061484e565b431061108b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611082906148ce565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006012905090565b60006111986110fc6125f9565b84611193856001600061110d6125f9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259b90919063ffffffff16565b612601565b6001905092915050565b7f000000000000000000000000e940bf53a4e8da4a26e71ba46aa0ac98615c671781565b600a60009054906101000a900460ff1681565b6000601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60155481565b61123d6125f9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c3906146cb565b60405180910390fd5b81601081905550806011819055506011546010546112ea919061484e565b600f819055506014600f541115611336576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132d9061493a565b60405180910390fd5b5050565b60125481565b600a60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113a36125f9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611432576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611429906146cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006114fd6125f9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461158c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611583906146cb565b60405180910390fd5b6000600a60006101000a81548160ff0219169083151502179055506001905090565b6115b66125f9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611645576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163c906146cb565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b6116ae6125f9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461173d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611734906146cb565b60405180910390fd5b6001600a60016101000a81548160ff0219169083151502179055506001600a60026101000a81548160ff02191690831515021790555043601a81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6117ae6125f9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461183d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611834906146cb565b60405180910390fd5b80600a60026101000a81548160ff02191690831515021790555050565b6060600480546118699061464e565b80601f01602080910402602001604051908101604052809291908181526020018280546118959061464e565b80156118e25780601f106118b7576101008083540402835291602001916118e2565b820191906000526020600020905b8154815290600101906020018083116118c557829003601f168201915b5050505050905090565b6118f46125f9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611983576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197a906146cb565b60405180910390fd5b7f000000000000000000000000e940bf53a4e8da4a26e71ba46aa0ac98615c671773ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a08906149cc565b60405180910390fd5b611a1b8282613712565b5050565b60195481565b611a2d6125f9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab3906146cb565b60405180910390fd5b80600a60036101000a81548160ff02191690831515021790555050565b6000611b9c611ae66125f9565b84611b978560405180606001604052806025815260200161567c6025913960016000611b106125f9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136ae9092919063ffffffff16565b612601565b6001905092915050565b600a60039054906101000a900460ff1681565b60105481565b6000611bd3611bcc6125f9565b84846127ca565b6001905092915050565b60175481565b601d6020528060005260406000206000915054906101000a900460ff1681565b600a60019054906101000a900460ff1681565b611c1e6125f9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca4906146cb565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fbdcddef9ef45c223fdd883851191fd9fa95aa9b793f97f720258493ceed93d7560405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611d756125f9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfb906146cb565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611ea191906142d2565b60405180910390a25050565b611eb56125f9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3b906146cb565b60405180910390fd5b670de0b6b3a76400006103e86005611f5a610d8b565b611f64919061471a565b611f6e919061478b565b611f78919061478b565b811015611fba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb190614a5e565b60405180910390fd5b670de0b6b3a764000081611fce919061471a565b60098190555050565b600e60009054906101000a900460ff1681565b60075481565b6000611ffa6125f9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612089576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612080906146cb565b60405180910390fd5b620186a06001612097610d8b565b6120a1919061471a565b6120ab919061478b565b8210156120ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e490614af0565b60405180910390fd5b6103e860056120fa610d8b565b612104919061471a565b61210e919061478b565b821115612150576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214790614b82565b60405180910390fd5b8160088190555060019050919050565b600f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b6121fb6125f9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461228a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612281906146cb565b60405180910390fd5b836013819055508260148190555081601581905550806016819055506014546013546122b6919061484e565b60128190555060146012541115612302576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f99061493a565b60405180910390fd5b50505050565b60006123126125f9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612398906146cb565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b60115481565b6123d16125f9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612460576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612457906146cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036124cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c690614c14565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60145481565b60095481565b60008082846125aa919061484e565b9050838110156125ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e690614c80565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612670576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266790614d12565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d690614da4565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516127bd91906143a3565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612839576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283090614e36565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289f90614ec8565b60405180910390fd5b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561294c5750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61298b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298290614f5a565b60405180910390fd5b600081036129a45761299f838360006137b3565b6136a9565b600a60009054906101000a900460ff1615613067576129c161177c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612a2f57506129ff61177c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a685750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612aa2575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612abb5750600560149054906101000a900460ff16155b1561306657600a60019054906101000a900460ff16612bb557601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612b755750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612bb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bab90614fc6565b60405180910390fd5b5b600e60009054906101000a900460ff1615612d7d57612bd261177c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612c5957507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612cb157507f000000000000000000000000e940bf53a4e8da4a26e71ba46aa0ac98615c671773ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612d7c5743600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612d37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2e9061507e565b60405180910390fd5b43600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e205750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ec757600754811115612e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6190615110565b60405180910390fd5b600954612e7683611353565b82612e81919061484e565b1115612ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb99061517c565b60405180910390fd5b613065565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f6a5750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612fb957600754811115612fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fab9061520e565b60405180910390fd5b613064565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166130635760095461301683611353565b82613021919061484e565b1115613062576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130599061517c565b60405180910390fd5b5b5b5b5b5b60007f000000000000000000000000e940bf53a4e8da4a26e71ba46aa0ac98615c671773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16149050801580156130d45750600a60039054906101000a900460ff165b156131a9576000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415801561317657504262015180600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613173919061484e565b10155b156131a45760155460148190555060165460138190555060145460135461319d919061484e565b6012819055505b613236565b6000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036132355742600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b600061324130611353565b9050600060085482101590508080156132665750600a60029054906101000a900460ff165b801561327f5750600560149054906101000a900460ff16155b80156132d55750601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561332b5750601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133815750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133c5576001600560146101000a81548160ff0219169083151502179055506133a9613a46565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061347b5750601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561348557600090505b6000811561369857601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134e857506000601254115b1561358257613515606461350760125489613c9f90919063ffffffff16565b613d1990919063ffffffff16565b905060125460145482613528919061471a565b613532919061478b565b60186000828254613543919061484e565b925050819055506012546013548261355b919061471a565b613565919061478b565b60176000828254613576919061484e565b92505081905550613674565b601d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156135dd57506000600f54115b156136735761360a60646135fc600f5489613c9f90919063ffffffff16565b613d1990919063ffffffff16565b9050600f546011548261361d919061471a565b613627919061478b565b60186000828254613638919061484e565b92505081905550600f5460105482613650919061471a565b61365a919061478b565b6017600082825461366b919061484e565b925050819055505b5b6000811115613689576136888830836137b3565b5b8086613695919061522e565b95505b6136a38888886137b3565b50505050505b505050565b60008383111582906136f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136ed91906141bc565b60405180910390fd5b5060008385613705919061522e565b9050809150509392505050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613822576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161381990614e36565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613891576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161388890614ec8565b60405180910390fd5b61389c838383613d63565b6139078160405180606001604052806026815260200161562e602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136ae9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061399a816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259b90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613a3991906143a3565b60405180910390a3505050565b6000613a5130611353565b90506000601954601754601854613a68919061484e565b613a72919061484e565b9050600080831480613a845750600082145b15613a9157505050613c9d565b6014600854613aa0919061471a565b831115613ab9576014600854613ab6919061471a565b92505b600060028360185486613acc919061471a565b613ad6919061478b565b613ae0919061478b565b90506000613af78286613d6890919063ffffffff16565b90506000479050613b0782613db2565b6000613b1c8247613d6890919063ffffffff16565b90506000613b4787613b3960175485613c9f90919063ffffffff16565b613d1990919063ffffffff16565b90506000613b7288613b6460195486613c9f90919063ffffffff16565b613d1990919063ffffffff16565b90506000818385613b83919061522e565b613b8d919061522e565b9050600060188190555060006017819055506000601981905550600087118015613bb75750600081115b15613c0457613bc68782613fef565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601854604051613bfb93929190615262565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613c4a906152ca565b60006040518083038185875af1925050503d8060008114613c87576040519150601f19603f3d011682016040523d82523d6000602084013e613c8c565b606091505b505080985050505050505050505050505b565b6000808303613cb15760009050613d13565b60008284613cbf919061471a565b9050828482613cce919061478b565b14613d0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d0590615351565b60405180910390fd5b809150505b92915050565b6000613d5b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506140c9565b905092915050565b505050565b6000613daa83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506136ae565b905092915050565b6000600267ffffffffffffffff811115613dcf57613dce615371565b5b604051908082528060200260200182016040528015613dfd5781602001602082028036833780820191505090505b5090503081600081518110613e1557613e146153a0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613eba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ede91906153e4565b81600181518110613ef257613ef16153a0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f57307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612601565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613fb995949392919061550a565b600060405180830381600087803b158015613fd357600080fd5b505af1158015613fe7573d6000803e3d6000fd5b505050505050565b61401a307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612601565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b815260040161407f96959493929190615564565b60606040518083038185885af115801561409d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906140c291906155da565b5050505050565b60008083118290614110576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161410791906141bc565b60405180910390fd5b506000838561411f919061478b565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561416657808201518184015260208101905061414b565b60008484015250505050565b6000601f19601f8301169050919050565b600061418e8261412c565b6141988185614137565b93506141a8818560208601614148565b6141b181614172565b840191505092915050565b600060208201905081810360008301526141d68184614183565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061420e826141e3565b9050919050565b61421e81614203565b811461422957600080fd5b50565b60008135905061423b81614215565b92915050565b6000819050919050565b61425481614241565b811461425f57600080fd5b50565b6000813590506142718161424b565b92915050565b6000806040838503121561428e5761428d6141de565b5b600061429c8582860161422c565b92505060206142ad85828601614262565b9150509250929050565b60008115159050919050565b6142cc816142b7565b82525050565b60006020820190506142e760008301846142c3565b92915050565b600060208284031215614303576143026141de565b5b60006143118482850161422c565b91505092915050565b6000819050919050565b600061433f61433a614335846141e3565b61431a565b6141e3565b9050919050565b600061435182614324565b9050919050565b600061436382614346565b9050919050565b61437381614358565b82525050565b600060208201905061438e600083018461436a565b92915050565b61439d81614241565b82525050565b60006020820190506143b86000830184614394565b92915050565b6000602082840312156143d4576143d36141de565b5b60006143e284828501614262565b91505092915050565b600080600060608486031215614404576144036141de565b5b60006144128682870161422c565b93505060206144238682870161422c565b925050604061443486828701614262565b9150509250925092565b614447816142b7565b811461445257600080fd5b50565b6000813590506144648161443e565b92915050565b60008060408385031215614481576144806141de565b5b600061448f8582860161422c565b92505060206144a085828601614455565b9150509250929050565b600060ff82169050919050565b6144c0816144aa565b82525050565b60006020820190506144db60008301846144b7565b92915050565b6144ea81614203565b82525050565b600060208201905061450560008301846144e1565b92915050565b60008060408385031215614522576145216141de565b5b600061453085828601614262565b925050602061454185828601614262565b9150509250929050565b600060208284031215614561576145606141de565b5b600061456f84828501614455565b91505092915050565b6000806040838503121561458f5761458e6141de565b5b600061459d8582860161422c565b92505060206145ae8582860161422c565b9150509250929050565b600080600080608085870312156145d2576145d16141de565b5b60006145e087828801614262565b94505060206145f187828801614262565b935050604061460287828801614262565b925050606061461387828801614262565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061466657607f821691505b6020821081036146795761467861461f565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006146b5602083614137565b91506146c08261467f565b602082019050919050565b600060208201905081810360008301526146e4816146a8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061472582614241565b915061473083614241565b925082820261473e81614241565b91508282048414831517614755576147546146eb565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061479682614241565b91506147a183614241565b9250826147b1576147b061475c565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614818602f83614137565b9150614823826147bc565b604082019050919050565b600060208201905081810360008301526148478161480b565b9050919050565b600061485982614241565b915061486483614241565b925082820190508082111561487c5761487b6146eb565b5b92915050565b7f57616974656420746f6f206c6f6e6720746f20626c61636b6c69737400000000600082015250565b60006148b8601c83614137565b91506148c382614882565b602082019050919050565b600060208201905081810360008301526148e7816148ab565b9050919050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b6000614924601d83614137565b915061492f826148ee565b602082019050919050565b6000602082019050818103600083015261495381614917565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006149b6603983614137565b91506149c18261495a565b604082019050919050565b600060208201905081810360008301526149e5816149a9565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614a48602483614137565b9150614a53826149ec565b604082019050919050565b60006020820190508181036000830152614a7781614a3b565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614ada603583614137565b9150614ae582614a7e565b604082019050919050565b60006020820190508181036000830152614b0981614acd565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614b6c603483614137565b9150614b7782614b10565b604082019050919050565b60006020820190508181036000830152614b9b81614b5f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614bfe602683614137565b9150614c0982614ba2565b604082019050919050565b60006020820190508181036000830152614c2d81614bf1565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614c6a601b83614137565b9150614c7582614c34565b602082019050919050565b60006020820190508181036000830152614c9981614c5d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614cfc602483614137565b9150614d0782614ca0565b604082019050919050565b60006020820190508181036000830152614d2b81614cef565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614d8e602283614137565b9150614d9982614d32565b604082019050919050565b60006020820190508181036000830152614dbd81614d81565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614e20602583614137565b9150614e2b82614dc4565b604082019050919050565b60006020820190508181036000830152614e4f81614e13565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614eb2602383614137565b9150614ebd82614e56565b604082019050919050565b60006020820190508181036000830152614ee181614ea5565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460008201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b6000614f44603183614137565b9150614f4f82614ee8565b604082019050919050565b60006020820190508181036000830152614f7381614f37565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614fb0601683614137565b9150614fbb82614f7a565b602082019050919050565b60006020820190508181036000830152614fdf81614fa3565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000615068604983614137565b915061507382614fe6565b606082019050919050565b600060208201905081810360008301526150978161505b565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006150fa603583614137565b91506151058261509e565b604082019050919050565b60006020820190508181036000830152615129816150ed565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000615166601383614137565b915061517182615130565b602082019050919050565b6000602082019050818103600083015261519581615159565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006151f8603683614137565b91506152038261519c565b604082019050919050565b60006020820190508181036000830152615227816151eb565b9050919050565b600061523982614241565b915061524483614241565b925082820390508181111561525c5761525b6146eb565b5b92915050565b60006060820190506152776000830186614394565b6152846020830185614394565b6152916040830184614394565b949350505050565b600081905092915050565b50565b60006152b4600083615299565b91506152bf826152a4565b600082019050919050565b60006152d5826152a7565b9150819050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061533b602183614137565b9150615346826152df565b604082019050919050565b6000602082019050818103600083015261536a8161532e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506153de81614215565b92915050565b6000602082840312156153fa576153f96141de565b5b6000615408848285016153cf565b91505092915050565b6000819050919050565b600061543661543161542c84615411565b61431a565b614241565b9050919050565b6154468161541b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61548181614203565b82525050565b60006154938383615478565b60208301905092915050565b6000602082019050919050565b60006154b78261544c565b6154c18185615457565b93506154cc83615468565b8060005b838110156154fd5781516154e48882615487565b97506154ef8361549f565b9250506001810190506154d0565b5085935050505092915050565b600060a08201905061551f6000830188614394565b61552c602083018761543d565b818103604083015261553e81866154ac565b905061554d60608301856144e1565b61555a6080830184614394565b9695505050505050565b600060c08201905061557960008301896144e1565b6155866020830188614394565b615593604083018761543d565b6155a0606083018661543d565b6155ad60808301856144e1565b6155ba60a0830184614394565b979650505050505050565b6000815190506155d48161424b565b92915050565b6000806000606084860312156155f3576155f26141de565b5b6000615601868287016155c5565b9350506020615612868287016155c5565b9250506040615623868287016155c5565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203bf26186f3630018503c392b50e1c1eafe21f8498a7742ba053599f35784d70b64736f6c63430008120033
Deployed Bytecode Sourcemap
28899:16037:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6997:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9171:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30453:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28975:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8120:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30167:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30087;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34824:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9823:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36623:217;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7961:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10588:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29033:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29266:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37503:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30044:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35642:298;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29933:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29346:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8292:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21499:148;;;;;;;;;;;;;:::i;:::-;;33930:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35291:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29968:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33729:148;;;;;;;;;;;;;:::i;:::-;;20855:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35532:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7217:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36849:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30207:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34255:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11310:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29384:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29859:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8633:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30130:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30676:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29306:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37301:187;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36432:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35067:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29776:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29150:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34429:386;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29825:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8872:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29192:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35949:474;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34112:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29893:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21803:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30003:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29232:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6997:100;7051:13;7084:5;7077:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6997:100;:::o;9171:169::-;9254:4;9271:39;9280:12;:10;:12::i;:::-;9294:7;9303:6;9271:8;:39::i;:::-;9328:4;9321:11;;9171:169;;;;:::o;30453:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;28975:51::-;;;:::o;8120:108::-;8181:7;8208:12;;8201:19;;8120:108;:::o;30167:33::-;;;;:::o;30087:::-;;;;:::o;34824:234::-;21078:12;:10;:12::i;:::-;21068:22;;:6;;;;;;;;;;;:22;;;21060:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34943:4:::1;34937;34933:1;34917:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;34916:31;;;;:::i;:::-;34906:6;:41;;34898:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;35043:6;35033;:17;;;;:::i;:::-;35010:20;:40;;;;34824:234:::0;:::o;9823:355::-;9963:4;9980:36;9990:6;9998:9;10009:6;9980:9;:36::i;:::-;10027:121;10036:6;10044:12;:10;:12::i;:::-;10058:89;10096:6;10058:89;;;;;;;;;;;;;;;;;:11;:19;10070:6;10058:19;;;;;;;;;;;;;;;:33;10078:12;:10;:12::i;:::-;10058:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;10027:8;:121::i;:::-;10166:4;10159:11;;9823:355;;;;;:::o;36623:217::-;21078:12;:10;:12::i;:::-;21068:22;;:6;;;;;;;;;;;:22;;;21060:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36751:2:::1;36738:10;;:15;;;;:::i;:::-;36723:12;:30;36715:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;36819:13;36797:10;:19;36808:7;36797:19;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;36623:217:::0;;:::o;7961:93::-;8019:5;8044:2;8037:9;;7961:93;:::o;10588:218::-;10676:4;10693:83;10702:12;:10;:12::i;:::-;10716:7;10725:50;10764:10;10725:11;:25;10737:12;:10;:12::i;:::-;10725:25;;;;;;;;;;;;;;;:34;10751:7;10725:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;10693:8;:83::i;:::-;10794:4;10787:11;;10588:218;;;;:::o;29033:38::-;;;:::o;29266:33::-;;;;;;;;;;;;;:::o;37503:125::-;37568:4;37592:19;:28;37612:7;37592:28;;;;;;;;;;;;;;;;;;;;;;;;;37585:35;;37503:125;;;:::o;30044:36::-;;;;:::o;35642:298::-;21078:12;:10;:12::i;:::-;21068:22;;:6;;;;;;;;;;;:22;;;21060:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35753:10:::1;35738:12;:25;;;;35792:13;35774:15;:31;;;;35846:15;;35831:12;;:30;;;;:::i;:::-;35816:12;:45;;;;35896:2;35880:12;;:18;;35872:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;35642:298:::0;;:::o;29933:28::-;;;;:::o;29346:31::-;;;;;;;;;;;;;:::o;8292:127::-;8366:7;8393:9;:18;8403:7;8393:18;;;;;;;;;;;;;;;;8386:25;;8292:127;;;:::o;21499:148::-;21078:12;:10;:12::i;:::-;21068:22;;:6;;;;;;;;;;;:22;;;21060:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21606:1:::1;21569:40;;21590:6;;;;;;;;;;;21569:40;;;;;;;;;;;;21637:1;21620:6;;:19;;;;;;;;;;;;;;;;;;21499:148::o:0;33930:120::-;33982:4;21078:12;:10;:12::i;:::-;21068:22;;:6;;;;;;;;;;;:22;;;21060:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34015:5:::1;33998:14;;:22;;;;;;;;;;;;;;;;;;34038:4;34031:11;;33930:120:::0;:::o;35291:144::-;21078:12;:10;:12::i;:::-;21068:22;;:6;;;;;;;;;;;:22;;;21060:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35423:4:::1;35381:31;:39;35413:6;35381:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;35291:144:::0;;:::o;29968:28::-;;;;:::o;33729:148::-;21078:12;:10;:12::i;:::-;21068:22;;:6;;;;;;;;;;;:22;;;21060:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33800:4:::1;33784:13;;:20;;;;;;;;;;;;;;;;;;33829:4;33815:11;;:18;;;;;;;;;;;;;;;;;;33857:12;33844:10;:25;;;;33729:148::o:0;20855:79::-;20893:7;20920:6;;;;;;;;;;;20913:13;;20855:79;:::o;35532:101::-;21078:12;:10;:12::i;:::-;21068:22;;:6;;;;;;;;;;;:22;;;21060:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35618:7:::1;35604:11;;:21;;;;;;;;;;;;;;;;;;35532:101:::0;:::o;7217:104::-;7273:13;7306:7;7299:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7217:104;:::o;36849:245::-;21078:12;:10;:12::i;:::-;21068:22;;:6;;;;;;;;;;;:22;;;21060:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36956:13:::1;36948:21;;:4;:21;;::::0;36940:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;37045:41;37074:4;37080:5;37045:28;:41::i;:::-;36849:245:::0;;:::o;30207:27::-;;;;:::o;34255:102::-;21078:12;:10;:12::i;:::-;21068:22;;:6;;;;;;;;;;;:22;;;21060:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34344:5:::1;34323:18;;:26;;;;;;;;;;;;;;;;;;34255:102:::0;:::o;11310:269::-;11403:4;11420:129;11429:12;:10;:12::i;:::-;11443:7;11452:96;11491:15;11452:96;;;;;;;;;;;;;;;;;:11;:25;11464:12;:10;:12::i;:::-;11452:25;;;;;;;;;;;;;;;:34;11478:7;11452:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;11420:8;:129::i;:::-;11567:4;11560:11;;11310:269;;;;:::o;29384:37::-;;;;;;;;;;;;;:::o;29859:27::-;;;;:::o;8633:175::-;8719:4;8736:42;8746:12;:10;:12::i;:::-;8760:9;8771:6;8736:9;:42::i;:::-;8796:4;8789:11;;8633:175;;;;:::o;30130:30::-;;;;:::o;30676:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;29306:33::-;;;;;;;;;;;;;:::o;37301:187::-;21078:12;:10;:12::i;:::-;21068:22;;:6;;;;;;;;;;;:22;;;21060:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37426:12:::1;;;;;;;;;;;37389:50;;37409:15;37389:50;;;;;;;;;;;;37465:15;37450:12;;:30;;;;;;;;;;;;;;;;;;37301:187:::0;:::o;36432:182::-;21078:12;:10;:12::i;:::-;21068:22;;:6;;;;;;;;;;;:22;;;21060:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36548:8:::1;36517:19;:28;36537:7;36517:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;36588:7;36572:34;;;36597:8;36572:34;;;;;;:::i;:::-;;;;;;;;36432:182:::0;;:::o;35067:215::-;21078:12;:10;:12::i;:::-;21068:22;;:6;;;;;;;;;;;:22;;;21060:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35189:4:::1;35183;35179:1;35163:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;35162:31;;;;:::i;:::-;35152:6;:41;;35144:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;35267:6;35257;:17;;;;:::i;:::-;35245:9;:29;;;;35067:215:::0;:::o;29776:39::-;;;;;;;;;;;;;:::o;29150:35::-;;;;:::o;34429:386::-;34510:4;21078:12;:10;:12::i;:::-;21068:22;;:6;;;;;;;;;;;:22;;;21060:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34567:6:::1;34563:1;34547:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;34534:9;:39;;34526:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;34683:4;34679:1;34663:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;34650:9;:37;;34642:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;34776:9;34755:18;:30;;;;34803:4;34796:11;;34429:386:::0;;;:::o;29825:27::-;;;;:::o;8872:151::-;8961:7;8988:11;:18;9000:5;8988:18;;;;;;;;;;;;;;;:27;9007:7;8988:27;;;;;;;;;;;;;;;;8981:34;;8872:151;;;;:::o;29192:33::-;;;;:::o;35949:474::-;21078:12;:10;:12::i;:::-;21068:22;;:6;;;;;;;;;;;:22;;;21060:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36123:10:::1;36107:13;:26;;;;36163:13;36144:16;:32;;;;36211:22;36187:21;:46;;;;36265:19;36244:18;:40;;;;36327:16;;36311:13;;:32;;;;:::i;:::-;36295:13;:48;;;;36379:2;36362:13;;:19;;36354:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;35949:474:::0;;;;:::o;34112:134::-;34172:4;21078:12;:10;:12::i;:::-;21068:22;;:6;;;;;;;;;;;:22;;;21060:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34211:5:::1;34188:20;;:28;;;;;;;;;;;;;;;;;;34234:4;34227:11;;34112:134:::0;:::o;29893:30::-;;;;:::o;21803:244::-;21078:12;:10;:12::i;:::-;21068:22;;:6;;;;;;;;;;;:22;;;21060:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21912:1:::1;21892:22;;:8;:22;;::::0;21884:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22002:8;21973:38;;21994:6;;;;;;;;;;;21973:38;;;;;;;;;;;;22031:8;22022:6;;:17;;;;;;;;;;;;;;;;;;21803:244:::0;:::o;30003:31::-;;;;:::o;29232:24::-;;;;:::o;15887:182::-;15945:7;15965:9;15981:1;15977;:5;;;;:::i;:::-;15965:17;;16006:1;16001;:6;;15993:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;16060:1;16053:8;;;15887:182;;;;:::o;201:98::-;254:7;281:10;274:17;;201:98;:::o;14506:381::-;14659:1;14642:19;;:5;:19;;;14634:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14740:1;14721:21;;:7;:21;;;14713:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14825:6;14795:11;:18;14807:5;14795:18;;;;;;;;;;;;;;;:27;14814:7;14795:27;;;;;;;;;;;;;;;:36;;;;14863:7;14847:32;;14856:5;14847:32;;;14872:6;14847:32;;;;;;:::i;:::-;;;;;;;;14506:381;;;:::o;37688:4621::-;37836:1;37820:18;;:4;:18;;;37812:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37913:1;37899:16;;:2;:16;;;37891:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;37975:10;:14;37986:2;37975:14;;;;;;;;;;;;;;;;;;;;;;;;;37974:15;:36;;;;;37994:10;:16;38005:4;37994:16;;;;;;;;;;;;;;;;;;;;;;;;;37993:17;37974:36;37966:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;38089:1;38079:6;:11;38076:92;;38107:28;38123:4;38129:2;38133:1;38107:15;:28::i;:::-;38150:7;;38076:92;38184:14;;;;;;;;;;;38181:1811;;;38244:7;:5;:7::i;:::-;38236:15;;:4;:15;;;;:49;;;;;38278:7;:5;:7::i;:::-;38272:13;;:2;:13;;;;38236:49;:86;;;;;38320:1;38306:16;;:2;:16;;;;38236:86;:128;;;;;38357:6;38343:21;;:2;:21;;;;38236:128;:158;;;;;38386:8;;;;;;;;;;;38385:9;38236:158;38214:1767;;;38432:13;;;;;;;;;;;38428:148;;38477:19;:25;38497:4;38477:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;38506:19;:23;38526:2;38506:23;;;;;;;;;;;;;;;;;;;;;;;;;38477:52;38469:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;38428:148;38735:20;;;;;;;;;;;38731:423;;;38789:7;:5;:7::i;:::-;38783:13;;:2;:13;;;;:47;;;;;38814:15;38800:30;;:2;:30;;;;38783:47;:79;;;;;38848:13;38834:28;;:2;:28;;;;38783:79;38779:356;;;38940:12;38898:28;:39;38927:9;38898:39;;;;;;;;;;;;;;;;:54;38890:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;39099:12;39057:28;:39;39086:9;39057:39;;;;;;;;;;;;;;;:54;;;;38779:356;38731:423;39207:25;:31;39233:4;39207:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;39243:31;:35;39275:2;39243:35;;;;;;;;;;;;;;;;;;;;;;;;;39242:36;39207:71;39203:763;;;39325:20;;39315:6;:30;;39307:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;39464:9;;39447:13;39457:2;39447:9;:13::i;:::-;39438:6;:22;;;;:::i;:::-;:35;;39430:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;39203:763;;;39576:25;:29;39602:2;39576:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;39610:31;:37;39642:4;39610:37;;;;;;;;;;;;;;;;;;;;;;;;;39609:38;39576:71;39572:394;;;39694:20;;39684:6;:30;;39676:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;39572:394;;;39820:31;:35;39852:2;39820:35;;;;;;;;;;;;;;;;;;;;;;;;;39816:150;;39913:9;;39896:13;39906:2;39896:9;:13::i;:::-;39887:6;:22;;;;:::i;:::-;:35;;39879:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;39816:150;39572:394;39203:763;38214:1767;38181:1811;40034:10;40055:13;40047:21;;:4;:21;;;40034:34;;40084:5;40083:6;:28;;;;;40093:18;;;;;;;;;;;40083:28;40079:535;;;40166:1;40132:24;:30;40157:4;40132:30;;;;;;;;;;;;;;;;:35;;:120;;;;;40236:15;40223:8;40189:24;:30;40214:4;40189:30;;;;;;;;;;;;;;;;:43;;;;:::i;:::-;:62;;40132:120;40128:322;;;40293:21;;40274:16;:40;;;;40349:18;;40333:13;:34;;;;40418:16;;40402:13;;:32;;;;:::i;:::-;40386:13;:48;;;;40128:322;40079:535;;;40519:1;40487:24;:28;40512:2;40487:28;;;;;;;;;;;;;;;;:33;40483:120;;40572:15;40541:24;:28;40566:2;40541:28;;;;;;;;;;;;;;;:46;;;;40483:120;40079:535;40627:28;40658:24;40676:4;40658:9;:24::i;:::-;40627:55;;40696:12;40735:18;;40711:20;:42;;40696:57;;40785:7;:35;;;;;40809:11;;;;;;;;;;;40785:35;:61;;;;;40838:8;;;;;;;;;;;40837:9;40785:61;:110;;;;;40864:25;:31;40890:4;40864:31;;;;;;;;;;;;;;;;;;;;;;;;;40863:32;40785:110;:153;;;;;40913:19;:25;40933:4;40913:25;;;;;;;;;;;;;;;;;;;;;;;;;40912:26;40785:153;:194;;;;;40956:19;:23;40976:2;40956:23;;;;;;;;;;;;;;;;;;;;;;;;;40955:24;40785:194;40767:328;;;41017:4;41006:8;;:15;;;;;;;;;;;;;;;;;;41039:10;:8;:10::i;:::-;41078:5;41067:8;;:16;;;;;;;;;;;;;;;;;;40767:328;41108:12;41124:8;;;;;;;;;;;41123:9;41108:24;;41234:19;:25;41254:4;41234:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;41263:19;:23;41283:2;41263:23;;;;;;;;;;;;;;;;;;;;;;;;;41234:52;41231:99;;;41313:5;41303:15;;41231:99;41343:12;41447:7;41444:811;;;41498:25;:29;41524:2;41498:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;41547:1;41531:13;;:17;41498:50;41494:608;;;41575:34;41605:3;41575:25;41586:13;;41575:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;41568:41;;41676:13;;41657:16;;41650:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;41628:18;;:61;;;;;;;:::i;:::-;;;;;;;;41750:13;;41734;;41727:4;:20;;;;:::i;:::-;:36;;;;:::i;:::-;41708:15;;:55;;;;;;;:::i;:::-;;;;;;;;41494:608;;;41824:25;:31;41850:4;41824:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;41874:1;41859:12;;:16;41824:51;41821:281;;;41903:33;41932:3;41903:24;41914:12;;41903:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;41896:40;;42002:12;;41984:15;;41977:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;41955:18;;:59;;;;;;;:::i;:::-;;;;;;;;42074:12;;42059;;42052:4;:19;;;;:::i;:::-;:34;;;;:::i;:::-;42033:15;;:53;;;;;;;:::i;:::-;;;;;;;;41821:281;41494:608;42129:1;42122:4;:8;42119:93;;;42154:42;42170:4;42184;42191;42154:15;:42::i;:::-;42119:93;42239:4;42229:14;;;;;:::i;:::-;;;41444:811;42268:33;42284:4;42290:2;42294:6;42268:15;:33::i;:::-;37801:4508;;;;;37688:4621;;;;:::o;16793:193::-;16879:7;16912:1;16907;:6;;16915:12;16899:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;16939:9;16955:1;16951;:5;;;;:::i;:::-;16939:17;;16977:1;16970:8;;;16793:193;;;;;:::o;37103:189::-;37220:5;37186:25;:31;37212:4;37186:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;37278:5;37244:40;;37272:4;37244:40;;;;;;;;;;;;37103:189;;:::o;12070:575::-;12228:1;12210:20;;:6;:20;;;12202:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12312:1;12291:23;;:9;:23;;;12283:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12368:47;12389:6;12397:9;12408:6;12368:20;:47::i;:::-;12449:71;12471:6;12449:71;;;;;;;;;;;;;;;;;:9;:17;12459:6;12449:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;12429:9;:17;12439:6;12429:17;;;;;;;;;;;;;;;:91;;;;12554:32;12579:6;12554:9;:20;12564:9;12554:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;12531:9;:20;12541:9;12531:20;;;;;;;;;;;;;;;:55;;;;12619:9;12602:35;;12611:6;12602:35;;;12630:6;12602:35;;;;;;:::i;:::-;;;;;;;;12070:575;;;:::o;43453:1478::-;43492:23;43518:24;43536:4;43518:9;:24::i;:::-;43492:50;;43553:25;43620:12;;43602:15;;43581:18;;:36;;;;:::i;:::-;:51;;;;:::i;:::-;43553:79;;43643:12;43691:1;43672:15;:20;:46;;;;43717:1;43696:17;:22;43672:46;43669:60;;;43721:7;;;;;43669:60;43784:2;43763:18;;:23;;;;:::i;:::-;43745:15;:41;43742:111;;;43839:2;43818:18;;:23;;;;:::i;:::-;43800:41;;43742:111;43915:23;44000:1;43980:17;43959:18;;43941:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;43915:86;;44012:26;44041:36;44061:15;44041;:19;;:36;;;;:::i;:::-;44012:65;;44091:25;44119:21;44091:49;;44154:36;44171:18;44154:16;:36::i;:::-;44205:18;44226:44;44252:17;44226:21;:25;;:44;;;;:::i;:::-;44205:65;;44284:20;44307:54;44343:17;44307:31;44322:15;;44307:10;:14;;:31;;;;:::i;:::-;:35;;:54;;;;:::i;:::-;44284:77;;44372:17;44392:51;44425:17;44392:28;44407:12;;44392:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;44372:71;;44454:23;44508:9;44493:12;44480:10;:25;;;;:::i;:::-;:37;;;;:::i;:::-;44454:63;;44555:1;44534:18;:22;;;;44585:1;44567:15;:19;;;;44612:1;44597:12;:16;;;;44648:1;44630:15;:19;:42;;;;;44671:1;44653:15;:19;44630:42;44627:210;;;44688:46;44701:15;44718;44688:12;:46::i;:::-;44754:71;44769:18;44789:15;44806:18;;44754:71;;;;;;;;:::i;:::-;;;;;;;;44627:210;44871:12;;;;;;;;;;;44863:26;;44897:21;44863:60;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44850:73;;;;;43481:1450;;;;;;;;;;43453:1478;:::o;17246:473::-;17304:7;17554:1;17549;:6;17545:47;;17579:1;17572:8;;;;17545:47;17605:9;17621:1;17617;:5;;;;:::i;:::-;17605:17;;17650:1;17645;17641;:5;;;;:::i;:::-;:10;17633:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;17710:1;17703:8;;;17246:473;;;;;:::o;18196:132::-;18254:7;18281:39;18285:1;18288;18281:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;18274:46;;18196:132;;;;:::o;15491:125::-;;;;:::o;16353:136::-;16411:7;16438:43;16442:1;16445;16438:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;16431:50;;16353:136;;;;:::o;42318:597::-;42447:21;42485:1;42471:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42447:40;;42516:4;42498;42503:1;42498:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;42542:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42532:4;42537:1;42532:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;42578:62;42595:4;42610:15;42628:11;42578:8;:62::i;:::-;42680:15;:66;;;42761:11;42787:1;42831:4;42858;42878:15;42680:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42373:542;42318:597;:::o;42924:520::-;43072:62;43089:4;43104:15;43122:11;43072:8;:62::i;:::-;43178:15;:31;;;43217:9;43250:4;43270:11;43296:1;43339;43390:4;43410:15;43178:258;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;42924:520;;:::o;18825:279::-;18911:7;18943:1;18939;:5;18946:12;18931:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;18970:9;18986:1;18982;:5;;;;:::i;:::-;18970:17;;19095:1;19088:8;;;18825:279;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:153::-;4204:9;4237:37;4268:5;4237:37;:::i;:::-;4224:50;;4127:153;;;:::o;4286:185::-;4400:64;4458:5;4400:64;:::i;:::-;4395:3;4388:77;4286:185;;:::o;4477:276::-;4597:4;4635:2;4624:9;4620:18;4612:26;;4648:98;4743:1;4732:9;4728:17;4719:6;4648:98;:::i;:::-;4477:276;;;;:::o;4759:118::-;4846:24;4864:5;4846:24;:::i;:::-;4841:3;4834:37;4759:118;;:::o;4883:222::-;4976:4;5014:2;5003:9;4999:18;4991:26;;5027:71;5095:1;5084:9;5080:17;5071:6;5027:71;:::i;:::-;4883:222;;;;:::o;5111:329::-;5170:6;5219:2;5207:9;5198:7;5194:23;5190:32;5187:119;;;5225:79;;:::i;:::-;5187:119;5345:1;5370:53;5415:7;5406:6;5395:9;5391:22;5370:53;:::i;:::-;5360:63;;5316:117;5111:329;;;;:::o;5446:619::-;5523:6;5531;5539;5588:2;5576:9;5567:7;5563:23;5559:32;5556:119;;;5594:79;;:::i;:::-;5556:119;5714:1;5739:53;5784:7;5775:6;5764:9;5760:22;5739:53;:::i;:::-;5729:63;;5685:117;5841:2;5867:53;5912:7;5903:6;5892:9;5888:22;5867:53;:::i;:::-;5857:63;;5812:118;5969:2;5995:53;6040:7;6031:6;6020:9;6016:22;5995:53;:::i;:::-;5985:63;;5940:118;5446:619;;;;;:::o;6071:116::-;6141:21;6156:5;6141:21;:::i;:::-;6134:5;6131:32;6121:60;;6177:1;6174;6167:12;6121:60;6071:116;:::o;6193:133::-;6236:5;6274:6;6261:20;6252:29;;6290:30;6314:5;6290:30;:::i;:::-;6193:133;;;;:::o;6332:468::-;6397:6;6405;6454:2;6442:9;6433:7;6429:23;6425:32;6422:119;;;6460:79;;:::i;:::-;6422:119;6580:1;6605:53;6650:7;6641:6;6630:9;6626:22;6605:53;:::i;:::-;6595:63;;6551:117;6707:2;6733:50;6775:7;6766:6;6755:9;6751:22;6733:50;:::i;:::-;6723:60;;6678:115;6332:468;;;;;:::o;6806:86::-;6841:7;6881:4;6874:5;6870:16;6859:27;;6806:86;;;:::o;6898:112::-;6981:22;6997:5;6981:22;:::i;:::-;6976:3;6969:35;6898:112;;:::o;7016:214::-;7105:4;7143:2;7132:9;7128:18;7120:26;;7156:67;7220:1;7209:9;7205:17;7196:6;7156:67;:::i;:::-;7016:214;;;;:::o;7236:118::-;7323:24;7341:5;7323:24;:::i;:::-;7318:3;7311:37;7236:118;;:::o;7360:222::-;7453:4;7491:2;7480:9;7476:18;7468:26;;7504:71;7572:1;7561:9;7557:17;7548:6;7504:71;:::i;:::-;7360:222;;;;:::o;7588:474::-;7656:6;7664;7713:2;7701:9;7692:7;7688:23;7684:32;7681:119;;;7719:79;;:::i;:::-;7681:119;7839:1;7864:53;7909:7;7900:6;7889:9;7885:22;7864:53;:::i;:::-;7854:63;;7810:117;7966:2;7992:53;8037:7;8028:6;8017:9;8013:22;7992:53;:::i;:::-;7982:63;;7937:118;7588:474;;;;;:::o;8068:323::-;8124:6;8173:2;8161:9;8152:7;8148:23;8144:32;8141:119;;;8179:79;;:::i;:::-;8141:119;8299:1;8324:50;8366:7;8357:6;8346:9;8342:22;8324:50;:::i;:::-;8314:60;;8270:114;8068:323;;;;:::o;8397:474::-;8465:6;8473;8522:2;8510:9;8501:7;8497:23;8493:32;8490:119;;;8528:79;;:::i;:::-;8490:119;8648:1;8673:53;8718:7;8709:6;8698:9;8694:22;8673:53;:::i;:::-;8663:63;;8619:117;8775:2;8801:53;8846:7;8837:6;8826:9;8822:22;8801:53;:::i;:::-;8791:63;;8746:118;8397:474;;;;;:::o;8877:765::-;8963:6;8971;8979;8987;9036:3;9024:9;9015:7;9011:23;9007:33;9004:120;;;9043:79;;:::i;:::-;9004:120;9163:1;9188:53;9233:7;9224:6;9213:9;9209:22;9188:53;:::i;:::-;9178:63;;9134:117;9290:2;9316:53;9361:7;9352:6;9341:9;9337:22;9316:53;:::i;:::-;9306:63;;9261:118;9418:2;9444:53;9489:7;9480:6;9469:9;9465:22;9444:53;:::i;:::-;9434:63;;9389:118;9546:2;9572:53;9617:7;9608:6;9597:9;9593:22;9572:53;:::i;:::-;9562:63;;9517:118;8877:765;;;;;;;:::o;9648:180::-;9696:77;9693:1;9686:88;9793:4;9790:1;9783:15;9817:4;9814:1;9807:15;9834:320;9878:6;9915:1;9909:4;9905:12;9895:22;;9962:1;9956:4;9952:12;9983:18;9973:81;;10039:4;10031:6;10027:17;10017:27;;9973:81;10101:2;10093:6;10090:14;10070:18;10067:38;10064:84;;10120:18;;:::i;:::-;10064:84;9885:269;9834:320;;;:::o;10160:182::-;10300:34;10296:1;10288:6;10284:14;10277:58;10160:182;:::o;10348:366::-;10490:3;10511:67;10575:2;10570:3;10511:67;:::i;:::-;10504:74;;10587:93;10676:3;10587:93;:::i;:::-;10705:2;10700:3;10696:12;10689:19;;10348:366;;;:::o;10720:419::-;10886:4;10924:2;10913:9;10909:18;10901:26;;10973:9;10967:4;10963:20;10959:1;10948:9;10944:17;10937:47;11001:131;11127:4;11001:131;:::i;:::-;10993:139;;10720:419;;;:::o;11145:180::-;11193:77;11190:1;11183:88;11290:4;11287:1;11280:15;11314:4;11311:1;11304:15;11331:410;11371:7;11394:20;11412:1;11394:20;:::i;:::-;11389:25;;11428:20;11446:1;11428:20;:::i;:::-;11423:25;;11483:1;11480;11476:9;11505:30;11523:11;11505:30;:::i;:::-;11494:41;;11684:1;11675:7;11671:15;11668:1;11665:22;11645:1;11638:9;11618:83;11595:139;;11714:18;;:::i;:::-;11595:139;11379:362;11331:410;;;;:::o;11747:180::-;11795:77;11792:1;11785:88;11892:4;11889:1;11882:15;11916:4;11913:1;11906:15;11933:185;11973:1;11990:20;12008:1;11990:20;:::i;:::-;11985:25;;12024:20;12042:1;12024:20;:::i;:::-;12019:25;;12063:1;12053:35;;12068:18;;:::i;:::-;12053:35;12110:1;12107;12103:9;12098:14;;11933:185;;;;:::o;12124:234::-;12264:34;12260:1;12252:6;12248:14;12241:58;12333:17;12328:2;12320:6;12316:15;12309:42;12124:234;:::o;12364:366::-;12506:3;12527:67;12591:2;12586:3;12527:67;:::i;:::-;12520:74;;12603:93;12692:3;12603:93;:::i;:::-;12721:2;12716:3;12712:12;12705:19;;12364:366;;;:::o;12736:419::-;12902:4;12940:2;12929:9;12925:18;12917:26;;12989:9;12983:4;12979:20;12975:1;12964:9;12960:17;12953:47;13017:131;13143:4;13017:131;:::i;:::-;13009:139;;12736:419;;;:::o;13161:191::-;13201:3;13220:20;13238:1;13220:20;:::i;:::-;13215:25;;13254:20;13272:1;13254:20;:::i;:::-;13249:25;;13297:1;13294;13290:9;13283:16;;13318:3;13315:1;13312:10;13309:36;;;13325:18;;:::i;:::-;13309:36;13161:191;;;;:::o;13358:178::-;13498:30;13494:1;13486:6;13482:14;13475:54;13358:178;:::o;13542:366::-;13684:3;13705:67;13769:2;13764:3;13705:67;:::i;:::-;13698:74;;13781:93;13870:3;13781:93;:::i;:::-;13899:2;13894:3;13890:12;13883:19;;13542:366;;;:::o;13914:419::-;14080:4;14118:2;14107:9;14103:18;14095:26;;14167:9;14161:4;14157:20;14153:1;14142:9;14138:17;14131:47;14195:131;14321:4;14195:131;:::i;:::-;14187:139;;13914:419;;;:::o;14339:179::-;14479:31;14475:1;14467:6;14463:14;14456:55;14339:179;:::o;14524:366::-;14666:3;14687:67;14751:2;14746:3;14687:67;:::i;:::-;14680:74;;14763:93;14852:3;14763:93;:::i;:::-;14881:2;14876:3;14872:12;14865:19;;14524:366;;;:::o;14896:419::-;15062:4;15100:2;15089:9;15085:18;15077:26;;15149:9;15143:4;15139:20;15135:1;15124:9;15120:17;15113:47;15177:131;15303:4;15177:131;:::i;:::-;15169:139;;14896:419;;;:::o;15321:244::-;15461:34;15457:1;15449:6;15445:14;15438:58;15530:27;15525:2;15517:6;15513:15;15506:52;15321:244;:::o;15571:366::-;15713:3;15734:67;15798:2;15793:3;15734:67;:::i;:::-;15727:74;;15810:93;15899:3;15810:93;:::i;:::-;15928:2;15923:3;15919:12;15912:19;;15571:366;;;:::o;15943:419::-;16109:4;16147:2;16136:9;16132:18;16124:26;;16196:9;16190:4;16186:20;16182:1;16171:9;16167:17;16160:47;16224:131;16350:4;16224:131;:::i;:::-;16216:139;;15943:419;;;:::o;16368:223::-;16508:34;16504:1;16496:6;16492:14;16485:58;16577:6;16572:2;16564:6;16560:15;16553:31;16368:223;:::o;16597:366::-;16739:3;16760:67;16824:2;16819:3;16760:67;:::i;:::-;16753:74;;16836:93;16925:3;16836:93;:::i;:::-;16954:2;16949:3;16945:12;16938:19;;16597:366;;;:::o;16969:419::-;17135:4;17173:2;17162:9;17158:18;17150:26;;17222:9;17216:4;17212:20;17208:1;17197:9;17193:17;17186:47;17250:131;17376:4;17250:131;:::i;:::-;17242:139;;16969:419;;;:::o;17394:240::-;17534:34;17530:1;17522:6;17518:14;17511:58;17603:23;17598:2;17590:6;17586:15;17579:48;17394:240;:::o;17640:366::-;17782:3;17803:67;17867:2;17862:3;17803:67;:::i;:::-;17796:74;;17879:93;17968:3;17879:93;:::i;:::-;17997:2;17992:3;17988:12;17981:19;;17640:366;;;:::o;18012:419::-;18178:4;18216:2;18205:9;18201:18;18193:26;;18265:9;18259:4;18255:20;18251:1;18240:9;18236:17;18229:47;18293:131;18419:4;18293:131;:::i;:::-;18285:139;;18012:419;;;:::o;18437:239::-;18577:34;18573:1;18565:6;18561:14;18554:58;18646:22;18641:2;18633:6;18629:15;18622:47;18437:239;:::o;18682:366::-;18824:3;18845:67;18909:2;18904:3;18845:67;:::i;:::-;18838:74;;18921:93;19010:3;18921:93;:::i;:::-;19039:2;19034:3;19030:12;19023:19;;18682:366;;;:::o;19054:419::-;19220:4;19258:2;19247:9;19243:18;19235:26;;19307:9;19301:4;19297:20;19293:1;19282:9;19278:17;19271:47;19335:131;19461:4;19335:131;:::i;:::-;19327:139;;19054:419;;;:::o;19479:225::-;19619:34;19615:1;19607:6;19603:14;19596:58;19688:8;19683:2;19675:6;19671:15;19664:33;19479:225;:::o;19710:366::-;19852:3;19873:67;19937:2;19932:3;19873:67;:::i;:::-;19866:74;;19949:93;20038:3;19949:93;:::i;:::-;20067:2;20062:3;20058:12;20051:19;;19710:366;;;:::o;20082:419::-;20248:4;20286:2;20275:9;20271:18;20263:26;;20335:9;20329:4;20325:20;20321:1;20310:9;20306:17;20299:47;20363:131;20489:4;20363:131;:::i;:::-;20355:139;;20082:419;;;:::o;20507:177::-;20647:29;20643:1;20635:6;20631:14;20624:53;20507:177;:::o;20690:366::-;20832:3;20853:67;20917:2;20912:3;20853:67;:::i;:::-;20846:74;;20929:93;21018:3;20929:93;:::i;:::-;21047:2;21042:3;21038:12;21031:19;;20690:366;;;:::o;21062:419::-;21228:4;21266:2;21255:9;21251:18;21243:26;;21315:9;21309:4;21305:20;21301:1;21290:9;21286:17;21279:47;21343:131;21469:4;21343:131;:::i;:::-;21335:139;;21062:419;;;:::o;21487:223::-;21627:34;21623:1;21615:6;21611:14;21604:58;21696:6;21691:2;21683:6;21679:15;21672:31;21487:223;:::o;21716:366::-;21858:3;21879:67;21943:2;21938:3;21879:67;:::i;:::-;21872:74;;21955:93;22044:3;21955:93;:::i;:::-;22073:2;22068:3;22064:12;22057:19;;21716:366;;;:::o;22088:419::-;22254:4;22292:2;22281:9;22277:18;22269:26;;22341:9;22335:4;22331:20;22327:1;22316:9;22312:17;22305:47;22369:131;22495:4;22369:131;:::i;:::-;22361:139;;22088:419;;;:::o;22513:221::-;22653:34;22649:1;22641:6;22637:14;22630:58;22722:4;22717:2;22709:6;22705:15;22698:29;22513:221;:::o;22740:366::-;22882:3;22903:67;22967:2;22962:3;22903:67;:::i;:::-;22896:74;;22979:93;23068:3;22979:93;:::i;:::-;23097:2;23092:3;23088:12;23081:19;;22740:366;;;:::o;23112:419::-;23278:4;23316:2;23305:9;23301:18;23293:26;;23365:9;23359:4;23355:20;23351:1;23340:9;23336:17;23329:47;23393:131;23519:4;23393:131;:::i;:::-;23385:139;;23112:419;;;:::o;23537:224::-;23677:34;23673:1;23665:6;23661:14;23654:58;23746:7;23741:2;23733:6;23729:15;23722:32;23537:224;:::o;23767:366::-;23909:3;23930:67;23994:2;23989:3;23930:67;:::i;:::-;23923:74;;24006:93;24095:3;24006:93;:::i;:::-;24124:2;24119:3;24115:12;24108:19;;23767:366;;;:::o;24139:419::-;24305:4;24343:2;24332:9;24328:18;24320:26;;24392:9;24386:4;24382:20;24378:1;24367:9;24363:17;24356:47;24420:131;24546:4;24420:131;:::i;:::-;24412:139;;24139:419;;;:::o;24564:222::-;24704:34;24700:1;24692:6;24688:14;24681:58;24773:5;24768:2;24760:6;24756:15;24749:30;24564:222;:::o;24792:366::-;24934:3;24955:67;25019:2;25014:3;24955:67;:::i;:::-;24948:74;;25031:93;25120:3;25031:93;:::i;:::-;25149:2;25144:3;25140:12;25133:19;;24792:366;;;:::o;25164:419::-;25330:4;25368:2;25357:9;25353:18;25345:26;;25417:9;25411:4;25407:20;25403:1;25392:9;25388:17;25381:47;25445:131;25571:4;25445:131;:::i;:::-;25437:139;;25164:419;;;:::o;25589:236::-;25729:34;25725:1;25717:6;25713:14;25706:58;25798:19;25793:2;25785:6;25781:15;25774:44;25589:236;:::o;25831:366::-;25973:3;25994:67;26058:2;26053:3;25994:67;:::i;:::-;25987:74;;26070:93;26159:3;26070:93;:::i;:::-;26188:2;26183:3;26179:12;26172:19;;25831:366;;;:::o;26203:419::-;26369:4;26407:2;26396:9;26392:18;26384:26;;26456:9;26450:4;26446:20;26442:1;26431:9;26427:17;26420:47;26484:131;26610:4;26484:131;:::i;:::-;26476:139;;26203:419;;;:::o;26628:172::-;26768:24;26764:1;26756:6;26752:14;26745:48;26628:172;:::o;26806:366::-;26948:3;26969:67;27033:2;27028:3;26969:67;:::i;:::-;26962:74;;27045:93;27134:3;27045:93;:::i;:::-;27163:2;27158:3;27154:12;27147:19;;26806:366;;;:::o;27178:419::-;27344:4;27382:2;27371:9;27367:18;27359:26;;27431:9;27425:4;27421:20;27417:1;27406:9;27402:17;27395:47;27459:131;27585:4;27459:131;:::i;:::-;27451:139;;27178:419;;;:::o;27603:297::-;27743:34;27739:1;27731:6;27727:14;27720:58;27812:34;27807:2;27799:6;27795:15;27788:59;27881:11;27876:2;27868:6;27864:15;27857:36;27603:297;:::o;27906:366::-;28048:3;28069:67;28133:2;28128:3;28069:67;:::i;:::-;28062:74;;28145:93;28234:3;28145:93;:::i;:::-;28263:2;28258:3;28254:12;28247:19;;27906:366;;;:::o;28278:419::-;28444:4;28482:2;28471:9;28467:18;28459:26;;28531:9;28525:4;28521:20;28517:1;28506:9;28502:17;28495:47;28559:131;28685:4;28559:131;:::i;:::-;28551:139;;28278:419;;;:::o;28703:240::-;28843:34;28839:1;28831:6;28827:14;28820:58;28912:23;28907:2;28899:6;28895:15;28888:48;28703:240;:::o;28949:366::-;29091:3;29112:67;29176:2;29171:3;29112:67;:::i;:::-;29105:74;;29188:93;29277:3;29188:93;:::i;:::-;29306:2;29301:3;29297:12;29290:19;;28949:366;;;:::o;29321:419::-;29487:4;29525:2;29514:9;29510:18;29502:26;;29574:9;29568:4;29564:20;29560:1;29549:9;29545:17;29538:47;29602:131;29728:4;29602:131;:::i;:::-;29594:139;;29321:419;;;:::o;29746:169::-;29886:21;29882:1;29874:6;29870:14;29863:45;29746:169;:::o;29921:366::-;30063:3;30084:67;30148:2;30143:3;30084:67;:::i;:::-;30077:74;;30160:93;30249:3;30160:93;:::i;:::-;30278:2;30273:3;30269:12;30262:19;;29921:366;;;:::o;30293:419::-;30459:4;30497:2;30486:9;30482:18;30474:26;;30546:9;30540:4;30536:20;30532:1;30521:9;30517:17;30510:47;30574:131;30700:4;30574:131;:::i;:::-;30566:139;;30293:419;;;:::o;30718:241::-;30858:34;30854:1;30846:6;30842:14;30835:58;30927:24;30922:2;30914:6;30910:15;30903:49;30718:241;:::o;30965:366::-;31107:3;31128:67;31192:2;31187:3;31128:67;:::i;:::-;31121:74;;31204:93;31293:3;31204:93;:::i;:::-;31322:2;31317:3;31313:12;31306:19;;30965:366;;;:::o;31337:419::-;31503:4;31541:2;31530:9;31526:18;31518:26;;31590:9;31584:4;31580:20;31576:1;31565:9;31561:17;31554:47;31618:131;31744:4;31618:131;:::i;:::-;31610:139;;31337:419;;;:::o;31762:194::-;31802:4;31822:20;31840:1;31822:20;:::i;:::-;31817:25;;31856:20;31874:1;31856:20;:::i;:::-;31851:25;;31900:1;31897;31893:9;31885:17;;31924:1;31918:4;31915:11;31912:37;;;31929:18;;:::i;:::-;31912:37;31762:194;;;;:::o;31962:442::-;32111:4;32149:2;32138:9;32134:18;32126:26;;32162:71;32230:1;32219:9;32215:17;32206:6;32162:71;:::i;:::-;32243:72;32311:2;32300:9;32296:18;32287:6;32243:72;:::i;:::-;32325;32393:2;32382:9;32378:18;32369:6;32325:72;:::i;:::-;31962:442;;;;;;:::o;32410:147::-;32511:11;32548:3;32533:18;;32410:147;;;;:::o;32563:114::-;;:::o;32683:398::-;32842:3;32863:83;32944:1;32939:3;32863:83;:::i;:::-;32856:90;;32955:93;33044:3;32955:93;:::i;:::-;33073:1;33068:3;33064:11;33057:18;;32683:398;;;:::o;33087:379::-;33271:3;33293:147;33436:3;33293:147;:::i;:::-;33286:154;;33457:3;33450:10;;33087:379;;;:::o;33472:220::-;33612:34;33608:1;33600:6;33596:14;33589:58;33681:3;33676:2;33668:6;33664:15;33657:28;33472:220;:::o;33698:366::-;33840:3;33861:67;33925:2;33920:3;33861:67;:::i;:::-;33854:74;;33937:93;34026:3;33937:93;:::i;:::-;34055:2;34050:3;34046:12;34039:19;;33698:366;;;:::o;34070:419::-;34236:4;34274:2;34263:9;34259:18;34251:26;;34323:9;34317:4;34313:20;34309:1;34298:9;34294:17;34287:47;34351:131;34477:4;34351:131;:::i;:::-;34343:139;;34070:419;;;:::o;34495:180::-;34543:77;34540:1;34533:88;34640:4;34637:1;34630:15;34664:4;34661:1;34654:15;34681:180;34729:77;34726:1;34719:88;34826:4;34823:1;34816:15;34850:4;34847:1;34840:15;34867:143;34924:5;34955:6;34949:13;34940:22;;34971:33;34998:5;34971:33;:::i;:::-;34867:143;;;;:::o;35016:351::-;35086:6;35135:2;35123:9;35114:7;35110:23;35106:32;35103:119;;;35141:79;;:::i;:::-;35103:119;35261:1;35286:64;35342:7;35333:6;35322:9;35318:22;35286:64;:::i;:::-;35276:74;;35232:128;35016:351;;;;:::o;35373:85::-;35418:7;35447:5;35436:16;;35373:85;;;:::o;35464:158::-;35522:9;35555:61;35573:42;35582:32;35608:5;35582:32;:::i;:::-;35573:42;:::i;:::-;35555:61;:::i;:::-;35542:74;;35464:158;;;:::o;35628:147::-;35723:45;35762:5;35723:45;:::i;:::-;35718:3;35711:58;35628:147;;:::o;35781:114::-;35848:6;35882:5;35876:12;35866:22;;35781:114;;;:::o;35901:184::-;36000:11;36034:6;36029:3;36022:19;36074:4;36069:3;36065:14;36050:29;;35901:184;;;;:::o;36091:132::-;36158:4;36181:3;36173:11;;36211:4;36206:3;36202:14;36194:22;;36091:132;;;:::o;36229:108::-;36306:24;36324:5;36306:24;:::i;:::-;36301:3;36294:37;36229:108;;:::o;36343:179::-;36412:10;36433:46;36475:3;36467:6;36433:46;:::i;:::-;36511:4;36506:3;36502:14;36488:28;;36343:179;;;;:::o;36528:113::-;36598:4;36630;36625:3;36621:14;36613:22;;36528:113;;;:::o;36677:732::-;36796:3;36825:54;36873:5;36825:54;:::i;:::-;36895:86;36974:6;36969:3;36895:86;:::i;:::-;36888:93;;37005:56;37055:5;37005:56;:::i;:::-;37084:7;37115:1;37100:284;37125:6;37122:1;37119:13;37100:284;;;37201:6;37195:13;37228:63;37287:3;37272:13;37228:63;:::i;:::-;37221:70;;37314:60;37367:6;37314:60;:::i;:::-;37304:70;;37160:224;37147:1;37144;37140:9;37135:14;;37100:284;;;37104:14;37400:3;37393:10;;36801:608;;;36677:732;;;;:::o;37415:831::-;37678:4;37716:3;37705:9;37701:19;37693:27;;37730:71;37798:1;37787:9;37783:17;37774:6;37730:71;:::i;:::-;37811:80;37887:2;37876:9;37872:18;37863:6;37811:80;:::i;:::-;37938:9;37932:4;37928:20;37923:2;37912:9;37908:18;37901:48;37966:108;38069:4;38060:6;37966:108;:::i;:::-;37958:116;;38084:72;38152:2;38141:9;38137:18;38128:6;38084:72;:::i;:::-;38166:73;38234:3;38223:9;38219:19;38210:6;38166:73;:::i;:::-;37415:831;;;;;;;;:::o;38252:807::-;38501:4;38539:3;38528:9;38524:19;38516:27;;38553:71;38621:1;38610:9;38606:17;38597:6;38553:71;:::i;:::-;38634:72;38702:2;38691:9;38687:18;38678:6;38634:72;:::i;:::-;38716:80;38792:2;38781:9;38777:18;38768:6;38716:80;:::i;:::-;38806;38882:2;38871:9;38867:18;38858:6;38806:80;:::i;:::-;38896:73;38964:3;38953:9;38949:19;38940:6;38896:73;:::i;:::-;38979;39047:3;39036:9;39032:19;39023:6;38979:73;:::i;:::-;38252:807;;;;;;;;;:::o;39065:143::-;39122:5;39153:6;39147:13;39138:22;;39169:33;39196:5;39169:33;:::i;:::-;39065:143;;;;:::o;39214:663::-;39302:6;39310;39318;39367:2;39355:9;39346:7;39342:23;39338:32;39335:119;;;39373:79;;:::i;:::-;39335:119;39493:1;39518:64;39574:7;39565:6;39554:9;39550:22;39518:64;:::i;:::-;39508:74;;39464:128;39631:2;39657:64;39713:7;39704:6;39693:9;39689:22;39657:64;:::i;:::-;39647:74;;39602:129;39770:2;39796:64;39852:7;39843:6;39832:9;39828:22;39796:64;:::i;:::-;39786:74;;39741:129;39214:663;;;;;:::o
Swarm Source
ipfs://3bf26186f3630018503c392b50e1c1eafe21f8498a7742ba053599f35784d70b
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.