More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 24 from a total of 24 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 15947821 | 672 days ago | IN | 0 ETH | 0.00147508 | ||||
Approve | 15947421 | 672 days ago | IN | 0 ETH | 0.00342679 | ||||
Approve | 15944768 | 672 days ago | IN | 0 ETH | 0.00087956 | ||||
Approve | 15944758 | 672 days ago | IN | 0 ETH | 0.0007497 | ||||
Approve | 15944754 | 672 days ago | IN | 0 ETH | 0.00080269 | ||||
Approve | 15944749 | 672 days ago | IN | 0 ETH | 0.00078661 | ||||
Approve | 15944745 | 672 days ago | IN | 0 ETH | 0.00086247 | ||||
Approve | 15944740 | 672 days ago | IN | 0 ETH | 0.0009116 | ||||
Approve | 15944734 | 672 days ago | IN | 0 ETH | 0.00079347 | ||||
Approve | 15944726 | 672 days ago | IN | 0 ETH | 0.00084768 | ||||
Approve | 15944656 | 672 days ago | IN | 0 ETH | 0.00079436 | ||||
Approve | 15944636 | 672 days ago | IN | 0 ETH | 0.00087542 | ||||
Approve | 15944599 | 672 days ago | IN | 0 ETH | 0.00079561 | ||||
Approve | 15944553 | 672 days ago | IN | 0 ETH | 0.00083634 | ||||
Approve | 15944188 | 672 days ago | IN | 0 ETH | 0.00090177 | ||||
Approve | 15944134 | 672 days ago | IN | 0 ETH | 0.0009559 | ||||
Renounce Ownersh... | 15944131 | 672 days ago | IN | 0 ETH | 0.00049121 | ||||
Approve | 15944126 | 672 days ago | IN | 0 ETH | 0.00109938 | ||||
Approve | 15944126 | 672 days ago | IN | 0 ETH | 0.00109938 | ||||
Approve | 15944126 | 672 days ago | IN | 0 ETH | 0.00113426 | ||||
Approve | 15944126 | 672 days ago | IN | 0 ETH | 0.00114664 | ||||
Enable Trading | 15944125 | 672 days ago | IN | 0 ETH | 0.0005957 | ||||
Approve | 15944043 | 672 days ago | IN | 0 ETH | 0.00102827 | ||||
0x60c06040 | 15944026 | 672 days ago | IN | 0 ETH | 0.17169766 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
15947823 | 672 days ago | 0.00195632 ETH | ||||
15947823 | 672 days ago | 0.00195632 ETH | ||||
15947780 | 672 days ago | 0.00257454 ETH | ||||
15947780 | 672 days ago | 0.00257454 ETH | ||||
15947769 | 672 days ago | 0.00530167 ETH | ||||
15947769 | 672 days ago | 0.00530167 ETH | ||||
15947041 | 672 days ago | 0.00878966 ETH | ||||
15947041 | 672 days ago | 0.00878966 ETH | ||||
15944770 | 672 days ago | 0.00544852 ETH | ||||
15944770 | 672 days ago | 0.00544852 ETH | ||||
15944760 | 672 days ago | 0.0068528 ETH | ||||
15944760 | 672 days ago | 0.0068528 ETH | ||||
15944756 | 672 days ago | 0.0065016 ETH | ||||
15944756 | 672 days ago | 0.0065016 ETH | ||||
15944752 | 672 days ago | 0.0071109 ETH | ||||
15944752 | 672 days ago | 0.0071109 ETH | ||||
15944746 | 672 days ago | 0.00919597 ETH | ||||
15944746 | 672 days ago | 0.00919597 ETH | ||||
15944742 | 672 days ago | 0.02797708 ETH | ||||
15944742 | 672 days ago | 0.02797708 ETH | ||||
15944736 | 672 days ago | 0.03341862 ETH | ||||
15944736 | 672 days ago | 0.03341862 ETH | ||||
15944731 | 672 days ago | 0.040735 ETH | ||||
15944731 | 672 days ago | 0.040735 ETH | ||||
15944728 | 672 days ago | 0.05068243 ETH |
Loading...
Loading
Contract Name:
ALAMEDAPROTOCOL
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-11-11 */ // SPDX-License-Identifier: Unlicensed /* https://t.me/alamedaprotocolentry */ pragma solidity 0.8.9; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event 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 ALAMEDAPROTOCOL is ERC20, Ownable { //NAME using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool private swapping; address private marketingWallet; address private devWallet; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; uint256 public combinedFeesForBuying; uint256 public combinedFeesForSelling; 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 buyMarketingFee; uint256 public buyLiquidityFee; uint256 public buyDevFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public sellLiquidityFee; uint256 public sellDevFee; uint256 public tokensForMarketing; uint256 public tokensForLiquidity; uint256 public tokensForDev; // 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 marketingWalletUpdated(address indexed newWallet, address indexed oldWallet); event devWalletUpdated(address indexed newWallet, address indexed oldWallet); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event AutoNukeLP(); event ManualNukeLP(); constructor() ERC20("ALAMEDA PROTOCOL", "ALAPRO") { //NAME, //SYMBOL IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //Uniswap V2 Router: 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D //Pancakeswap Router: 0x10ED43C718714eb63d5aA57B78B54704E256024E excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 _buyMarketingFee = 5; uint256 _buyLiquidityFee = 0; uint256 _buyDevFee = 0; uint256 _sellMarketingFee = 8; uint256 _sellLiquidityFee = 0; uint256 _sellDevFee = 0; uint256 totalSupply = 1 * 1e12 * 1e18; maxTransactionAmount = totalSupply;// * 20 / 1000; // 2% maxTransactionAmountTxn maxWallet = totalSupply;// * 20 / 1000; // 2% maxWallet swapTokensAtAmount = totalSupply * 5 / 10000; // 0.1% swap wallet buyMarketingFee = _buyMarketingFee; buyLiquidityFee = _buyLiquidityFee; buyDevFee = _buyDevFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee; sellMarketingFee = _sellMarketingFee; sellLiquidityFee = _sellLiquidityFee; sellDevFee = _sellDevFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; marketingWallet = address(owner()); // set as marketing wallet devWallet = address(owner()); // set as dev wallet // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(msg.sender, totalSupply); } receive() external payable { } // once enabled, can never be turned off function enableTrading() external onlyOwner { tradingActive = true; swapEnabled = true; // launchedAt = block.number + 1; } // 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 updateTaxes( uint256 marketingFee, uint256 liquidityFee, uint256 devFee, uint256 marketingFeeSell, uint256 liquidityFeeSell, uint256 devFeeSell ) external onlyOwner { combinedFeesForBuying = buyMarketingFee + buyLiquidityFee + buyDevFee; combinedFeesForSelling = marketingFeeSell + liquidityFeeSell + devFeeSell; require(combinedFeesForBuying <= 10, "Cannot set buy fees above 15%"); require(combinedFeesForSelling <= 10, "Cannot set sell fees above 15%"); buyMarketingFee = marketingFee; buyLiquidityFee = liquidityFee; buyDevFee = devFee; sellMarketingFee = marketingFeeSell; sellLiquidityFee = liquidityFeeSell; sellDevFee = devFeeSell; } function setAllBuyFeesToZero() external onlyOwner { buyMarketingFee = 0; buyLiquidityFee = 0; buyDevFee = 0; } function setAllFeesToZero() external onlyOwner { buyMarketingFee = 0; buyLiquidityFee = 0; buyDevFee = 0; sellMarketingFee = 0; sellLiquidityFee = 0; sellDevFee = 0; } 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 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 updateMarketingWallet(address newMarketingWallet) external onlyOwner { emit marketingWalletUpdated(newMarketingWallet, marketingWallet); marketingWallet = newMarketingWallet; } function updateDevWallet(address newWallet) external onlyOwner { emit devWalletUpdated(newWallet, devWallet); devWallet = newWallet; } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } 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"); } } } 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; tokensForMarketing += fees * sellMarketingFee / sellTotalFees; } // on buy else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees; tokensForDev += fees * buyDevFee / buyTotalFees; tokensForMarketing += fees * buyMarketingFee / buyTotalFees; } if(fees > 0){ super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable address(this), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev; bool success; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} if(contractBalance > swapTokensAtAmount * 20){ contractBalance = swapTokensAtAmount * 20; } // Halve the amount of liquidity tokens uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap); uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev; tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDev = 0; (success,) = address(devWallet).call{value: ethForDev}(""); if(liquidityTokens > 0 && ethForLiquidity > 0){ addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity); } (success,) = address(marketingWallet).call{value: address(this).balance}(""); } }
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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"combinedFeesForBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"combinedFeesForSelling","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":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"setAllBuyFeesToZero","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setAllFeesToZero","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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"},{"inputs":[{"internalType":"uint256","name":"marketingFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"devFee","type":"uint256"},{"internalType":"uint256","name":"marketingFeeSell","type":"uint256"},{"internalType":"uint256","name":"liquidityFeeSell","type":"uint256"},{"internalType":"uint256","name":"devFeeSell","type":"uint256"}],"name":"updateTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526001600d60006101000a81548160ff0219169083151502179055506000600d60016101000a81548160ff0219169083151502179055506000600d60026101000a81548160ff0219169083151502179055506001601160006101000a81548160ff0219169083151502179055503480156200007d57600080fd5b506040518060400160405280601081526020017f414c414d4544412050524f544f434f4c000000000000000000000000000000008152506040518060400160405280600681526020017f414c4150524f000000000000000000000000000000000000000000000000000081525081600390805190602001906200010292919062000b77565b5080600490805190602001906200011b92919062000b77565b5050506000620001306200064360201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001fb8160016200064b60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200027657600080fd5b505afa1580156200028b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b1919062000c91565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200031457600080fd5b505afa15801562000329573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034f919062000c91565b6040518363ffffffff1660e01b81526004016200036e92919062000cd4565b602060405180830381600087803b1580156200038957600080fd5b505af11580156200039e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c4919062000c91565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200040c60a05160016200064b60201b60201c565b6200042160a05160016200074860201b60201c565b60006005905060008060006008905060008060006c0c9f2c9cd04674edea4000000090508060088190555080600a8190555061271060058262000465919062000d3a565b62000471919062000dca565b600981905550866013819055508560148190555084601581905550601554601454601354620004a1919062000e02565b620004ad919062000e02565b601281905550836017819055508260188190555081601981905550601954601854601754620004dd919062000e02565b620004e9919062000e02565b601681905550620004ff620007e960201b60201c565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200054f620007e960201b60201c565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005b1620005a3620007e960201b60201c565b60016200081360201b60201c565b620005c43060016200081360201b60201c565b620005d961dead60016200081360201b60201c565b620005fb620005ed620007e960201b60201c565b60016200064b60201b60201c565b6200060e3060016200064b60201b60201c565b6200062361dead60016200064b60201b60201c565b6200063533826200096060201b60201c565b505050505050505062001093565b600033905090565b6200065b6200064360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620006ed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006e49062000ec0565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620008236200064360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620008b5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008ac9062000ec0565b60405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000954919062000eff565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620009d3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009ca9062000f6c565b60405180910390fd5b620009e76000838362000b0f60201b60201c565b62000a038160025462000b1460201b6200273c1790919060201c565b60028190555062000a61816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000b1460201b6200273c1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b03919062000f9f565b60405180910390a35050565b505050565b600080828462000b25919062000e02565b90508381101562000b6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b64906200100c565b60405180910390fd5b8091505092915050565b82805462000b85906200105d565b90600052602060002090601f01602090048101928262000ba9576000855562000bf5565b82601f1062000bc457805160ff191683800117855562000bf5565b8280016001018555821562000bf5579182015b8281111562000bf457825182559160200191906001019062000bd7565b5b50905062000c04919062000c08565b5090565b5b8082111562000c2357600081600090555060010162000c09565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c598262000c2c565b9050919050565b62000c6b8162000c4c565b811462000c7757600080fd5b50565b60008151905062000c8b8162000c60565b92915050565b60006020828403121562000caa5762000ca962000c27565b5b600062000cba8482850162000c7a565b91505092915050565b62000cce8162000c4c565b82525050565b600060408201905062000ceb600083018562000cc3565b62000cfa602083018462000cc3565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000d478262000d01565b915062000d548362000d01565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000d905762000d8f62000d0b565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000dd78262000d01565b915062000de48362000d01565b92508262000df75762000df662000d9b565b5b828204905092915050565b600062000e0f8262000d01565b915062000e1c8362000d01565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000e545762000e5362000d0b565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000ea860208362000e5f565b915062000eb58262000e70565b602082019050919050565b6000602082019050818103600083015262000edb8162000e99565b9050919050565b60008115159050919050565b62000ef98162000ee2565b82525050565b600060208201905062000f16600083018462000eee565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000f54601f8362000e5f565b915062000f618262000f1c565b602082019050919050565b6000602082019050818103600083015262000f878162000f45565b9050919050565b62000f998162000d01565b82525050565b600060208201905062000fb6600083018462000f8e565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062000ff4601b8362000e5f565b9150620010018262000fbc565b602082019050919050565b60006020820190508181036000830152620010278162000fe5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200107657607f821691505b602082108114156200108d576200108c6200102e565b5b50919050565b60805160a0516157eb620010f1600039600081816114ac01528181611c500152612e08015260008181610dd501528181612db001528181613f1e0152818161400e01528181614035015281816140d101526140f801526157eb6000f3fe6080604052600436106103545760003560e01c80638a8c523c116101c6578063c0246668116100f7578063e2f4560511610095578063f11a24d31161006f578063f11a24d314610c53578063f2fde38b14610c7e578063f637434214610ca7578063f8b45b0514610cd25761035b565b8063e2f4560514610be6578063e884f26014610c11578063ec1d547d14610c3c5761035b565b8063c8c8ebe4116100d1578063c8c8ebe414610b16578063d257b34f14610b41578063d85ba06314610b7e578063dd62ed3e14610ba95761035b565b8063c024666814610a99578063c18bc19514610ac2578063c876d0b914610aeb5761035b565b80639fccce3211610164578063a9059cbb1161013e578063a9059cbb146109cb578063aacebbe314610a08578063b62496f514610a31578063bbc0c74214610a6e5761035b565b80639fccce3214610938578063a0d82dc514610963578063a457c2d71461098e5761035b565b8063924de9b7116101a0578063924de9b71461089057806395d89b41146108b95780639a7a23d6146108e45780639c3b4fdc1461090d5761035b565b80638a8c523c146108235780638da5cb5b1461083a57806392136913146108655761035b565b806339027060116102a05780636ddd17131161023e578063751039fc11610218578063751039fc146107795780637571336a146107a45780637752aecb146107cd5780637bce5a04146107f85761035b565b80636ddd1713146106fa57806370a0823114610725578063715018a6146107625761035b565b80634a62bb651161027a5780634a62bb65146106505780634fbee1931461067b57806361a3996c146106b85780636a486a8e146106cf5761035b565b806339027060146105bf57806339509351146105e857806349bd5a5e146106255761035b565b80631816467f1161030d578063203e727e116102e7578063203e727e1461050557806323b872dd1461052e5780632d5a5d341461056b578063313ce567146105945761035b565b80631816467f146104865780631a8145bb146104af5780631f3fed8f146104da5761035b565b80630438958d1461036057806306fdde031461038b578063095ea7b3146103b657806310d5de53146103f35780631694505e1461043057806318160ddd1461045b5761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b50610375610cfd565b6040516103829190614230565b60405180910390f35b34801561039757600080fd5b506103a0610d03565b6040516103ad91906142e4565b60405180910390f35b3480156103c257600080fd5b506103dd60048036038101906103d89190614395565b610d95565b6040516103ea91906143f0565b60405180910390f35b3480156103ff57600080fd5b5061041a6004803603810190610415919061440b565b610db3565b60405161042791906143f0565b60405180910390f35b34801561043c57600080fd5b50610445610dd3565b6040516104529190614497565b60405180910390f35b34801561046757600080fd5b50610470610df7565b60405161047d9190614230565b60405180910390f35b34801561049257600080fd5b506104ad60048036038101906104a8919061440b565b610e01565b005b3480156104bb57600080fd5b506104c4610f58565b6040516104d19190614230565b60405180910390f35b3480156104e657600080fd5b506104ef610f5e565b6040516104fc9190614230565b60405180910390f35b34801561051157600080fd5b5061052c600480360381019061052791906144b2565b610f64565b005b34801561053a57600080fd5b50610555600480360381019061055091906144df565b61108e565b60405161056291906143f0565b60405180910390f35b34801561057757600080fd5b50610592600480360381019061058d919061455e565b611167565b005b3480156105a057600080fd5b506105a9611259565b6040516105b691906145ba565b60405180910390f35b3480156105cb57600080fd5b506105e660048036038101906105e191906145d5565b611262565b005b3480156105f457600080fd5b5061060f600480360381019061060a9190614395565b6113f7565b60405161061c91906143f0565b60405180910390f35b34801561063157600080fd5b5061063a6114aa565b6040516106479190614671565b60405180910390f35b34801561065c57600080fd5b506106656114ce565b60405161067291906143f0565b60405180910390f35b34801561068757600080fd5b506106a2600480360381019061069d919061440b565b6114e1565b6040516106af91906143f0565b60405180910390f35b3480156106c457600080fd5b506106cd611537565b005b3480156106db57600080fd5b506106e4611600565b6040516106f19190614230565b60405180910390f35b34801561070657600080fd5b5061070f611606565b60405161071c91906143f0565b60405180910390f35b34801561073157600080fd5b5061074c6004803603810190610747919061440b565b611619565b6040516107599190614230565b60405180910390f35b34801561076e57600080fd5b50610777611661565b005b34801561078557600080fd5b5061078e6117b9565b60405161079b91906143f0565b60405180910390f35b3480156107b057600080fd5b506107cb60048036038101906107c6919061455e565b611874565b005b3480156107d957600080fd5b506107e2611966565b6040516107ef9190614230565b60405180910390f35b34801561080457600080fd5b5061080d61196c565b60405161081a9190614230565b60405180910390f35b34801561082f57600080fd5b50610838611972565b005b34801561084657600080fd5b5061084f611a41565b60405161085c9190614671565b60405180910390f35b34801561087157600080fd5b5061087a611a6b565b6040516108879190614230565b60405180910390f35b34801561089c57600080fd5b506108b760048036038101906108b2919061468c565b611a71565b005b3480156108c557600080fd5b506108ce611b25565b6040516108db91906142e4565b60405180910390f35b3480156108f057600080fd5b5061090b6004803603810190610906919061455e565b611bb7565b005b34801561091957600080fd5b50610922611ceb565b60405161092f9190614230565b60405180910390f35b34801561094457600080fd5b5061094d611cf1565b60405161095a9190614230565b60405180910390f35b34801561096f57600080fd5b50610978611cf7565b6040516109859190614230565b60405180910390f35b34801561099a57600080fd5b506109b560048036038101906109b09190614395565b611cfd565b6040516109c291906143f0565b60405180910390f35b3480156109d757600080fd5b506109f260048036038101906109ed9190614395565b611dca565b6040516109ff91906143f0565b60405180910390f35b348015610a1457600080fd5b50610a2f6004803603810190610a2a919061440b565b611de8565b005b348015610a3d57600080fd5b50610a586004803603810190610a53919061440b565b611f3f565b604051610a6591906143f0565b60405180910390f35b348015610a7a57600080fd5b50610a83611f5e565b604051610a9091906143f0565b60405180910390f35b348015610aa557600080fd5b50610ac06004803603810190610abb919061455e565b611f71565b005b348015610ace57600080fd5b50610ae96004803603810190610ae491906144b2565b6120b1565b005b348015610af757600080fd5b50610b006121db565b604051610b0d91906143f0565b60405180910390f35b348015610b2257600080fd5b50610b2b6121ee565b604051610b389190614230565b60405180910390f35b348015610b4d57600080fd5b50610b686004803603810190610b6391906144b2565b6121f4565b604051610b7591906143f0565b60405180910390f35b348015610b8a57600080fd5b50610b93612364565b604051610ba09190614230565b60405180910390f35b348015610bb557600080fd5b50610bd06004803603810190610bcb91906146b9565b61236a565b604051610bdd9190614230565b60405180910390f35b348015610bf257600080fd5b50610bfb6123f1565b604051610c089190614230565b60405180910390f35b348015610c1d57600080fd5b50610c266123f7565b604051610c3391906143f0565b60405180910390f35b348015610c4857600080fd5b50610c516124b2565b005b348015610c5f57600080fd5b50610c68612563565b604051610c759190614230565b60405180910390f35b348015610c8a57600080fd5b50610ca56004803603810190610ca0919061440b565b612569565b005b348015610cb357600080fd5b50610cbc612730565b604051610cc99190614230565b60405180910390f35b348015610cde57600080fd5b50610ce7612736565b604051610cf49190614230565b60405180910390f35b600b5481565b606060038054610d1290614728565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3e90614728565b8015610d8b5780601f10610d6057610100808354040283529160200191610d8b565b820191906000526020600020905b815481529060010190602001808311610d6e57829003601f168201915b5050505050905090565b6000610da9610da261279a565b84846127a2565b6001905092915050565b601f6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610e0961279a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8f906147a6565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601b5481565b601a5481565b610f6c61279a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ffb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff2906147a6565b60405180910390fd5b670de0b6b3a76400006103e86001611011610df7565b61101b91906147f5565b611025919061487e565b61102f919061487e565b811015611071576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106890614921565b60405180910390fd5b670de0b6b3a76400008161108591906147f5565b60088190555050565b600061109b84848461296d565b61115c846110a761279a565b6111578560405180606001604052806028815260200161576960289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061110d61279a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136ea9092919063ffffffff16565b6127a2565b600190509392505050565b61116f61279a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f5906147a6565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006012905090565b61126a61279a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f0906147a6565b60405180910390fd5b60155460145460135461130c9190614941565b6113169190614941565b600b819055508082846113299190614941565b6113339190614941565b600c81905550600a600b54111561137f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611376906149e3565b60405180910390fd5b600a600c5411156113c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bc90614a4f565b60405180910390fd5b856013819055508460148190555083601581905550826017819055508160188190555080601981905550505050505050565b60006114a061140461279a565b8461149b856001600061141561279a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461273c90919063ffffffff16565b6127a2565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600d60009054906101000a900460ff1681565b6000601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61153f61279a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c5906147a6565b60405180910390fd5b600060138190555060006014819055506000601581905550600060178190555060006018819055506000601981905550565b60165481565b600d60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61166961279a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ef906147a6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006117c361279a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611852576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611849906147a6565b60405180910390fd5b6000600d60006101000a81548160ff0219169083151502179055506001905090565b61187c61279a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461190b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611902906147a6565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600c5481565b60135481565b61197a61279a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a00906147a6565b60405180910390fd5b6001600d60016101000a81548160ff0219169083151502179055506001600d60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b611a7961279a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aff906147a6565b60405180910390fd5b80600d60026101000a81548160ff02191690831515021790555050565b606060048054611b3490614728565b80601f0160208091040260200160405190810160405280929190818152602001828054611b6090614728565b8015611bad5780601f10611b8257610100808354040283529160200191611bad565b820191906000526020600020905b815481529060010190602001808311611b9057829003601f168201915b5050505050905090565b611bbf61279a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c45906147a6565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd490614ae1565b60405180910390fd5b611ce7828261374e565b5050565b60155481565b601c5481565b60195481565b6000611dc0611d0a61279a565b84611dbb856040518060600160405280602581526020016157916025913960016000611d3461279a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136ea9092919063ffffffff16565b6127a2565b6001905092915050565b6000611dde611dd761279a565b848461296d565b6001905092915050565b611df061279a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e76906147a6565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b602080528060005260406000206000915054906101000a900460ff1681565b600d60019054906101000a900460ff1681565b611f7961279a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612008576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fff906147a6565b60405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516120a591906143f0565b60405180910390a25050565b6120b961279a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612148576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213f906147a6565b60405180910390fd5b670de0b6b3a76400006103e8600561215e610df7565b61216891906147f5565b612172919061487e565b61217c919061487e565b8110156121be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b590614b73565b60405180910390fd5b670de0b6b3a7640000816121d291906147f5565b600a8190555050565b601160009054906101000a900460ff1681565b60085481565b60006121fe61279a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461228d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612284906147a6565b60405180910390fd5b620186a0600161229b610df7565b6122a591906147f5565b6122af919061487e565b8210156122f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e890614c05565b60405180910390fd5b6103e860056122fe610df7565b61230891906147f5565b612312919061487e565b821115612354576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234b90614c97565b60405180910390fd5b8160098190555060019050919050565b60125481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b600061240161279a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612490576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612487906147a6565b60405180910390fd5b6000601160006101000a81548160ff0219169083151502179055506001905090565b6124ba61279a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612549576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612540906147a6565b60405180910390fd5b600060138190555060006014819055506000601581905550565b60145481565b61257161279a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f7906147a6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612670576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266790614d29565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b600a5481565b600080828461274b9190614941565b905083811015612790576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278790614d95565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612812576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280990614e27565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287990614eb9565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129609190614230565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156129dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d490614f4b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4490614fdd565b60405180910390fd5b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612af15750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612b30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b279061506f565b60405180910390fd5b6000811415612b4a57612b45838360006137ef565b6136e5565b600d60009054906101000a900460ff161561320d57612b67611a41565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612bd55750612ba5611a41565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c0e5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c48575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c615750600560149054906101000a900460ff16155b1561320c57600d60019054906101000a900460ff16612d5b57601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d1b5750601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612d5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d51906150db565b60405180910390fd5b5b601160009054906101000a900460ff1615612f2357612d78611a41565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612dff57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e5757507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612f225743600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612edd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed490615193565b60405180910390fd5b43600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612fc65750601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561306d57600854811115613010576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300790615225565b60405180910390fd5b600a5461301c83611619565b826130279190614941565b1115613068576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305f90615291565b60405180910390fd5b61320b565b602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131105750601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561315f5760085481111561315a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161315190615323565b60405180910390fd5b61320a565b601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661320957600a546131bc83611619565b826131c79190614941565b1115613208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131ff90615291565b60405180910390fd5b5b5b5b5b5b600061321830611619565b90506000600954821015905080801561323d5750600d60029054906101000a900460ff165b80156132565750600560149054906101000a900460ff16155b80156132ac5750602060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133025750601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133585750601e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561339c576001600560146101000a81548160ff021916908315150217905550613380613a84565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134525750601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561345c57600090505b600081156136d557602060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134bf57506000601654115b1561358c576134ec60646134de60165488613d6b90919063ffffffff16565b613de690919063ffffffff16565b9050601654601854826134ff91906147f5565b613509919061487e565b601b600082825461351a9190614941565b925050819055506016546019548261353291906147f5565b61353c919061487e565b601c600082825461354d9190614941565b925050819055506016546017548261356591906147f5565b61356f919061487e565b601a60008282546135809190614941565b925050819055506136b1565b602060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156135e757506000601254115b156136b057613614606461360660125488613d6b90919063ffffffff16565b613de690919063ffffffff16565b90506012546014548261362791906147f5565b613631919061487e565b601b60008282546136429190614941565b925050819055506012546015548261365a91906147f5565b613664919061487e565b601c60008282546136759190614941565b925050819055506012546013548261368d91906147f5565b613697919061487e565b601a60008282546136a89190614941565b925050819055505b5b60008111156136c6576136c58730836137ef565b5b80856136d29190615343565b94505b6136e08787876137ef565b505050505b505050565b6000838311158290613732576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161372991906142e4565b60405180910390fd5b50600083856137419190615343565b9050809150509392505050565b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561385f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161385690614f4b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156138cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138c690614fdd565b60405180910390fd5b6138da838383613e30565b61394581604051806060016040528060268152602001615743602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136ea9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506139d8816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461273c90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613a779190614230565b60405180910390a3505050565b6000613a8f30611619565b90506000601c54601a54601b54613aa69190614941565b613ab09190614941565b9050600080831480613ac25750600082145b15613acf57505050613d69565b6014600954613ade91906147f5565b831115613af7576014600954613af491906147f5565b92505b6000600283601b5486613b0a91906147f5565b613b14919061487e565b613b1e919061487e565b90506000613b358286613e3590919063ffffffff16565b90506000479050613b4582613e7f565b6000613b5a8247613e3590919063ffffffff16565b90506000613b8587613b77601a5485613d6b90919063ffffffff16565b613de690919063ffffffff16565b90506000613bb088613ba2601c5486613d6b90919063ffffffff16565b613de690919063ffffffff16565b90506000818385613bc19190615343565b613bcb9190615343565b90506000601b819055506000601a819055506000601c81905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613c2b906153a8565b60006040518083038185875af1925050503d8060008114613c68576040519150601f19603f3d011682016040523d82523d6000602084013e613c6d565b606091505b505080985050600087118015613c835750600081115b15613cd057613c9287826140cb565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601b54604051613cc7939291906153bd565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613d16906153a8565b60006040518083038185875af1925050503d8060008114613d53576040519150601f19603f3d011682016040523d82523d6000602084013e613d58565b606091505b505080985050505050505050505050505b565b600080831415613d7e5760009050613de0565b60008284613d8c91906147f5565b9050828482613d9b919061487e565b14613ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613dd290615466565b60405180910390fd5b809150505b92915050565b6000613e2883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506141b4565b905092915050565b505050565b6000613e7783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506136ea565b905092915050565b6000600267ffffffffffffffff811115613e9c57613e9b615486565b5b604051908082528060200260200182016040528015613eca5781602001602082028036833780820191505090505b5090503081600081518110613ee257613ee16154b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613f8257600080fd5b505afa158015613f96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fba91906154f9565b81600181518110613fce57613fcd6154b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050614033307f0000000000000000000000000000000000000000000000000000000000000000846127a2565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161409595949392919061561f565b600060405180830381600087803b1580156140af57600080fd5b505af11580156140c3573d6000803e3d6000fd5b505050505050565b6140f6307f0000000000000000000000000000000000000000000000000000000000000000846127a2565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b815260040161415b96959493929190615679565b6060604051808303818588803b15801561417457600080fd5b505af1158015614188573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906141ad91906156ef565b5050505050565b600080831182906141fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016141f291906142e4565b60405180910390fd5b506000838561420a919061487e565b9050809150509392505050565b6000819050919050565b61422a81614217565b82525050565b60006020820190506142456000830184614221565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561428557808201518184015260208101905061426a565b83811115614294576000848401525b50505050565b6000601f19601f8301169050919050565b60006142b68261424b565b6142c08185614256565b93506142d0818560208601614267565b6142d98161429a565b840191505092915050565b600060208201905081810360008301526142fe81846142ab565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006143368261430b565b9050919050565b6143468161432b565b811461435157600080fd5b50565b6000813590506143638161433d565b92915050565b61437281614217565b811461437d57600080fd5b50565b60008135905061438f81614369565b92915050565b600080604083850312156143ac576143ab614306565b5b60006143ba85828601614354565b92505060206143cb85828601614380565b9150509250929050565b60008115159050919050565b6143ea816143d5565b82525050565b600060208201905061440560008301846143e1565b92915050565b60006020828403121561442157614420614306565b5b600061442f84828501614354565b91505092915050565b6000819050919050565b600061445d6144586144538461430b565b614438565b61430b565b9050919050565b600061446f82614442565b9050919050565b600061448182614464565b9050919050565b61449181614476565b82525050565b60006020820190506144ac6000830184614488565b92915050565b6000602082840312156144c8576144c7614306565b5b60006144d684828501614380565b91505092915050565b6000806000606084860312156144f8576144f7614306565b5b600061450686828701614354565b935050602061451786828701614354565b925050604061452886828701614380565b9150509250925092565b61453b816143d5565b811461454657600080fd5b50565b60008135905061455881614532565b92915050565b6000806040838503121561457557614574614306565b5b600061458385828601614354565b925050602061459485828601614549565b9150509250929050565b600060ff82169050919050565b6145b48161459e565b82525050565b60006020820190506145cf60008301846145ab565b92915050565b60008060008060008060c087890312156145f2576145f1614306565b5b600061460089828a01614380565b965050602061461189828a01614380565b955050604061462289828a01614380565b945050606061463389828a01614380565b935050608061464489828a01614380565b92505060a061465589828a01614380565b9150509295509295509295565b61466b8161432b565b82525050565b60006020820190506146866000830184614662565b92915050565b6000602082840312156146a2576146a1614306565b5b60006146b084828501614549565b91505092915050565b600080604083850312156146d0576146cf614306565b5b60006146de85828601614354565b92505060206146ef85828601614354565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061474057607f821691505b60208210811415614754576147536146f9565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614790602083614256565b915061479b8261475a565b602082019050919050565b600060208201905081810360008301526147bf81614783565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061480082614217565b915061480b83614217565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614844576148436147c6565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061488982614217565b915061489483614217565b9250826148a4576148a361484f565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b600061490b602f83614256565b9150614916826148af565b604082019050919050565b6000602082019050818103600083015261493a816148fe565b9050919050565b600061494c82614217565b915061495783614217565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561498c5761498b6147c6565b5b828201905092915050565b7f43616e6e6f74207365742062757920666565732061626f766520313525000000600082015250565b60006149cd601d83614256565b91506149d882614997565b602082019050919050565b600060208201905081810360008301526149fc816149c0565b9050919050565b7f43616e6e6f74207365742073656c6c20666565732061626f7665203135250000600082015250565b6000614a39601e83614256565b9150614a4482614a03565b602082019050919050565b60006020820190508181036000830152614a6881614a2c565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614acb603983614256565b9150614ad682614a6f565b604082019050919050565b60006020820190508181036000830152614afa81614abe565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614b5d602483614256565b9150614b6882614b01565b604082019050919050565b60006020820190508181036000830152614b8c81614b50565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614bef603583614256565b9150614bfa82614b93565b604082019050919050565b60006020820190508181036000830152614c1e81614be2565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614c81603483614256565b9150614c8c82614c25565b604082019050919050565b60006020820190508181036000830152614cb081614c74565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614d13602683614256565b9150614d1e82614cb7565b604082019050919050565b60006020820190508181036000830152614d4281614d06565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614d7f601b83614256565b9150614d8a82614d49565b602082019050919050565b60006020820190508181036000830152614dae81614d72565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614e11602483614256565b9150614e1c82614db5565b604082019050919050565b60006020820190508181036000830152614e4081614e04565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614ea3602283614256565b9150614eae82614e47565b604082019050919050565b60006020820190508181036000830152614ed281614e96565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614f35602583614256565b9150614f4082614ed9565b604082019050919050565b60006020820190508181036000830152614f6481614f28565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614fc7602383614256565b9150614fd282614f6b565b604082019050919050565b60006020820190508181036000830152614ff681614fba565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460008201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b6000615059603183614256565b915061506482614ffd565b604082019050919050565b600060208201905081810360008301526150888161504c565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006150c5601683614256565b91506150d08261508f565b602082019050919050565b600060208201905081810360008301526150f4816150b8565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b600061517d604983614256565b9150615188826150fb565b606082019050919050565b600060208201905081810360008301526151ac81615170565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061520f603583614256565b915061521a826151b3565b604082019050919050565b6000602082019050818103600083015261523e81615202565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061527b601383614256565b915061528682615245565b602082019050919050565b600060208201905081810360008301526152aa8161526e565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061530d603683614256565b9150615318826152b1565b604082019050919050565b6000602082019050818103600083015261533c81615300565b9050919050565b600061534e82614217565b915061535983614217565b92508282101561536c5761536b6147c6565b5b828203905092915050565b600081905092915050565b50565b6000615392600083615377565b915061539d82615382565b600082019050919050565b60006153b382615385565b9150819050919050565b60006060820190506153d26000830186614221565b6153df6020830185614221565b6153ec6040830184614221565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615450602183614256565b915061545b826153f4565b604082019050919050565b6000602082019050818103600083015261547f81615443565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506154f38161433d565b92915050565b60006020828403121561550f5761550e614306565b5b600061551d848285016154e4565b91505092915050565b6000819050919050565b600061554b61554661554184615526565b614438565b614217565b9050919050565b61555b81615530565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6155968161432b565b82525050565b60006155a8838361558d565b60208301905092915050565b6000602082019050919050565b60006155cc82615561565b6155d6818561556c565b93506155e18361557d565b8060005b838110156156125781516155f9888261559c565b9750615604836155b4565b9250506001810190506155e5565b5085935050505092915050565b600060a0820190506156346000830188614221565b6156416020830187615552565b818103604083015261565381866155c1565b90506156626060830185614662565b61566f6080830184614221565b9695505050505050565b600060c08201905061568e6000830189614662565b61569b6020830188614221565b6156a86040830187615552565b6156b56060830186615552565b6156c26080830185614662565b6156cf60a0830184614221565b979650505050505050565b6000815190506156e981614369565b92915050565b60008060006060848603121561570857615707614306565b5b6000615716868287016156da565b9350506020615727868287016156da565b9250506040615738868287016156da565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122074e3e21033a01cf07521c827e1dd2aba0c67fe6b18bb3d819fecc92dcef38dda64736f6c63430008090033
Deployed Bytecode
0x6080604052600436106103545760003560e01c80638a8c523c116101c6578063c0246668116100f7578063e2f4560511610095578063f11a24d31161006f578063f11a24d314610c53578063f2fde38b14610c7e578063f637434214610ca7578063f8b45b0514610cd25761035b565b8063e2f4560514610be6578063e884f26014610c11578063ec1d547d14610c3c5761035b565b8063c8c8ebe4116100d1578063c8c8ebe414610b16578063d257b34f14610b41578063d85ba06314610b7e578063dd62ed3e14610ba95761035b565b8063c024666814610a99578063c18bc19514610ac2578063c876d0b914610aeb5761035b565b80639fccce3211610164578063a9059cbb1161013e578063a9059cbb146109cb578063aacebbe314610a08578063b62496f514610a31578063bbc0c74214610a6e5761035b565b80639fccce3214610938578063a0d82dc514610963578063a457c2d71461098e5761035b565b8063924de9b7116101a0578063924de9b71461089057806395d89b41146108b95780639a7a23d6146108e45780639c3b4fdc1461090d5761035b565b80638a8c523c146108235780638da5cb5b1461083a57806392136913146108655761035b565b806339027060116102a05780636ddd17131161023e578063751039fc11610218578063751039fc146107795780637571336a146107a45780637752aecb146107cd5780637bce5a04146107f85761035b565b80636ddd1713146106fa57806370a0823114610725578063715018a6146107625761035b565b80634a62bb651161027a5780634a62bb65146106505780634fbee1931461067b57806361a3996c146106b85780636a486a8e146106cf5761035b565b806339027060146105bf57806339509351146105e857806349bd5a5e146106255761035b565b80631816467f1161030d578063203e727e116102e7578063203e727e1461050557806323b872dd1461052e5780632d5a5d341461056b578063313ce567146105945761035b565b80631816467f146104865780631a8145bb146104af5780631f3fed8f146104da5761035b565b80630438958d1461036057806306fdde031461038b578063095ea7b3146103b657806310d5de53146103f35780631694505e1461043057806318160ddd1461045b5761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b50610375610cfd565b6040516103829190614230565b60405180910390f35b34801561039757600080fd5b506103a0610d03565b6040516103ad91906142e4565b60405180910390f35b3480156103c257600080fd5b506103dd60048036038101906103d89190614395565b610d95565b6040516103ea91906143f0565b60405180910390f35b3480156103ff57600080fd5b5061041a6004803603810190610415919061440b565b610db3565b60405161042791906143f0565b60405180910390f35b34801561043c57600080fd5b50610445610dd3565b6040516104529190614497565b60405180910390f35b34801561046757600080fd5b50610470610df7565b60405161047d9190614230565b60405180910390f35b34801561049257600080fd5b506104ad60048036038101906104a8919061440b565b610e01565b005b3480156104bb57600080fd5b506104c4610f58565b6040516104d19190614230565b60405180910390f35b3480156104e657600080fd5b506104ef610f5e565b6040516104fc9190614230565b60405180910390f35b34801561051157600080fd5b5061052c600480360381019061052791906144b2565b610f64565b005b34801561053a57600080fd5b50610555600480360381019061055091906144df565b61108e565b60405161056291906143f0565b60405180910390f35b34801561057757600080fd5b50610592600480360381019061058d919061455e565b611167565b005b3480156105a057600080fd5b506105a9611259565b6040516105b691906145ba565b60405180910390f35b3480156105cb57600080fd5b506105e660048036038101906105e191906145d5565b611262565b005b3480156105f457600080fd5b5061060f600480360381019061060a9190614395565b6113f7565b60405161061c91906143f0565b60405180910390f35b34801561063157600080fd5b5061063a6114aa565b6040516106479190614671565b60405180910390f35b34801561065c57600080fd5b506106656114ce565b60405161067291906143f0565b60405180910390f35b34801561068757600080fd5b506106a2600480360381019061069d919061440b565b6114e1565b6040516106af91906143f0565b60405180910390f35b3480156106c457600080fd5b506106cd611537565b005b3480156106db57600080fd5b506106e4611600565b6040516106f19190614230565b60405180910390f35b34801561070657600080fd5b5061070f611606565b60405161071c91906143f0565b60405180910390f35b34801561073157600080fd5b5061074c6004803603810190610747919061440b565b611619565b6040516107599190614230565b60405180910390f35b34801561076e57600080fd5b50610777611661565b005b34801561078557600080fd5b5061078e6117b9565b60405161079b91906143f0565b60405180910390f35b3480156107b057600080fd5b506107cb60048036038101906107c6919061455e565b611874565b005b3480156107d957600080fd5b506107e2611966565b6040516107ef9190614230565b60405180910390f35b34801561080457600080fd5b5061080d61196c565b60405161081a9190614230565b60405180910390f35b34801561082f57600080fd5b50610838611972565b005b34801561084657600080fd5b5061084f611a41565b60405161085c9190614671565b60405180910390f35b34801561087157600080fd5b5061087a611a6b565b6040516108879190614230565b60405180910390f35b34801561089c57600080fd5b506108b760048036038101906108b2919061468c565b611a71565b005b3480156108c557600080fd5b506108ce611b25565b6040516108db91906142e4565b60405180910390f35b3480156108f057600080fd5b5061090b6004803603810190610906919061455e565b611bb7565b005b34801561091957600080fd5b50610922611ceb565b60405161092f9190614230565b60405180910390f35b34801561094457600080fd5b5061094d611cf1565b60405161095a9190614230565b60405180910390f35b34801561096f57600080fd5b50610978611cf7565b6040516109859190614230565b60405180910390f35b34801561099a57600080fd5b506109b560048036038101906109b09190614395565b611cfd565b6040516109c291906143f0565b60405180910390f35b3480156109d757600080fd5b506109f260048036038101906109ed9190614395565b611dca565b6040516109ff91906143f0565b60405180910390f35b348015610a1457600080fd5b50610a2f6004803603810190610a2a919061440b565b611de8565b005b348015610a3d57600080fd5b50610a586004803603810190610a53919061440b565b611f3f565b604051610a6591906143f0565b60405180910390f35b348015610a7a57600080fd5b50610a83611f5e565b604051610a9091906143f0565b60405180910390f35b348015610aa557600080fd5b50610ac06004803603810190610abb919061455e565b611f71565b005b348015610ace57600080fd5b50610ae96004803603810190610ae491906144b2565b6120b1565b005b348015610af757600080fd5b50610b006121db565b604051610b0d91906143f0565b60405180910390f35b348015610b2257600080fd5b50610b2b6121ee565b604051610b389190614230565b60405180910390f35b348015610b4d57600080fd5b50610b686004803603810190610b6391906144b2565b6121f4565b604051610b7591906143f0565b60405180910390f35b348015610b8a57600080fd5b50610b93612364565b604051610ba09190614230565b60405180910390f35b348015610bb557600080fd5b50610bd06004803603810190610bcb91906146b9565b61236a565b604051610bdd9190614230565b60405180910390f35b348015610bf257600080fd5b50610bfb6123f1565b604051610c089190614230565b60405180910390f35b348015610c1d57600080fd5b50610c266123f7565b604051610c3391906143f0565b60405180910390f35b348015610c4857600080fd5b50610c516124b2565b005b348015610c5f57600080fd5b50610c68612563565b604051610c759190614230565b60405180910390f35b348015610c8a57600080fd5b50610ca56004803603810190610ca0919061440b565b612569565b005b348015610cb357600080fd5b50610cbc612730565b604051610cc99190614230565b60405180910390f35b348015610cde57600080fd5b50610ce7612736565b604051610cf49190614230565b60405180910390f35b600b5481565b606060038054610d1290614728565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3e90614728565b8015610d8b5780601f10610d6057610100808354040283529160200191610d8b565b820191906000526020600020905b815481529060010190602001808311610d6e57829003601f168201915b5050505050905090565b6000610da9610da261279a565b84846127a2565b6001905092915050565b601f6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610e0961279a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8f906147a6565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601b5481565b601a5481565b610f6c61279a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ffb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff2906147a6565b60405180910390fd5b670de0b6b3a76400006103e86001611011610df7565b61101b91906147f5565b611025919061487e565b61102f919061487e565b811015611071576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106890614921565b60405180910390fd5b670de0b6b3a76400008161108591906147f5565b60088190555050565b600061109b84848461296d565b61115c846110a761279a565b6111578560405180606001604052806028815260200161576960289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061110d61279a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136ea9092919063ffffffff16565b6127a2565b600190509392505050565b61116f61279a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f5906147a6565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006012905090565b61126a61279a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f0906147a6565b60405180910390fd5b60155460145460135461130c9190614941565b6113169190614941565b600b819055508082846113299190614941565b6113339190614941565b600c81905550600a600b54111561137f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611376906149e3565b60405180910390fd5b600a600c5411156113c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bc90614a4f565b60405180910390fd5b856013819055508460148190555083601581905550826017819055508160188190555080601981905550505050505050565b60006114a061140461279a565b8461149b856001600061141561279a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461273c90919063ffffffff16565b6127a2565b6001905092915050565b7f000000000000000000000000c33f463ef8d7b549a45bd6abcb324d505cfce44381565b600d60009054906101000a900460ff1681565b6000601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61153f61279a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c5906147a6565b60405180910390fd5b600060138190555060006014819055506000601581905550600060178190555060006018819055506000601981905550565b60165481565b600d60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61166961279a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ef906147a6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006117c361279a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611852576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611849906147a6565b60405180910390fd5b6000600d60006101000a81548160ff0219169083151502179055506001905090565b61187c61279a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461190b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611902906147a6565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600c5481565b60135481565b61197a61279a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a00906147a6565b60405180910390fd5b6001600d60016101000a81548160ff0219169083151502179055506001600d60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b611a7961279a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aff906147a6565b60405180910390fd5b80600d60026101000a81548160ff02191690831515021790555050565b606060048054611b3490614728565b80601f0160208091040260200160405190810160405280929190818152602001828054611b6090614728565b8015611bad5780601f10611b8257610100808354040283529160200191611bad565b820191906000526020600020905b815481529060010190602001808311611b9057829003601f168201915b5050505050905090565b611bbf61279a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c45906147a6565b60405180910390fd5b7f000000000000000000000000c33f463ef8d7b549a45bd6abcb324d505cfce44373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd490614ae1565b60405180910390fd5b611ce7828261374e565b5050565b60155481565b601c5481565b60195481565b6000611dc0611d0a61279a565b84611dbb856040518060600160405280602581526020016157916025913960016000611d3461279a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136ea9092919063ffffffff16565b6127a2565b6001905092915050565b6000611dde611dd761279a565b848461296d565b6001905092915050565b611df061279a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e76906147a6565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b602080528060005260406000206000915054906101000a900460ff1681565b600d60019054906101000a900460ff1681565b611f7961279a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612008576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fff906147a6565b60405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516120a591906143f0565b60405180910390a25050565b6120b961279a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612148576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213f906147a6565b60405180910390fd5b670de0b6b3a76400006103e8600561215e610df7565b61216891906147f5565b612172919061487e565b61217c919061487e565b8110156121be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b590614b73565b60405180910390fd5b670de0b6b3a7640000816121d291906147f5565b600a8190555050565b601160009054906101000a900460ff1681565b60085481565b60006121fe61279a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461228d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612284906147a6565b60405180910390fd5b620186a0600161229b610df7565b6122a591906147f5565b6122af919061487e565b8210156122f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e890614c05565b60405180910390fd5b6103e860056122fe610df7565b61230891906147f5565b612312919061487e565b821115612354576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234b90614c97565b60405180910390fd5b8160098190555060019050919050565b60125481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b600061240161279a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612490576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612487906147a6565b60405180910390fd5b6000601160006101000a81548160ff0219169083151502179055506001905090565b6124ba61279a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612549576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612540906147a6565b60405180910390fd5b600060138190555060006014819055506000601581905550565b60145481565b61257161279a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f7906147a6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612670576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266790614d29565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b600a5481565b600080828461274b9190614941565b905083811015612790576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278790614d95565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612812576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280990614e27565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287990614eb9565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129609190614230565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156129dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d490614f4b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4490614fdd565b60405180910390fd5b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612af15750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612b30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b279061506f565b60405180910390fd5b6000811415612b4a57612b45838360006137ef565b6136e5565b600d60009054906101000a900460ff161561320d57612b67611a41565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612bd55750612ba5611a41565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c0e5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c48575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c615750600560149054906101000a900460ff16155b1561320c57600d60019054906101000a900460ff16612d5b57601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d1b5750601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612d5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d51906150db565b60405180910390fd5b5b601160009054906101000a900460ff1615612f2357612d78611a41565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612dff57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e5757507f000000000000000000000000c33f463ef8d7b549a45bd6abcb324d505cfce44373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612f225743600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612edd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed490615193565b60405180910390fd5b43600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612fc65750601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561306d57600854811115613010576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300790615225565b60405180910390fd5b600a5461301c83611619565b826130279190614941565b1115613068576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305f90615291565b60405180910390fd5b61320b565b602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131105750601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561315f5760085481111561315a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161315190615323565b60405180910390fd5b61320a565b601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661320957600a546131bc83611619565b826131c79190614941565b1115613208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131ff90615291565b60405180910390fd5b5b5b5b5b5b600061321830611619565b90506000600954821015905080801561323d5750600d60029054906101000a900460ff165b80156132565750600560149054906101000a900460ff16155b80156132ac5750602060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133025750601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133585750601e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561339c576001600560146101000a81548160ff021916908315150217905550613380613a84565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134525750601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561345c57600090505b600081156136d557602060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134bf57506000601654115b1561358c576134ec60646134de60165488613d6b90919063ffffffff16565b613de690919063ffffffff16565b9050601654601854826134ff91906147f5565b613509919061487e565b601b600082825461351a9190614941565b925050819055506016546019548261353291906147f5565b61353c919061487e565b601c600082825461354d9190614941565b925050819055506016546017548261356591906147f5565b61356f919061487e565b601a60008282546135809190614941565b925050819055506136b1565b602060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156135e757506000601254115b156136b057613614606461360660125488613d6b90919063ffffffff16565b613de690919063ffffffff16565b90506012546014548261362791906147f5565b613631919061487e565b601b60008282546136429190614941565b925050819055506012546015548261365a91906147f5565b613664919061487e565b601c60008282546136759190614941565b925050819055506012546013548261368d91906147f5565b613697919061487e565b601a60008282546136a89190614941565b925050819055505b5b60008111156136c6576136c58730836137ef565b5b80856136d29190615343565b94505b6136e08787876137ef565b505050505b505050565b6000838311158290613732576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161372991906142e4565b60405180910390fd5b50600083856137419190615343565b9050809150509392505050565b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561385f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161385690614f4b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156138cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138c690614fdd565b60405180910390fd5b6138da838383613e30565b61394581604051806060016040528060268152602001615743602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136ea9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506139d8816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461273c90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613a779190614230565b60405180910390a3505050565b6000613a8f30611619565b90506000601c54601a54601b54613aa69190614941565b613ab09190614941565b9050600080831480613ac25750600082145b15613acf57505050613d69565b6014600954613ade91906147f5565b831115613af7576014600954613af491906147f5565b92505b6000600283601b5486613b0a91906147f5565b613b14919061487e565b613b1e919061487e565b90506000613b358286613e3590919063ffffffff16565b90506000479050613b4582613e7f565b6000613b5a8247613e3590919063ffffffff16565b90506000613b8587613b77601a5485613d6b90919063ffffffff16565b613de690919063ffffffff16565b90506000613bb088613ba2601c5486613d6b90919063ffffffff16565b613de690919063ffffffff16565b90506000818385613bc19190615343565b613bcb9190615343565b90506000601b819055506000601a819055506000601c81905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613c2b906153a8565b60006040518083038185875af1925050503d8060008114613c68576040519150601f19603f3d011682016040523d82523d6000602084013e613c6d565b606091505b505080985050600087118015613c835750600081115b15613cd057613c9287826140cb565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601b54604051613cc7939291906153bd565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613d16906153a8565b60006040518083038185875af1925050503d8060008114613d53576040519150601f19603f3d011682016040523d82523d6000602084013e613d58565b606091505b505080985050505050505050505050505b565b600080831415613d7e5760009050613de0565b60008284613d8c91906147f5565b9050828482613d9b919061487e565b14613ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613dd290615466565b60405180910390fd5b809150505b92915050565b6000613e2883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506141b4565b905092915050565b505050565b6000613e7783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506136ea565b905092915050565b6000600267ffffffffffffffff811115613e9c57613e9b615486565b5b604051908082528060200260200182016040528015613eca5781602001602082028036833780820191505090505b5090503081600081518110613ee257613ee16154b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613f8257600080fd5b505afa158015613f96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fba91906154f9565b81600181518110613fce57613fcd6154b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050614033307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846127a2565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161409595949392919061561f565b600060405180830381600087803b1580156140af57600080fd5b505af11580156140c3573d6000803e3d6000fd5b505050505050565b6140f6307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846127a2565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b815260040161415b96959493929190615679565b6060604051808303818588803b15801561417457600080fd5b505af1158015614188573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906141ad91906156ef565b5050505050565b600080831182906141fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016141f291906142e4565b60405180910390fd5b506000838561420a919061487e565b9050809150509392505050565b6000819050919050565b61422a81614217565b82525050565b60006020820190506142456000830184614221565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561428557808201518184015260208101905061426a565b83811115614294576000848401525b50505050565b6000601f19601f8301169050919050565b60006142b68261424b565b6142c08185614256565b93506142d0818560208601614267565b6142d98161429a565b840191505092915050565b600060208201905081810360008301526142fe81846142ab565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006143368261430b565b9050919050565b6143468161432b565b811461435157600080fd5b50565b6000813590506143638161433d565b92915050565b61437281614217565b811461437d57600080fd5b50565b60008135905061438f81614369565b92915050565b600080604083850312156143ac576143ab614306565b5b60006143ba85828601614354565b92505060206143cb85828601614380565b9150509250929050565b60008115159050919050565b6143ea816143d5565b82525050565b600060208201905061440560008301846143e1565b92915050565b60006020828403121561442157614420614306565b5b600061442f84828501614354565b91505092915050565b6000819050919050565b600061445d6144586144538461430b565b614438565b61430b565b9050919050565b600061446f82614442565b9050919050565b600061448182614464565b9050919050565b61449181614476565b82525050565b60006020820190506144ac6000830184614488565b92915050565b6000602082840312156144c8576144c7614306565b5b60006144d684828501614380565b91505092915050565b6000806000606084860312156144f8576144f7614306565b5b600061450686828701614354565b935050602061451786828701614354565b925050604061452886828701614380565b9150509250925092565b61453b816143d5565b811461454657600080fd5b50565b60008135905061455881614532565b92915050565b6000806040838503121561457557614574614306565b5b600061458385828601614354565b925050602061459485828601614549565b9150509250929050565b600060ff82169050919050565b6145b48161459e565b82525050565b60006020820190506145cf60008301846145ab565b92915050565b60008060008060008060c087890312156145f2576145f1614306565b5b600061460089828a01614380565b965050602061461189828a01614380565b955050604061462289828a01614380565b945050606061463389828a01614380565b935050608061464489828a01614380565b92505060a061465589828a01614380565b9150509295509295509295565b61466b8161432b565b82525050565b60006020820190506146866000830184614662565b92915050565b6000602082840312156146a2576146a1614306565b5b60006146b084828501614549565b91505092915050565b600080604083850312156146d0576146cf614306565b5b60006146de85828601614354565b92505060206146ef85828601614354565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061474057607f821691505b60208210811415614754576147536146f9565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614790602083614256565b915061479b8261475a565b602082019050919050565b600060208201905081810360008301526147bf81614783565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061480082614217565b915061480b83614217565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614844576148436147c6565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061488982614217565b915061489483614217565b9250826148a4576148a361484f565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b600061490b602f83614256565b9150614916826148af565b604082019050919050565b6000602082019050818103600083015261493a816148fe565b9050919050565b600061494c82614217565b915061495783614217565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561498c5761498b6147c6565b5b828201905092915050565b7f43616e6e6f74207365742062757920666565732061626f766520313525000000600082015250565b60006149cd601d83614256565b91506149d882614997565b602082019050919050565b600060208201905081810360008301526149fc816149c0565b9050919050565b7f43616e6e6f74207365742073656c6c20666565732061626f7665203135250000600082015250565b6000614a39601e83614256565b9150614a4482614a03565b602082019050919050565b60006020820190508181036000830152614a6881614a2c565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614acb603983614256565b9150614ad682614a6f565b604082019050919050565b60006020820190508181036000830152614afa81614abe565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614b5d602483614256565b9150614b6882614b01565b604082019050919050565b60006020820190508181036000830152614b8c81614b50565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614bef603583614256565b9150614bfa82614b93565b604082019050919050565b60006020820190508181036000830152614c1e81614be2565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614c81603483614256565b9150614c8c82614c25565b604082019050919050565b60006020820190508181036000830152614cb081614c74565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614d13602683614256565b9150614d1e82614cb7565b604082019050919050565b60006020820190508181036000830152614d4281614d06565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614d7f601b83614256565b9150614d8a82614d49565b602082019050919050565b60006020820190508181036000830152614dae81614d72565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614e11602483614256565b9150614e1c82614db5565b604082019050919050565b60006020820190508181036000830152614e4081614e04565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614ea3602283614256565b9150614eae82614e47565b604082019050919050565b60006020820190508181036000830152614ed281614e96565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614f35602583614256565b9150614f4082614ed9565b604082019050919050565b60006020820190508181036000830152614f6481614f28565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614fc7602383614256565b9150614fd282614f6b565b604082019050919050565b60006020820190508181036000830152614ff681614fba565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460008201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b6000615059603183614256565b915061506482614ffd565b604082019050919050565b600060208201905081810360008301526150888161504c565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006150c5601683614256565b91506150d08261508f565b602082019050919050565b600060208201905081810360008301526150f4816150b8565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b600061517d604983614256565b9150615188826150fb565b606082019050919050565b600060208201905081810360008301526151ac81615170565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061520f603583614256565b915061521a826151b3565b604082019050919050565b6000602082019050818103600083015261523e81615202565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061527b601383614256565b915061528682615245565b602082019050919050565b600060208201905081810360008301526152aa8161526e565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061530d603683614256565b9150615318826152b1565b604082019050919050565b6000602082019050818103600083015261533c81615300565b9050919050565b600061534e82614217565b915061535983614217565b92508282101561536c5761536b6147c6565b5b828203905092915050565b600081905092915050565b50565b6000615392600083615377565b915061539d82615382565b600082019050919050565b60006153b382615385565b9150819050919050565b60006060820190506153d26000830186614221565b6153df6020830185614221565b6153ec6040830184614221565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615450602183614256565b915061545b826153f4565b604082019050919050565b6000602082019050818103600083015261547f81615443565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506154f38161433d565b92915050565b60006020828403121561550f5761550e614306565b5b600061551d848285016154e4565b91505092915050565b6000819050919050565b600061554b61554661554184615526565b614438565b614217565b9050919050565b61555b81615530565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6155968161432b565b82525050565b60006155a8838361558d565b60208301905092915050565b6000602082019050919050565b60006155cc82615561565b6155d6818561556c565b93506155e18361557d565b8060005b838110156156125781516155f9888261559c565b9750615604836155b4565b9250506001810190506155e5565b5085935050505092915050565b600060a0820190506156346000830188614221565b6156416020830187615552565b818103604083015261565381866155c1565b90506156626060830185614662565b61566f6080830184614221565b9695505050505050565b600060c08201905061568e6000830189614662565b61569b6020830188614221565b6156a86040830187615552565b6156b56060830186615552565b6156c26080830185614662565b6156cf60a0830184614221565b979650505050505050565b6000815190506156e981614369565b92915050565b60008060006060848603121561570857615707614306565b5b6000615716868287016156da565b9350506020615727868287016156da565b9250506040615738868287016156da565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122074e3e21033a01cf07521c827e1dd2aba0c67fe6b18bb3d819fecc92dcef38dda64736f6c63430008090033
Deployed Bytecode Sourcemap
29355:16184:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29773:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7453:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9627:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30992:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29448:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8576:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38376:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30706:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30666;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35344:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10279:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37563:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8417:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35586:816;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11044:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29506:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29863:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38545:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36560:228;;;;;;;;;;;;;:::i;:::-;;30520:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29943:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8748:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21955:148;;;;;;;;;;;;;:::i;:::-;;34560:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37021:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29816:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30412:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34352:155;;;;;;;;;;;;;:::i;:::-;;21311:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30555:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37262:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7673:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37707:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30486:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30746:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30631:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11766:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9089:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38159:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31215:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29903:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37372:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36797:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30329:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29658:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34949:386;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30378:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9328:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29700:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34743:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36410:142;;;;;;;;;;;;;:::i;:::-;;30449:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22259:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30593:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29740:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29773:36;;;;:::o;7453:100::-;7507:13;7540:5;7533:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7453:100;:::o;9627:169::-;9710:4;9727:39;9736:12;:10;:12::i;:::-;9750:7;9759:6;9727:8;:39::i;:::-;9784:4;9777:11;;9627:169;;;;:::o;30992:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;29448:51::-;;;:::o;8576:108::-;8637:7;8664:12;;8657:19;;8576:108;:::o;38376:157::-;21534:12;:10;:12::i;:::-;21524:22;;:6;;;;;;;;;;;:22;;;21516:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;38483:9:::1;;;;;;;;;;;38455:38;;38472:9;38455:38;;;;;;;;;;;;38516:9;38504;;:21;;;;;;;;;;;;;;;;;;38376:157:::0;:::o;30706:33::-;;;;:::o;30666:::-;;;;:::o;35344:234::-;21534:12;:10;:12::i;:::-;21524:22;;:6;;;;;;;;;;;:22;;;21516:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35463:4:::1;35457;35453:1;35437:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;35436:31;;;;:::i;:::-;35426:6;:41;;35418:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;35563:6;35553;:17;;;;:::i;:::-;35530:20;:40;;;;35344:234:::0;:::o;10279:355::-;10419:4;10436:36;10446:6;10454:9;10465:6;10436:9;:36::i;:::-;10483:121;10492:6;10500:12;:10;:12::i;:::-;10514:89;10552:6;10514:89;;;;;;;;;;;;;;;;;:11;:19;10526:6;10514:19;;;;;;;;;;;;;;;:33;10534:12;:10;:12::i;:::-;10514:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;10483:8;:121::i;:::-;10622:4;10615:11;;10279:355;;;;;:::o;37563:135::-;21534:12;:10;:12::i;:::-;21524:22;;:6;;;;;;;;;;;:22;;;21516:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37677:13:::1;37655:10;:19;37666:7;37655:19;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;37563:135:::0;;:::o;8417:93::-;8475:5;8500:2;8493:9;;8417:93;:::o;35586:816::-;21534:12;:10;:12::i;:::-;21524:22;;:6;;;;;;;;;;;:22;;;21516:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35895:9:::1;;35877:15;;35859;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;35835:21;:69;;;;35978:10;35959:16;35940;:35;;;;:::i;:::-;:48;;;;:::i;:::-;35915:22;:73;;;;36032:2;36007:21;;:27;;35999:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;36113:2;36087:22;;:28;;36079:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;36182:12;36163:15;:31;;;;36224:12;36205:15;:31;;;;36259:6;36247:9;:18;;;;36298:16;36279;:35;;;;36344:16;36325;:35;;;;36384:10;36371;:23;;;;35586:816:::0;;;;;;:::o;11044:218::-;11132:4;11149:83;11158:12;:10;:12::i;:::-;11172:7;11181:50;11220:10;11181:11;:25;11193:12;:10;:12::i;:::-;11181:25;;;;;;;;;;;;;;;:34;11207:7;11181:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;11149:8;:83::i;:::-;11250:4;11243:11;;11044:218;;;;:::o;29506:38::-;;;:::o;29863:33::-;;;;;;;;;;;;;:::o;38545:125::-;38610:4;38634:19;:28;38654:7;38634:28;;;;;;;;;;;;;;;;;;;;;;;;;38627:35;;38545:125;;;:::o;36560:228::-;21534:12;:10;:12::i;:::-;21524:22;;:6;;;;;;;;;;;:22;;;21516:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36636:1:::1;36618:15;:19;;;;36666:1;36648:15;:19;;;;36690:1;36678:9;:13;;;;36723:1;36704:16;:20;;;;36754:1;36735:16;:20;;;;36779:1;36766:10;:14;;;;36560:228::o:0;30520:28::-;;;;:::o;29943:31::-;;;;;;;;;;;;;:::o;8748:127::-;8822:7;8849:9;:18;8859:7;8849:18;;;;;;;;;;;;;;;;8842:25;;8748:127;;;:::o;21955:148::-;21534:12;:10;:12::i;:::-;21524:22;;:6;;;;;;;;;;;:22;;;21516:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22062:1:::1;22025:40;;22046:6;;;;;;;;;;;22025:40;;;;;;;;;;;;22093:1;22076:6;;:19;;;;;;;;;;;;;;;;;;21955:148::o:0;34560:121::-;34612:4;21534:12;:10;:12::i;:::-;21524:22;;:6;;;;;;;;;;;:22;;;21516:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34645:5:::1;34628:14;;:22;;;;;;;;;;;;;;;;;;34669:4;34662:11;;34560:121:::0;:::o;37021:144::-;21534:12;:10;:12::i;:::-;21524:22;;:6;;;;;;;;;;;:22;;;21516:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37153:4:::1;37111:31;:39;37143:6;37111:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;37021:144:::0;;:::o;29816:37::-;;;;:::o;30412:30::-;;;;:::o;34352:155::-;21534:12;:10;:12::i;:::-;21524:22;;:6;;;;;;;;;;;:22;;;21516:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34423:4:::1;34407:13;;:20;;;;;;;;;;;;;;;;;;34452:4;34438:11;;:18;;;;;;;;;;;;;;;;;;34352:155::o:0;21311:79::-;21349:7;21376:6;;;;;;;;;;;21369:13;;21311:79;:::o;30555:31::-;;;;:::o;37262:101::-;21534:12;:10;:12::i;:::-;21524:22;;:6;;;;;;;;;;;:22;;;21516:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37348:7:::1;37334:11;;:21;;;;;;;;;;;;;;;;;;37262:101:::0;:::o;7673:104::-;7729:13;7762:7;7755:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7673:104;:::o;37707:245::-;21534:12;:10;:12::i;:::-;21524:22;;:6;;;;;;;;;;;:22;;;21516:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37814:13:::1;37806:21;;:4;:21;;;;37798:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;37903:41;37932:4;37938:5;37903:28;:41::i;:::-;37707:245:::0;;:::o;30486:24::-;;;;:::o;30746:27::-;;;;:::o;30631:25::-;;;;:::o;11766:269::-;11859:4;11876:129;11885:12;:10;:12::i;:::-;11899:7;11908:96;11947:15;11908:96;;;;;;;;;;;;;;;;;:11;:25;11920:12;:10;:12::i;:::-;11908:25;;;;;;;;;;;;;;;:34;11934:7;11908:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;11876:8;:129::i;:::-;12023:4;12016:11;;11766:269;;;;:::o;9089:175::-;9175:4;9192:42;9202:12;:10;:12::i;:::-;9216:9;9227:6;9192:9;:42::i;:::-;9252:4;9245:11;;9089:175;;;;:::o;38159:208::-;21534:12;:10;:12::i;:::-;21524:22;;:6;;;;;;;;;;;:22;;;21516:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;38296:15:::1;;;;;;;;;;;38253:59;;38276:18;38253:59;;;;;;;;;;;;38341:18;38323:15;;:36;;;;;;;;;;;;;;;;;;38159:208:::0;:::o;31215:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;29903:33::-;;;;;;;;;;;;;:::o;37372:182::-;21534:12;:10;:12::i;:::-;21524:22;;:6;;;;;;;;;;;:22;;;21516:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37488:8:::1;37457:19;:28;37477:7;37457:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;37528:7;37512:34;;;37537:8;37512:34;;;;;;:::i;:::-;;;;;;;;37372:182:::0;;:::o;36797:215::-;21534:12;:10;:12::i;:::-;21524:22;;:6;;;;;;;;;;;:22;;;21516:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36919:4:::1;36913;36909:1;36893:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;36892:31;;;;:::i;:::-;36882:6;:41;;36874:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;36997:6;36987;:17;;;;:::i;:::-;36975:9;:29;;;;36797:215:::0;:::o;30329:39::-;;;;;;;;;;;;;:::o;29658:35::-;;;;:::o;34949:386::-;35030:4;21534:12;:10;:12::i;:::-;21524:22;;:6;;;;;;;;;;;:22;;;21516:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35087:6:::1;35083:1;35067:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;35054:9;:39;;35046:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;35203:4;35199:1;35183:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;35170:9;:37;;35162:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;35296:9;35275:18;:30;;;;35323:4;35316:11;;34949:386:::0;;;:::o;30378:27::-;;;;:::o;9328:151::-;9417:7;9444:11;:18;9456:5;9444:18;;;;;;;;;;;;;;;:27;9463:7;9444:27;;;;;;;;;;;;;;;;9437:34;;9328:151;;;;:::o;29700:33::-;;;;:::o;34743:134::-;34803:4;21534:12;:10;:12::i;:::-;21524:22;;:6;;;;;;;;;;;:22;;;21516:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34842:5:::1;34819:20;;:28;;;;;;;;;;;;;;;;;;34865:4;34858:11;;34743:134:::0;:::o;36410:142::-;21534:12;:10;:12::i;:::-;21524:22;;:6;;;;;;;;;;;:22;;;21516:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36489:1:::1;36471:15;:19;;;;36519:1;36501:15;:19;;;;36543:1;36531:9;:13;;;;36410:142::o:0;30449:30::-;;;;:::o;22259:244::-;21534:12;:10;:12::i;:::-;21524:22;;:6;;;;;;;;;;;:22;;;21516:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22368:1:::1;22348:22;;:8;:22;;;;22340:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;22458:8;22429:38;;22450:6;;;;;;;;;;;22429:38;;;;;;;;;;;;22487:8;22478:6;;:17;;;;;;;;;;;;;;;;;;22259:244:::0;:::o;30593:31::-;;;;:::o;29740:24::-;;;;:::o;16343:182::-;16401:7;16421:9;16437:1;16433;:5;;;;:::i;:::-;16421:17;;16462:1;16457;:6;;16449:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;16516:1;16509:8;;;16343:182;;;;:::o;145:98::-;198:7;225:10;218:17;;145:98;:::o;14962:381::-;15115:1;15098:19;;:5;:19;;;;15090:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15196:1;15177:21;;:7;:21;;;;15169:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15281:6;15251:11;:18;15263:5;15251:18;;;;;;;;;;;;;;;:27;15270:7;15251:27;;;;;;;;;;;;;;;:36;;;;15319:7;15303:32;;15312:5;15303:32;;;15328:6;15303:32;;;;;;:::i;:::-;;;;;;;;14962:381;;;:::o;38679:4145::-;38827:1;38811:18;;:4;:18;;;;38803:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38904:1;38890:16;;:2;:16;;;;38882:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;38966:10;:14;38977:2;38966:14;;;;;;;;;;;;;;;;;;;;;;;;;38965:15;:36;;;;;38985:10;:16;38996:4;38985:16;;;;;;;;;;;;;;;;;;;;;;;;;38984:17;38965:36;38957:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;39080:1;39070:6;:11;39067:92;;;39098:28;39114:4;39120:2;39124:1;39098:15;:28::i;:::-;39141:7;;39067:92;39175:14;;;;;;;;;;;39172:1811;;;39235:7;:5;:7::i;:::-;39227:15;;:4;:15;;;;:49;;;;;39269:7;:5;:7::i;:::-;39263:13;;:2;:13;;;;39227:49;:86;;;;;39311:1;39297:16;;:2;:16;;;;39227:86;:128;;;;;39348:6;39334:21;;:2;:21;;;;39227:128;:158;;;;;39377:8;;;;;;;;;;;39376:9;39227:158;39205:1767;;;39423:13;;;;;;;;;;;39419:148;;39468:19;:25;39488:4;39468:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;39497:19;:23;39517:2;39497:23;;;;;;;;;;;;;;;;;;;;;;;;;39468:52;39460:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;39419:148;39726:20;;;;;;;;;;;39722:423;;;39780:7;:5;:7::i;:::-;39774:13;;:2;:13;;;;:47;;;;;39805:15;39791:30;;:2;:30;;;;39774:47;:79;;;;;39839:13;39825:28;;:2;:28;;;;39774:79;39770:356;;;39931:12;39889:28;:39;39918:9;39889:39;;;;;;;;;;;;;;;;:54;39881:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;40090:12;40048:28;:39;40077:9;40048:39;;;;;;;;;;;;;;;:54;;;;39770:356;39722:423;40198:25;:31;40224:4;40198:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;40234:31;:35;40266:2;40234:35;;;;;;;;;;;;;;;;;;;;;;;;;40233:36;40198:71;40194:763;;;40316:20;;40306:6;:30;;40298:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;40455:9;;40438:13;40448:2;40438:9;:13::i;:::-;40429:6;:22;;;;:::i;:::-;:35;;40421:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;40194:763;;;40567:25;:29;40593:2;40567:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;40601:31;:37;40633:4;40601:37;;;;;;;;;;;;;;;;;;;;;;;;;40600:38;40567:71;40563:394;;;40685:20;;40675:6;:30;;40667:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;40563:394;;;40811:31;:35;40843:2;40811:35;;;;;;;;;;;;;;;;;;;;;;;;;40807:150;;40904:9;;40887:13;40897:2;40887:9;:13::i;:::-;40878:6;:22;;;;:::i;:::-;:35;;40870:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;40807:150;40563:394;40194:763;39205:1767;39172:1811;40996:28;41027:24;41045:4;41027:9;:24::i;:::-;40996:55;;41065:12;41104:18;;41080:20;:42;;41065:57;;41154:7;:35;;;;;41178:11;;;;;;;;;;;41154:35;:61;;;;;41207:8;;;;;;;;;;;41206:9;41154:61;:110;;;;;41233:25;:31;41259:4;41233:31;;;;;;;;;;;;;;;;;;;;;;;;;41232:32;41154:110;:153;;;;;41282:19;:25;41302:4;41282:25;;;;;;;;;;;;;;;;;;;;;;;;;41281:26;41154:153;:194;;;;;41325:19;:23;41345:2;41325:23;;;;;;;;;;;;;;;;;;;;;;;;;41324:24;41154:194;41136:328;;;41386:4;41375:8;;:15;;;;;;;;;;;;;;;;;;41408:10;:8;:10::i;:::-;41447:5;41436:8;;:16;;;;;;;;;;;;;;;;;;41136:328;41477:12;41493:8;;;;;;;;;;;41492:9;41477:24;;41603:19;:25;41623:4;41603:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;41632:19;:23;41652:2;41632:23;;;;;;;;;;;;;;;;;;;;;;;;;41603:52;41600:99;;;41682:5;41672:15;;41600:99;41712:12;41816:7;41813:957;;;41867:25;:29;41893:2;41867:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;41916:1;41900:13;;:17;41867:50;41863:754;;;41944:34;41974:3;41944:25;41955:13;;41944:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;41937:41;;42045:13;;42026:16;;42019:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;41997:18;;:61;;;;;;;:::i;:::-;;;;;;;;42113:13;;42100:10;;42093:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;42077:12;;:49;;;;;;;:::i;:::-;;;;;;;;42193:13;;42174:16;;42167:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;42145:18;;:61;;;;;;;:::i;:::-;;;;;;;;41863:754;;;42267:25;:31;42293:4;42267:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;42317:1;42302:12;;:16;42267:51;42264:353;;;42346:33;42375:3;42346:24;42357:12;;42346:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;42339:40;;42445:12;;42427:15;;42420:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;42398:18;;:59;;;;;;;:::i;:::-;;;;;;;;42511:12;;42499:9;;42492:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;42476:12;;:47;;;;;;;:::i;:::-;;;;;;;;42589:12;;42571:15;;42564:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;42542:18;;:59;;;;;;;:::i;:::-;;;;;;;;42264:353;41863:754;42644:1;42637:4;:8;42634:93;;;42669:42;42685:4;42699;42706;42669:15;:42::i;:::-;42634:93;42754:4;42744:14;;;;;:::i;:::-;;;41813:957;42783:33;42799:4;42805:2;42809:6;42783:15;:33::i;:::-;38792:4032;;;;38679:4145;;;;:::o;17249:193::-;17335:7;17368:1;17363;:6;;17371:12;17355:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;17395:9;17411:1;17407;:5;;;;:::i;:::-;17395:17;;17433:1;17426:8;;;17249:193;;;;;:::o;37961:189::-;38078:5;38044:25;:31;38070:4;38044:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;38136:5;38102:40;;38130:4;38102:40;;;;;;;;;;;;37961:189;;:::o;12526:575::-;12684:1;12666:20;;:6;:20;;;;12658:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12768:1;12747:23;;:9;:23;;;;12739:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12824:47;12845:6;12853:9;12864:6;12824:20;:47::i;:::-;12905:71;12927:6;12905:71;;;;;;;;;;;;;;;;;:9;:17;12915:6;12905:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;12885:9;:17;12895:6;12885:17;;;;;;;;;;;;;;;:91;;;;13010:32;13035:6;13010:9;:20;13020:9;13010:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;12987:9;:20;12997:9;12987:20;;;;;;;;;;;;;;;:55;;;;13075:9;13058:35;;13067:6;13058:35;;;13086:6;13058:35;;;;;;:::i;:::-;;;;;;;;12526:575;;;:::o;43968:1568::-;44007:23;44033:24;44051:4;44033:9;:24::i;:::-;44007:50;;44068:25;44138:12;;44117:18;;44096;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;44068:82;;44161:12;44209:1;44190:15;:20;:46;;;;44235:1;44214:17;:22;44190:46;44187:60;;;44239:7;;;;;44187:60;44302:2;44281:18;;:23;;;;:::i;:::-;44263:15;:41;44260:111;;;44357:2;44336:18;;:23;;;;:::i;:::-;44318:41;;44260:111;44433:23;44518:1;44498:17;44477:18;;44459:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;44433:86;;44530:26;44559:36;44579:15;44559;:19;;:36;;;;:::i;:::-;44530:65;;44609:25;44637:21;44609:49;;44672:36;44689:18;44672:16;:36::i;:::-;44723:18;44744:44;44770:17;44744:21;:25;;:44;;;;:::i;:::-;44723:65;;44802:23;44828:57;44867:17;44828:34;44843:18;;44828:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;44802:83;;44896:17;44916:51;44949:17;44916:28;44931:12;;44916:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;44896:71;;44978:23;45035:9;45017:15;45004:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;44978:66;;45082:1;45061:18;:22;;;;45115:1;45094:18;:22;;;;45142:1;45127:12;:16;;;;45178:9;;;;;;;;;;;45170:23;;45201:9;45170:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45157:58;;;;;45250:1;45232:15;:19;:42;;;;;45273:1;45255:15;:19;45232:42;45229:210;;;45290:46;45303:15;45320;45290:12;:46::i;:::-;45356:71;45371:18;45391:15;45408:18;;45356:71;;;;;;;;:::i;:::-;;;;;;;;45229:210;45473:15;;;;;;;;;;;45465:29;;45502:21;45465:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45452:76;;;;;43996:1540;;;;;;;;;;43968:1568;:::o;17702:473::-;17760:7;18010:1;18005;:6;18001:47;;;18035:1;18028:8;;;;18001:47;18061:9;18077:1;18073;:5;;;;:::i;:::-;18061:17;;18106:1;18101;18097;:5;;;;:::i;:::-;:10;18089:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;18166:1;18159:8;;;17702:473;;;;;:::o;18652:132::-;18710:7;18737:39;18741:1;18744;18737:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;18730:46;;18652:132;;;;:::o;15947:125::-;;;;:::o;16809:136::-;16867:7;16894:43;16898:1;16901;16894:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;16887:50;;16809:136;;;;:::o;42833:597::-;42962:21;43000:1;42986:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42962:40;;43031:4;43013;43018:1;43013:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;43057:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43047:4;43052:1;43047:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;43093:62;43110:4;43125:15;43143:11;43093:8;:62::i;:::-;43195:15;:66;;;43276:11;43302:1;43346:4;43373;43393:15;43195:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42888:542;42833:597;:::o;43439:520::-;43587:62;43604:4;43619:15;43637:11;43587:8;:62::i;:::-;43693:15;:31;;;43732:9;43765:4;43785:11;43811:1;43854;43905:4;43925:15;43693:258;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;43439:520;;:::o;19281:279::-;19367:7;19399:1;19395;:5;19402:12;19387:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;19426:9;19442:1;19438;:5;;;;:::i;:::-;19426:17;;19551:1;19544:8;;;19281:279;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:307::-;790:1;800:113;814:6;811:1;808:13;800:113;;;899:1;894:3;890:11;884:18;880:1;875:3;871:11;864:39;836:2;833:1;829:10;824:15;;800:113;;;931:6;928:1;925:13;922:101;;;1011:1;1002:6;997:3;993:16;986:27;922:101;771:258;722:307;;;:::o;1035:102::-;1076:6;1127:2;1123:7;1118:2;1111:5;1107:14;1103:28;1093:38;;1035:102;;;:::o;1143:364::-;1231:3;1259:39;1292:5;1259:39;:::i;:::-;1314:71;1378:6;1373:3;1314:71;:::i;:::-;1307:78;;1394:52;1439:6;1434:3;1427:4;1420:5;1416:16;1394:52;:::i;:::-;1471:29;1493:6;1471:29;:::i;:::-;1466:3;1462:39;1455:46;;1235:272;1143:364;;;;:::o;1513:313::-;1626:4;1664:2;1653:9;1649:18;1641:26;;1713:9;1707:4;1703:20;1699:1;1688:9;1684:17;1677:47;1741:78;1814:4;1805:6;1741:78;:::i;:::-;1733:86;;1513:313;;;;:::o;1913:117::-;2022:1;2019;2012:12;2159:126;2196:7;2236:42;2229:5;2225:54;2214:65;;2159:126;;;:::o;2291:96::-;2328:7;2357:24;2375:5;2357:24;:::i;:::-;2346:35;;2291:96;;;:::o;2393:122::-;2466:24;2484:5;2466:24;:::i;:::-;2459:5;2456:35;2446:63;;2505:1;2502;2495:12;2446:63;2393:122;:::o;2521:139::-;2567:5;2605:6;2592:20;2583:29;;2621:33;2648:5;2621:33;:::i;:::-;2521:139;;;;:::o;2666:122::-;2739:24;2757:5;2739:24;:::i;:::-;2732:5;2729:35;2719:63;;2778:1;2775;2768:12;2719:63;2666:122;:::o;2794:139::-;2840:5;2878:6;2865:20;2856:29;;2894:33;2921:5;2894:33;:::i;:::-;2794:139;;;;:::o;2939:474::-;3007:6;3015;3064:2;3052:9;3043:7;3039:23;3035:32;3032:119;;;3070:79;;:::i;:::-;3032:119;3190:1;3215:53;3260:7;3251:6;3240:9;3236:22;3215:53;:::i;:::-;3205:63;;3161:117;3317:2;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3288:118;2939:474;;;;;:::o;3419:90::-;3453:7;3496:5;3489:13;3482:21;3471:32;;3419:90;;;:::o;3515:109::-;3596:21;3611:5;3596:21;:::i;:::-;3591:3;3584:34;3515:109;;:::o;3630:210::-;3717:4;3755:2;3744:9;3740:18;3732:26;;3768:65;3830:1;3819:9;3815:17;3806:6;3768:65;:::i;:::-;3630:210;;;;:::o;3846:329::-;3905:6;3954:2;3942:9;3933:7;3929:23;3925:32;3922:119;;;3960:79;;:::i;:::-;3922:119;4080:1;4105:53;4150:7;4141:6;4130:9;4126:22;4105:53;:::i;:::-;4095:63;;4051:117;3846:329;;;;:::o;4181:60::-;4209:3;4230:5;4223:12;;4181:60;;;:::o;4247:142::-;4297:9;4330:53;4348:34;4357:24;4375:5;4357:24;:::i;:::-;4348:34;:::i;:::-;4330:53;:::i;:::-;4317:66;;4247:142;;;:::o;4395:126::-;4445:9;4478:37;4509:5;4478:37;:::i;:::-;4465:50;;4395:126;;;:::o;4527:153::-;4604:9;4637:37;4668:5;4637:37;:::i;:::-;4624:50;;4527:153;;;:::o;4686:185::-;4800:64;4858:5;4800:64;:::i;:::-;4795:3;4788:77;4686:185;;:::o;4877:276::-;4997:4;5035:2;5024:9;5020:18;5012:26;;5048:98;5143:1;5132:9;5128:17;5119:6;5048:98;:::i;:::-;4877:276;;;;:::o;5159:329::-;5218:6;5267:2;5255:9;5246:7;5242:23;5238:32;5235:119;;;5273:79;;:::i;:::-;5235:119;5393:1;5418:53;5463:7;5454:6;5443:9;5439:22;5418:53;:::i;:::-;5408:63;;5364:117;5159:329;;;;:::o;5494:619::-;5571:6;5579;5587;5636:2;5624:9;5615:7;5611:23;5607:32;5604:119;;;5642:79;;:::i;:::-;5604:119;5762:1;5787:53;5832:7;5823:6;5812:9;5808:22;5787:53;:::i;:::-;5777:63;;5733:117;5889:2;5915:53;5960:7;5951:6;5940:9;5936:22;5915:53;:::i;:::-;5905:63;;5860:118;6017:2;6043:53;6088:7;6079:6;6068:9;6064:22;6043:53;:::i;:::-;6033:63;;5988:118;5494:619;;;;;:::o;6119:116::-;6189:21;6204:5;6189:21;:::i;:::-;6182:5;6179:32;6169:60;;6225:1;6222;6215:12;6169:60;6119:116;:::o;6241:133::-;6284:5;6322:6;6309:20;6300:29;;6338:30;6362:5;6338:30;:::i;:::-;6241:133;;;;:::o;6380:468::-;6445:6;6453;6502:2;6490:9;6481:7;6477:23;6473:32;6470:119;;;6508:79;;:::i;:::-;6470:119;6628:1;6653:53;6698:7;6689:6;6678:9;6674:22;6653:53;:::i;:::-;6643:63;;6599:117;6755:2;6781:50;6823:7;6814:6;6803:9;6799:22;6781:50;:::i;:::-;6771:60;;6726:115;6380:468;;;;;:::o;6854:86::-;6889:7;6929:4;6922:5;6918:16;6907:27;;6854:86;;;:::o;6946:112::-;7029:22;7045:5;7029:22;:::i;:::-;7024:3;7017:35;6946:112;;:::o;7064:214::-;7153:4;7191:2;7180:9;7176:18;7168:26;;7204:67;7268:1;7257:9;7253:17;7244:6;7204:67;:::i;:::-;7064:214;;;;:::o;7284:1057::-;7388:6;7396;7404;7412;7420;7428;7477:3;7465:9;7456:7;7452:23;7448:33;7445:120;;;7484:79;;:::i;:::-;7445:120;7604:1;7629:53;7674:7;7665:6;7654:9;7650:22;7629:53;:::i;:::-;7619:63;;7575:117;7731:2;7757:53;7802:7;7793:6;7782:9;7778:22;7757:53;:::i;:::-;7747:63;;7702:118;7859:2;7885:53;7930:7;7921:6;7910:9;7906:22;7885:53;:::i;:::-;7875:63;;7830:118;7987:2;8013:53;8058:7;8049:6;8038:9;8034:22;8013:53;:::i;:::-;8003:63;;7958:118;8115:3;8142:53;8187:7;8178:6;8167:9;8163:22;8142:53;:::i;:::-;8132:63;;8086:119;8244:3;8271:53;8316:7;8307:6;8296:9;8292:22;8271:53;:::i;:::-;8261:63;;8215:119;7284:1057;;;;;;;;:::o;8347:118::-;8434:24;8452:5;8434:24;:::i;:::-;8429:3;8422:37;8347:118;;:::o;8471:222::-;8564:4;8602:2;8591:9;8587:18;8579:26;;8615:71;8683:1;8672:9;8668:17;8659:6;8615:71;:::i;:::-;8471:222;;;;:::o;8699:323::-;8755:6;8804:2;8792:9;8783:7;8779:23;8775:32;8772:119;;;8810:79;;:::i;:::-;8772:119;8930:1;8955:50;8997:7;8988:6;8977:9;8973:22;8955:50;:::i;:::-;8945:60;;8901:114;8699:323;;;;:::o;9028:474::-;9096:6;9104;9153:2;9141:9;9132:7;9128:23;9124:32;9121:119;;;9159:79;;:::i;:::-;9121:119;9279:1;9304:53;9349:7;9340:6;9329:9;9325:22;9304:53;:::i;:::-;9294:63;;9250:117;9406:2;9432:53;9477:7;9468:6;9457:9;9453:22;9432:53;:::i;:::-;9422:63;;9377:118;9028:474;;;;;:::o;9508:180::-;9556:77;9553:1;9546:88;9653:4;9650:1;9643:15;9677:4;9674:1;9667:15;9694:320;9738:6;9775:1;9769:4;9765:12;9755:22;;9822:1;9816:4;9812:12;9843:18;9833:81;;9899:4;9891:6;9887:17;9877:27;;9833:81;9961:2;9953:6;9950:14;9930:18;9927:38;9924:84;;;9980:18;;:::i;:::-;9924:84;9745:269;9694:320;;;:::o;10020:182::-;10160:34;10156:1;10148:6;10144:14;10137:58;10020:182;:::o;10208:366::-;10350:3;10371:67;10435:2;10430:3;10371:67;:::i;:::-;10364:74;;10447:93;10536:3;10447:93;:::i;:::-;10565:2;10560:3;10556:12;10549:19;;10208:366;;;:::o;10580:419::-;10746:4;10784:2;10773:9;10769:18;10761:26;;10833:9;10827:4;10823:20;10819:1;10808:9;10804:17;10797:47;10861:131;10987:4;10861:131;:::i;:::-;10853:139;;10580:419;;;:::o;11005:180::-;11053:77;11050:1;11043:88;11150:4;11147:1;11140:15;11174:4;11171:1;11164:15;11191:348;11231:7;11254:20;11272:1;11254:20;:::i;:::-;11249:25;;11288:20;11306:1;11288:20;:::i;:::-;11283:25;;11476:1;11408:66;11404:74;11401:1;11398:81;11393:1;11386:9;11379:17;11375:105;11372:131;;;11483:18;;:::i;:::-;11372:131;11531:1;11528;11524:9;11513:20;;11191:348;;;;:::o;11545:180::-;11593:77;11590:1;11583:88;11690:4;11687:1;11680:15;11714:4;11711:1;11704:15;11731:185;11771:1;11788:20;11806:1;11788:20;:::i;:::-;11783:25;;11822:20;11840:1;11822:20;:::i;:::-;11817:25;;11861:1;11851:35;;11866:18;;:::i;:::-;11851:35;11908:1;11905;11901:9;11896:14;;11731:185;;;;:::o;11922:234::-;12062:34;12058:1;12050:6;12046:14;12039:58;12131:17;12126:2;12118:6;12114:15;12107:42;11922:234;:::o;12162:366::-;12304:3;12325:67;12389:2;12384:3;12325:67;:::i;:::-;12318:74;;12401:93;12490:3;12401:93;:::i;:::-;12519:2;12514:3;12510:12;12503:19;;12162:366;;;:::o;12534:419::-;12700:4;12738:2;12727:9;12723:18;12715:26;;12787:9;12781:4;12777:20;12773:1;12762:9;12758:17;12751:47;12815:131;12941:4;12815:131;:::i;:::-;12807:139;;12534:419;;;:::o;12959:305::-;12999:3;13018:20;13036:1;13018:20;:::i;:::-;13013:25;;13052:20;13070:1;13052:20;:::i;:::-;13047:25;;13206:1;13138:66;13134:74;13131:1;13128:81;13125:107;;;13212:18;;:::i;:::-;13125:107;13256:1;13253;13249:9;13242:16;;12959:305;;;;:::o;13270:179::-;13410:31;13406:1;13398:6;13394:14;13387:55;13270:179;:::o;13455:366::-;13597:3;13618:67;13682:2;13677:3;13618:67;:::i;:::-;13611:74;;13694:93;13783:3;13694:93;:::i;:::-;13812:2;13807:3;13803:12;13796:19;;13455:366;;;:::o;13827:419::-;13993:4;14031:2;14020:9;14016:18;14008:26;;14080:9;14074:4;14070:20;14066:1;14055:9;14051:17;14044:47;14108:131;14234:4;14108:131;:::i;:::-;14100:139;;13827:419;;;:::o;14252:180::-;14392:32;14388:1;14380:6;14376:14;14369:56;14252:180;:::o;14438:366::-;14580:3;14601:67;14665:2;14660:3;14601:67;:::i;:::-;14594:74;;14677:93;14766:3;14677:93;:::i;:::-;14795:2;14790:3;14786:12;14779:19;;14438:366;;;:::o;14810:419::-;14976:4;15014:2;15003:9;14999:18;14991:26;;15063:9;15057:4;15053:20;15049:1;15038:9;15034:17;15027:47;15091:131;15217:4;15091:131;:::i;:::-;15083:139;;14810:419;;;:::o;15235:244::-;15375:34;15371:1;15363:6;15359:14;15352:58;15444:27;15439:2;15431:6;15427:15;15420:52;15235:244;:::o;15485:366::-;15627:3;15648:67;15712:2;15707:3;15648:67;:::i;:::-;15641:74;;15724:93;15813:3;15724:93;:::i;:::-;15842:2;15837:3;15833:12;15826:19;;15485:366;;;:::o;15857:419::-;16023:4;16061:2;16050:9;16046:18;16038:26;;16110:9;16104:4;16100:20;16096:1;16085:9;16081:17;16074:47;16138:131;16264:4;16138:131;:::i;:::-;16130:139;;15857:419;;;:::o;16282:223::-;16422:34;16418:1;16410:6;16406:14;16399:58;16491:6;16486:2;16478:6;16474:15;16467:31;16282:223;:::o;16511:366::-;16653:3;16674:67;16738:2;16733:3;16674:67;:::i;:::-;16667:74;;16750:93;16839:3;16750:93;:::i;:::-;16868:2;16863:3;16859:12;16852:19;;16511:366;;;:::o;16883:419::-;17049:4;17087:2;17076:9;17072:18;17064:26;;17136:9;17130:4;17126:20;17122:1;17111:9;17107:17;17100:47;17164:131;17290:4;17164:131;:::i;:::-;17156:139;;16883:419;;;:::o;17308:240::-;17448:34;17444:1;17436:6;17432:14;17425:58;17517:23;17512:2;17504:6;17500:15;17493:48;17308:240;:::o;17554:366::-;17696:3;17717:67;17781:2;17776:3;17717:67;:::i;:::-;17710:74;;17793:93;17882:3;17793:93;:::i;:::-;17911:2;17906:3;17902:12;17895:19;;17554:366;;;:::o;17926:419::-;18092:4;18130:2;18119:9;18115:18;18107:26;;18179:9;18173:4;18169:20;18165:1;18154:9;18150:17;18143:47;18207:131;18333:4;18207:131;:::i;:::-;18199:139;;17926:419;;;:::o;18351:239::-;18491:34;18487:1;18479:6;18475:14;18468:58;18560:22;18555:2;18547:6;18543:15;18536:47;18351:239;:::o;18596:366::-;18738:3;18759:67;18823:2;18818:3;18759:67;:::i;:::-;18752:74;;18835:93;18924:3;18835:93;:::i;:::-;18953:2;18948:3;18944:12;18937:19;;18596:366;;;:::o;18968:419::-;19134:4;19172:2;19161:9;19157:18;19149:26;;19221:9;19215:4;19211:20;19207:1;19196:9;19192:17;19185:47;19249:131;19375:4;19249:131;:::i;:::-;19241:139;;18968:419;;;:::o;19393:225::-;19533:34;19529:1;19521:6;19517:14;19510:58;19602:8;19597:2;19589:6;19585:15;19578:33;19393:225;:::o;19624:366::-;19766:3;19787:67;19851:2;19846:3;19787:67;:::i;:::-;19780:74;;19863:93;19952:3;19863:93;:::i;:::-;19981:2;19976:3;19972:12;19965:19;;19624:366;;;:::o;19996:419::-;20162:4;20200:2;20189:9;20185:18;20177:26;;20249:9;20243:4;20239:20;20235:1;20224:9;20220:17;20213:47;20277:131;20403:4;20277:131;:::i;:::-;20269:139;;19996:419;;;:::o;20421:177::-;20561:29;20557:1;20549:6;20545:14;20538:53;20421:177;:::o;20604:366::-;20746:3;20767:67;20831:2;20826:3;20767:67;:::i;:::-;20760:74;;20843:93;20932:3;20843:93;:::i;:::-;20961:2;20956:3;20952:12;20945:19;;20604:366;;;:::o;20976:419::-;21142:4;21180:2;21169:9;21165:18;21157:26;;21229:9;21223:4;21219:20;21215:1;21204:9;21200:17;21193:47;21257:131;21383:4;21257:131;:::i;:::-;21249:139;;20976:419;;;:::o;21401:223::-;21541:34;21537:1;21529:6;21525:14;21518:58;21610:6;21605:2;21597:6;21593:15;21586:31;21401:223;:::o;21630:366::-;21772:3;21793:67;21857:2;21852:3;21793:67;:::i;:::-;21786:74;;21869:93;21958:3;21869:93;:::i;:::-;21987:2;21982:3;21978:12;21971:19;;21630:366;;;:::o;22002:419::-;22168:4;22206:2;22195:9;22191:18;22183:26;;22255:9;22249:4;22245:20;22241:1;22230:9;22226:17;22219:47;22283:131;22409:4;22283:131;:::i;:::-;22275:139;;22002:419;;;:::o;22427:221::-;22567:34;22563:1;22555:6;22551:14;22544:58;22636:4;22631:2;22623:6;22619:15;22612:29;22427:221;:::o;22654:366::-;22796:3;22817:67;22881:2;22876:3;22817:67;:::i;:::-;22810:74;;22893:93;22982:3;22893:93;:::i;:::-;23011:2;23006:3;23002:12;22995:19;;22654:366;;;:::o;23026:419::-;23192:4;23230:2;23219:9;23215:18;23207:26;;23279:9;23273:4;23269:20;23265:1;23254:9;23250:17;23243:47;23307:131;23433:4;23307:131;:::i;:::-;23299:139;;23026:419;;;:::o;23451:224::-;23591:34;23587:1;23579:6;23575:14;23568:58;23660:7;23655:2;23647:6;23643:15;23636:32;23451:224;:::o;23681:366::-;23823:3;23844:67;23908:2;23903:3;23844:67;:::i;:::-;23837:74;;23920:93;24009:3;23920:93;:::i;:::-;24038:2;24033:3;24029:12;24022:19;;23681:366;;;:::o;24053:419::-;24219:4;24257:2;24246:9;24242:18;24234:26;;24306:9;24300:4;24296:20;24292:1;24281:9;24277:17;24270:47;24334:131;24460:4;24334:131;:::i;:::-;24326:139;;24053:419;;;:::o;24478:222::-;24618:34;24614:1;24606:6;24602:14;24595:58;24687:5;24682:2;24674:6;24670:15;24663:30;24478:222;:::o;24706:366::-;24848:3;24869:67;24933:2;24928:3;24869:67;:::i;:::-;24862:74;;24945:93;25034:3;24945:93;:::i;:::-;25063:2;25058:3;25054:12;25047:19;;24706:366;;;:::o;25078:419::-;25244:4;25282:2;25271:9;25267:18;25259:26;;25331:9;25325:4;25321:20;25317:1;25306:9;25302:17;25295:47;25359:131;25485:4;25359:131;:::i;:::-;25351:139;;25078:419;;;:::o;25503:236::-;25643:34;25639:1;25631:6;25627:14;25620:58;25712:19;25707:2;25699:6;25695:15;25688:44;25503:236;:::o;25745:366::-;25887:3;25908:67;25972:2;25967:3;25908:67;:::i;:::-;25901:74;;25984:93;26073:3;25984:93;:::i;:::-;26102:2;26097:3;26093:12;26086:19;;25745:366;;;:::o;26117:419::-;26283:4;26321:2;26310:9;26306:18;26298:26;;26370:9;26364:4;26360:20;26356:1;26345:9;26341:17;26334:47;26398:131;26524:4;26398:131;:::i;:::-;26390:139;;26117:419;;;:::o;26542:172::-;26682:24;26678:1;26670:6;26666:14;26659:48;26542:172;:::o;26720:366::-;26862:3;26883:67;26947:2;26942:3;26883:67;:::i;:::-;26876:74;;26959:93;27048:3;26959:93;:::i;:::-;27077:2;27072:3;27068:12;27061:19;;26720:366;;;:::o;27092:419::-;27258:4;27296:2;27285:9;27281:18;27273:26;;27345:9;27339:4;27335:20;27331:1;27320:9;27316:17;27309:47;27373:131;27499:4;27373:131;:::i;:::-;27365:139;;27092:419;;;:::o;27517:297::-;27657:34;27653:1;27645:6;27641:14;27634:58;27726:34;27721:2;27713:6;27709:15;27702:59;27795:11;27790:2;27782:6;27778:15;27771:36;27517:297;:::o;27820:366::-;27962:3;27983:67;28047:2;28042:3;27983:67;:::i;:::-;27976:74;;28059:93;28148:3;28059:93;:::i;:::-;28177:2;28172:3;28168:12;28161:19;;27820:366;;;:::o;28192:419::-;28358:4;28396:2;28385:9;28381:18;28373:26;;28445:9;28439:4;28435:20;28431:1;28420:9;28416:17;28409:47;28473:131;28599:4;28473:131;:::i;:::-;28465:139;;28192:419;;;:::o;28617:240::-;28757:34;28753:1;28745:6;28741:14;28734:58;28826:23;28821:2;28813:6;28809:15;28802:48;28617:240;:::o;28863:366::-;29005:3;29026:67;29090:2;29085:3;29026:67;:::i;:::-;29019:74;;29102:93;29191:3;29102:93;:::i;:::-;29220:2;29215:3;29211:12;29204:19;;28863:366;;;:::o;29235:419::-;29401:4;29439:2;29428:9;29424:18;29416:26;;29488:9;29482:4;29478:20;29474:1;29463:9;29459:17;29452:47;29516:131;29642:4;29516:131;:::i;:::-;29508:139;;29235:419;;;:::o;29660:169::-;29800:21;29796:1;29788:6;29784:14;29777:45;29660:169;:::o;29835:366::-;29977:3;29998:67;30062:2;30057:3;29998:67;:::i;:::-;29991:74;;30074:93;30163:3;30074:93;:::i;:::-;30192:2;30187:3;30183:12;30176:19;;29835:366;;;:::o;30207:419::-;30373:4;30411:2;30400:9;30396:18;30388:26;;30460:9;30454:4;30450:20;30446:1;30435:9;30431:17;30424:47;30488:131;30614:4;30488:131;:::i;:::-;30480:139;;30207:419;;;:::o;30632:241::-;30772:34;30768:1;30760:6;30756:14;30749:58;30841:24;30836:2;30828:6;30824:15;30817:49;30632:241;:::o;30879:366::-;31021:3;31042:67;31106:2;31101:3;31042:67;:::i;:::-;31035:74;;31118:93;31207:3;31118:93;:::i;:::-;31236:2;31231:3;31227:12;31220:19;;30879:366;;;:::o;31251:419::-;31417:4;31455:2;31444:9;31440:18;31432:26;;31504:9;31498:4;31494:20;31490:1;31479:9;31475:17;31468:47;31532:131;31658:4;31532:131;:::i;:::-;31524:139;;31251:419;;;:::o;31676:191::-;31716:4;31736:20;31754:1;31736:20;:::i;:::-;31731:25;;31770:20;31788:1;31770:20;:::i;:::-;31765:25;;31809:1;31806;31803:8;31800:34;;;31814:18;;:::i;:::-;31800:34;31859:1;31856;31852:9;31844:17;;31676:191;;;;:::o;31873:147::-;31974:11;32011:3;31996:18;;31873:147;;;;:::o;32026:114::-;;:::o;32146:398::-;32305:3;32326:83;32407:1;32402:3;32326:83;:::i;:::-;32319:90;;32418:93;32507:3;32418:93;:::i;:::-;32536:1;32531:3;32527:11;32520:18;;32146:398;;;:::o;32550:379::-;32734:3;32756:147;32899:3;32756:147;:::i;:::-;32749:154;;32920:3;32913:10;;32550:379;;;:::o;32935:442::-;33084:4;33122:2;33111:9;33107:18;33099:26;;33135:71;33203:1;33192:9;33188:17;33179:6;33135:71;:::i;:::-;33216:72;33284:2;33273:9;33269:18;33260:6;33216:72;:::i;:::-;33298;33366:2;33355:9;33351:18;33342:6;33298:72;:::i;:::-;32935:442;;;;;;:::o;33383:220::-;33523:34;33519:1;33511:6;33507:14;33500:58;33592:3;33587:2;33579:6;33575:15;33568:28;33383:220;:::o;33609:366::-;33751:3;33772:67;33836:2;33831:3;33772:67;:::i;:::-;33765:74;;33848:93;33937:3;33848:93;:::i;:::-;33966:2;33961:3;33957:12;33950:19;;33609:366;;;:::o;33981:419::-;34147:4;34185:2;34174:9;34170:18;34162:26;;34234:9;34228:4;34224:20;34220:1;34209:9;34205:17;34198:47;34262:131;34388:4;34262:131;:::i;:::-;34254:139;;33981:419;;;:::o;34406:180::-;34454:77;34451:1;34444:88;34551:4;34548:1;34541:15;34575:4;34572:1;34565:15;34592:180;34640:77;34637:1;34630:88;34737:4;34734:1;34727:15;34761:4;34758:1;34751:15;34778:143;34835:5;34866:6;34860:13;34851:22;;34882:33;34909:5;34882:33;:::i;:::-;34778:143;;;;:::o;34927:351::-;34997:6;35046:2;35034:9;35025:7;35021:23;35017:32;35014:119;;;35052:79;;:::i;:::-;35014:119;35172:1;35197:64;35253:7;35244:6;35233:9;35229:22;35197:64;:::i;:::-;35187:74;;35143:128;34927:351;;;;:::o;35284:85::-;35329:7;35358:5;35347:16;;35284:85;;;:::o;35375:158::-;35433:9;35466:61;35484:42;35493:32;35519:5;35493:32;:::i;:::-;35484:42;:::i;:::-;35466:61;:::i;:::-;35453:74;;35375:158;;;:::o;35539:147::-;35634:45;35673:5;35634:45;:::i;:::-;35629:3;35622:58;35539:147;;:::o;35692:114::-;35759:6;35793:5;35787:12;35777:22;;35692:114;;;:::o;35812:184::-;35911:11;35945:6;35940:3;35933:19;35985:4;35980:3;35976:14;35961:29;;35812:184;;;;:::o;36002:132::-;36069:4;36092:3;36084:11;;36122:4;36117:3;36113:14;36105:22;;36002:132;;;:::o;36140:108::-;36217:24;36235:5;36217:24;:::i;:::-;36212:3;36205:37;36140:108;;:::o;36254:179::-;36323:10;36344:46;36386:3;36378:6;36344:46;:::i;:::-;36422:4;36417:3;36413:14;36399:28;;36254:179;;;;:::o;36439:113::-;36509:4;36541;36536:3;36532:14;36524:22;;36439:113;;;:::o;36588:732::-;36707:3;36736:54;36784:5;36736:54;:::i;:::-;36806:86;36885:6;36880:3;36806:86;:::i;:::-;36799:93;;36916:56;36966:5;36916:56;:::i;:::-;36995:7;37026:1;37011:284;37036:6;37033:1;37030:13;37011:284;;;37112:6;37106:13;37139:63;37198:3;37183:13;37139:63;:::i;:::-;37132:70;;37225:60;37278:6;37225:60;:::i;:::-;37215:70;;37071:224;37058:1;37055;37051:9;37046:14;;37011:284;;;37015:14;37311:3;37304:10;;36712:608;;;36588:732;;;;:::o;37326:831::-;37589:4;37627:3;37616:9;37612:19;37604:27;;37641:71;37709:1;37698:9;37694:17;37685:6;37641:71;:::i;:::-;37722:80;37798:2;37787:9;37783:18;37774:6;37722:80;:::i;:::-;37849:9;37843:4;37839:20;37834:2;37823:9;37819:18;37812:48;37877:108;37980:4;37971:6;37877:108;:::i;:::-;37869:116;;37995:72;38063:2;38052:9;38048:18;38039:6;37995:72;:::i;:::-;38077:73;38145:3;38134:9;38130:19;38121:6;38077:73;:::i;:::-;37326:831;;;;;;;;:::o;38163:807::-;38412:4;38450:3;38439:9;38435:19;38427:27;;38464:71;38532:1;38521:9;38517:17;38508:6;38464:71;:::i;:::-;38545:72;38613:2;38602:9;38598:18;38589:6;38545:72;:::i;:::-;38627:80;38703:2;38692:9;38688:18;38679:6;38627:80;:::i;:::-;38717;38793:2;38782:9;38778:18;38769:6;38717:80;:::i;:::-;38807:73;38875:3;38864:9;38860:19;38851:6;38807:73;:::i;:::-;38890;38958:3;38947:9;38943:19;38934:6;38890:73;:::i;:::-;38163:807;;;;;;;;;:::o;38976:143::-;39033:5;39064:6;39058:13;39049:22;;39080:33;39107:5;39080:33;:::i;:::-;38976:143;;;;:::o;39125:663::-;39213:6;39221;39229;39278:2;39266:9;39257:7;39253:23;39249:32;39246:119;;;39284:79;;:::i;:::-;39246:119;39404:1;39429:64;39485:7;39476:6;39465:9;39461:22;39429:64;:::i;:::-;39419:74;;39375:128;39542:2;39568:64;39624:7;39615:6;39604:9;39600:22;39568:64;:::i;:::-;39558:74;;39513:129;39681:2;39707:64;39763:7;39754:6;39743:9;39739:22;39707:64;:::i;:::-;39697:74;;39652:129;39125:663;;;;;:::o
Swarm Source
ipfs://74e3e21033a01cf07521c827e1dd2aba0c67fe6b18bb3d819fecc92dcef38dda
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 25 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.