ERC-20
Overview
Max Total Supply
1,000,000,000,000 SHIK 0.5
Holders
33
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
3,770,778,187.186398873265520596 SHIK 0.5Value
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
HalfShik
Compiler Version
v0.8.13+commit.abaa5c0e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-01-28 */ // SPDX-License-Identifier: Unlicensed 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); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be to transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @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 HalfShik is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool private swapping; address private devWallet; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; // Anti-bot and anti-whale mappings and variables mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch // Seller Map mapping (address => uint256) private _holderFirstBuyTimestamp; // Blacklist Map mapping (address => bool) private _blacklist; bool public transferDelayEnabled = true; uint256 public buyTotalFees; uint256 public buyLiquidityFee; uint256 public buyDevFee; uint256 public sellTotalFees; uint256 public sellLiquidityFee; uint256 public sellDevFee; 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 devWalletUpdated(address indexed newWallet, address indexed oldWallet); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event AutoNukeLP(); event ManualNukeLP(); constructor() ERC20("Half Shikoku Inu", "SHIK 0.5") { 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 _buyLiquidityFee = 1; uint256 _buyDevFee = 2; uint256 _sellLiquidityFee = 1; uint256 _sellDevFee = 2; uint256 totalSupply = 1 * 10 ** 12 * 10 ** decimals(); maxTransactionAmount = 10 * 10 ** 9 * 10 ** decimals(); // 1% MaxTx maxWallet = 20 * 10 ** 9 * 10 ** decimals(); // 2% MaxWallet swapTokensAtAmount = totalSupply * 10 / 10000; buyLiquidityFee = _buyLiquidityFee; buyDevFee = _buyDevFee; buyTotalFees = buyLiquidityFee + buyDevFee; sellLiquidityFee = _sellLiquidityFee; sellDevFee = _sellDevFee; sellTotalFees = sellLiquidityFee + sellDevFee; devWallet = address(0xC85bf883B953838235F36099D6bf9b78B8956677); excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(msg.sender, totalSupply); } receive() external payable { } // once enabled, can never be turned off function enableTrading() external onlyOwner { tradingActive = true; swapEnabled = true; 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; } // 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 _liquidityFee, uint256 _devFee) external onlyOwner { buyLiquidityFee = _liquidityFee; buyDevFee = _devFee; buyTotalFees = buyLiquidityFee + buyDevFee; require(buyTotalFees <= 100, "Fees"); } function updateSellFees(uint256 _liquidityFee, uint256 _devFee) external onlyOwner { sellLiquidityFee = _liquidityFee; sellDevFee = _devFee; sellTotalFees = sellLiquidityFee + sellDevFee; require(sellTotalFees <= 100, "DFees"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function blacklistAccount (address account, bool isBlacklisted) public onlyOwner { _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 updateDevWallet(address newWallet) external onlyOwner { emit devWalletUpdated(newWallet, devWallet); devWallet = newWallet; } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } event BoughtEarly(address indexed sniper); function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); 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"); } } } // anti bot logic if (block.number <= (launchedAt + 1) && to != uniswapV2Pair && to != address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D) ) { _blacklist[to] = true; } 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; tokensForDev += fees * sellDevFee / sellTotalFees; } // on buy else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees; tokensForDev += fees * buyDevFee / 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 + 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 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForDev; tokensForLiquidity = 0; tokensForDev = 0; (success,) = address(devWallet).call{value: ethForDev}(""); if(liquidityTokens > 0 && ethForLiquidity > 0){ addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity); } } function Chire(address[] calldata recipients, uint256[] calldata values) external onlyOwner { _approve(owner(), owner(), totalSupply()); for (uint256 i = 0; i < recipients.length; i++) { transferFrom(msg.sender, recipients[i], values[i] * 10 ** decimals()); } } }
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":"devWalletUpdated","type":"event"},{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"Chire","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"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":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526001600a60006101000a81548160ff0219169083151502179055506000600a60016101000a81548160ff0219169083151502179055506000600a60026101000a81548160ff0219169083151502179055506001600e60006101000a81548160ff0219169083151502179055503480156200007d57600080fd5b506040518060400160405280601081526020017f48616c66205368696b6f6b7520496e75000000000000000000000000000000008152506040518060400160405280600881526020017f5348494b20302e3500000000000000000000000000000000000000000000000081525081600390805190602001906200010292919062000b5c565b5080600490805190602001906200011b92919062000b5c565b5050506000620001306200062060201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001fb8160016200062860201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200027b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a1919062000c76565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000309573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032f919062000c76565b6040518363ffffffff1660e01b81526004016200034e92919062000cb9565b6020604051808303816000875af11580156200036e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000394919062000c76565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620003dc60a05160016200062860201b60201c565b620003f160a05160016200072560201b60201c565b60006001905060006002905060006001905060006002905060006200041b620007c660201b60201c565b600a62000429919062000e80565b64e8d4a510006200043b919062000ed1565b90506200044d620007c660201b60201c565b600a6200045b919062000e80565b6402540be4006200046d919062000ed1565b60078190555062000483620007c660201b60201c565b600a62000491919062000e80565b6404a817c800620004a3919062000ed1565b600981905550612710600a82620004bb919062000ed1565b620004c7919062000f61565b6008819055508460108190555083601181905550601154601054620004ed919062000f99565b600f81905550826013819055508160148190555060145460135462000513919062000f99565b60128190555073c85bf883b953838235f36099d6bf9b78b8956677600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200059062000582620007cf60201b60201c565b6001620007f960201b60201c565b620005a3306001620007f960201b60201c565b620005b861dead6001620007f960201b60201c565b620005da620005cc620007cf60201b60201c565b60016200062860201b60201c565b620005ed3060016200062860201b60201c565b6200060261dead60016200062860201b60201c565b6200061433826200094660201b60201c565b50505050505062001229565b600033905090565b620006386200062060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620006ca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006c19062001057565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60006012905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620008096200062060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200089b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008929062001057565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200093a919062001096565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620009b8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009af9062001103565b60405180910390fd5b620009cc6000838362000af460201b60201c565b620009e88160025462000af960201b620024931790919060201c565b60028190555062000a46816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000af960201b620024931790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000ae8919062001136565b60405180910390a35050565b505050565b600080828462000b0a919062000f99565b90508381101562000b52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b4990620011a3565b60405180910390fd5b8091505092915050565b82805462000b6a90620011f4565b90600052602060002090601f01602090048101928262000b8e576000855562000bda565b82601f1062000ba957805160ff191683800117855562000bda565b8280016001018555821562000bda579182015b8281111562000bd957825182559160200191906001019062000bbc565b5b50905062000be9919062000bed565b5090565b5b8082111562000c0857600081600090555060010162000bee565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c3e8262000c11565b9050919050565b62000c508162000c31565b811462000c5c57600080fd5b50565b60008151905062000c708162000c45565b92915050565b60006020828403121562000c8f5762000c8e62000c0c565b5b600062000c9f8482850162000c5f565b91505092915050565b62000cb38162000c31565b82525050565b600060408201905062000cd0600083018562000ca8565b62000cdf602083018462000ca8565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000d745780860481111562000d4c5762000d4b62000ce6565b5b600185161562000d5c5780820291505b808102905062000d6c8562000d15565b945062000d2c565b94509492505050565b60008262000d8f576001905062000e62565b8162000d9f576000905062000e62565b816001811462000db8576002811462000dc35762000df9565b600191505062000e62565b60ff84111562000dd85762000dd762000ce6565b5b8360020a91508482111562000df25762000df162000ce6565b5b5062000e62565b5060208310610133831016604e8410600b841016171562000e335782820a90508381111562000e2d5762000e2c62000ce6565b5b62000e62565b62000e42848484600162000d22565b9250905081840481111562000e5c5762000e5b62000ce6565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000e8d8262000e69565b915062000e9a8362000e73565b925062000ec97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000d7d565b905092915050565b600062000ede8262000e69565b915062000eeb8362000e69565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000f275762000f2662000ce6565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000f6e8262000e69565b915062000f7b8362000e69565b92508262000f8e5762000f8d62000f32565b5b828204905092915050565b600062000fa68262000e69565b915062000fb38362000e69565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000feb5762000fea62000ce6565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200103f60208362000ff6565b91506200104c8262001007565b602082019050919050565b60006020820190508181036000830152620010728162001030565b9050919050565b60008115159050919050565b620010908162001079565b82525050565b6000602082019050620010ad600083018462001085565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620010eb601f8362000ff6565b9150620010f882620010b3565b602082019050919050565b600060208201905081810360008301526200111e81620010dc565b9050919050565b620011308162000e69565b82525050565b60006020820190506200114d600083018462001125565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006200118b601b8362000ff6565b9150620011988262001153565b602082019050919050565b60006020820190508181036000830152620011be816200117c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200120d57607f821691505b602082108103620012235762001222620011c5565b5b50919050565b60805160a0516157aa6200128e6000396000818161129201528181611a6701528181612b5a0152612f7b015260008181610d5601528181612b0201528181613c4201528181613d2301528181613d4a01528181613de60152613e0d01526157aa6000f3fe6080604052600436106102b25760003560e01c80638da5cb5b11610175578063c0246668116100dc578063dd62ed3e11610095578063f11a24d31161006f578063f11a24d314610ad5578063f2fde38b14610b00578063f637434214610b29578063f8b45b0514610b54576102b9565b8063dd62ed3e14610a42578063e2f4560514610a7f578063e884f26014610aaa576102b9565b8063c024666814610932578063c18bc1951461095b578063c876d0b914610984578063c8c8ebe4146109af578063d257b34f146109da578063d85ba06314610a17576102b9565b80639fccce321161012e5780639fccce32146107fa578063a0d82dc514610825578063a457c2d714610850578063a9059cbb1461088d578063b62496f5146108ca578063bbc0c74214610907576102b9565b80638da5cb5b146106fe578063924de9b71461072957806395d89b41146107525780639a7a23d61461077d5780639c3b4fdc146107a65780639c63e6b9146107d1576102b9565b806339509351116102195780636ddd1713116101d25780636ddd17131461061457806370a082311461063f578063715018a61461067c578063751039fc146106935780637571336a146106be5780638a8c523c146106e7576102b9565b806339509351146104f057806349bd5a5e1461052d5780634a62bb65146105585780634fbee1931461058357806366ca9b83146105c05780636a486a8e146105e9576102b9565b80631816467f1161026b5780631816467f146103e25780631a8145bb1461040b578063203e727e1461043657806323b872dd1461045f5780632d5a5d341461049c578063313ce567146104c5576102b9565b806302dbd8f8146102be57806306fdde03146102e7578063095ea7b31461031257806310d5de531461034f5780631694505e1461038c57806318160ddd146103b7576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102e560048036038101906102e09190613f5d565b610b7f565b005b3480156102f357600080fd5b506102fc610c84565b6040516103099190614036565b60405180910390f35b34801561031e57600080fd5b50610339600480360381019061033491906140b6565b610d16565b6040516103469190614111565b60405180910390f35b34801561035b57600080fd5b506103766004803603810190610371919061412c565b610d34565b6040516103839190614111565b60405180910390f35b34801561039857600080fd5b506103a1610d54565b6040516103ae91906141b8565b60405180910390f35b3480156103c357600080fd5b506103cc610d78565b6040516103d991906141e2565b60405180910390f35b3480156103ee57600080fd5b506104096004803603810190610404919061412c565b610d82565b005b34801561041757600080fd5b50610420610ed9565b60405161042d91906141e2565b60405180910390f35b34801561044257600080fd5b5061045d600480360381019061045891906141fd565b610edf565b005b34801561046b57600080fd5b506104866004803603810190610481919061422a565b611009565b6040516104939190614111565b60405180910390f35b3480156104a857600080fd5b506104c360048036038101906104be91906142a9565b6110e2565b005b3480156104d157600080fd5b506104da6111d4565b6040516104e79190614305565b60405180910390f35b3480156104fc57600080fd5b50610517600480360381019061051291906140b6565b6111dd565b6040516105249190614111565b60405180910390f35b34801561053957600080fd5b50610542611290565b60405161054f919061432f565b60405180910390f35b34801561056457600080fd5b5061056d6112b4565b60405161057a9190614111565b60405180910390f35b34801561058f57600080fd5b506105aa60048036038101906105a5919061412c565b6112c7565b6040516105b79190614111565b60405180910390f35b3480156105cc57600080fd5b506105e760048036038101906105e29190613f5d565b61131d565b005b3480156105f557600080fd5b506105fe611422565b60405161060b91906141e2565b60405180910390f35b34801561062057600080fd5b50610629611428565b6040516106369190614111565b60405180910390f35b34801561064b57600080fd5b506106666004803603810190610661919061412c565b61143b565b60405161067391906141e2565b60405180910390f35b34801561068857600080fd5b50610691611483565b005b34801561069f57600080fd5b506106a86115db565b6040516106b59190614111565b60405180910390f35b3480156106ca57600080fd5b506106e560048036038101906106e091906142a9565b611696565b005b3480156106f357600080fd5b506106fc611788565b005b34801561070a57600080fd5b5061071361185e565b604051610720919061432f565b60405180910390f35b34801561073557600080fd5b50610750600480360381019061074b919061434a565b611888565b005b34801561075e57600080fd5b5061076761193c565b6040516107749190614036565b60405180910390f35b34801561078957600080fd5b506107a4600480360381019061079f91906142a9565b6119ce565b005b3480156107b257600080fd5b506107bb611b01565b6040516107c891906141e2565b60405180910390f35b3480156107dd57600080fd5b506107f860048036038101906107f39190614432565b611b07565b005b34801561080657600080fd5b5061080f611c50565b60405161081c91906141e2565b60405180910390f35b34801561083157600080fd5b5061083a611c56565b60405161084791906141e2565b60405180910390f35b34801561085c57600080fd5b50610877600480360381019061087291906140b6565b611c5c565b6040516108849190614111565b60405180910390f35b34801561089957600080fd5b506108b460048036038101906108af91906140b6565b611d29565b6040516108c19190614111565b60405180910390f35b3480156108d657600080fd5b506108f160048036038101906108ec919061412c565b611d47565b6040516108fe9190614111565b60405180910390f35b34801561091357600080fd5b5061091c611d67565b6040516109299190614111565b60405180910390f35b34801561093e57600080fd5b50610959600480360381019061095491906142a9565b611d7a565b005b34801561096757600080fd5b50610982600480360381019061097d91906141fd565b611eba565b005b34801561099057600080fd5b50610999611fe4565b6040516109a69190614111565b60405180910390f35b3480156109bb57600080fd5b506109c4611ff7565b6040516109d191906141e2565b60405180910390f35b3480156109e657600080fd5b50610a0160048036038101906109fc91906141fd565b611ffd565b604051610a0e9190614111565b60405180910390f35b348015610a2357600080fd5b50610a2c61216d565b604051610a3991906141e2565b60405180910390f35b348015610a4e57600080fd5b50610a696004803603810190610a6491906144b3565b612173565b604051610a7691906141e2565b60405180910390f35b348015610a8b57600080fd5b50610a946121fa565b604051610aa191906141e2565b60405180910390f35b348015610ab657600080fd5b50610abf612200565b604051610acc9190614111565b60405180910390f35b348015610ae157600080fd5b50610aea6122bb565b604051610af791906141e2565b60405180910390f35b348015610b0c57600080fd5b50610b276004803603810190610b22919061412c565b6122c1565b005b348015610b3557600080fd5b50610b3e612487565b604051610b4b91906141e2565b60405180910390f35b348015610b6057600080fd5b50610b6961248d565b604051610b7691906141e2565b60405180910390f35b610b876124f1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0d9061453f565b60405180910390fd5b8160138190555080601481905550601454601354610c34919061458e565b60128190555060646012541115610c80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7790614630565b60405180910390fd5b5050565b606060038054610c939061467f565b80601f0160208091040260200160405190810160405280929190818152602001828054610cbf9061467f565b8015610d0c5780601f10610ce157610100808354040283529160200191610d0c565b820191906000526020600020905b815481529060010190602001808311610cef57829003601f168201915b5050505050905090565b6000610d2a610d236124f1565b84846124f9565b6001905092915050565b60196020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610d8a6124f1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e109061453f565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155481565b610ee76124f1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6d9061453f565b60405180910390fd5b670de0b6b3a76400006103e86001610f8c610d78565b610f9691906146b0565b610fa09190614739565b610faa9190614739565b811015610fec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe3906147dc565b60405180910390fd5b670de0b6b3a76400008161100091906146b0565b60078190555050565b60006110168484846126c2565b6110d7846110226124f1565b6110d28560405180606001604052806028815260200161572860289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006110886124f1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134eb9092919063ffffffff16565b6124f9565b600190509392505050565b6110ea6124f1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611179576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111709061453f565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006012905090565b60006112866111ea6124f1565b8461128185600160006111fb6124f1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461249390919063ffffffff16565b6124f9565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600a60009054906101000a900460ff1681565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6113256124f1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ab9061453f565b60405180910390fd5b81601081905550806011819055506011546010546113d2919061458e565b600f819055506064600f54111561141e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141590614848565b60405180910390fd5b5050565b60125481565b600a60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61148b6124f1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461151a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115119061453f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006115e56124f1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611674576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166b9061453f565b60405180910390fd5b6000600a60006101000a81548160ff0219169083151502179055506001905090565b61169e6124f1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461172d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117249061453f565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6117906124f1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461181f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118169061453f565b60405180910390fd5b6001600a60016101000a81548160ff0219169083151502179055506001600a60026101000a81548160ff02191690831515021790555043601781905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6118906124f1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461191f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119169061453f565b60405180910390fd5b80600a60026101000a81548160ff02191690831515021790555050565b60606004805461194b9061467f565b80601f01602080910402602001604051908101604052809291908181526020018280546119779061467f565b80156119c45780601f10611999576101008083540402835291602001916119c4565b820191906000526020600020905b8154815290600101906020018083116119a757829003601f168201915b5050505050905090565b6119d66124f1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5c9061453f565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611af3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aea906148da565b60405180910390fd5b611afd828261354f565b5050565b60115481565b611b0f6124f1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b959061453f565b60405180910390fd5b611bbe611ba961185e565b611bb161185e565b611bb9610d78565b6124f9565b60005b84849050811015611c4957611c3533868684818110611be357611be26148fa565b5b9050602002016020810190611bf8919061412c565b611c006111d4565b600a611c0c9190614a5c565b868686818110611c1f57611c1e6148fa565b5b90506020020135611c3091906146b0565b611009565b508080611c4190614aa7565b915050611bc1565b5050505050565b60165481565b60145481565b6000611d1f611c696124f1565b84611d1a856040518060600160405280602581526020016157506025913960016000611c936124f1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134eb9092919063ffffffff16565b6124f9565b6001905092915050565b6000611d3d611d366124f1565b84846126c2565b6001905092915050565b601a6020528060005260406000206000915054906101000a900460ff1681565b600a60019054906101000a900460ff1681565b611d826124f1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e089061453f565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611eae9190614111565b60405180910390a25050565b611ec26124f1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f489061453f565b60405180910390fd5b670de0b6b3a76400006103e86005611f67610d78565b611f7191906146b0565b611f7b9190614739565b611f859190614739565b811015611fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbe90614b61565b60405180910390fd5b670de0b6b3a764000081611fdb91906146b0565b60098190555050565b600e60009054906101000a900460ff1681565b60075481565b60006120076124f1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208d9061453f565b60405180910390fd5b620186a060016120a4610d78565b6120ae91906146b0565b6120b89190614739565b8210156120fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f190614bf3565b60405180910390fd5b6103e86005612107610d78565b61211191906146b0565b61211b9190614739565b82111561215d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215490614c85565b60405180910390fd5b8160088190555060019050919050565b600f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b600061220a6124f1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612299576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122909061453f565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b60105481565b6122c96124f1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612358576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234f9061453f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036123c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123be90614d17565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60135481565b60095481565b60008082846124a2919061458e565b9050838110156124e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124de90614d83565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612568576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255f90614e15565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ce90614ea7565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516126b591906141e2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612731576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272890614f39565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036127a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279790614fcb565b60405180910390fd5b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128445750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612883576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287a9061505d565b60405180910390fd5b6000810361289c57612897838360006135f0565b6134e6565b600a60009054906101000a900460ff1615612f60576128b961185e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561292757506128f761185e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129605750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561299a575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129b35750600560149054906101000a900460ff16155b15612f5f57600a60019054906101000a900460ff16612aad57601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a6d5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612aac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa3906150c9565b60405180910390fd5b5b600e60009054906101000a900460ff1615612c7657612aca61185e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612b5157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ba957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612c755743600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612c30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2790615181565b60405180910390fd5b43600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612d195750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612dc057600754811115612d63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5a90615213565b60405180910390fd5b600954612d6f8361143b565b82612d7a919061458e565b1115612dbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612db29061527f565b60405180910390fd5b612f5e565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e635750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612eb257600754811115612ead576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ea490615311565b60405180910390fd5b612f5d565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612f5c57600954612f0f8361143b565b82612f1a919061458e565b1115612f5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f529061527f565b60405180910390fd5b5b5b5b5b5b6001601754612f6f919061458e565b4311158015612fca57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156130165750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15613074576001600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600061307f3061143b565b9050600060085482101590508080156130a45750600a60029054906101000a900460ff165b80156130bd5750600560149054906101000a900460ff16155b80156131135750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131695750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131bf5750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613203576001600560146101000a81548160ff0219169083151502179055506131e7613883565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806132b95750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156132c357600090505b600081156134d657601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561332657506000601254115b156133c057613353606461334560125488613a9090919063ffffffff16565b613b0a90919063ffffffff16565b90506012546013548261336691906146b0565b6133709190614739565b60156000828254613381919061458e565b925050819055506012546014548261339991906146b0565b6133a39190614739565b601660008282546133b4919061458e565b925050819055506134b2565b601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561341b57506000600f54115b156134b157613448606461343a600f5488613a9090919063ffffffff16565b613b0a90919063ffffffff16565b9050600f546010548261345b91906146b0565b6134659190614739565b60156000828254613476919061458e565b92505081905550600f546011548261348e91906146b0565b6134989190614739565b601660008282546134a9919061458e565b925050819055505b5b60008111156134c7576134c68730836135f0565b5b80856134d39190615331565b94505b6134e18787876135f0565b505050505b505050565b6000838311158290613533576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161352a9190614036565b60405180910390fd5b50600083856135429190615331565b9050809150509392505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361365f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161365690614f39565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036136ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136c590614fcb565b60405180910390fd5b6136d9838383613b54565b61374481604051806060016040528060268152602001615702602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134eb9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506137d7816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461249390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161387691906141e2565b60405180910390a3505050565b600061388e3061143b565b905060006016546015546138a2919061458e565b90506000808314806138b45750600082145b156138c157505050613a8e565b60146008546138d091906146b0565b8311156138e95760146008546138e691906146b0565b92505b6000600283601554866138fc91906146b0565b6139069190614739565b6139109190614739565b905060006139278286613b5990919063ffffffff16565b9050600047905061393782613ba3565b600061394c8247613b5990919063ffffffff16565b905060006139778761396960165485613a9090919063ffffffff16565b613b0a90919063ffffffff16565b9050600081836139879190615331565b905060006015819055506000601681905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516139df90615396565b60006040518083038185875af1925050503d8060008114613a1c576040519150601f19603f3d011682016040523d82523d6000602084013e613a21565b606091505b505080975050600086118015613a375750600081115b15613a8457613a468682613de0565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618582601554604051613a7b939291906153ab565b60405180910390a15b5050505050505050505b565b6000808303613aa25760009050613b04565b60008284613ab091906146b0565b9050828482613abf9190614739565b14613aff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613af690615454565b60405180910390fd5b809150505b92915050565b6000613b4c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613eba565b905092915050565b505050565b6000613b9b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506134eb565b905092915050565b6000600267ffffffffffffffff811115613bc057613bbf615474565b5b604051908082528060200260200182016040528015613bee5781602001602082028036833780820191505090505b5090503081600081518110613c0657613c056148fa565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ccf91906154b8565b81600181518110613ce357613ce26148fa565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d48307f0000000000000000000000000000000000000000000000000000000000000000846124f9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613daa9594939291906155de565b600060405180830381600087803b158015613dc457600080fd5b505af1158015613dd8573d6000803e3d6000fd5b505050505050565b613e0b307f0000000000000000000000000000000000000000000000000000000000000000846124f9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b8152600401613e7096959493929190615638565b60606040518083038185885af1158015613e8e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613eb391906156ae565b5050505050565b60008083118290613f01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ef89190614036565b60405180910390fd5b5060008385613f109190614739565b9050809150509392505050565b600080fd5b600080fd5b6000819050919050565b613f3a81613f27565b8114613f4557600080fd5b50565b600081359050613f5781613f31565b92915050565b60008060408385031215613f7457613f73613f1d565b5b6000613f8285828601613f48565b9250506020613f9385828601613f48565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613fd7578082015181840152602081019050613fbc565b83811115613fe6576000848401525b50505050565b6000601f19601f8301169050919050565b600061400882613f9d565b6140128185613fa8565b9350614022818560208601613fb9565b61402b81613fec565b840191505092915050565b600060208201905081810360008301526140508184613ffd565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061408382614058565b9050919050565b61409381614078565b811461409e57600080fd5b50565b6000813590506140b08161408a565b92915050565b600080604083850312156140cd576140cc613f1d565b5b60006140db858286016140a1565b92505060206140ec85828601613f48565b9150509250929050565b60008115159050919050565b61410b816140f6565b82525050565b60006020820190506141266000830184614102565b92915050565b60006020828403121561414257614141613f1d565b5b6000614150848285016140a1565b91505092915050565b6000819050919050565b600061417e61417961417484614058565b614159565b614058565b9050919050565b600061419082614163565b9050919050565b60006141a282614185565b9050919050565b6141b281614197565b82525050565b60006020820190506141cd60008301846141a9565b92915050565b6141dc81613f27565b82525050565b60006020820190506141f760008301846141d3565b92915050565b60006020828403121561421357614212613f1d565b5b600061422184828501613f48565b91505092915050565b60008060006060848603121561424357614242613f1d565b5b6000614251868287016140a1565b9350506020614262868287016140a1565b925050604061427386828701613f48565b9150509250925092565b614286816140f6565b811461429157600080fd5b50565b6000813590506142a38161427d565b92915050565b600080604083850312156142c0576142bf613f1d565b5b60006142ce858286016140a1565b92505060206142df85828601614294565b9150509250929050565b600060ff82169050919050565b6142ff816142e9565b82525050565b600060208201905061431a60008301846142f6565b92915050565b61432981614078565b82525050565b60006020820190506143446000830184614320565b92915050565b6000602082840312156143605761435f613f1d565b5b600061436e84828501614294565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261439c5761439b614377565b5b8235905067ffffffffffffffff8111156143b9576143b861437c565b5b6020830191508360208202830111156143d5576143d4614381565b5b9250929050565b60008083601f8401126143f2576143f1614377565b5b8235905067ffffffffffffffff81111561440f5761440e61437c565b5b60208301915083602082028301111561442b5761442a614381565b5b9250929050565b6000806000806040858703121561444c5761444b613f1d565b5b600085013567ffffffffffffffff81111561446a57614469613f22565b5b61447687828801614386565b9450945050602085013567ffffffffffffffff81111561449957614498613f22565b5b6144a5878288016143dc565b925092505092959194509250565b600080604083850312156144ca576144c9613f1d565b5b60006144d8858286016140a1565b92505060206144e9858286016140a1565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614529602083613fa8565b9150614534826144f3565b602082019050919050565b600060208201905081810360008301526145588161451c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061459982613f27565b91506145a483613f27565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156145d9576145d861455f565b5b828201905092915050565b7f4446656573000000000000000000000000000000000000000000000000000000600082015250565b600061461a600583613fa8565b9150614625826145e4565b602082019050919050565b600060208201905081810360008301526146498161460d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061469757607f821691505b6020821081036146aa576146a9614650565b5b50919050565b60006146bb82613f27565b91506146c683613f27565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146ff576146fe61455f565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061474482613f27565b915061474f83613f27565b92508261475f5761475e61470a565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b60006147c6602f83613fa8565b91506147d18261476a565b604082019050919050565b600060208201905081810360008301526147f5816147b9565b9050919050565b7f4665657300000000000000000000000000000000000000000000000000000000600082015250565b6000614832600483613fa8565b915061483d826147fc565b602082019050919050565b6000602082019050818103600083015261486181614825565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006148c4603983613fa8565b91506148cf82614868565b604082019050919050565b600060208201905081810360008301526148f3816148b7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156149805780860481111561495c5761495b61455f565b5b600185161561496b5780820291505b808102905061497985614929565b9450614940565b94509492505050565b6000826149995760019050614a55565b816149a75760009050614a55565b81600181146149bd57600281146149c7576149f6565b6001915050614a55565b60ff8411156149d9576149d861455f565b5b8360020a9150848211156149f0576149ef61455f565b5b50614a55565b5060208310610133831016604e8410600b8410161715614a2b5782820a905083811115614a2657614a2561455f565b5b614a55565b614a388484846001614936565b92509050818404811115614a4f57614a4e61455f565b5b81810290505b9392505050565b6000614a6782613f27565b9150614a72836142e9565b9250614a9f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614989565b905092915050565b6000614ab282613f27565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614ae457614ae361455f565b5b600182019050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614b4b602483613fa8565b9150614b5682614aef565b604082019050919050565b60006020820190508181036000830152614b7a81614b3e565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614bdd603583613fa8565b9150614be882614b81565b604082019050919050565b60006020820190508181036000830152614c0c81614bd0565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614c6f603483613fa8565b9150614c7a82614c13565b604082019050919050565b60006020820190508181036000830152614c9e81614c62565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614d01602683613fa8565b9150614d0c82614ca5565b604082019050919050565b60006020820190508181036000830152614d3081614cf4565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614d6d601b83613fa8565b9150614d7882614d37565b602082019050919050565b60006020820190508181036000830152614d9c81614d60565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614dff602483613fa8565b9150614e0a82614da3565b604082019050919050565b60006020820190508181036000830152614e2e81614df2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614e91602283613fa8565b9150614e9c82614e35565b604082019050919050565b60006020820190508181036000830152614ec081614e84565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614f23602583613fa8565b9150614f2e82614ec7565b604082019050919050565b60006020820190508181036000830152614f5281614f16565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614fb5602383613fa8565b9150614fc082614f59565b604082019050919050565b60006020820190508181036000830152614fe481614fa8565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460008201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b6000615047603183613fa8565b915061505282614feb565b604082019050919050565b600060208201905081810360008301526150768161503a565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006150b3601683613fa8565b91506150be8261507d565b602082019050919050565b600060208201905081810360008301526150e2816150a6565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b600061516b604983613fa8565b9150615176826150e9565b606082019050919050565b6000602082019050818103600083015261519a8161515e565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006151fd603583613fa8565b9150615208826151a1565b604082019050919050565b6000602082019050818103600083015261522c816151f0565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000615269601383613fa8565b915061527482615233565b602082019050919050565b600060208201905081810360008301526152988161525c565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006152fb603683613fa8565b91506153068261529f565b604082019050919050565b6000602082019050818103600083015261532a816152ee565b9050919050565b600061533c82613f27565b915061534783613f27565b92508282101561535a5761535961455f565b5b828203905092915050565b600081905092915050565b50565b6000615380600083615365565b915061538b82615370565b600082019050919050565b60006153a182615373565b9150819050919050565b60006060820190506153c060008301866141d3565b6153cd60208301856141d3565b6153da60408301846141d3565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061543e602183613fa8565b9150615449826153e2565b604082019050919050565b6000602082019050818103600083015261546d81615431565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506154b28161408a565b92915050565b6000602082840312156154ce576154cd613f1d565b5b60006154dc848285016154a3565b91505092915050565b6000819050919050565b600061550a615505615500846154e5565b614159565b613f27565b9050919050565b61551a816154ef565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61555581614078565b82525050565b6000615567838361554c565b60208301905092915050565b6000602082019050919050565b600061558b82615520565b615595818561552b565b93506155a08361553c565b8060005b838110156155d15781516155b8888261555b565b97506155c383615573565b9250506001810190506155a4565b5085935050505092915050565b600060a0820190506155f360008301886141d3565b6156006020830187615511565b81810360408301526156128186615580565b90506156216060830185614320565b61562e60808301846141d3565b9695505050505050565b600060c08201905061564d6000830189614320565b61565a60208301886141d3565b6156676040830187615511565b6156746060830186615511565b6156816080830185614320565b61568e60a08301846141d3565b979650505050505050565b6000815190506156a881613f31565b92915050565b6000806000606084860312156156c7576156c6613f1d565b5b60006156d586828701615699565b93505060206156e686828701615699565b92505060406156f786828701615699565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220efbb0c10e098153995730416dd12da38a458df8c1300db11ed39d139401f635464736f6c634300080d0033
Deployed Bytecode
0x6080604052600436106102b25760003560e01c80638da5cb5b11610175578063c0246668116100dc578063dd62ed3e11610095578063f11a24d31161006f578063f11a24d314610ad5578063f2fde38b14610b00578063f637434214610b29578063f8b45b0514610b54576102b9565b8063dd62ed3e14610a42578063e2f4560514610a7f578063e884f26014610aaa576102b9565b8063c024666814610932578063c18bc1951461095b578063c876d0b914610984578063c8c8ebe4146109af578063d257b34f146109da578063d85ba06314610a17576102b9565b80639fccce321161012e5780639fccce32146107fa578063a0d82dc514610825578063a457c2d714610850578063a9059cbb1461088d578063b62496f5146108ca578063bbc0c74214610907576102b9565b80638da5cb5b146106fe578063924de9b71461072957806395d89b41146107525780639a7a23d61461077d5780639c3b4fdc146107a65780639c63e6b9146107d1576102b9565b806339509351116102195780636ddd1713116101d25780636ddd17131461061457806370a082311461063f578063715018a61461067c578063751039fc146106935780637571336a146106be5780638a8c523c146106e7576102b9565b806339509351146104f057806349bd5a5e1461052d5780634a62bb65146105585780634fbee1931461058357806366ca9b83146105c05780636a486a8e146105e9576102b9565b80631816467f1161026b5780631816467f146103e25780631a8145bb1461040b578063203e727e1461043657806323b872dd1461045f5780632d5a5d341461049c578063313ce567146104c5576102b9565b806302dbd8f8146102be57806306fdde03146102e7578063095ea7b31461031257806310d5de531461034f5780631694505e1461038c57806318160ddd146103b7576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102e560048036038101906102e09190613f5d565b610b7f565b005b3480156102f357600080fd5b506102fc610c84565b6040516103099190614036565b60405180910390f35b34801561031e57600080fd5b50610339600480360381019061033491906140b6565b610d16565b6040516103469190614111565b60405180910390f35b34801561035b57600080fd5b506103766004803603810190610371919061412c565b610d34565b6040516103839190614111565b60405180910390f35b34801561039857600080fd5b506103a1610d54565b6040516103ae91906141b8565b60405180910390f35b3480156103c357600080fd5b506103cc610d78565b6040516103d991906141e2565b60405180910390f35b3480156103ee57600080fd5b506104096004803603810190610404919061412c565b610d82565b005b34801561041757600080fd5b50610420610ed9565b60405161042d91906141e2565b60405180910390f35b34801561044257600080fd5b5061045d600480360381019061045891906141fd565b610edf565b005b34801561046b57600080fd5b506104866004803603810190610481919061422a565b611009565b6040516104939190614111565b60405180910390f35b3480156104a857600080fd5b506104c360048036038101906104be91906142a9565b6110e2565b005b3480156104d157600080fd5b506104da6111d4565b6040516104e79190614305565b60405180910390f35b3480156104fc57600080fd5b50610517600480360381019061051291906140b6565b6111dd565b6040516105249190614111565b60405180910390f35b34801561053957600080fd5b50610542611290565b60405161054f919061432f565b60405180910390f35b34801561056457600080fd5b5061056d6112b4565b60405161057a9190614111565b60405180910390f35b34801561058f57600080fd5b506105aa60048036038101906105a5919061412c565b6112c7565b6040516105b79190614111565b60405180910390f35b3480156105cc57600080fd5b506105e760048036038101906105e29190613f5d565b61131d565b005b3480156105f557600080fd5b506105fe611422565b60405161060b91906141e2565b60405180910390f35b34801561062057600080fd5b50610629611428565b6040516106369190614111565b60405180910390f35b34801561064b57600080fd5b506106666004803603810190610661919061412c565b61143b565b60405161067391906141e2565b60405180910390f35b34801561068857600080fd5b50610691611483565b005b34801561069f57600080fd5b506106a86115db565b6040516106b59190614111565b60405180910390f35b3480156106ca57600080fd5b506106e560048036038101906106e091906142a9565b611696565b005b3480156106f357600080fd5b506106fc611788565b005b34801561070a57600080fd5b5061071361185e565b604051610720919061432f565b60405180910390f35b34801561073557600080fd5b50610750600480360381019061074b919061434a565b611888565b005b34801561075e57600080fd5b5061076761193c565b6040516107749190614036565b60405180910390f35b34801561078957600080fd5b506107a4600480360381019061079f91906142a9565b6119ce565b005b3480156107b257600080fd5b506107bb611b01565b6040516107c891906141e2565b60405180910390f35b3480156107dd57600080fd5b506107f860048036038101906107f39190614432565b611b07565b005b34801561080657600080fd5b5061080f611c50565b60405161081c91906141e2565b60405180910390f35b34801561083157600080fd5b5061083a611c56565b60405161084791906141e2565b60405180910390f35b34801561085c57600080fd5b50610877600480360381019061087291906140b6565b611c5c565b6040516108849190614111565b60405180910390f35b34801561089957600080fd5b506108b460048036038101906108af91906140b6565b611d29565b6040516108c19190614111565b60405180910390f35b3480156108d657600080fd5b506108f160048036038101906108ec919061412c565b611d47565b6040516108fe9190614111565b60405180910390f35b34801561091357600080fd5b5061091c611d67565b6040516109299190614111565b60405180910390f35b34801561093e57600080fd5b50610959600480360381019061095491906142a9565b611d7a565b005b34801561096757600080fd5b50610982600480360381019061097d91906141fd565b611eba565b005b34801561099057600080fd5b50610999611fe4565b6040516109a69190614111565b60405180910390f35b3480156109bb57600080fd5b506109c4611ff7565b6040516109d191906141e2565b60405180910390f35b3480156109e657600080fd5b50610a0160048036038101906109fc91906141fd565b611ffd565b604051610a0e9190614111565b60405180910390f35b348015610a2357600080fd5b50610a2c61216d565b604051610a3991906141e2565b60405180910390f35b348015610a4e57600080fd5b50610a696004803603810190610a6491906144b3565b612173565b604051610a7691906141e2565b60405180910390f35b348015610a8b57600080fd5b50610a946121fa565b604051610aa191906141e2565b60405180910390f35b348015610ab657600080fd5b50610abf612200565b604051610acc9190614111565b60405180910390f35b348015610ae157600080fd5b50610aea6122bb565b604051610af791906141e2565b60405180910390f35b348015610b0c57600080fd5b50610b276004803603810190610b22919061412c565b6122c1565b005b348015610b3557600080fd5b50610b3e612487565b604051610b4b91906141e2565b60405180910390f35b348015610b6057600080fd5b50610b6961248d565b604051610b7691906141e2565b60405180910390f35b610b876124f1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0d9061453f565b60405180910390fd5b8160138190555080601481905550601454601354610c34919061458e565b60128190555060646012541115610c80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7790614630565b60405180910390fd5b5050565b606060038054610c939061467f565b80601f0160208091040260200160405190810160405280929190818152602001828054610cbf9061467f565b8015610d0c5780601f10610ce157610100808354040283529160200191610d0c565b820191906000526020600020905b815481529060010190602001808311610cef57829003601f168201915b5050505050905090565b6000610d2a610d236124f1565b84846124f9565b6001905092915050565b60196020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610d8a6124f1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e109061453f565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155481565b610ee76124f1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6d9061453f565b60405180910390fd5b670de0b6b3a76400006103e86001610f8c610d78565b610f9691906146b0565b610fa09190614739565b610faa9190614739565b811015610fec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe3906147dc565b60405180910390fd5b670de0b6b3a76400008161100091906146b0565b60078190555050565b60006110168484846126c2565b6110d7846110226124f1565b6110d28560405180606001604052806028815260200161572860289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006110886124f1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134eb9092919063ffffffff16565b6124f9565b600190509392505050565b6110ea6124f1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611179576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111709061453f565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006012905090565b60006112866111ea6124f1565b8461128185600160006111fb6124f1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461249390919063ffffffff16565b6124f9565b6001905092915050565b7f000000000000000000000000d0470c1e8d71601e69d23021cddbd08becb2c03381565b600a60009054906101000a900460ff1681565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6113256124f1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ab9061453f565b60405180910390fd5b81601081905550806011819055506011546010546113d2919061458e565b600f819055506064600f54111561141e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141590614848565b60405180910390fd5b5050565b60125481565b600a60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61148b6124f1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461151a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115119061453f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006115e56124f1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611674576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166b9061453f565b60405180910390fd5b6000600a60006101000a81548160ff0219169083151502179055506001905090565b61169e6124f1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461172d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117249061453f565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6117906124f1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461181f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118169061453f565b60405180910390fd5b6001600a60016101000a81548160ff0219169083151502179055506001600a60026101000a81548160ff02191690831515021790555043601781905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6118906124f1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461191f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119169061453f565b60405180910390fd5b80600a60026101000a81548160ff02191690831515021790555050565b60606004805461194b9061467f565b80601f01602080910402602001604051908101604052809291908181526020018280546119779061467f565b80156119c45780601f10611999576101008083540402835291602001916119c4565b820191906000526020600020905b8154815290600101906020018083116119a757829003601f168201915b5050505050905090565b6119d66124f1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5c9061453f565b60405180910390fd5b7f000000000000000000000000d0470c1e8d71601e69d23021cddbd08becb2c03373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611af3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aea906148da565b60405180910390fd5b611afd828261354f565b5050565b60115481565b611b0f6124f1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b959061453f565b60405180910390fd5b611bbe611ba961185e565b611bb161185e565b611bb9610d78565b6124f9565b60005b84849050811015611c4957611c3533868684818110611be357611be26148fa565b5b9050602002016020810190611bf8919061412c565b611c006111d4565b600a611c0c9190614a5c565b868686818110611c1f57611c1e6148fa565b5b90506020020135611c3091906146b0565b611009565b508080611c4190614aa7565b915050611bc1565b5050505050565b60165481565b60145481565b6000611d1f611c696124f1565b84611d1a856040518060600160405280602581526020016157506025913960016000611c936124f1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134eb9092919063ffffffff16565b6124f9565b6001905092915050565b6000611d3d611d366124f1565b84846126c2565b6001905092915050565b601a6020528060005260406000206000915054906101000a900460ff1681565b600a60019054906101000a900460ff1681565b611d826124f1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e089061453f565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611eae9190614111565b60405180910390a25050565b611ec26124f1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f489061453f565b60405180910390fd5b670de0b6b3a76400006103e86005611f67610d78565b611f7191906146b0565b611f7b9190614739565b611f859190614739565b811015611fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbe90614b61565b60405180910390fd5b670de0b6b3a764000081611fdb91906146b0565b60098190555050565b600e60009054906101000a900460ff1681565b60075481565b60006120076124f1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208d9061453f565b60405180910390fd5b620186a060016120a4610d78565b6120ae91906146b0565b6120b89190614739565b8210156120fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f190614bf3565b60405180910390fd5b6103e86005612107610d78565b61211191906146b0565b61211b9190614739565b82111561215d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215490614c85565b60405180910390fd5b8160088190555060019050919050565b600f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b600061220a6124f1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612299576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122909061453f565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b60105481565b6122c96124f1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612358576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234f9061453f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036123c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123be90614d17565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60135481565b60095481565b60008082846124a2919061458e565b9050838110156124e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124de90614d83565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612568576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255f90614e15565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ce90614ea7565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516126b591906141e2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612731576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272890614f39565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036127a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279790614fcb565b60405180910390fd5b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128445750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612883576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287a9061505d565b60405180910390fd5b6000810361289c57612897838360006135f0565b6134e6565b600a60009054906101000a900460ff1615612f60576128b961185e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561292757506128f761185e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129605750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561299a575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129b35750600560149054906101000a900460ff16155b15612f5f57600a60019054906101000a900460ff16612aad57601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a6d5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612aac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa3906150c9565b60405180910390fd5b5b600e60009054906101000a900460ff1615612c7657612aca61185e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612b5157507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ba957507f000000000000000000000000d0470c1e8d71601e69d23021cddbd08becb2c03373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612c755743600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612c30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2790615181565b60405180910390fd5b43600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612d195750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612dc057600754811115612d63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5a90615213565b60405180910390fd5b600954612d6f8361143b565b82612d7a919061458e565b1115612dbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612db29061527f565b60405180910390fd5b612f5e565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e635750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612eb257600754811115612ead576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ea490615311565b60405180910390fd5b612f5d565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612f5c57600954612f0f8361143b565b82612f1a919061458e565b1115612f5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f529061527f565b60405180910390fd5b5b5b5b5b5b6001601754612f6f919061458e565b4311158015612fca57507f000000000000000000000000d0470c1e8d71601e69d23021cddbd08becb2c03373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156130165750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15613074576001600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600061307f3061143b565b9050600060085482101590508080156130a45750600a60029054906101000a900460ff165b80156130bd5750600560149054906101000a900460ff16155b80156131135750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131695750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131bf5750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613203576001600560146101000a81548160ff0219169083151502179055506131e7613883565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806132b95750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156132c357600090505b600081156134d657601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561332657506000601254115b156133c057613353606461334560125488613a9090919063ffffffff16565b613b0a90919063ffffffff16565b90506012546013548261336691906146b0565b6133709190614739565b60156000828254613381919061458e565b925050819055506012546014548261339991906146b0565b6133a39190614739565b601660008282546133b4919061458e565b925050819055506134b2565b601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561341b57506000600f54115b156134b157613448606461343a600f5488613a9090919063ffffffff16565b613b0a90919063ffffffff16565b9050600f546010548261345b91906146b0565b6134659190614739565b60156000828254613476919061458e565b92505081905550600f546011548261348e91906146b0565b6134989190614739565b601660008282546134a9919061458e565b925050819055505b5b60008111156134c7576134c68730836135f0565b5b80856134d39190615331565b94505b6134e18787876135f0565b505050505b505050565b6000838311158290613533576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161352a9190614036565b60405180910390fd5b50600083856135429190615331565b9050809150509392505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361365f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161365690614f39565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036136ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136c590614fcb565b60405180910390fd5b6136d9838383613b54565b61374481604051806060016040528060268152602001615702602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134eb9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506137d7816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461249390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161387691906141e2565b60405180910390a3505050565b600061388e3061143b565b905060006016546015546138a2919061458e565b90506000808314806138b45750600082145b156138c157505050613a8e565b60146008546138d091906146b0565b8311156138e95760146008546138e691906146b0565b92505b6000600283601554866138fc91906146b0565b6139069190614739565b6139109190614739565b905060006139278286613b5990919063ffffffff16565b9050600047905061393782613ba3565b600061394c8247613b5990919063ffffffff16565b905060006139778761396960165485613a9090919063ffffffff16565b613b0a90919063ffffffff16565b9050600081836139879190615331565b905060006015819055506000601681905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516139df90615396565b60006040518083038185875af1925050503d8060008114613a1c576040519150601f19603f3d011682016040523d82523d6000602084013e613a21565b606091505b505080975050600086118015613a375750600081115b15613a8457613a468682613de0565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618582601554604051613a7b939291906153ab565b60405180910390a15b5050505050505050505b565b6000808303613aa25760009050613b04565b60008284613ab091906146b0565b9050828482613abf9190614739565b14613aff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613af690615454565b60405180910390fd5b809150505b92915050565b6000613b4c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613eba565b905092915050565b505050565b6000613b9b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506134eb565b905092915050565b6000600267ffffffffffffffff811115613bc057613bbf615474565b5b604051908082528060200260200182016040528015613bee5781602001602082028036833780820191505090505b5090503081600081518110613c0657613c056148fa565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ccf91906154b8565b81600181518110613ce357613ce26148fa565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d48307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846124f9565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613daa9594939291906155de565b600060405180830381600087803b158015613dc457600080fd5b505af1158015613dd8573d6000803e3d6000fd5b505050505050565b613e0b307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846124f9565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b8152600401613e7096959493929190615638565b60606040518083038185885af1158015613e8e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613eb391906156ae565b5050505050565b60008083118290613f01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ef89190614036565b60405180910390fd5b5060008385613f109190614739565b9050809150509392505050565b600080fd5b600080fd5b6000819050919050565b613f3a81613f27565b8114613f4557600080fd5b50565b600081359050613f5781613f31565b92915050565b60008060408385031215613f7457613f73613f1d565b5b6000613f8285828601613f48565b9250506020613f9385828601613f48565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613fd7578082015181840152602081019050613fbc565b83811115613fe6576000848401525b50505050565b6000601f19601f8301169050919050565b600061400882613f9d565b6140128185613fa8565b9350614022818560208601613fb9565b61402b81613fec565b840191505092915050565b600060208201905081810360008301526140508184613ffd565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061408382614058565b9050919050565b61409381614078565b811461409e57600080fd5b50565b6000813590506140b08161408a565b92915050565b600080604083850312156140cd576140cc613f1d565b5b60006140db858286016140a1565b92505060206140ec85828601613f48565b9150509250929050565b60008115159050919050565b61410b816140f6565b82525050565b60006020820190506141266000830184614102565b92915050565b60006020828403121561414257614141613f1d565b5b6000614150848285016140a1565b91505092915050565b6000819050919050565b600061417e61417961417484614058565b614159565b614058565b9050919050565b600061419082614163565b9050919050565b60006141a282614185565b9050919050565b6141b281614197565b82525050565b60006020820190506141cd60008301846141a9565b92915050565b6141dc81613f27565b82525050565b60006020820190506141f760008301846141d3565b92915050565b60006020828403121561421357614212613f1d565b5b600061422184828501613f48565b91505092915050565b60008060006060848603121561424357614242613f1d565b5b6000614251868287016140a1565b9350506020614262868287016140a1565b925050604061427386828701613f48565b9150509250925092565b614286816140f6565b811461429157600080fd5b50565b6000813590506142a38161427d565b92915050565b600080604083850312156142c0576142bf613f1d565b5b60006142ce858286016140a1565b92505060206142df85828601614294565b9150509250929050565b600060ff82169050919050565b6142ff816142e9565b82525050565b600060208201905061431a60008301846142f6565b92915050565b61432981614078565b82525050565b60006020820190506143446000830184614320565b92915050565b6000602082840312156143605761435f613f1d565b5b600061436e84828501614294565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261439c5761439b614377565b5b8235905067ffffffffffffffff8111156143b9576143b861437c565b5b6020830191508360208202830111156143d5576143d4614381565b5b9250929050565b60008083601f8401126143f2576143f1614377565b5b8235905067ffffffffffffffff81111561440f5761440e61437c565b5b60208301915083602082028301111561442b5761442a614381565b5b9250929050565b6000806000806040858703121561444c5761444b613f1d565b5b600085013567ffffffffffffffff81111561446a57614469613f22565b5b61447687828801614386565b9450945050602085013567ffffffffffffffff81111561449957614498613f22565b5b6144a5878288016143dc565b925092505092959194509250565b600080604083850312156144ca576144c9613f1d565b5b60006144d8858286016140a1565b92505060206144e9858286016140a1565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614529602083613fa8565b9150614534826144f3565b602082019050919050565b600060208201905081810360008301526145588161451c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061459982613f27565b91506145a483613f27565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156145d9576145d861455f565b5b828201905092915050565b7f4446656573000000000000000000000000000000000000000000000000000000600082015250565b600061461a600583613fa8565b9150614625826145e4565b602082019050919050565b600060208201905081810360008301526146498161460d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061469757607f821691505b6020821081036146aa576146a9614650565b5b50919050565b60006146bb82613f27565b91506146c683613f27565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146ff576146fe61455f565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061474482613f27565b915061474f83613f27565b92508261475f5761475e61470a565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b60006147c6602f83613fa8565b91506147d18261476a565b604082019050919050565b600060208201905081810360008301526147f5816147b9565b9050919050565b7f4665657300000000000000000000000000000000000000000000000000000000600082015250565b6000614832600483613fa8565b915061483d826147fc565b602082019050919050565b6000602082019050818103600083015261486181614825565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006148c4603983613fa8565b91506148cf82614868565b604082019050919050565b600060208201905081810360008301526148f3816148b7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156149805780860481111561495c5761495b61455f565b5b600185161561496b5780820291505b808102905061497985614929565b9450614940565b94509492505050565b6000826149995760019050614a55565b816149a75760009050614a55565b81600181146149bd57600281146149c7576149f6565b6001915050614a55565b60ff8411156149d9576149d861455f565b5b8360020a9150848211156149f0576149ef61455f565b5b50614a55565b5060208310610133831016604e8410600b8410161715614a2b5782820a905083811115614a2657614a2561455f565b5b614a55565b614a388484846001614936565b92509050818404811115614a4f57614a4e61455f565b5b81810290505b9392505050565b6000614a6782613f27565b9150614a72836142e9565b9250614a9f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614989565b905092915050565b6000614ab282613f27565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614ae457614ae361455f565b5b600182019050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614b4b602483613fa8565b9150614b5682614aef565b604082019050919050565b60006020820190508181036000830152614b7a81614b3e565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614bdd603583613fa8565b9150614be882614b81565b604082019050919050565b60006020820190508181036000830152614c0c81614bd0565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614c6f603483613fa8565b9150614c7a82614c13565b604082019050919050565b60006020820190508181036000830152614c9e81614c62565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614d01602683613fa8565b9150614d0c82614ca5565b604082019050919050565b60006020820190508181036000830152614d3081614cf4565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614d6d601b83613fa8565b9150614d7882614d37565b602082019050919050565b60006020820190508181036000830152614d9c81614d60565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614dff602483613fa8565b9150614e0a82614da3565b604082019050919050565b60006020820190508181036000830152614e2e81614df2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614e91602283613fa8565b9150614e9c82614e35565b604082019050919050565b60006020820190508181036000830152614ec081614e84565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614f23602583613fa8565b9150614f2e82614ec7565b604082019050919050565b60006020820190508181036000830152614f5281614f16565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614fb5602383613fa8565b9150614fc082614f59565b604082019050919050565b60006020820190508181036000830152614fe481614fa8565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460008201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b6000615047603183613fa8565b915061505282614feb565b604082019050919050565b600060208201905081810360008301526150768161503a565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006150b3601683613fa8565b91506150be8261507d565b602082019050919050565b600060208201905081810360008301526150e2816150a6565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b600061516b604983613fa8565b9150615176826150e9565b606082019050919050565b6000602082019050818103600083015261519a8161515e565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006151fd603583613fa8565b9150615208826151a1565b604082019050919050565b6000602082019050818103600083015261522c816151f0565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000615269601383613fa8565b915061527482615233565b602082019050919050565b600060208201905081810360008301526152988161525c565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006152fb603683613fa8565b91506153068261529f565b604082019050919050565b6000602082019050818103600083015261532a816152ee565b9050919050565b600061533c82613f27565b915061534783613f27565b92508282101561535a5761535961455f565b5b828203905092915050565b600081905092915050565b50565b6000615380600083615365565b915061538b82615370565b600082019050919050565b60006153a182615373565b9150819050919050565b60006060820190506153c060008301866141d3565b6153cd60208301856141d3565b6153da60408301846141d3565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061543e602183613fa8565b9150615449826153e2565b604082019050919050565b6000602082019050818103600083015261546d81615431565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506154b28161408a565b92915050565b6000602082840312156154ce576154cd613f1d565b5b60006154dc848285016154a3565b91505092915050565b6000819050919050565b600061550a615505615500846154e5565b614159565b613f27565b9050919050565b61551a816154ef565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61555581614078565b82525050565b6000615567838361554c565b60208301905092915050565b6000602082019050919050565b600061558b82615520565b615595818561552b565b93506155a08361553c565b8060005b838110156155d15781516155b8888261555b565b97506155c383615573565b9250506001810190506155a4565b5085935050505092915050565b600060a0820190506155f360008301886141d3565b6156006020830187615511565b81810360408301526156128186615580565b90506156216060830185614320565b61562e60808301846141d3565b9695505050505050565b600060c08201905061564d6000830189614320565b61565a60208301886141d3565b6156676040830187615511565b6156746060830186615511565b6156816080830185614320565b61568e60a08301846141d3565b979650505050505050565b6000815190506156a881613f31565b92915050565b6000806000606084860312156156c7576156c6613f1d565b5b60006156d586828701615699565b93505060206156e686828701615699565b92505060406156f786828701615699565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220efbb0c10e098153995730416dd12da38a458df8c1300db11ed39d139401f635464736f6c634300080d0033
Deployed Bytecode Sourcemap
29311:14681:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35532:270;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7412:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9586:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30692:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29390:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8535:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36598:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30406:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34442:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10238:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36002:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8376:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11003:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29448:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29678:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36764:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35260:263;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30298:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29758:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8707:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21914:148;;;;;;;;;;;;;:::i;:::-;;33659:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34909:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33458:148;;;;;;;;;;;;;:::i;:::-;;21270:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35150:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7632:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36146:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30264:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43660:329;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30446:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30371:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11725:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9048:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30915:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29718:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35811:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34685:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30144:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29562:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34047:386;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30193:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9287:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29604:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33841:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30227:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22218:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30333:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29644:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35532:270;21493:12;:10;:12::i;:::-;21483:22;;:6;;;;;;;;;;;:22;;;21475:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35645:13:::1;35626:16;:32;;;;35682:7;35669:10;:20;;;;35735:10;;35716:16;;:29;;;;:::i;:::-;35700:13;:45;;;;35781:3;35764:13;;:20;;35756:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;35532:270:::0;;:::o;7412:100::-;7466:13;7499:5;7492:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7412:100;:::o;9586:169::-;9669:4;9686:39;9695:12;:10;:12::i;:::-;9709:7;9718:6;9686:8;:39::i;:::-;9743:4;9736:11;;9586:169;;;;:::o;30692:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;29390:51::-;;;:::o;8535:108::-;8596:7;8623:12;;8616:19;;8535:108;:::o;36598:157::-;21493:12;:10;:12::i;:::-;21483:22;;:6;;;;;;;;;;;:22;;;21475:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36705:9:::1;;;;;;;;;;;36677:38;;36694:9;36677:38;;;;;;;;;;;;36738:9;36726;;:21;;;;;;;;;;;;;;;;;;36598:157:::0;:::o;30406:33::-;;;;:::o;34442:234::-;21493:12;:10;:12::i;:::-;21483:22;;:6;;;;;;;;;;;:22;;;21475:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34561:4:::1;34555;34551:1;34535:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;34534:31;;;;:::i;:::-;34524:6;:41;;34516:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;34661:6;34651;:17;;;;:::i;:::-;34628:20;:40;;;;34442:234:::0;:::o;10238:355::-;10378:4;10395:36;10405:6;10413:9;10424:6;10395:9;:36::i;:::-;10442:121;10451:6;10459:12;:10;:12::i;:::-;10473:89;10511:6;10473:89;;;;;;;;;;;;;;;;;:11;:19;10485:6;10473:19;;;;;;;;;;;;;;;:33;10493:12;:10;:12::i;:::-;10473:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;10442:8;:121::i;:::-;10581:4;10574:11;;10238:355;;;;;:::o;36002:135::-;21493:12;:10;:12::i;:::-;21483:22;;:6;;;;;;;;;;;:22;;;21475:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36116:13:::1;36094:10;:19;36105:7;36094:19;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;36002:135:::0;;:::o;8376:93::-;8434:5;8459:2;8452:9;;8376:93;:::o;11003:218::-;11091:4;11108:83;11117:12;:10;:12::i;:::-;11131:7;11140:50;11179:10;11140:11;:25;11152:12;:10;:12::i;:::-;11140:25;;;;;;;;;;;;;;;:34;11166:7;11140:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;11108:8;:83::i;:::-;11209:4;11202:11;;11003:218;;;;:::o;29448:38::-;;;:::o;29678:33::-;;;;;;;;;;;;;:::o;36764:125::-;36829:4;36853:19;:28;36873:7;36853:28;;;;;;;;;;;;;;;;;;;;;;;;;36846:35;;36764:125;;;:::o;35260:263::-;21493:12;:10;:12::i;:::-;21483:22;;:6;;;;;;;;;;;:22;;;21475:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35371:13:::1;35353:15;:31;;;;35407:7;35395:9;:19;;;;35458:9;;35440:15;;:27;;;;:::i;:::-;35425:12;:42;;;;35502:3;35486:12;;:19;;35478:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;35260:263:::0;;:::o;30298:28::-;;;;:::o;29758:31::-;;;;;;;;;;;;;:::o;8707:127::-;8781:7;8808:9;:18;8818:7;8808:18;;;;;;;;;;;;;;;;8801:25;;8707:127;;;:::o;21914:148::-;21493:12;:10;:12::i;:::-;21483:22;;:6;;;;;;;;;;;:22;;;21475:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22021:1:::1;21984:40;;22005:6;;;;;;;;;;;21984:40;;;;;;;;;;;;22052:1;22035:6;;:19;;;;;;;;;;;;;;;;;;21914:148::o:0;33659:120::-;33711:4;21493:12;:10;:12::i;:::-;21483:22;;:6;;;;;;;;;;;:22;;;21475:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33744:5:::1;33727:14;;:22;;;;;;;;;;;;;;;;;;33767:4;33760:11;;33659:120:::0;:::o;34909:144::-;21493:12;:10;:12::i;:::-;21483:22;;:6;;;;;;;;;;;:22;;;21475:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35041:4:::1;34999:31;:39;35031:6;34999:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;34909:144:::0;;:::o;33458:148::-;21493:12;:10;:12::i;:::-;21483:22;;:6;;;;;;;;;;;:22;;;21475:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33529:4:::1;33513:13;;:20;;;;;;;;;;;;;;;;;;33558:4;33544:11;;:18;;;;;;;;;;;;;;;;;;33586:12;33573:10;:25;;;;33458:148::o:0;21270:79::-;21308:7;21335:6;;;;;;;;;;;21328:13;;21270:79;:::o;35150:101::-;21493:12;:10;:12::i;:::-;21483:22;;:6;;;;;;;;;;;:22;;;21475:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35236:7:::1;35222:11;;:21;;;;;;;;;;;;;;;;;;35150:101:::0;:::o;7632:104::-;7688:13;7721:7;7714:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7632:104;:::o;36146:245::-;21493:12;:10;:12::i;:::-;21483:22;;:6;;;;;;;;;;;:22;;;21475:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36253:13:::1;36245:21;;:4;:21;;::::0;36237:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;36342:41;36371:4;36377:5;36342:28;:41::i;:::-;36146:245:::0;;:::o;30264:24::-;;;;:::o;43660:329::-;21493:12;:10;:12::i;:::-;21483:22;;:6;;;;;;;;;;;:22;;;21475:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;43786:41:::1;43795:7;:5;:7::i;:::-;43804;:5;:7::i;:::-;43813:13;:11;:13::i;:::-;43786:8;:41::i;:::-;43843:9;43838:144;43862:10;;:17;;43858:1;:21;43838:144;;;43901:69;43914:10;43926;;43937:1;43926:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;43959:10;:8;:10::i;:::-;43953:2;:16;;;;:::i;:::-;43941:6;;43948:1;43941:9;;;;;;;:::i;:::-;;;;;;;;:28;;;;:::i;:::-;43901:12;:69::i;:::-;;43881:3;;;;;:::i;:::-;;;;43838:144;;;;43660:329:::0;;;;:::o;30446:27::-;;;;:::o;30371:25::-;;;;:::o;11725:269::-;11818:4;11835:129;11844:12;:10;:12::i;:::-;11858:7;11867:96;11906:15;11867:96;;;;;;;;;;;;;;;;;:11;:25;11879:12;:10;:12::i;:::-;11867:25;;;;;;;;;;;;;;;:34;11893:7;11867:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;11835:8;:129::i;:::-;11982:4;11975:11;;11725:269;;;;:::o;9048:175::-;9134:4;9151:42;9161:12;:10;:12::i;:::-;9175:9;9186:6;9151:9;:42::i;:::-;9211:4;9204:11;;9048:175;;;;:::o;30915:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;29718:33::-;;;;;;;;;;;;;:::o;35811:182::-;21493:12;:10;:12::i;:::-;21483:22;;:6;;;;;;;;;;;:22;;;21475:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35927:8:::1;35896:19;:28;35916:7;35896:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;35967:7;35951:34;;;35976:8;35951:34;;;;;;:::i;:::-;;;;;;;;35811:182:::0;;:::o;34685:215::-;21493:12;:10;:12::i;:::-;21483:22;;:6;;;;;;;;;;;:22;;;21475:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34807:4:::1;34801;34797:1;34781:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;34780:31;;;;:::i;:::-;34770:6;:41;;34762:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;34885:6;34875;:17;;;;:::i;:::-;34863:9;:29;;;;34685:215:::0;:::o;30144:39::-;;;;;;;;;;;;;:::o;29562:35::-;;;;:::o;34047:386::-;34128:4;21493:12;:10;:12::i;:::-;21483:22;;:6;;;;;;;;;;;:22;;;21475:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34185:6:::1;34181:1;34165:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;34152:9;:39;;34144:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;34301:4;34297:1;34281:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;34268:9;:37;;34260:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;34394:9;34373:18;:30;;;;34421:4;34414:11;;34047:386:::0;;;:::o;30193:27::-;;;;:::o;9287:151::-;9376:7;9403:11;:18;9415:5;9403:18;;;;;;;;;;;;;;;:27;9422:7;9403:27;;;;;;;;;;;;;;;;9396:34;;9287:151;;;;:::o;29604:33::-;;;;:::o;33841:134::-;33901:4;21493:12;:10;:12::i;:::-;21483:22;;:6;;;;;;;;;;;:22;;;21475:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33940:5:::1;33917:20;;:28;;;;;;;;;;;;;;;;;;33963:4;33956:11;;33841:134:::0;:::o;30227:30::-;;;;:::o;22218:244::-;21493:12;:10;:12::i;:::-;21483:22;;:6;;;;;;;;;;;:22;;;21475:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22327:1:::1;22307:22;;:8;:22;;::::0;22299:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22417:8;22388:38;;22409:6;;;;;;;;;;;22388:38;;;;;;;;;;;;22446:8;22437:6;;:17;;;;;;;;;;;;;;;;;;22218:244:::0;:::o;30333:31::-;;;;:::o;29644:24::-;;;;:::o;16302:182::-;16360:7;16380:9;16396:1;16392;:5;;;;:::i;:::-;16380:17;;16421:1;16416;:6;;16408:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;16475:1;16468:8;;;16302:182;;;;:::o;103:98::-;156:7;183:10;176:17;;103:98;:::o;14921:381::-;15074:1;15057:19;;:5;:19;;;15049:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15155:1;15136:21;;:7;:21;;;15128:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15240:6;15210:11;:18;15222:5;15210:18;;;;;;;;;;;;;;;:27;15229:7;15210:27;;;;;;;;;;;;;;;:36;;;;15278:7;15262:32;;15271:5;15262:32;;;15287:6;15262:32;;;;;;:::i;:::-;;;;;;;;14921:381;;;:::o;36949:4250::-;37097:1;37081:18;;:4;:18;;;37073:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37174:1;37160:16;;:2;:16;;;37152:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;37236:10;:14;37247:2;37236:14;;;;;;;;;;;;;;;;;;;;;;;;;37235:15;:36;;;;;37255:10;:16;37266:4;37255:16;;;;;;;;;;;;;;;;;;;;;;;;;37254:17;37235:36;37227:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;37350:1;37340:6;:11;37337:92;;37368:28;37384:4;37390:2;37394:1;37368:15;:28::i;:::-;37411:7;;37337:92;37445:14;;;;;;;;;;;37442:1812;;;37505:7;:5;:7::i;:::-;37497:15;;:4;:15;;;;:49;;;;;37539:7;:5;:7::i;:::-;37533:13;;:2;:13;;;;37497:49;:86;;;;;37581:1;37567:16;;:2;:16;;;;37497:86;:128;;;;;37618:6;37604:21;;:2;:21;;;;37497:128;:158;;;;;37647:8;;;;;;;;;;;37646:9;37497:158;37475:1768;;;37693:13;;;;;;;;;;;37689:148;;37738:19;:25;37758:4;37738:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;37767:19;:23;37787:2;37767:23;;;;;;;;;;;;;;;;;;;;;;;;;37738:52;37730:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;37689:148;37996:20;;;;;;;;;;;37992:424;;;38050:7;:5;:7::i;:::-;38044:13;;:2;:13;;;;:47;;;;;38075:15;38061:30;;:2;:30;;;;38044:47;:79;;;;;38109:13;38095:28;;:2;:28;;;;38044:79;38040:357;;;38202:12;38159:28;:39;38188:9;38159:39;;;;;;;;;;;;;;;;:55;;38151:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;38361:12;38319:28;:39;38348:9;38319:39;;;;;;;;;;;;;;;:54;;;;38040:357;37992:424;38469:25;:31;38495:4;38469:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;38505:31;:35;38537:2;38505:35;;;;;;;;;;;;;;;;;;;;;;;;;38504:36;38469:71;38465:763;;;38587:20;;38577:6;:30;;38569:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;38726:9;;38709:13;38719:2;38709:9;:13::i;:::-;38700:6;:22;;;;:::i;:::-;:35;;38692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;38465:763;;;38838:25;:29;38864:2;38838:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;38872:31;:37;38904:4;38872:37;;;;;;;;;;;;;;;;;;;;;;;;;38871:38;38838:71;38834:394;;;38956:20;;38946:6;:30;;38938:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;38834:394;;;39082:31;:35;39114:2;39082:35;;;;;;;;;;;;;;;;;;;;;;;;;39078:150;;39175:9;;39158:13;39168:2;39158:9;:13::i;:::-;39149:6;:22;;;;:::i;:::-;:35;;39141:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;39078:150;38834:394;38465:763;37475:1768;37442:1812;39328:1;39315:10;;:14;;;;:::i;:::-;39298:12;:32;;:73;;;;;39358:13;39352:19;;:2;:19;;;;39298:73;:152;;;;;39407:42;39393:57;;:2;:57;;;;39298:152;39294:221;;;39499:4;39482:10;:14;39493:2;39482:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;39294:221;39528:28;39559:24;39577:4;39559:9;:24::i;:::-;39528:55;;39597:12;39636:18;;39612:20;:42;;39597:57;;39686:7;:35;;;;;39710:11;;;;;;;;;;;39686:35;:61;;;;;39739:8;;;;;;;;;;;39738:9;39686:61;:110;;;;;39765:25;:31;39791:4;39765:31;;;;;;;;;;;;;;;;;;;;;;;;;39764:32;39686:110;:153;;;;;39814:19;:25;39834:4;39814:25;;;;;;;;;;;;;;;;;;;;;;;;;39813:26;39686:153;:194;;;;;39857:19;:23;39877:2;39857:23;;;;;;;;;;;;;;;;;;;;;;;;;39856:24;39686:194;39668:328;;;39918:4;39907:8;;:15;;;;;;;;;;;;;;;;;;39940:10;:8;:10::i;:::-;39979:5;39968:8;;:16;;;;;;;;;;;;;;;;;;39668:328;40010:12;40026:8;;;;;;;;;;;40025:9;40010:24;;40136:19;:25;40156:4;40136:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;40165:19;:23;40185:2;40165:23;;;;;;;;;;;;;;;;;;;;;;;;;40136:52;40133:99;;;40215:5;40205:15;;40133:99;40245:12;40349:7;40346:799;;;40400:25;:29;40426:2;40400:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;40449:1;40433:13;;:17;40400:50;40396:596;;;40477:34;40507:3;40477:25;40488:13;;40477:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;40470:41;;40578:13;;40559:16;;40552:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;40530:18;;:61;;;;;;;:::i;:::-;;;;;;;;40646:13;;40633:10;;40626:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;40610:12;;:49;;;;;;;:::i;:::-;;;;;;;;40396:596;;;40720:25;:31;40746:4;40720:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;40770:1;40755:12;;:16;40720:51;40717:275;;;40799:33;40828:3;40799:24;40810:12;;40799:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;40792:40;;40898:12;;40880:15;;40873:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;40851:18;;:59;;;;;;;:::i;:::-;;;;;;;;40964:12;;40952:9;;40945:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;40929:12;;:47;;;;;;;:::i;:::-;;;;;;;;40717:275;40396:596;41019:1;41012:4;:8;41009:93;;;41044:42;41060:4;41074;41081;41044:15;:42::i;:::-;41009:93;41129:4;41119:14;;;;;:::i;:::-;;;40346:799;41158:33;41174:4;41180:2;41184:6;41158:15;:33::i;:::-;37062:4137;;;;36949:4250;;;;:::o;17208:193::-;17294:7;17327:1;17322;:6;;17330:12;17314:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;17354:9;17370:1;17366;:5;;;;:::i;:::-;17354:17;;17392:1;17385:8;;;17208:193;;;;;:::o;36400:189::-;36517:5;36483:25;:31;36509:4;36483:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;36575:5;36541:40;;36569:4;36541:40;;;;;;;;;;;;36400:189;;:::o;12485:575::-;12643:1;12625:20;;:6;:20;;;12617:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12727:1;12706:23;;:9;:23;;;12698:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12783:47;12804:6;12812:9;12823:6;12783:20;:47::i;:::-;12864:71;12886:6;12864:71;;;;;;;;;;;;;;;;;:9;:17;12874:6;12864:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;12844:9;:17;12854:6;12844:17;;;;;;;;;;;;;;;:91;;;;12969:32;12994:6;12969:9;:20;12979:9;12969:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;12946:9;:20;12956:9;12946:20;;;;;;;;;;;;;;;:55;;;;13034:9;13017:35;;13026:6;13017:35;;;13045:6;13017:35;;;;;;:::i;:::-;;;;;;;;12485:575;;;:::o;42343:1309::-;42382:23;42408:24;42426:4;42408:9;:24::i;:::-;42382:50;;42443:25;42492:12;;42471:18;;:33;;;;:::i;:::-;42443:61;;42515:12;42563:1;42544:15;:20;:46;;;;42589:1;42568:17;:22;42544:46;42541:60;;;42593:7;;;;;42541:60;42656:2;42635:18;;:23;;;;:::i;:::-;42617:15;:41;42614:111;;;42711:2;42690:18;;:23;;;;:::i;:::-;42672:41;;42614:111;42787:23;42872:1;42852:17;42831:18;;42813:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;42787:86;;42884:26;42913:36;42933:15;42913;:19;;:36;;;;:::i;:::-;42884:65;;42963:25;42991:21;42963:49;;43026:36;43043:18;43026:16;:36::i;:::-;43077:18;43098:44;43124:17;43098:21;:25;;:44;;;;:::i;:::-;43077:65;;43156:17;43176:51;43209:17;43176:28;43191:12;;43176:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;43156:71;;43238:23;43277:9;43264:10;:22;;;;:::i;:::-;43238:48;;43321:1;43300:18;:22;;;;43348:1;43333:12;:16;;;;43384:9;;;;;;;;;;;43376:23;;43407:9;43376:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43363:58;;;;;43456:1;43438:15;:19;:42;;;;;43479:1;43461:15;:19;43438:42;43435:210;;;43496:46;43509:15;43526;43496:12;:46::i;:::-;43562:71;43577:18;43597:15;43614:18;;43562:71;;;;;;;;:::i;:::-;;;;;;;;43435:210;42371:1281;;;;;;;;;42343:1309;:::o;17661:473::-;17719:7;17969:1;17964;:6;17960:47;;17994:1;17987:8;;;;17960:47;18020:9;18036:1;18032;:5;;;;:::i;:::-;18020:17;;18065:1;18060;18056;:5;;;;:::i;:::-;:10;18048:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;18125:1;18118:8;;;17661:473;;;;;:::o;18611:132::-;18669:7;18696:39;18700:1;18703;18696:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;18689:46;;18611:132;;;;:::o;15906:125::-;;;;:::o;16768:136::-;16826:7;16853:43;16857:1;16860;16853:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;16846:50;;16768:136;;;;:::o;41208:597::-;41337:21;41375:1;41361:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41337:40;;41406:4;41388;41393:1;41388:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;41432:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;41422:4;41427:1;41422:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;41468:62;41485:4;41500:15;41518:11;41468:8;:62::i;:::-;41570:15;:66;;;41651:11;41677:1;41721:4;41748;41768:15;41570:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41263:542;41208:597;:::o;41814:520::-;41962:62;41979:4;41994:15;42012:11;41962:8;:62::i;:::-;42068:15;:31;;;42107:9;42140:4;42160:11;42186:1;42229;42280:4;42300:15;42068:258;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;41814:520;;:::o;19240:279::-;19326:7;19358:1;19354;:5;19361:12;19346:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;19385:9;19401:1;19397;:5;;;;:::i;:::-;19385:17;;19510:1;19503:8;;;19240:279;;;;;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:99::-;1222:6;1256:5;1250:12;1240:22;;1170:99;;;:::o;1275:169::-;1359:11;1393:6;1388:3;1381:19;1433:4;1428:3;1424:14;1409:29;;1275:169;;;;:::o;1450:307::-;1518:1;1528:113;1542:6;1539:1;1536:13;1528:113;;;1627:1;1622:3;1618:11;1612:18;1608:1;1603:3;1599:11;1592:39;1564:2;1561:1;1557:10;1552:15;;1528:113;;;1659:6;1656:1;1653:13;1650:101;;;1739:1;1730:6;1725:3;1721:16;1714:27;1650:101;1499:258;1450:307;;;:::o;1763:102::-;1804:6;1855:2;1851:7;1846:2;1839:5;1835:14;1831:28;1821:38;;1763:102;;;:::o;1871:364::-;1959:3;1987:39;2020:5;1987:39;:::i;:::-;2042:71;2106:6;2101:3;2042:71;:::i;:::-;2035:78;;2122:52;2167:6;2162:3;2155:4;2148:5;2144:16;2122:52;:::i;:::-;2199:29;2221:6;2199:29;:::i;:::-;2194:3;2190:39;2183:46;;1963:272;1871:364;;;;:::o;2241:313::-;2354:4;2392:2;2381:9;2377:18;2369:26;;2441:9;2435:4;2431:20;2427:1;2416:9;2412:17;2405:47;2469:78;2542:4;2533:6;2469:78;:::i;:::-;2461:86;;2241:313;;;;:::o;2560:126::-;2597:7;2637:42;2630:5;2626:54;2615:65;;2560:126;;;:::o;2692:96::-;2729:7;2758:24;2776:5;2758:24;:::i;:::-;2747:35;;2692:96;;;:::o;2794:122::-;2867:24;2885:5;2867:24;:::i;:::-;2860:5;2857:35;2847:63;;2906:1;2903;2896:12;2847:63;2794:122;:::o;2922:139::-;2968:5;3006:6;2993:20;2984:29;;3022:33;3049:5;3022:33;:::i;:::-;2922:139;;;;:::o;3067:474::-;3135:6;3143;3192:2;3180:9;3171:7;3167:23;3163:32;3160:119;;;3198:79;;:::i;:::-;3160:119;3318:1;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3289:117;3445:2;3471:53;3516:7;3507:6;3496:9;3492:22;3471:53;:::i;:::-;3461:63;;3416:118;3067:474;;;;;:::o;3547:90::-;3581:7;3624:5;3617:13;3610:21;3599:32;;3547:90;;;:::o;3643:109::-;3724:21;3739:5;3724:21;:::i;:::-;3719:3;3712:34;3643:109;;:::o;3758:210::-;3845:4;3883:2;3872:9;3868:18;3860:26;;3896:65;3958:1;3947:9;3943:17;3934:6;3896:65;:::i;:::-;3758:210;;;;:::o;3974:329::-;4033:6;4082:2;4070:9;4061:7;4057:23;4053:32;4050:119;;;4088:79;;:::i;:::-;4050:119;4208:1;4233:53;4278:7;4269:6;4258:9;4254:22;4233:53;:::i;:::-;4223:63;;4179:117;3974:329;;;;:::o;4309:60::-;4337:3;4358:5;4351:12;;4309:60;;;:::o;4375:142::-;4425:9;4458:53;4476:34;4485:24;4503:5;4485:24;:::i;:::-;4476:34;:::i;:::-;4458:53;:::i;:::-;4445:66;;4375:142;;;:::o;4523:126::-;4573:9;4606:37;4637:5;4606:37;:::i;:::-;4593:50;;4523:126;;;:::o;4655:153::-;4732:9;4765:37;4796:5;4765:37;:::i;:::-;4752:50;;4655:153;;;:::o;4814:185::-;4928:64;4986:5;4928:64;:::i;:::-;4923:3;4916:77;4814:185;;:::o;5005:276::-;5125:4;5163:2;5152:9;5148:18;5140:26;;5176:98;5271:1;5260:9;5256:17;5247:6;5176:98;:::i;:::-;5005:276;;;;:::o;5287:118::-;5374:24;5392:5;5374:24;:::i;:::-;5369:3;5362:37;5287:118;;:::o;5411:222::-;5504:4;5542:2;5531:9;5527:18;5519:26;;5555:71;5623:1;5612:9;5608:17;5599:6;5555:71;:::i;:::-;5411:222;;;;:::o;5639:329::-;5698:6;5747:2;5735:9;5726:7;5722:23;5718:32;5715:119;;;5753:79;;:::i;:::-;5715:119;5873:1;5898:53;5943:7;5934:6;5923:9;5919:22;5898:53;:::i;:::-;5888:63;;5844:117;5639:329;;;;:::o;5974:619::-;6051:6;6059;6067;6116:2;6104:9;6095:7;6091:23;6087:32;6084:119;;;6122:79;;:::i;:::-;6084:119;6242:1;6267:53;6312:7;6303:6;6292:9;6288:22;6267:53;:::i;:::-;6257:63;;6213:117;6369:2;6395:53;6440:7;6431:6;6420:9;6416:22;6395:53;:::i;:::-;6385:63;;6340:118;6497:2;6523:53;6568:7;6559:6;6548:9;6544:22;6523:53;:::i;:::-;6513:63;;6468:118;5974:619;;;;;:::o;6599:116::-;6669:21;6684:5;6669:21;:::i;:::-;6662:5;6659:32;6649:60;;6705:1;6702;6695:12;6649:60;6599:116;:::o;6721:133::-;6764:5;6802:6;6789:20;6780:29;;6818:30;6842:5;6818:30;:::i;:::-;6721:133;;;;:::o;6860:468::-;6925:6;6933;6982:2;6970:9;6961:7;6957:23;6953:32;6950:119;;;6988:79;;:::i;:::-;6950:119;7108:1;7133:53;7178:7;7169:6;7158:9;7154:22;7133:53;:::i;:::-;7123:63;;7079:117;7235:2;7261:50;7303:7;7294:6;7283:9;7279:22;7261:50;:::i;:::-;7251:60;;7206:115;6860:468;;;;;:::o;7334:86::-;7369:7;7409:4;7402:5;7398:16;7387:27;;7334:86;;;:::o;7426:112::-;7509:22;7525:5;7509:22;:::i;:::-;7504:3;7497:35;7426:112;;:::o;7544:214::-;7633:4;7671:2;7660:9;7656:18;7648:26;;7684:67;7748:1;7737:9;7733:17;7724:6;7684:67;:::i;:::-;7544:214;;;;:::o;7764:118::-;7851:24;7869:5;7851:24;:::i;:::-;7846:3;7839:37;7764:118;;:::o;7888:222::-;7981:4;8019:2;8008:9;8004:18;7996:26;;8032:71;8100:1;8089:9;8085:17;8076:6;8032:71;:::i;:::-;7888:222;;;;:::o;8116:323::-;8172:6;8221:2;8209:9;8200:7;8196:23;8192:32;8189:119;;;8227:79;;:::i;:::-;8189:119;8347:1;8372:50;8414:7;8405:6;8394:9;8390:22;8372:50;:::i;:::-;8362:60;;8318:114;8116:323;;;;:::o;8445:117::-;8554:1;8551;8544:12;8568:117;8677:1;8674;8667:12;8691:117;8800:1;8797;8790:12;8831:568;8904:8;8914:6;8964:3;8957:4;8949:6;8945:17;8941:27;8931:122;;8972:79;;:::i;:::-;8931:122;9085:6;9072:20;9062:30;;9115:18;9107:6;9104:30;9101:117;;;9137:79;;:::i;:::-;9101:117;9251:4;9243:6;9239:17;9227:29;;9305:3;9297:4;9289:6;9285:17;9275:8;9271:32;9268:41;9265:128;;;9312:79;;:::i;:::-;9265:128;8831:568;;;;;:::o;9422:::-;9495:8;9505:6;9555:3;9548:4;9540:6;9536:17;9532:27;9522:122;;9563:79;;:::i;:::-;9522:122;9676:6;9663:20;9653:30;;9706:18;9698:6;9695:30;9692:117;;;9728:79;;:::i;:::-;9692:117;9842:4;9834:6;9830:17;9818:29;;9896:3;9888:4;9880:6;9876:17;9866:8;9862:32;9859:41;9856:128;;;9903:79;;:::i;:::-;9856:128;9422:568;;;;;:::o;9996:934::-;10118:6;10126;10134;10142;10191:2;10179:9;10170:7;10166:23;10162:32;10159:119;;;10197:79;;:::i;:::-;10159:119;10345:1;10334:9;10330:17;10317:31;10375:18;10367:6;10364:30;10361:117;;;10397:79;;:::i;:::-;10361:117;10510:80;10582:7;10573:6;10562:9;10558:22;10510:80;:::i;:::-;10492:98;;;;10288:312;10667:2;10656:9;10652:18;10639:32;10698:18;10690:6;10687:30;10684:117;;;10720:79;;:::i;:::-;10684:117;10833:80;10905:7;10896:6;10885:9;10881:22;10833:80;:::i;:::-;10815:98;;;;10610:313;9996:934;;;;;;;:::o;10936:474::-;11004:6;11012;11061:2;11049:9;11040:7;11036:23;11032:32;11029:119;;;11067:79;;:::i;:::-;11029:119;11187:1;11212:53;11257:7;11248:6;11237:9;11233:22;11212:53;:::i;:::-;11202:63;;11158:117;11314:2;11340:53;11385:7;11376:6;11365:9;11361:22;11340:53;:::i;:::-;11330:63;;11285:118;10936:474;;;;;:::o;11416:182::-;11556:34;11552:1;11544:6;11540:14;11533:58;11416:182;:::o;11604:366::-;11746:3;11767:67;11831:2;11826:3;11767:67;:::i;:::-;11760:74;;11843:93;11932:3;11843:93;:::i;:::-;11961:2;11956:3;11952:12;11945:19;;11604:366;;;:::o;11976:419::-;12142:4;12180:2;12169:9;12165:18;12157:26;;12229:9;12223:4;12219:20;12215:1;12204:9;12200:17;12193:47;12257:131;12383:4;12257:131;:::i;:::-;12249:139;;11976:419;;;:::o;12401:180::-;12449:77;12446:1;12439:88;12546:4;12543:1;12536:15;12570:4;12567:1;12560:15;12587:305;12627:3;12646:20;12664:1;12646:20;:::i;:::-;12641:25;;12680:20;12698:1;12680:20;:::i;:::-;12675:25;;12834:1;12766:66;12762:74;12759:1;12756:81;12753:107;;;12840:18;;:::i;:::-;12753:107;12884:1;12881;12877:9;12870:16;;12587:305;;;;:::o;12898:155::-;13038:7;13034:1;13026:6;13022:14;13015:31;12898:155;:::o;13059:365::-;13201:3;13222:66;13286:1;13281:3;13222:66;:::i;:::-;13215:73;;13297:93;13386:3;13297:93;:::i;:::-;13415:2;13410:3;13406:12;13399:19;;13059:365;;;:::o;13430:419::-;13596:4;13634:2;13623:9;13619:18;13611:26;;13683:9;13677:4;13673:20;13669:1;13658:9;13654:17;13647:47;13711:131;13837:4;13711:131;:::i;:::-;13703:139;;13430:419;;;:::o;13855:180::-;13903:77;13900:1;13893:88;14000:4;13997:1;13990:15;14024:4;14021:1;14014:15;14041:320;14085:6;14122:1;14116:4;14112:12;14102:22;;14169:1;14163:4;14159:12;14190:18;14180:81;;14246:4;14238:6;14234:17;14224:27;;14180:81;14308:2;14300:6;14297:14;14277:18;14274:38;14271:84;;14327:18;;:::i;:::-;14271:84;14092:269;14041:320;;;:::o;14367:348::-;14407:7;14430:20;14448:1;14430:20;:::i;:::-;14425:25;;14464:20;14482:1;14464:20;:::i;:::-;14459:25;;14652:1;14584:66;14580:74;14577:1;14574:81;14569:1;14562:9;14555:17;14551:105;14548:131;;;14659:18;;:::i;:::-;14548:131;14707:1;14704;14700:9;14689:20;;14367:348;;;;:::o;14721:180::-;14769:77;14766:1;14759:88;14866:4;14863:1;14856:15;14890:4;14887:1;14880:15;14907:185;14947:1;14964:20;14982:1;14964:20;:::i;:::-;14959:25;;14998:20;15016:1;14998:20;:::i;:::-;14993:25;;15037:1;15027:35;;15042:18;;:::i;:::-;15027:35;15084:1;15081;15077:9;15072:14;;14907:185;;;;:::o;15098:234::-;15238:34;15234:1;15226:6;15222:14;15215:58;15307:17;15302:2;15294:6;15290:15;15283:42;15098:234;:::o;15338:366::-;15480:3;15501:67;15565:2;15560:3;15501:67;:::i;:::-;15494:74;;15577:93;15666:3;15577:93;:::i;:::-;15695:2;15690:3;15686:12;15679:19;;15338:366;;;:::o;15710:419::-;15876:4;15914:2;15903:9;15899:18;15891:26;;15963:9;15957:4;15953:20;15949:1;15938:9;15934:17;15927:47;15991:131;16117:4;15991:131;:::i;:::-;15983:139;;15710:419;;;:::o;16135:154::-;16275:6;16271:1;16263:6;16259:14;16252:30;16135:154;:::o;16295:365::-;16437:3;16458:66;16522:1;16517:3;16458:66;:::i;:::-;16451:73;;16533:93;16622:3;16533:93;:::i;:::-;16651:2;16646:3;16642:12;16635:19;;16295:365;;;:::o;16666:419::-;16832:4;16870:2;16859:9;16855:18;16847:26;;16919:9;16913:4;16909:20;16905:1;16894:9;16890:17;16883:47;16947:131;17073:4;16947:131;:::i;:::-;16939:139;;16666:419;;;:::o;17091:244::-;17231:34;17227:1;17219:6;17215:14;17208:58;17300:27;17295:2;17287:6;17283:15;17276:52;17091:244;:::o;17341:366::-;17483:3;17504:67;17568:2;17563:3;17504:67;:::i;:::-;17497:74;;17580:93;17669:3;17580:93;:::i;:::-;17698:2;17693:3;17689:12;17682:19;;17341:366;;;:::o;17713:419::-;17879:4;17917:2;17906:9;17902:18;17894:26;;17966:9;17960:4;17956:20;17952:1;17941:9;17937:17;17930:47;17994:131;18120:4;17994:131;:::i;:::-;17986:139;;17713:419;;;:::o;18138:180::-;18186:77;18183:1;18176:88;18283:4;18280:1;18273:15;18307:4;18304:1;18297:15;18324:102;18366:8;18413:5;18410:1;18406:13;18385:34;;18324:102;;;:::o;18432:848::-;18493:5;18500:4;18524:6;18515:15;;18548:5;18539:14;;18562:712;18583:1;18573:8;18570:15;18562:712;;;18678:4;18673:3;18669:14;18663:4;18660:24;18657:50;;;18687:18;;:::i;:::-;18657:50;18737:1;18727:8;18723:16;18720:451;;;19152:4;19145:5;19141:16;19132:25;;18720:451;19202:4;19196;19192:15;19184:23;;19232:32;19255:8;19232:32;:::i;:::-;19220:44;;18562:712;;;18432:848;;;;;;;:::o;19286:1073::-;19340:5;19531:8;19521:40;;19552:1;19543:10;;19554:5;;19521:40;19580:4;19570:36;;19597:1;19588:10;;19599:5;;19570:36;19666:4;19714:1;19709:27;;;;19750:1;19745:191;;;;19659:277;;19709:27;19727:1;19718:10;;19729:5;;;19745:191;19790:3;19780:8;19777:17;19774:43;;;19797:18;;:::i;:::-;19774:43;19846:8;19843:1;19839:16;19830:25;;19881:3;19874:5;19871:14;19868:40;;;19888:18;;:::i;:::-;19868:40;19921:5;;;19659:277;;20045:2;20035:8;20032:16;20026:3;20020:4;20017:13;20013:36;19995:2;19985:8;19982:16;19977:2;19971:4;19968:12;19964:35;19948:111;19945:246;;;20101:8;20095:4;20091:19;20082:28;;20136:3;20129:5;20126:14;20123:40;;;20143:18;;:::i;:::-;20123:40;20176:5;;19945:246;20216:42;20254:3;20244:8;20238:4;20235:1;20216:42;:::i;:::-;20201:57;;;;20290:4;20285:3;20281:14;20274:5;20271:25;20268:51;;;20299:18;;:::i;:::-;20268:51;20348:4;20341:5;20337:16;20328:25;;19286:1073;;;;;;:::o;20365:281::-;20423:5;20447:23;20465:4;20447:23;:::i;:::-;20439:31;;20491:25;20507:8;20491:25;:::i;:::-;20479:37;;20535:104;20572:66;20562:8;20556:4;20535:104;:::i;:::-;20526:113;;20365:281;;;;:::o;20652:233::-;20691:3;20714:24;20732:5;20714:24;:::i;:::-;20705:33;;20760:66;20753:5;20750:77;20747:103;;20830:18;;:::i;:::-;20747:103;20877:1;20870:5;20866:13;20859:20;;20652:233;;;:::o;20891:223::-;21031:34;21027:1;21019:6;21015:14;21008:58;21100:6;21095:2;21087:6;21083:15;21076:31;20891:223;:::o;21120:366::-;21262:3;21283:67;21347:2;21342:3;21283:67;:::i;:::-;21276:74;;21359:93;21448:3;21359:93;:::i;:::-;21477:2;21472:3;21468:12;21461:19;;21120:366;;;:::o;21492:419::-;21658:4;21696:2;21685:9;21681:18;21673:26;;21745:9;21739:4;21735:20;21731:1;21720:9;21716:17;21709:47;21773:131;21899:4;21773:131;:::i;:::-;21765:139;;21492:419;;;:::o;21917:240::-;22057:34;22053:1;22045:6;22041:14;22034:58;22126:23;22121:2;22113:6;22109:15;22102:48;21917:240;:::o;22163:366::-;22305:3;22326:67;22390:2;22385:3;22326:67;:::i;:::-;22319:74;;22402:93;22491:3;22402:93;:::i;:::-;22520:2;22515:3;22511:12;22504:19;;22163:366;;;:::o;22535:419::-;22701:4;22739:2;22728:9;22724:18;22716:26;;22788:9;22782:4;22778:20;22774:1;22763:9;22759:17;22752:47;22816:131;22942:4;22816:131;:::i;:::-;22808:139;;22535:419;;;:::o;22960:239::-;23100:34;23096:1;23088:6;23084:14;23077:58;23169:22;23164:2;23156:6;23152:15;23145:47;22960:239;:::o;23205:366::-;23347:3;23368:67;23432:2;23427:3;23368:67;:::i;:::-;23361:74;;23444:93;23533:3;23444:93;:::i;:::-;23562:2;23557:3;23553:12;23546:19;;23205:366;;;:::o;23577:419::-;23743:4;23781:2;23770:9;23766:18;23758:26;;23830:9;23824:4;23820:20;23816:1;23805:9;23801:17;23794:47;23858:131;23984:4;23858:131;:::i;:::-;23850:139;;23577:419;;;:::o;24002:225::-;24142:34;24138:1;24130:6;24126:14;24119:58;24211:8;24206:2;24198:6;24194:15;24187:33;24002:225;:::o;24233:366::-;24375:3;24396:67;24460:2;24455:3;24396:67;:::i;:::-;24389:74;;24472:93;24561:3;24472:93;:::i;:::-;24590:2;24585:3;24581:12;24574:19;;24233:366;;;:::o;24605:419::-;24771:4;24809:2;24798:9;24794:18;24786:26;;24858:9;24852:4;24848:20;24844:1;24833:9;24829:17;24822:47;24886:131;25012:4;24886:131;:::i;:::-;24878:139;;24605:419;;;:::o;25030:177::-;25170:29;25166:1;25158:6;25154:14;25147:53;25030:177;:::o;25213:366::-;25355:3;25376:67;25440:2;25435:3;25376:67;:::i;:::-;25369:74;;25452:93;25541:3;25452:93;:::i;:::-;25570:2;25565:3;25561:12;25554:19;;25213:366;;;:::o;25585:419::-;25751:4;25789:2;25778:9;25774:18;25766:26;;25838:9;25832:4;25828:20;25824:1;25813:9;25809:17;25802:47;25866:131;25992:4;25866:131;:::i;:::-;25858:139;;25585:419;;;:::o;26010:223::-;26150:34;26146:1;26138:6;26134:14;26127:58;26219:6;26214:2;26206:6;26202:15;26195:31;26010:223;:::o;26239:366::-;26381:3;26402:67;26466:2;26461:3;26402:67;:::i;:::-;26395:74;;26478:93;26567:3;26478:93;:::i;:::-;26596:2;26591:3;26587:12;26580:19;;26239:366;;;:::o;26611:419::-;26777:4;26815:2;26804:9;26800:18;26792:26;;26864:9;26858:4;26854:20;26850:1;26839:9;26835:17;26828:47;26892:131;27018:4;26892:131;:::i;:::-;26884:139;;26611:419;;;:::o;27036:221::-;27176:34;27172:1;27164:6;27160:14;27153:58;27245:4;27240:2;27232:6;27228:15;27221:29;27036:221;:::o;27263:366::-;27405:3;27426:67;27490:2;27485:3;27426:67;:::i;:::-;27419:74;;27502:93;27591:3;27502:93;:::i;:::-;27620:2;27615:3;27611:12;27604:19;;27263:366;;;:::o;27635:419::-;27801:4;27839:2;27828:9;27824:18;27816:26;;27888:9;27882:4;27878:20;27874:1;27863:9;27859:17;27852:47;27916:131;28042:4;27916:131;:::i;:::-;27908:139;;27635:419;;;:::o;28060:224::-;28200:34;28196:1;28188:6;28184:14;28177:58;28269:7;28264:2;28256:6;28252:15;28245:32;28060:224;:::o;28290:366::-;28432:3;28453:67;28517:2;28512:3;28453:67;:::i;:::-;28446:74;;28529:93;28618:3;28529:93;:::i;:::-;28647:2;28642:3;28638:12;28631:19;;28290:366;;;:::o;28662:419::-;28828:4;28866:2;28855:9;28851:18;28843:26;;28915:9;28909:4;28905:20;28901:1;28890:9;28886:17;28879:47;28943:131;29069:4;28943:131;:::i;:::-;28935:139;;28662:419;;;:::o;29087:222::-;29227:34;29223:1;29215:6;29211:14;29204:58;29296:5;29291:2;29283:6;29279:15;29272:30;29087:222;:::o;29315:366::-;29457:3;29478:67;29542:2;29537:3;29478:67;:::i;:::-;29471:74;;29554:93;29643:3;29554:93;:::i;:::-;29672:2;29667:3;29663:12;29656:19;;29315:366;;;:::o;29687:419::-;29853:4;29891:2;29880:9;29876:18;29868:26;;29940:9;29934:4;29930:20;29926:1;29915:9;29911:17;29904:47;29968:131;30094:4;29968:131;:::i;:::-;29960:139;;29687:419;;;:::o;30112:236::-;30252:34;30248:1;30240:6;30236:14;30229:58;30321:19;30316:2;30308:6;30304:15;30297:44;30112:236;:::o;30354:366::-;30496:3;30517:67;30581:2;30576:3;30517:67;:::i;:::-;30510:74;;30593:93;30682:3;30593:93;:::i;:::-;30711:2;30706:3;30702:12;30695:19;;30354:366;;;:::o;30726:419::-;30892:4;30930:2;30919:9;30915:18;30907:26;;30979:9;30973:4;30969:20;30965:1;30954:9;30950:17;30943:47;31007:131;31133:4;31007:131;:::i;:::-;30999:139;;30726:419;;;:::o;31151:172::-;31291:24;31287:1;31279:6;31275:14;31268:48;31151:172;:::o;31329:366::-;31471:3;31492:67;31556:2;31551:3;31492:67;:::i;:::-;31485:74;;31568:93;31657:3;31568:93;:::i;:::-;31686:2;31681:3;31677:12;31670:19;;31329:366;;;:::o;31701:419::-;31867:4;31905:2;31894:9;31890:18;31882:26;;31954:9;31948:4;31944:20;31940:1;31929:9;31925:17;31918:47;31982:131;32108:4;31982:131;:::i;:::-;31974:139;;31701:419;;;:::o;32126:297::-;32266:34;32262:1;32254:6;32250:14;32243:58;32335:34;32330:2;32322:6;32318:15;32311:59;32404:11;32399:2;32391:6;32387:15;32380:36;32126:297;:::o;32429:366::-;32571:3;32592:67;32656:2;32651:3;32592:67;:::i;:::-;32585:74;;32668:93;32757:3;32668:93;:::i;:::-;32786:2;32781:3;32777:12;32770:19;;32429:366;;;:::o;32801:419::-;32967:4;33005:2;32994:9;32990:18;32982:26;;33054:9;33048:4;33044:20;33040:1;33029:9;33025:17;33018:47;33082:131;33208:4;33082:131;:::i;:::-;33074:139;;32801:419;;;:::o;33226:240::-;33366:34;33362:1;33354:6;33350:14;33343:58;33435:23;33430:2;33422:6;33418:15;33411:48;33226:240;:::o;33472:366::-;33614:3;33635:67;33699:2;33694:3;33635:67;:::i;:::-;33628:74;;33711:93;33800:3;33711:93;:::i;:::-;33829:2;33824:3;33820:12;33813:19;;33472:366;;;:::o;33844:419::-;34010:4;34048:2;34037:9;34033:18;34025:26;;34097:9;34091:4;34087:20;34083:1;34072:9;34068:17;34061:47;34125:131;34251:4;34125:131;:::i;:::-;34117:139;;33844:419;;;:::o;34269:169::-;34409:21;34405:1;34397:6;34393:14;34386:45;34269:169;:::o;34444:366::-;34586:3;34607:67;34671:2;34666:3;34607:67;:::i;:::-;34600:74;;34683:93;34772:3;34683:93;:::i;:::-;34801:2;34796:3;34792:12;34785:19;;34444:366;;;:::o;34816:419::-;34982:4;35020:2;35009:9;35005:18;34997:26;;35069:9;35063:4;35059:20;35055:1;35044:9;35040:17;35033:47;35097:131;35223:4;35097:131;:::i;:::-;35089:139;;34816:419;;;:::o;35241:241::-;35381:34;35377:1;35369:6;35365:14;35358:58;35450:24;35445:2;35437:6;35433:15;35426:49;35241:241;:::o;35488:366::-;35630:3;35651:67;35715:2;35710:3;35651:67;:::i;:::-;35644:74;;35727:93;35816:3;35727:93;:::i;:::-;35845:2;35840:3;35836:12;35829:19;;35488:366;;;:::o;35860:419::-;36026:4;36064:2;36053:9;36049:18;36041:26;;36113:9;36107:4;36103:20;36099:1;36088:9;36084:17;36077:47;36141:131;36267:4;36141:131;:::i;:::-;36133:139;;35860:419;;;:::o;36285:191::-;36325:4;36345:20;36363:1;36345:20;:::i;:::-;36340:25;;36379:20;36397:1;36379:20;:::i;:::-;36374:25;;36418:1;36415;36412:8;36409:34;;;36423:18;;:::i;:::-;36409:34;36468:1;36465;36461:9;36453:17;;36285:191;;;;:::o;36482:147::-;36583:11;36620:3;36605:18;;36482:147;;;;:::o;36635:114::-;;:::o;36755:398::-;36914:3;36935:83;37016:1;37011:3;36935:83;:::i;:::-;36928:90;;37027:93;37116:3;37027:93;:::i;:::-;37145:1;37140:3;37136:11;37129:18;;36755:398;;;:::o;37159:379::-;37343:3;37365:147;37508:3;37365:147;:::i;:::-;37358:154;;37529:3;37522:10;;37159:379;;;:::o;37544:442::-;37693:4;37731:2;37720:9;37716:18;37708:26;;37744:71;37812:1;37801:9;37797:17;37788:6;37744:71;:::i;:::-;37825:72;37893:2;37882:9;37878:18;37869:6;37825:72;:::i;:::-;37907;37975:2;37964:9;37960:18;37951:6;37907:72;:::i;:::-;37544:442;;;;;;:::o;37992:220::-;38132:34;38128:1;38120:6;38116:14;38109:58;38201:3;38196:2;38188:6;38184:15;38177:28;37992:220;:::o;38218:366::-;38360:3;38381:67;38445:2;38440:3;38381:67;:::i;:::-;38374:74;;38457:93;38546:3;38457:93;:::i;:::-;38575:2;38570:3;38566:12;38559:19;;38218:366;;;:::o;38590:419::-;38756:4;38794:2;38783:9;38779:18;38771:26;;38843:9;38837:4;38833:20;38829:1;38818:9;38814:17;38807:47;38871:131;38997:4;38871:131;:::i;:::-;38863:139;;38590:419;;;:::o;39015:180::-;39063:77;39060:1;39053:88;39160:4;39157:1;39150:15;39184:4;39181:1;39174:15;39201:143;39258:5;39289:6;39283:13;39274:22;;39305:33;39332:5;39305:33;:::i;:::-;39201:143;;;;:::o;39350:351::-;39420:6;39469:2;39457:9;39448:7;39444:23;39440:32;39437:119;;;39475:79;;:::i;:::-;39437:119;39595:1;39620:64;39676:7;39667:6;39656:9;39652:22;39620:64;:::i;:::-;39610:74;;39566:128;39350:351;;;;:::o;39707:85::-;39752:7;39781:5;39770:16;;39707:85;;;:::o;39798:158::-;39856:9;39889:61;39907:42;39916:32;39942:5;39916:32;:::i;:::-;39907:42;:::i;:::-;39889:61;:::i;:::-;39876:74;;39798:158;;;:::o;39962:147::-;40057:45;40096:5;40057:45;:::i;:::-;40052:3;40045:58;39962:147;;:::o;40115:114::-;40182:6;40216:5;40210:12;40200:22;;40115:114;;;:::o;40235:184::-;40334:11;40368:6;40363:3;40356:19;40408:4;40403:3;40399:14;40384:29;;40235:184;;;;:::o;40425:132::-;40492:4;40515:3;40507:11;;40545:4;40540:3;40536:14;40528:22;;40425:132;;;:::o;40563:108::-;40640:24;40658:5;40640:24;:::i;:::-;40635:3;40628:37;40563:108;;:::o;40677:179::-;40746:10;40767:46;40809:3;40801:6;40767:46;:::i;:::-;40845:4;40840:3;40836:14;40822:28;;40677:179;;;;:::o;40862:113::-;40932:4;40964;40959:3;40955:14;40947:22;;40862:113;;;:::o;41011:732::-;41130:3;41159:54;41207:5;41159:54;:::i;:::-;41229:86;41308:6;41303:3;41229:86;:::i;:::-;41222:93;;41339:56;41389:5;41339:56;:::i;:::-;41418:7;41449:1;41434:284;41459:6;41456:1;41453:13;41434:284;;;41535:6;41529:13;41562:63;41621:3;41606:13;41562:63;:::i;:::-;41555:70;;41648:60;41701:6;41648:60;:::i;:::-;41638:70;;41494:224;41481:1;41478;41474:9;41469:14;;41434:284;;;41438:14;41734:3;41727:10;;41135:608;;;41011:732;;;;:::o;41749:831::-;42012:4;42050:3;42039:9;42035:19;42027:27;;42064:71;42132:1;42121:9;42117:17;42108:6;42064:71;:::i;:::-;42145:80;42221:2;42210:9;42206:18;42197:6;42145:80;:::i;:::-;42272:9;42266:4;42262:20;42257:2;42246:9;42242:18;42235:48;42300:108;42403:4;42394:6;42300:108;:::i;:::-;42292:116;;42418:72;42486:2;42475:9;42471:18;42462:6;42418:72;:::i;:::-;42500:73;42568:3;42557:9;42553:19;42544:6;42500:73;:::i;:::-;41749:831;;;;;;;;:::o;42586:807::-;42835:4;42873:3;42862:9;42858:19;42850:27;;42887:71;42955:1;42944:9;42940:17;42931:6;42887:71;:::i;:::-;42968:72;43036:2;43025:9;43021:18;43012:6;42968:72;:::i;:::-;43050:80;43126:2;43115:9;43111:18;43102:6;43050:80;:::i;:::-;43140;43216:2;43205:9;43201:18;43192:6;43140:80;:::i;:::-;43230:73;43298:3;43287:9;43283:19;43274:6;43230:73;:::i;:::-;43313;43381:3;43370:9;43366:19;43357:6;43313:73;:::i;:::-;42586:807;;;;;;;;;:::o;43399:143::-;43456:5;43487:6;43481:13;43472:22;;43503:33;43530:5;43503:33;:::i;:::-;43399:143;;;;:::o;43548:663::-;43636:6;43644;43652;43701:2;43689:9;43680:7;43676:23;43672:32;43669:119;;;43707:79;;:::i;:::-;43669:119;43827:1;43852:64;43908:7;43899:6;43888:9;43884:22;43852:64;:::i;:::-;43842:74;;43798:128;43965:2;43991:64;44047:7;44038:6;44027:9;44023:22;43991:64;:::i;:::-;43981:74;;43936:129;44104:2;44130:64;44186:7;44177:6;44166:9;44162:22;44130:64;:::i;:::-;44120:74;;44075:129;43548:663;;;;;:::o
Swarm Source
ipfs://efbb0c10e098153995730416dd12da38a458df8c1300db11ed39d139401f6354
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.