Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 10 from a total of 10 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 16668852 | 570 days ago | IN | 0 ETH | 0.00114368 | ||||
Airdrop | 16668834 | 570 days ago | IN | 0 ETH | 0.00087926 | ||||
Renounce Ownersh... | 16668812 | 570 days ago | IN | 0 ETH | 0.00050399 | ||||
Disable Bot Prot... | 16668792 | 570 days ago | IN | 0 ETH | 0.00102212 | ||||
Approve | 16667447 | 570 days ago | IN | 0 ETH | 0.00092838 | ||||
Approve | 16667391 | 570 days ago | IN | 0 ETH | 0.00086228 | ||||
Approve | 16667238 | 570 days ago | IN | 0 ETH | 0.00084825 | ||||
Approve | 16667141 | 570 days ago | IN | 0 ETH | 0.00092514 | ||||
Enable Trade | 16667124 | 570 days ago | IN | 0 ETH | 0.0009257 | ||||
0x60806040 | 16667119 | 570 days ago | IN | 0 ETH | 0.13997016 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
UBT
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-02-20 */ /* ██╗░░░██╗██████╗░████████╗ ██║░░░██║██╔══██╗╚══██╔══╝ ██║░░░██║██████╦╝░░░██║░░░ ██║░░░██║██╔══██╗░░░██║░░░ ╚██████╔╝██████╦╝░░░██║░░░ ░╚═════╝░╚═════╝░░░░╚═╝░░░ Website: https://www.ubots-token.site/ Twitter: https://twitter.com/UbotsToken Telegram: https://t.me/UbotsTokenEthereum $UBT IS THE FAIREST NFT MEME TOKEN ON THE ETHEREUM NETWORK. */ pragma solidity ^0.8.9; /** * @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); } pragma solidity ^0.8.9; /** * @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); } pragma solidity ^0.8.9; /** * @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; } } pragma solidity ^0.8.9; /** * @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.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * 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}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf( address account ) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `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; } _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; _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; } _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); } } } /** * @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 {} } pragma solidity ^0.8.9; /** * @dev Extension of {ERC20} that allows token holders to destroy both their own * tokens and those that they have an allowance for, in a way that can be * recognized off-chain (via event analysis). */ abstract contract ERC20Burnable is Context, ERC20 { /** * @dev Destroys `amount` tokens from the caller. * * See {ERC20-_burn}. */ function burn(uint256 amount) public virtual { _burn(_msgSender(), amount); } /** * @dev Destroys `amount` tokens from `account`, deducting from the caller's * allowance. * * See {ERC20-_burn} and {ERC20-allowance}. * * Requirements: * * - the caller must have allowance for ``accounts``'s tokens of at least * `amount`. */ function burnFrom(address account, uint256 amount) public virtual { _spendAllowance(account, _msgSender(), amount); _burn(account, amount); } } /** * @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 anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _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); } } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair( address tokenA, address tokenB ) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair( address tokenA, address tokenB ) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance( address owner, address spender ) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom( address from, address to, uint value ) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit( address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn( address indexed sender, uint amount0, uint amount1, address indexed to ); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap( uint amount0Out, uint amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable returns (uint[] memory amounts); function swapTokensForExactETH( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactTokensForETH( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapETHForExactTokens( uint amountOut, address[] calldata path, address to, uint deadline ) external payable returns (uint[] memory amounts); function quote( uint amountA, uint reserveA, uint reserveB ) external pure returns (uint amountB); function getAmountOut( uint amountIn, uint reserveIn, uint reserveOut ) external pure returns (uint amountOut); function getAmountIn( uint amountOut, uint reserveIn, uint reserveOut ) external pure returns (uint amountIn); function getAmountsOut( uint amountIn, address[] calldata path ) external view returns (uint[] memory amounts); function getAmountsIn( uint amountOut, address[] calldata path ) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface IWETH { function deposit() external payable; function transfer(address to, uint value) external returns (bool); function withdraw(uint) external; } interface IUniswapV2ERC20 { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance( address owner, address spender ) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom( address from, address to, uint value ) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit( address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s ) external; } pragma solidity ^0.8.9; contract UBT is ERC20Burnable, Ownable { uint256 private constant TOTAL_SUPPLY = 1_000_000_000e18; address public marketingWallet; uint256 public maxPercentToSwap = 5; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; address private constant DEAD = 0x000000000000000000000000000000000000dEaD; address private constant ZERO = 0x0000000000000000000000000000000000000000; bool private swapping; uint256 public swapTokensAtAmount; bool public isTradingEnabled; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public automatedMarketMakerPairs; event ExcludeFromFees(address indexed account); event FeesUpdated(uint256 sellFee, uint256 buyFee); event MarketingWalletChanged(address marketingWallet); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event SwapAndSendMarketing(uint256 tokensSwapped, uint256 bnbSend); event UpdateUniswapV2Router( address indexed newAddress, address indexed oldAddress ); uint256 public sellFee; uint256 public buyFee; bool public isBotProtectionDisabledPermanently; uint256 public maxTxAmount; uint256 public maxHolding; mapping(address => bool) public isExempt; constructor(address router, address operator) ERC20("UbotsToken", "$UBT") { _mint(owner(), TOTAL_SUPPLY); swapTokensAtAmount = TOTAL_SUPPLY / 1000; maxHolding = TOTAL_SUPPLY / 50; maxTxAmount = TOTAL_SUPPLY / 50; marketingWallet = operator; sellFee = 0; buyFee = 0; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router); address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = _uniswapV2Pair; _approve(address(this), address(uniswapV2Router), type(uint256).max); _setAutomatedMarketMakerPair(_uniswapV2Pair, true); _isExcludedFromFees[owner()] = true; _isExcludedFromFees[DEAD] = true; _isExcludedFromFees[address(this)] = true; _isExcludedFromFees[address(uniswapV2Router)] = true; isExempt[address(uniswapV2Router)] = true; isExempt[owner()] = true; } receive() external payable {} modifier onlyOperator() { require( owner() == msg.sender || marketingWallet == msg.sender, "Ownable: caller is not the owner" ); _; } function enableTrade() public onlyOperator { require(isTradingEnabled == false, "Trading is already open!"); isTradingEnabled = true; } function claimStuckTokens(address token) external onlyOperator { if (token == address(0x0)) { payable(msg.sender).transfer(address(this).balance); return; } IERC20 ERC20token = IERC20(token); uint256 balance = ERC20token.balanceOf(address(this)); ERC20token.transfer(msg.sender, balance); } function sendETH(address payable recipient, uint256 amount) internal { recipient.call{gas: 2300, value: amount}(""); } function airdrop(address addr_, uint256 amount) external onlyOperator { super._transfer(addr_, msg.sender, amount); } function setAutomatedMarketMakerPair( address pair, bool value ) public onlyOwner { require( pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs" ); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { require( automatedMarketMakerPairs[pair] != value, "Automated market maker pair is already set to that value" ); automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } //=======FeeManagement=======// function excludeFromFees(address account) external onlyOperator { require( !_isExcludedFromFees[account], "Account is already the value of true" ); _isExcludedFromFees[account] = true; emit ExcludeFromFees(account); } function includeInFees(address account) external onlyOperator { require(_isExcludedFromFees[account], "Account already included"); _isExcludedFromFees[account] = false; } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } function updateFees(uint256 _sellFee, uint256 _buyFee) external onlyOwner { require(_sellFee <= 5, "Fees must be less than 5%"); require(_buyFee <= 5, "Fees must be less than 5%"); sellFee = _sellFee; buyFee = _buyFee; emit FeesUpdated(sellFee, buyFee); } function changeMarketingWallet(address _marketingWallet) external { require( msg.sender == marketingWallet && _marketingWallet != marketingWallet, "Marketing wallet is already that address" ); marketingWallet = _marketingWallet; emit MarketingWalletChanged(marketingWallet); } 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 (!swapping) { _check(from, to, amount); } uint _buyFee = buyFee; uint _sellFee = sellFee; if (!isExempt[from] && !isExempt[to]) { require(isTradingEnabled, "Trade is not open"); } if (amount == 0) { return; } bool takeFee = !swapping; if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 toSwap = balanceOf(address(this)); bool canSwap = toSwap >= swapTokensAtAmount && toSwap > 0 && !automatedMarketMakerPairs[from] && takeFee; if (canSwap && !swapping) { swapping = true; uint256 pairBalance = balanceOf(uniswapV2Pair); if (toSwap > (pairBalance * maxPercentToSwap) / 100) { toSwap = (pairBalance * maxPercentToSwap) / 100; } swapAndSendMarketing(toSwap); swapping = false; } if (takeFee && to == uniswapV2Pair && _sellFee > 0) { uint256 fees = (amount * _sellFee) / 100; amount = amount - fees; super._transfer(from, address(this), fees); } else if (takeFee && from == uniswapV2Pair && _buyFee > 0) { uint256 fees = (amount * _buyFee) / 100; amount = amount - fees; super._transfer(from, address(this), fees); } super._transfer(from, to, amount); } //=======Swap=======// function swapAndSendMarketing(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); require(address(this).balance == 0); try uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ) {} catch {} uint256 newBalance = address(this).balance; sendETH(payable(marketingWallet), newBalance); emit SwapAndSendMarketing(tokenAmount, newBalance); } function setSwapTokensAtAmount(uint256 newAmount) external onlyOwner { require(newAmount > 0); swapTokensAtAmount = newAmount; } function setMaxPercentToSwap(uint256 newAmount) external onlyOwner { require(newAmount > 1, "too low"); require(newAmount <= 10, "too high"); maxPercentToSwap = newAmount; } function _check(address from, address to, uint256 amount) internal { if (!isBotProtectionDisabledPermanently) { if (!isSpecialAddresses(from, to) && !isExempt[to]) { _checkMaxTxAmount(to, amount); _checkMaxHoldingLimit(to, amount); } } } function _checkMaxTxAmount(address to, uint256 amount) internal view { require(amount <= maxTxAmount, "Amount exceeds max"); } function _checkMaxHoldingLimit(address to, uint256 amount) internal view { if (to == uniswapV2Pair) { return; } require( balanceOf(to) + amount <= maxHolding, "Max holding exceeded max" ); } function isSpecialAddresses( address from, address to ) public view returns (bool) { return (from == owner() || from == marketingWallet || to == marketingWallet || to == owner() || from == address(this) || to == address(this)); } function disableBotProtectionPermanently() external onlyOwner { isBotProtectionDisabledPermanently = true; } function setMaxTxAmount(uint256 maxTxAmount_) external onlyOwner { maxTxAmount = maxTxAmount_; } function setMaxHolding(uint256 maxHolding_) external onlyOwner { maxHolding = maxHolding_; } function setExempt(address who, bool status) public onlyOwner { isExempt[who] = status; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"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":"account","type":"address"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"sellFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buyFee","type":"uint256"}],"name":"FeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketingWallet","type":"address"}],"name":"MarketingWalletChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbSend","type":"uint256"}],"name":"SwapAndSendMarketing","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[{"internalType":"address","name":"addr_","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"changeMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableBotProtectionPermanently","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isBotProtectionDisabledPermanently","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"isSpecialAddresses","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isTradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHolding","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPercentToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxHolding_","type":"uint256"}],"name":"setMaxHolding","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setMaxPercentToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount_","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"uint256","name":"_sellFee","type":"uint256"},{"internalType":"uint256","name":"_buyFee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405260056007553480156200001657600080fd5b50604051620058e0380380620058e083398181016040528101906200003c919062000d83565b6040518060400160405280600a81526020017f55626f7473546f6b656e000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f24554254000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000c092919062000c69565b508060049080519060200190620000d992919062000c69565b505050620000fc620000f0620006e460201b60201c565b620006ec60201b60201c565b6200012962000110620007b260201b60201c565b6b033b2e3c9fd0803ce8000000620007dc60201b60201c565b6103e86b033b2e3c9fd0803ce800000062000145919062000e32565b600a8190555060326b033b2e3c9fd0803ce800000062000166919062000e32565b60128190555060326b033b2e3c9fd0803ce800000062000187919062000e32565b60118190555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600e819055506000600f81905550600082905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200022c57600080fd5b505afa15801562000241573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000267919062000e6a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002ca57600080fd5b505afa158015620002df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000305919062000e6a565b6040518363ffffffff1660e01b81526004016200032492919062000ead565b602060405180830381600087803b1580156200033f57600080fd5b505af115801562000354573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037a919062000e6a565b905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200045330600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200095560201b60201c565b6200046681600162000b2860201b60201c565b6001600c60006200047c620007b260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160136000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016013600062000689620007b260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050505062001215565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200084f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008469062000f3b565b60405180910390fd5b620008636000838362000c5f60201b60201c565b806002600082825462000877919062000f5d565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620008ce919062000f5d565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000935919062000fcb565b60405180910390a3620009516000838362000c6460201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415620009c8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009bf906200105e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000a3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a3290620010f6565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000b1b919062000fcb565b60405180910390a3505050565b801515600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141562000bbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bb5906200118e565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b505050565b505050565b82805462000c7790620011df565b90600052602060002090601f01602090048101928262000c9b576000855562000ce7565b82601f1062000cb657805160ff191683800117855562000ce7565b8280016001018555821562000ce7579182015b8281111562000ce657825182559160200191906001019062000cc9565b5b50905062000cf6919062000cfa565b5090565b5b8082111562000d1557600081600090555060010162000cfb565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d4b8262000d1e565b9050919050565b62000d5d8162000d3e565b811462000d6957600080fd5b50565b60008151905062000d7d8162000d52565b92915050565b6000806040838503121562000d9d5762000d9c62000d19565b5b600062000dad8582860162000d6c565b925050602062000dc08582860162000d6c565b9150509250929050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000e3f8262000dca565b915062000e4c8362000dca565b92508262000e5f5762000e5e62000dd4565b5b828204905092915050565b60006020828403121562000e835762000e8262000d19565b5b600062000e938482850162000d6c565b91505092915050565b62000ea78162000d3e565b82525050565b600060408201905062000ec4600083018562000e9c565b62000ed3602083018462000e9c565b9392505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000f23601f8362000eda565b915062000f308262000eeb565b602082019050919050565b6000602082019050818103600083015262000f568162000f14565b9050919050565b600062000f6a8262000dca565b915062000f778362000dca565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000faf5762000fae62000e03565b5b828201905092915050565b62000fc58162000dca565b82525050565b600060208201905062000fe2600083018462000fba565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006200104660248362000eda565b9150620010538262000fe8565b604082019050919050565b60006020820190508181036000830152620010798162001037565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000620010de60228362000eda565b9150620010eb8262001080565b604082019050919050565b600060208201905081810360008301526200111181620010cf565b9050919050565b7f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160008201527f6c72656164792073657420746f20746861742076616c75650000000000000000602082015250565b60006200117660388362000eda565b9150620011838262001118565b604082019050919050565b60006020820190508181036000830152620011a98162001167565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620011f857607f821691505b602082108114156200120f576200120e620011b0565b5b50919050565b6146bb80620012256000396000f3fe6080604052600436106102755760003560e01c806379cc67901161014f578063ad5dff73116100c1578063e3084d9e1161007a578063e3084d9e14610984578063e57f14e1146109c1578063ec11ba34146109ea578063ec28438a14610a01578063f2fde38b14610a2a578063f9d0831a14610a535761027c565b8063ad5dff7314610850578063afa4f3b21461088d578063b62496f5146108b6578063bb85c6d1146108f3578063dd62ed3e1461091c578063e2f45605146109595761027c565b80639a7a23d6116101135780639a7a23d6146107305780639bc7c8c0146107595780639c7d15a2146107825780639fde54f5146107ad578063a457c2d7146107d6578063a9059cbb146108135761027c565b806379cc67901461065d5780638ba4cc3c146106865780638c0b5e22146106af5780638da5cb5b146106da57806395d89b41146107055761027c565b8063333e6f06116101e857806349bd5a5e116101ac57806349bd5a5e1461054d5780634fbee193146105785780636db79437146105b557806370a08231146105de578063715018a61461061b57806375f0a874146106325761027c565b8063333e6f0614610466578063395093511461049157806342966c68146104ce5780634589aaea146104f757806347062402146105225761027c565b806316a2f82a1161023a57806316a2f82a1461035657806318160ddd1461037f57806320518758146103aa57806323b872dd146103d35780632b14ca5614610410578063313ce5671461043b5761027c565b806299d38614610281578063064a59d01461029857806306fdde03146102c3578063095ea7b3146102ee5780631694505e1461032b5761027c565b3661027c57005b600080fd5b34801561028d57600080fd5b50610296610a7c565b005b3480156102a457600080fd5b506102ad610bbc565b6040516102ba91906131b3565b60405180910390f35b3480156102cf57600080fd5b506102d8610bcf565b6040516102e59190613267565b60405180910390f35b3480156102fa57600080fd5b5061031560048036038101906103109190613322565b610c61565b60405161032291906131b3565b60405180910390f35b34801561033757600080fd5b50610340610c84565b60405161034d91906133c1565b60405180910390f35b34801561036257600080fd5b5061037d600480360381019061037891906133dc565b610caa565b005b34801561038b57600080fd5b50610394610e5e565b6040516103a19190613418565b60405180910390f35b3480156103b657600080fd5b506103d160048036038101906103cc9190613433565b610e68565b005b3480156103df57600080fd5b506103fa60048036038101906103f59190613460565b610f01565b60405161040791906131b3565b60405180910390f35b34801561041c57600080fd5b50610425610f30565b6040516104329190613418565b60405180910390f35b34801561044757600080fd5b50610450610f36565b60405161045d91906134cf565b60405180910390f35b34801561047257600080fd5b5061047b610f3f565b6040516104889190613418565b60405180910390f35b34801561049d57600080fd5b506104b860048036038101906104b39190613322565b610f45565b6040516104c591906131b3565b60405180910390f35b3480156104da57600080fd5b506104f560048036038101906104f09190613433565b610f7c565b005b34801561050357600080fd5b5061050c610f90565b60405161051991906131b3565b60405180910390f35b34801561052e57600080fd5b50610537610fa3565b6040516105449190613418565b60405180910390f35b34801561055957600080fd5b50610562610fa9565b60405161056f91906134f9565b60405180910390f35b34801561058457600080fd5b5061059f600480360381019061059a91906133dc565b610fcf565b6040516105ac91906131b3565b60405180910390f35b3480156105c157600080fd5b506105dc60048036038101906105d79190613514565b611025565b005b3480156105ea57600080fd5b50610605600480360381019061060091906133dc565b611104565b6040516106129190613418565b60405180910390f35b34801561062757600080fd5b5061063061114c565b005b34801561063e57600080fd5b50610647611160565b60405161065491906134f9565b60405180910390f35b34801561066957600080fd5b50610684600480360381019061067f9190613322565b611186565b005b34801561069257600080fd5b506106ad60048036038101906106a89190613322565b6111a6565b005b3480156106bb57600080fd5b506106c4611282565b6040516106d19190613418565b60405180910390f35b3480156106e657600080fd5b506106ef611288565b6040516106fc91906134f9565b60405180910390f35b34801561071157600080fd5b5061071a6112b2565b6040516107279190613267565b60405180910390f35b34801561073c57600080fd5b5061075760048036038101906107529190613580565b611344565b005b34801561076557600080fd5b50610780600480360381019061077b9190613433565b6113eb565b005b34801561078e57600080fd5b506107976113fd565b6040516107a49190613418565b60405180910390f35b3480156107b957600080fd5b506107d460048036038101906107cf9190613580565b611403565b005b3480156107e257600080fd5b506107fd60048036038101906107f89190613322565b611466565b60405161080a91906131b3565b60405180910390f35b34801561081f57600080fd5b5061083a60048036038101906108359190613322565b6114dd565b60405161084791906131b3565b60405180910390f35b34801561085c57600080fd5b50610877600480360381019061087291906133dc565b611500565b60405161088491906131b3565b60405180910390f35b34801561089957600080fd5b506108b460048036038101906108af9190613433565b611520565b005b3480156108c257600080fd5b506108dd60048036038101906108d891906133dc565b61153f565b6040516108ea91906131b3565b60405180910390f35b3480156108ff57600080fd5b5061091a600480360381019061091591906133dc565b61155f565b005b34801561092857600080fd5b50610943600480360381019061093e91906135c0565b6116e6565b6040516109509190613418565b60405180910390f35b34801561096557600080fd5b5061096e61176d565b60405161097b9190613418565b60405180910390f35b34801561099057600080fd5b506109ab60048036038101906109a691906135c0565b611773565b6040516109b891906131b3565b60405180910390f35b3480156109cd57600080fd5b506109e860048036038101906109e391906133dc565b61190c565b005b3480156109f657600080fd5b506109ff611b04565b005b348015610a0d57600080fd5b50610a286004803603810190610a239190613433565b611b29565b005b348015610a3657600080fd5b50610a516004803603810190610a4c91906133dc565b611b3b565b005b348015610a5f57600080fd5b50610a7a6004803603810190610a7591906133dc565b611bbf565b005b3373ffffffffffffffffffffffffffffffffffffffff16610a9b611288565b73ffffffffffffffffffffffffffffffffffffffff161480610b0a57503373ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610b49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b409061364c565b60405180910390fd5b60001515600b60009054906101000a900460ff16151514610b9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b96906136b8565b60405180910390fd5b6001600b60006101000a81548160ff021916908315150217905550565b600b60009054906101000a900460ff1681565b606060038054610bde90613707565b80601f0160208091040260200160405190810160405280929190818152602001828054610c0a90613707565b8015610c575780601f10610c2c57610100808354040283529160200191610c57565b820191906000526020600020905b815481529060010190602001808311610c3a57829003601f168201915b5050505050905090565b600080610c6c611e33565b9050610c79818585611e3b565b600191505092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff16610cc9611288565b73ffffffffffffffffffffffffffffffffffffffff161480610d3857503373ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610d77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6e9061364c565b60405180910390fd5b600c60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610e03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfa90613785565b60405180910390fd5b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600254905090565b610e70612006565b60018111610eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaa906137f1565b60405180910390fd5b600a811115610ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eee9061385d565b60405180910390fd5b8060078190555050565b600080610f0c611e33565b9050610f19858285612084565b610f24858585612110565b60019150509392505050565b600e5481565b60006012905090565b60125481565b600080610f50611e33565b9050610f71818585610f6285896116e6565b610f6c91906138ac565b611e3b565b600191505092915050565b610f8d610f87611e33565b82612695565b50565b601060009054906101000a900460ff1681565b600f5481565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61102d612006565b6005821115611071576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110689061394e565b60405180910390fd5b60058111156110b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ac9061394e565b60405180910390fd5b81600e8190555080600f819055507f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a1600e54600f546040516110f892919061396e565b60405180910390a15050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611154612006565b61115e600061286c565b565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61119882611192611e33565b83612084565b6111a28282612695565b5050565b3373ffffffffffffffffffffffffffffffffffffffff166111c5611288565b73ffffffffffffffffffffffffffffffffffffffff16148061123457503373ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611273576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126a9061364c565b60405180910390fd5b61127e823383612932565b5050565b60115481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546112c190613707565b80601f01602080910402602001604051908101604052809291908181526020018280546112ed90613707565b801561133a5780601f1061130f5761010080835404028352916020019161133a565b820191906000526020600020905b81548152906001019060200180831161131d57829003601f168201915b5050505050905090565b61134c612006565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d490613a09565b60405180910390fd5b6113e78282612bb3565b5050565b6113f3612006565b8060128190555050565b60075481565b61140b612006565b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600080611471611e33565b9050600061147f82866116e6565b9050838110156114c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bb90613a9b565b60405180910390fd5b6114d18286868403611e3b565b60019250505092915050565b6000806114e8611e33565b90506114f5818585612110565b600191505092915050565b60136020528060005260406000206000915054906101000a900460ff1681565b611528612006565b6000811161153557600080fd5b80600a8190555050565b600d6020528060005260406000206000915054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614801561160a5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b611649576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164090613b2d565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516116db91906134f9565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b600061177d611288565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806118035750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8061185b5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806118985750611869611288565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806118ce57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8061190457503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1661192b611288565b73ffffffffffffffffffffffffffffffffffffffff16148061199a57503373ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6119d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d09061364c565b60405180910390fd5b600c60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5d90613bbf565b60405180910390fd5b6001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f57a00f76b5f242fb1e04b0b514a6974665a5b07bce45e39f36dabff4a042d93660405160405180910390a250565b611b0c612006565b6001601060006101000a81548160ff021916908315150217905550565b611b31612006565b8060118190555050565b611b43612006565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611bb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baa90613c51565b60405180910390fd5b611bbc8161286c565b50565b3373ffffffffffffffffffffffffffffffffffffffff16611bde611288565b73ffffffffffffffffffffffffffffffffffffffff161480611c4d57503373ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611c8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c839061364c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611d0d573373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611d07573d6000803e3d6000fd5b50611e30565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611d4d91906134f9565b60206040518083038186803b158015611d6557600080fd5b505afa158015611d79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9d9190613c86565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611dda929190613cb3565b602060405180830381600087803b158015611df457600080fd5b505af1158015611e08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e2c9190613cf1565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611eab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea290613d90565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1290613e22565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ff99190613418565b60405180910390a3505050565b61200e611e33565b73ffffffffffffffffffffffffffffffffffffffff1661202c611288565b73ffffffffffffffffffffffffffffffffffffffff1614612082576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120799061364c565b60405180910390fd5b565b600061209084846116e6565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461210a57818110156120fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f390613e8e565b60405180910390fd5b6121098484848403611e3b565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612180576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217790613f20565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e790613fb2565b60405180910390fd5b600960149054906101000a900460ff166122105761220f838383612ce7565b5b6000600f5490506000600e549050601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122c25750601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561231757600b60009054906101000a900460ff16612316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230d9061401e565b60405180910390fd5b5b6000831415612327575050612690565b6000600960149054906101000a900460ff16159050600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806123dd5750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156123e757600090505b60006123f230611104565b90506000600a5482101580156124085750600082115b801561245e5750600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156124675750825b90508080156124835750600960149054906101000a900460ff16155b15612536576001600960146101000a81548160ff02191690831515021790555060006124d0600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611104565b90506064600754826124e2919061403e565b6124ec91906140c7565b83111561251057606460075482612503919061403e565b61250d91906140c7565b92505b61251983612d7c565b6000600960146101000a81548160ff021916908315150217905550505b8280156125905750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b801561259c5750600084115b156125dc576000606485886125b1919061403e565b6125bb91906140c7565b905080876125c991906140f8565b96506125d6893083612932565b5061267f565b8280156126365750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16145b80156126425750600085115b1561267e57600060648688612657919061403e565b61266191906140c7565b9050808761266f91906140f8565b965061267c893083612932565b505b5b61268a888888612932565b50505050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612705576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fc9061419e565b60405180910390fd5b6127118260008361301c565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278e90614230565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282546127ee91906140f8565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128539190613418565b60405180910390a361286783600084613021565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156129a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299990613f20565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0990613fb2565b60405180910390fd5b612a1d83838361301c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612aa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9a906142c2565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b3691906138ac565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b9a9190613418565b60405180910390a3612bad848484613021565b50505050565b801515600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415612c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3d90614354565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b601060009054906101000a900460ff16612d7757612d058383611773565b158015612d5c5750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d7657612d6b8282613026565b612d75828261306f565b5b5b505050565b6000600267ffffffffffffffff811115612d9957612d98614374565b5b604051908082528060200260200182016040528015612dc75781602001602082028036833780820191505090505b5090503081600081518110612ddf57612dde6143a3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612e8157600080fd5b505afa158015612e95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eb991906143e7565b81600181518110612ecd57612ecc6143a3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060004714612f1457600080fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612f7895949392919061450d565b600060405180830381600087803b158015612f9257600080fd5b505af1925050508015612fa3575060015b612fac57612fad565b5b6000479050612fde600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613127565b7f957ad1fc6d4d41da6d1a8d37303289ef3c4b78e0285ff5df1e12070ef0e62999838260405161300f92919061396e565b60405180910390a1505050565b505050565b505050565b60115481111561306b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613062906145b3565b60405180910390fd5b5050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156130ca57613123565b601254816130d784611104565b6130e191906138ac565b1115613122576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131199061461f565b60405180910390fd5b5b5050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc8260405161314e90614670565b600060405180830381858888f193505050503d806000811461318c576040519150601f19603f3d011682016040523d82523d6000602084013e613191565b606091505b5050505050565b60008115159050919050565b6131ad81613198565b82525050565b60006020820190506131c860008301846131a4565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156132085780820151818401526020810190506131ed565b83811115613217576000848401525b50505050565b6000601f19601f8301169050919050565b6000613239826131ce565b61324381856131d9565b93506132538185602086016131ea565b61325c8161321d565b840191505092915050565b60006020820190508181036000830152613281818461322e565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006132b98261328e565b9050919050565b6132c9816132ae565b81146132d457600080fd5b50565b6000813590506132e6816132c0565b92915050565b6000819050919050565b6132ff816132ec565b811461330a57600080fd5b50565b60008135905061331c816132f6565b92915050565b6000806040838503121561333957613338613289565b5b6000613347858286016132d7565b92505060206133588582860161330d565b9150509250929050565b6000819050919050565b600061338761338261337d8461328e565b613362565b61328e565b9050919050565b60006133998261336c565b9050919050565b60006133ab8261338e565b9050919050565b6133bb816133a0565b82525050565b60006020820190506133d660008301846133b2565b92915050565b6000602082840312156133f2576133f1613289565b5b6000613400848285016132d7565b91505092915050565b613412816132ec565b82525050565b600060208201905061342d6000830184613409565b92915050565b60006020828403121561344957613448613289565b5b60006134578482850161330d565b91505092915050565b60008060006060848603121561347957613478613289565b5b6000613487868287016132d7565b9350506020613498868287016132d7565b92505060406134a98682870161330d565b9150509250925092565b600060ff82169050919050565b6134c9816134b3565b82525050565b60006020820190506134e460008301846134c0565b92915050565b6134f3816132ae565b82525050565b600060208201905061350e60008301846134ea565b92915050565b6000806040838503121561352b5761352a613289565b5b60006135398582860161330d565b925050602061354a8582860161330d565b9150509250929050565b61355d81613198565b811461356857600080fd5b50565b60008135905061357a81613554565b92915050565b6000806040838503121561359757613596613289565b5b60006135a5858286016132d7565b92505060206135b68582860161356b565b9150509250929050565b600080604083850312156135d7576135d6613289565b5b60006135e5858286016132d7565b92505060206135f6858286016132d7565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006136366020836131d9565b915061364182613600565b602082019050919050565b6000602082019050818103600083015261366581613629565b9050919050565b7f54726164696e6720697320616c7265616479206f70656e210000000000000000600082015250565b60006136a26018836131d9565b91506136ad8261366c565b602082019050919050565b600060208201905081810360008301526136d181613695565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061371f57607f821691505b60208210811415613733576137326136d8565b5b50919050565b7f4163636f756e7420616c726561647920696e636c756465640000000000000000600082015250565b600061376f6018836131d9565b915061377a82613739565b602082019050919050565b6000602082019050818103600083015261379e81613762565b9050919050565b7f746f6f206c6f7700000000000000000000000000000000000000000000000000600082015250565b60006137db6007836131d9565b91506137e6826137a5565b602082019050919050565b6000602082019050818103600083015261380a816137ce565b9050919050565b7f746f6f2068696768000000000000000000000000000000000000000000000000600082015250565b60006138476008836131d9565b915061385282613811565b602082019050919050565b600060208201905081810360008301526138768161383a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006138b7826132ec565b91506138c2836132ec565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156138f7576138f661387d565b5b828201905092915050565b7f46656573206d757374206265206c657373207468616e20352500000000000000600082015250565b60006139386019836131d9565b915061394382613902565b602082019050919050565b600060208201905081810360008301526139678161392b565b9050919050565b60006040820190506139836000830185613409565b6139906020830184613409565b9392505050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006139f36039836131d9565b91506139fe82613997565b604082019050919050565b60006020820190508181036000830152613a22816139e6565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613a856025836131d9565b9150613a9082613a29565b604082019050919050565b60006020820190508181036000830152613ab481613a78565b9050919050565b7f4d61726b6574696e672077616c6c657420697320616c7265616479207468617460008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b6000613b176028836131d9565b9150613b2282613abb565b604082019050919050565b60006020820190508181036000830152613b4681613b0a565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f7472756500000000000000000000000000000000000000000000000000000000602082015250565b6000613ba96024836131d9565b9150613bb482613b4d565b604082019050919050565b60006020820190508181036000830152613bd881613b9c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613c3b6026836131d9565b9150613c4682613bdf565b604082019050919050565b60006020820190508181036000830152613c6a81613c2e565b9050919050565b600081519050613c80816132f6565b92915050565b600060208284031215613c9c57613c9b613289565b5b6000613caa84828501613c71565b91505092915050565b6000604082019050613cc860008301856134ea565b613cd56020830184613409565b9392505050565b600081519050613ceb81613554565b92915050565b600060208284031215613d0757613d06613289565b5b6000613d1584828501613cdc565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613d7a6024836131d9565b9150613d8582613d1e565b604082019050919050565b60006020820190508181036000830152613da981613d6d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e0c6022836131d9565b9150613e1782613db0565b604082019050919050565b60006020820190508181036000830152613e3b81613dff565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613e78601d836131d9565b9150613e8382613e42565b602082019050919050565b60006020820190508181036000830152613ea781613e6b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613f0a6025836131d9565b9150613f1582613eae565b604082019050919050565b60006020820190508181036000830152613f3981613efd565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613f9c6023836131d9565b9150613fa782613f40565b604082019050919050565b60006020820190508181036000830152613fcb81613f8f565b9050919050565b7f5472616465206973206e6f74206f70656e000000000000000000000000000000600082015250565b60006140086011836131d9565b915061401382613fd2565b602082019050919050565b6000602082019050818103600083015261403781613ffb565b9050919050565b6000614049826132ec565b9150614054836132ec565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561408d5761408c61387d565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006140d2826132ec565b91506140dd836132ec565b9250826140ed576140ec614098565b5b828204905092915050565b6000614103826132ec565b915061410e836132ec565b9250828210156141215761412061387d565b5b828203905092915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006141886021836131d9565b91506141938261412c565b604082019050919050565b600060208201905081810360008301526141b78161417b565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b600061421a6022836131d9565b9150614225826141be565b604082019050919050565b600060208201905081810360008301526142498161420d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006142ac6026836131d9565b91506142b782614250565b604082019050919050565b600060208201905081810360008301526142db8161429f565b9050919050565b7f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160008201527f6c72656164792073657420746f20746861742076616c75650000000000000000602082015250565b600061433e6038836131d9565b9150614349826142e2565b604082019050919050565b6000602082019050818103600083015261436d81614331565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506143e1816132c0565b92915050565b6000602082840312156143fd576143fc613289565b5b600061440b848285016143d2565b91505092915050565b6000819050919050565b600061443961443461442f84614414565b613362565b6132ec565b9050919050565b6144498161441e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614484816132ae565b82525050565b6000614496838361447b565b60208301905092915050565b6000602082019050919050565b60006144ba8261444f565b6144c4818561445a565b93506144cf8361446b565b8060005b838110156145005781516144e7888261448a565b97506144f2836144a2565b9250506001810190506144d3565b5085935050505092915050565b600060a0820190506145226000830188613409565b61452f6020830187614440565b818103604083015261454181866144af565b905061455060608301856134ea565b61455d6080830184613409565b9695505050505050565b7f416d6f756e742065786365656473206d61780000000000000000000000000000600082015250565b600061459d6012836131d9565b91506145a882614567565b602082019050919050565b600060208201905081810360008301526145cc81614590565b9050919050565b7f4d617820686f6c64696e67206578636565646564206d61780000000000000000600082015250565b60006146096018836131d9565b9150614614826145d3565b602082019050919050565b60006020820190508181036000830152614638816145fc565b9050919050565b600081905092915050565b50565b600061465a60008361463f565b91506146658261464a565b600082019050919050565b600061467b8261464d565b915081905091905056fea264697066735822122093bebb2f65ab2c12fce5fe3061b645b14e70ab21c0a5a182c4cbad82d18f0c3964736f6c634300080900330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000f73aebf2708ac9d176d5ee3ce0aa5e3107bb2f84
Deployed Bytecode
0x6080604052600436106102755760003560e01c806379cc67901161014f578063ad5dff73116100c1578063e3084d9e1161007a578063e3084d9e14610984578063e57f14e1146109c1578063ec11ba34146109ea578063ec28438a14610a01578063f2fde38b14610a2a578063f9d0831a14610a535761027c565b8063ad5dff7314610850578063afa4f3b21461088d578063b62496f5146108b6578063bb85c6d1146108f3578063dd62ed3e1461091c578063e2f45605146109595761027c565b80639a7a23d6116101135780639a7a23d6146107305780639bc7c8c0146107595780639c7d15a2146107825780639fde54f5146107ad578063a457c2d7146107d6578063a9059cbb146108135761027c565b806379cc67901461065d5780638ba4cc3c146106865780638c0b5e22146106af5780638da5cb5b146106da57806395d89b41146107055761027c565b8063333e6f06116101e857806349bd5a5e116101ac57806349bd5a5e1461054d5780634fbee193146105785780636db79437146105b557806370a08231146105de578063715018a61461061b57806375f0a874146106325761027c565b8063333e6f0614610466578063395093511461049157806342966c68146104ce5780634589aaea146104f757806347062402146105225761027c565b806316a2f82a1161023a57806316a2f82a1461035657806318160ddd1461037f57806320518758146103aa57806323b872dd146103d35780632b14ca5614610410578063313ce5671461043b5761027c565b806299d38614610281578063064a59d01461029857806306fdde03146102c3578063095ea7b3146102ee5780631694505e1461032b5761027c565b3661027c57005b600080fd5b34801561028d57600080fd5b50610296610a7c565b005b3480156102a457600080fd5b506102ad610bbc565b6040516102ba91906131b3565b60405180910390f35b3480156102cf57600080fd5b506102d8610bcf565b6040516102e59190613267565b60405180910390f35b3480156102fa57600080fd5b5061031560048036038101906103109190613322565b610c61565b60405161032291906131b3565b60405180910390f35b34801561033757600080fd5b50610340610c84565b60405161034d91906133c1565b60405180910390f35b34801561036257600080fd5b5061037d600480360381019061037891906133dc565b610caa565b005b34801561038b57600080fd5b50610394610e5e565b6040516103a19190613418565b60405180910390f35b3480156103b657600080fd5b506103d160048036038101906103cc9190613433565b610e68565b005b3480156103df57600080fd5b506103fa60048036038101906103f59190613460565b610f01565b60405161040791906131b3565b60405180910390f35b34801561041c57600080fd5b50610425610f30565b6040516104329190613418565b60405180910390f35b34801561044757600080fd5b50610450610f36565b60405161045d91906134cf565b60405180910390f35b34801561047257600080fd5b5061047b610f3f565b6040516104889190613418565b60405180910390f35b34801561049d57600080fd5b506104b860048036038101906104b39190613322565b610f45565b6040516104c591906131b3565b60405180910390f35b3480156104da57600080fd5b506104f560048036038101906104f09190613433565b610f7c565b005b34801561050357600080fd5b5061050c610f90565b60405161051991906131b3565b60405180910390f35b34801561052e57600080fd5b50610537610fa3565b6040516105449190613418565b60405180910390f35b34801561055957600080fd5b50610562610fa9565b60405161056f91906134f9565b60405180910390f35b34801561058457600080fd5b5061059f600480360381019061059a91906133dc565b610fcf565b6040516105ac91906131b3565b60405180910390f35b3480156105c157600080fd5b506105dc60048036038101906105d79190613514565b611025565b005b3480156105ea57600080fd5b50610605600480360381019061060091906133dc565b611104565b6040516106129190613418565b60405180910390f35b34801561062757600080fd5b5061063061114c565b005b34801561063e57600080fd5b50610647611160565b60405161065491906134f9565b60405180910390f35b34801561066957600080fd5b50610684600480360381019061067f9190613322565b611186565b005b34801561069257600080fd5b506106ad60048036038101906106a89190613322565b6111a6565b005b3480156106bb57600080fd5b506106c4611282565b6040516106d19190613418565b60405180910390f35b3480156106e657600080fd5b506106ef611288565b6040516106fc91906134f9565b60405180910390f35b34801561071157600080fd5b5061071a6112b2565b6040516107279190613267565b60405180910390f35b34801561073c57600080fd5b5061075760048036038101906107529190613580565b611344565b005b34801561076557600080fd5b50610780600480360381019061077b9190613433565b6113eb565b005b34801561078e57600080fd5b506107976113fd565b6040516107a49190613418565b60405180910390f35b3480156107b957600080fd5b506107d460048036038101906107cf9190613580565b611403565b005b3480156107e257600080fd5b506107fd60048036038101906107f89190613322565b611466565b60405161080a91906131b3565b60405180910390f35b34801561081f57600080fd5b5061083a60048036038101906108359190613322565b6114dd565b60405161084791906131b3565b60405180910390f35b34801561085c57600080fd5b50610877600480360381019061087291906133dc565b611500565b60405161088491906131b3565b60405180910390f35b34801561089957600080fd5b506108b460048036038101906108af9190613433565b611520565b005b3480156108c257600080fd5b506108dd60048036038101906108d891906133dc565b61153f565b6040516108ea91906131b3565b60405180910390f35b3480156108ff57600080fd5b5061091a600480360381019061091591906133dc565b61155f565b005b34801561092857600080fd5b50610943600480360381019061093e91906135c0565b6116e6565b6040516109509190613418565b60405180910390f35b34801561096557600080fd5b5061096e61176d565b60405161097b9190613418565b60405180910390f35b34801561099057600080fd5b506109ab60048036038101906109a691906135c0565b611773565b6040516109b891906131b3565b60405180910390f35b3480156109cd57600080fd5b506109e860048036038101906109e391906133dc565b61190c565b005b3480156109f657600080fd5b506109ff611b04565b005b348015610a0d57600080fd5b50610a286004803603810190610a239190613433565b611b29565b005b348015610a3657600080fd5b50610a516004803603810190610a4c91906133dc565b611b3b565b005b348015610a5f57600080fd5b50610a7a6004803603810190610a7591906133dc565b611bbf565b005b3373ffffffffffffffffffffffffffffffffffffffff16610a9b611288565b73ffffffffffffffffffffffffffffffffffffffff161480610b0a57503373ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610b49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b409061364c565b60405180910390fd5b60001515600b60009054906101000a900460ff16151514610b9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b96906136b8565b60405180910390fd5b6001600b60006101000a81548160ff021916908315150217905550565b600b60009054906101000a900460ff1681565b606060038054610bde90613707565b80601f0160208091040260200160405190810160405280929190818152602001828054610c0a90613707565b8015610c575780601f10610c2c57610100808354040283529160200191610c57565b820191906000526020600020905b815481529060010190602001808311610c3a57829003601f168201915b5050505050905090565b600080610c6c611e33565b9050610c79818585611e3b565b600191505092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff16610cc9611288565b73ffffffffffffffffffffffffffffffffffffffff161480610d3857503373ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610d77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6e9061364c565b60405180910390fd5b600c60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610e03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfa90613785565b60405180910390fd5b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600254905090565b610e70612006565b60018111610eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaa906137f1565b60405180910390fd5b600a811115610ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eee9061385d565b60405180910390fd5b8060078190555050565b600080610f0c611e33565b9050610f19858285612084565b610f24858585612110565b60019150509392505050565b600e5481565b60006012905090565b60125481565b600080610f50611e33565b9050610f71818585610f6285896116e6565b610f6c91906138ac565b611e3b565b600191505092915050565b610f8d610f87611e33565b82612695565b50565b601060009054906101000a900460ff1681565b600f5481565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61102d612006565b6005821115611071576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110689061394e565b60405180910390fd5b60058111156110b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ac9061394e565b60405180910390fd5b81600e8190555080600f819055507f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a1600e54600f546040516110f892919061396e565b60405180910390a15050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611154612006565b61115e600061286c565b565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61119882611192611e33565b83612084565b6111a28282612695565b5050565b3373ffffffffffffffffffffffffffffffffffffffff166111c5611288565b73ffffffffffffffffffffffffffffffffffffffff16148061123457503373ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611273576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126a9061364c565b60405180910390fd5b61127e823383612932565b5050565b60115481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546112c190613707565b80601f01602080910402602001604051908101604052809291908181526020018280546112ed90613707565b801561133a5780601f1061130f5761010080835404028352916020019161133a565b820191906000526020600020905b81548152906001019060200180831161131d57829003601f168201915b5050505050905090565b61134c612006565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d490613a09565b60405180910390fd5b6113e78282612bb3565b5050565b6113f3612006565b8060128190555050565b60075481565b61140b612006565b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600080611471611e33565b9050600061147f82866116e6565b9050838110156114c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bb90613a9b565b60405180910390fd5b6114d18286868403611e3b565b60019250505092915050565b6000806114e8611e33565b90506114f5818585612110565b600191505092915050565b60136020528060005260406000206000915054906101000a900460ff1681565b611528612006565b6000811161153557600080fd5b80600a8190555050565b600d6020528060005260406000206000915054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614801561160a5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b611649576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164090613b2d565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516116db91906134f9565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b600061177d611288565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806118035750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8061185b5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806118985750611869611288565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806118ce57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8061190457503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1661192b611288565b73ffffffffffffffffffffffffffffffffffffffff16148061199a57503373ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6119d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d09061364c565b60405180910390fd5b600c60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5d90613bbf565b60405180910390fd5b6001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f57a00f76b5f242fb1e04b0b514a6974665a5b07bce45e39f36dabff4a042d93660405160405180910390a250565b611b0c612006565b6001601060006101000a81548160ff021916908315150217905550565b611b31612006565b8060118190555050565b611b43612006565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611bb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baa90613c51565b60405180910390fd5b611bbc8161286c565b50565b3373ffffffffffffffffffffffffffffffffffffffff16611bde611288565b73ffffffffffffffffffffffffffffffffffffffff161480611c4d57503373ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611c8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c839061364c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611d0d573373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611d07573d6000803e3d6000fd5b50611e30565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611d4d91906134f9565b60206040518083038186803b158015611d6557600080fd5b505afa158015611d79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9d9190613c86565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611dda929190613cb3565b602060405180830381600087803b158015611df457600080fd5b505af1158015611e08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e2c9190613cf1565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611eab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea290613d90565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1290613e22565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ff99190613418565b60405180910390a3505050565b61200e611e33565b73ffffffffffffffffffffffffffffffffffffffff1661202c611288565b73ffffffffffffffffffffffffffffffffffffffff1614612082576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120799061364c565b60405180910390fd5b565b600061209084846116e6565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461210a57818110156120fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f390613e8e565b60405180910390fd5b6121098484848403611e3b565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612180576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217790613f20565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e790613fb2565b60405180910390fd5b600960149054906101000a900460ff166122105761220f838383612ce7565b5b6000600f5490506000600e549050601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122c25750601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561231757600b60009054906101000a900460ff16612316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230d9061401e565b60405180910390fd5b5b6000831415612327575050612690565b6000600960149054906101000a900460ff16159050600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806123dd5750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156123e757600090505b60006123f230611104565b90506000600a5482101580156124085750600082115b801561245e5750600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156124675750825b90508080156124835750600960149054906101000a900460ff16155b15612536576001600960146101000a81548160ff02191690831515021790555060006124d0600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611104565b90506064600754826124e2919061403e565b6124ec91906140c7565b83111561251057606460075482612503919061403e565b61250d91906140c7565b92505b61251983612d7c565b6000600960146101000a81548160ff021916908315150217905550505b8280156125905750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b801561259c5750600084115b156125dc576000606485886125b1919061403e565b6125bb91906140c7565b905080876125c991906140f8565b96506125d6893083612932565b5061267f565b8280156126365750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16145b80156126425750600085115b1561267e57600060648688612657919061403e565b61266191906140c7565b9050808761266f91906140f8565b965061267c893083612932565b505b5b61268a888888612932565b50505050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612705576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fc9061419e565b60405180910390fd5b6127118260008361301c565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278e90614230565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282546127ee91906140f8565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128539190613418565b60405180910390a361286783600084613021565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156129a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299990613f20565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0990613fb2565b60405180910390fd5b612a1d83838361301c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612aa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9a906142c2565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b3691906138ac565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b9a9190613418565b60405180910390a3612bad848484613021565b50505050565b801515600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415612c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3d90614354565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b601060009054906101000a900460ff16612d7757612d058383611773565b158015612d5c5750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d7657612d6b8282613026565b612d75828261306f565b5b5b505050565b6000600267ffffffffffffffff811115612d9957612d98614374565b5b604051908082528060200260200182016040528015612dc75781602001602082028036833780820191505090505b5090503081600081518110612ddf57612dde6143a3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612e8157600080fd5b505afa158015612e95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eb991906143e7565b81600181518110612ecd57612ecc6143a3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060004714612f1457600080fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612f7895949392919061450d565b600060405180830381600087803b158015612f9257600080fd5b505af1925050508015612fa3575060015b612fac57612fad565b5b6000479050612fde600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613127565b7f957ad1fc6d4d41da6d1a8d37303289ef3c4b78e0285ff5df1e12070ef0e62999838260405161300f92919061396e565b60405180910390a1505050565b505050565b505050565b60115481111561306b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613062906145b3565b60405180910390fd5b5050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156130ca57613123565b601254816130d784611104565b6130e191906138ac565b1115613122576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131199061461f565b60405180910390fd5b5b5050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc8260405161314e90614670565b600060405180830381858888f193505050503d806000811461318c576040519150601f19603f3d011682016040523d82523d6000602084013e613191565b606091505b5050505050565b60008115159050919050565b6131ad81613198565b82525050565b60006020820190506131c860008301846131a4565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156132085780820151818401526020810190506131ed565b83811115613217576000848401525b50505050565b6000601f19601f8301169050919050565b6000613239826131ce565b61324381856131d9565b93506132538185602086016131ea565b61325c8161321d565b840191505092915050565b60006020820190508181036000830152613281818461322e565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006132b98261328e565b9050919050565b6132c9816132ae565b81146132d457600080fd5b50565b6000813590506132e6816132c0565b92915050565b6000819050919050565b6132ff816132ec565b811461330a57600080fd5b50565b60008135905061331c816132f6565b92915050565b6000806040838503121561333957613338613289565b5b6000613347858286016132d7565b92505060206133588582860161330d565b9150509250929050565b6000819050919050565b600061338761338261337d8461328e565b613362565b61328e565b9050919050565b60006133998261336c565b9050919050565b60006133ab8261338e565b9050919050565b6133bb816133a0565b82525050565b60006020820190506133d660008301846133b2565b92915050565b6000602082840312156133f2576133f1613289565b5b6000613400848285016132d7565b91505092915050565b613412816132ec565b82525050565b600060208201905061342d6000830184613409565b92915050565b60006020828403121561344957613448613289565b5b60006134578482850161330d565b91505092915050565b60008060006060848603121561347957613478613289565b5b6000613487868287016132d7565b9350506020613498868287016132d7565b92505060406134a98682870161330d565b9150509250925092565b600060ff82169050919050565b6134c9816134b3565b82525050565b60006020820190506134e460008301846134c0565b92915050565b6134f3816132ae565b82525050565b600060208201905061350e60008301846134ea565b92915050565b6000806040838503121561352b5761352a613289565b5b60006135398582860161330d565b925050602061354a8582860161330d565b9150509250929050565b61355d81613198565b811461356857600080fd5b50565b60008135905061357a81613554565b92915050565b6000806040838503121561359757613596613289565b5b60006135a5858286016132d7565b92505060206135b68582860161356b565b9150509250929050565b600080604083850312156135d7576135d6613289565b5b60006135e5858286016132d7565b92505060206135f6858286016132d7565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006136366020836131d9565b915061364182613600565b602082019050919050565b6000602082019050818103600083015261366581613629565b9050919050565b7f54726164696e6720697320616c7265616479206f70656e210000000000000000600082015250565b60006136a26018836131d9565b91506136ad8261366c565b602082019050919050565b600060208201905081810360008301526136d181613695565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061371f57607f821691505b60208210811415613733576137326136d8565b5b50919050565b7f4163636f756e7420616c726561647920696e636c756465640000000000000000600082015250565b600061376f6018836131d9565b915061377a82613739565b602082019050919050565b6000602082019050818103600083015261379e81613762565b9050919050565b7f746f6f206c6f7700000000000000000000000000000000000000000000000000600082015250565b60006137db6007836131d9565b91506137e6826137a5565b602082019050919050565b6000602082019050818103600083015261380a816137ce565b9050919050565b7f746f6f2068696768000000000000000000000000000000000000000000000000600082015250565b60006138476008836131d9565b915061385282613811565b602082019050919050565b600060208201905081810360008301526138768161383a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006138b7826132ec565b91506138c2836132ec565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156138f7576138f661387d565b5b828201905092915050565b7f46656573206d757374206265206c657373207468616e20352500000000000000600082015250565b60006139386019836131d9565b915061394382613902565b602082019050919050565b600060208201905081810360008301526139678161392b565b9050919050565b60006040820190506139836000830185613409565b6139906020830184613409565b9392505050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006139f36039836131d9565b91506139fe82613997565b604082019050919050565b60006020820190508181036000830152613a22816139e6565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613a856025836131d9565b9150613a9082613a29565b604082019050919050565b60006020820190508181036000830152613ab481613a78565b9050919050565b7f4d61726b6574696e672077616c6c657420697320616c7265616479207468617460008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b6000613b176028836131d9565b9150613b2282613abb565b604082019050919050565b60006020820190508181036000830152613b4681613b0a565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f7472756500000000000000000000000000000000000000000000000000000000602082015250565b6000613ba96024836131d9565b9150613bb482613b4d565b604082019050919050565b60006020820190508181036000830152613bd881613b9c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613c3b6026836131d9565b9150613c4682613bdf565b604082019050919050565b60006020820190508181036000830152613c6a81613c2e565b9050919050565b600081519050613c80816132f6565b92915050565b600060208284031215613c9c57613c9b613289565b5b6000613caa84828501613c71565b91505092915050565b6000604082019050613cc860008301856134ea565b613cd56020830184613409565b9392505050565b600081519050613ceb81613554565b92915050565b600060208284031215613d0757613d06613289565b5b6000613d1584828501613cdc565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613d7a6024836131d9565b9150613d8582613d1e565b604082019050919050565b60006020820190508181036000830152613da981613d6d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e0c6022836131d9565b9150613e1782613db0565b604082019050919050565b60006020820190508181036000830152613e3b81613dff565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613e78601d836131d9565b9150613e8382613e42565b602082019050919050565b60006020820190508181036000830152613ea781613e6b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613f0a6025836131d9565b9150613f1582613eae565b604082019050919050565b60006020820190508181036000830152613f3981613efd565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613f9c6023836131d9565b9150613fa782613f40565b604082019050919050565b60006020820190508181036000830152613fcb81613f8f565b9050919050565b7f5472616465206973206e6f74206f70656e000000000000000000000000000000600082015250565b60006140086011836131d9565b915061401382613fd2565b602082019050919050565b6000602082019050818103600083015261403781613ffb565b9050919050565b6000614049826132ec565b9150614054836132ec565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561408d5761408c61387d565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006140d2826132ec565b91506140dd836132ec565b9250826140ed576140ec614098565b5b828204905092915050565b6000614103826132ec565b915061410e836132ec565b9250828210156141215761412061387d565b5b828203905092915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006141886021836131d9565b91506141938261412c565b604082019050919050565b600060208201905081810360008301526141b78161417b565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b600061421a6022836131d9565b9150614225826141be565b604082019050919050565b600060208201905081810360008301526142498161420d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006142ac6026836131d9565b91506142b782614250565b604082019050919050565b600060208201905081810360008301526142db8161429f565b9050919050565b7f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160008201527f6c72656164792073657420746f20746861742076616c75650000000000000000602082015250565b600061433e6038836131d9565b9150614349826142e2565b604082019050919050565b6000602082019050818103600083015261436d81614331565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506143e1816132c0565b92915050565b6000602082840312156143fd576143fc613289565b5b600061440b848285016143d2565b91505092915050565b6000819050919050565b600061443961443461442f84614414565b613362565b6132ec565b9050919050565b6144498161441e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614484816132ae565b82525050565b6000614496838361447b565b60208301905092915050565b6000602082019050919050565b60006144ba8261444f565b6144c4818561445a565b93506144cf8361446b565b8060005b838110156145005781516144e7888261448a565b97506144f2836144a2565b9250506001810190506144d3565b5085935050505092915050565b600060a0820190506145226000830188613409565b61452f6020830187614440565b818103604083015261454181866144af565b905061455060608301856134ea565b61455d6080830184613409565b9695505050505050565b7f416d6f756e742065786365656473206d61780000000000000000000000000000600082015250565b600061459d6012836131d9565b91506145a882614567565b602082019050919050565b600060208201905081810360008301526145cc81614590565b9050919050565b7f4d617820686f6c64696e67206578636565646564206d61780000000000000000600082015250565b60006146096018836131d9565b9150614614826145d3565b602082019050919050565b60006020820190508181036000830152614638816145fc565b9050919050565b600081905092915050565b50565b600061465a60008361463f565b91506146658261464a565b600082019050919050565b600061467b8261464d565b915081905091905056fea264697066735822122093bebb2f65ab2c12fce5fe3061b645b14e70ab21c0a5a182c4cbad82d18f0c3964736f6c63430008090033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000f73aebf2708ac9d176d5ee3ce0aa5e3107bb2f84
-----Decoded View---------------
Arg [0] : router (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [1] : operator (address): 0xF73aEBf2708AC9d176D5EE3ce0Aa5e3107BB2F84
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [1] : 000000000000000000000000f73aebf2708ac9d176d5ee3ce0aa5e3107bb2f84
Deployed Bytecode Sourcemap
31728:9988:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34394:158;;;;;;;;;;;;;:::i;:::-;;32233:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6843:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9260:226;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31916:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36211:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7963:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39938:205;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10066:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32837:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7805:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32982:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10770:263;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18299:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32896:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32866:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31964:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36412:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36546:307;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8134:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20630:103;;;;;;;;;;;;;:::i;:::-;;31837:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18709:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35074:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32949:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19982:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7062:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35213:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41496:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31874:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41610:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11536:498;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8483:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33014:40;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39779:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32329:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36861:360;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8764:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32193:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40909:331;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35917:286;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41248:122;;;;;;;;;;;;;:::i;:::-;;41378:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20888:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34560:366;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34394:158;34263:10;34252:21;;:7;:5;:7::i;:::-;:21;;;:54;;;;34296:10;34277:29;;:15;;;;;;;;;;;:29;;;34252:54;34230:136;;;;;;;;;;;;:::i;:::-;;;;;;;;;34476:5:::1;34456:25;;:16;;;;;;;;;;;:25;;;34448:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;34540:4;34521:16;;:23;;;;;;;;;;;;;;;;;;34394:158::o:0;32233:28::-;;;;;;;;;;;;;:::o;6843:100::-;6897:13;6930:5;6923:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6843:100;:::o;9260:226::-;9368:4;9385:13;9401:12;:10;:12::i;:::-;9385:28;;9424:32;9433:5;9440:7;9449:6;9424:8;:32::i;:::-;9474:4;9467:11;;;9260:226;;;;:::o;31916:41::-;;;;;;;;;;;;;:::o;36211:193::-;34263:10;34252:21;;:7;:5;:7::i;:::-;:21;;;:54;;;;34296:10;34277:29;;:15;;;;;;;;;;;:29;;;34252:54;34230:136;;;;;;;;;;;;:::i;:::-;;;;;;;;;36292:19:::1;:28;36312:7;36292:28;;;;;;;;;;;;;;;;;;;;;;;;;36284:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;36391:5;36360:19;:28;36380:7;36360:28;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;36211:193:::0;:::o;7963:108::-;8024:7;8051:12;;8044:19;;7963:108;:::o;39938:205::-;19868:13;:11;:13::i;:::-;40036:1:::1;40024:9;:13;40016:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;40081:2;40068:9;:15;;40060:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;40126:9;40107:16;:28;;;;39938:205:::0;:::o;10066:295::-;10197:4;10214:15;10232:12;:10;:12::i;:::-;10214:30;;10255:38;10271:4;10277:7;10286:6;10255:15;:38::i;:::-;10304:27;10314:4;10320:2;10324:6;10304:9;:27::i;:::-;10349:4;10342:11;;;10066:295;;;;;:::o;32837:22::-;;;;:::o;7805:93::-;7863:5;7888:2;7881:9;;7805:93;:::o;32982:25::-;;;;:::o;10770:263::-;10883:4;10900:13;10916:12;:10;:12::i;:::-;10900:28;;10939:64;10948:5;10955:7;10992:10;10964:25;10974:5;10981:7;10964:9;:25::i;:::-;:38;;;;:::i;:::-;10939:8;:64::i;:::-;11021:4;11014:11;;;10770:263;;;;:::o;18299:91::-;18355:27;18361:12;:10;:12::i;:::-;18375:6;18355:5;:27::i;:::-;18299:91;:::o;32896:46::-;;;;;;;;;;;;;:::o;32866:21::-;;;;:::o;31964:28::-;;;;;;;;;;;;;:::o;36412:126::-;36478:4;36502:19;:28;36522:7;36502:28;;;;;;;;;;;;;;;;;;;;;;;;;36495:35;;36412:126;;;:::o;36546:307::-;19868:13;:11;:13::i;:::-;36651:1:::1;36639:8;:13;;36631:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;36712:1;36701:7;:12;;36693:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;36764:8;36754:7;:18;;;;36792:7;36783:6;:16;;;;36817:28;36829:7;;36838:6;;36817:28;;;;;;;:::i;:::-;;;;;;;;36546:307:::0;;:::o;8134:143::-;8224:7;8251:9;:18;8261:7;8251:18;;;;;;;;;;;;;;;;8244:25;;8134:143;;;:::o;20630:103::-;19868:13;:11;:13::i;:::-;20695:30:::1;20722:1;20695:18;:30::i;:::-;20630:103::o:0;31837:30::-;;;;;;;;;;;;;:::o;18709:164::-;18786:46;18802:7;18811:12;:10;:12::i;:::-;18825:6;18786:15;:46::i;:::-;18843:22;18849:7;18858:6;18843:5;:22::i;:::-;18709:164;;:::o;35074:131::-;34263:10;34252:21;;:7;:5;:7::i;:::-;:21;;;:54;;;;34296:10;34277:29;;:15;;;;;;;;;;;:29;;;34252:54;34230:136;;;;;;;;;;;;:::i;:::-;;;;;;;;;35155:42:::1;35171:5;35178:10;35190:6;35155:15;:42::i;:::-;35074:131:::0;;:::o;32949:26::-;;;;:::o;19982:87::-;20028:7;20055:6;;;;;;;;;;;20048:13;;19982:87;:::o;7062:104::-;7118:13;7151:7;7144:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7062:104;:::o;35213:306::-;19868:13;:11;:13::i;:::-;35359::::1;;;;;;;;;;;35351:21;;:4;:21;;;;35329:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;35470:41;35499:4;35505:5;35470:28;:41::i;:::-;35213:306:::0;;:::o;41496:106::-;19868:13;:11;:13::i;:::-;41583:11:::1;41570:10;:24;;;;41496:106:::0;:::o;31874:35::-;;;;:::o;41610:103::-;19868:13;:11;:13::i;:::-;41699:6:::1;41683:8;:13;41692:3;41683:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;41610:103:::0;;:::o;11536:498::-;11654:4;11671:13;11687:12;:10;:12::i;:::-;11671:28;;11710:24;11737:25;11747:5;11754:7;11737:9;:25::i;:::-;11710:52;;11815:15;11795:16;:35;;11773:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;11931:60;11940:5;11947:7;11975:15;11956:16;:34;11931:8;:60::i;:::-;12022:4;12015:11;;;;11536:498;;;;:::o;8483:218::-;8587:4;8604:13;8620:12;:10;:12::i;:::-;8604:28;;8643;8653:5;8660:2;8664:6;8643:9;:28::i;:::-;8689:4;8682:11;;;8483:218;;;;:::o;33014:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;39779:151::-;19868:13;:11;:13::i;:::-;39879:1:::1;39867:9;:13;39859:22;;;::::0;::::1;;39913:9;39892:18;:30;;;;39779:151:::0;:::o;32329:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;36861:360::-;36974:15;;;;;;;;;;;36960:29;;:10;:29;;;:85;;;;;37030:15;;;;;;;;;;;37010:35;;:16;:35;;;;36960:85;36938:175;;;;;;;;;;;;:::i;:::-;;;;;;;;;37142:16;37124:15;;:34;;;;;;;;;;;;;;;;;;37174:39;37197:15;;;;;;;;;;;37174:39;;;;;;:::i;:::-;;;;;;;;36861:360;:::o;8764:176::-;8878:7;8905:11;:18;8917:5;8905:18;;;;;;;;;;;;;;;:27;8924:7;8905:27;;;;;;;;;;;;;;;;8898:34;;8764:176;;;;:::o;32193:33::-;;;;:::o;40909:331::-;41009:4;41042:7;:5;:7::i;:::-;41034:15;;:4;:15;;;:55;;;;41074:15;;;;;;;;;;;41066:23;;:4;:23;;;41034:55;:93;;;;41112:15;;;;;;;;;;;41106:21;;:2;:21;;;41034:93;:123;;;;41150:7;:5;:7::i;:::-;41144:13;;:2;:13;;;41034:123;:161;;;;41190:4;41174:21;;:4;:21;;;41034:161;:197;;;;41226:4;41212:19;;:2;:19;;;41034:197;41026:206;;40909:331;;;;:::o;35917:286::-;34263:10;34252:21;;:7;:5;:7::i;:::-;:21;;;:54;;;;34296:10;34277:29;;:15;;;;;;;;;;;:29;;;34252:54;34230:136;;;;;;;;;;;;:::i;:::-;;;;;;;;;36015:19:::1;:28;36035:7;36015:28;;;;;;;;;;;;;;;;;;;;;;;;;36014:29;35992:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;36149:4;36118:19;:28;36138:7;36118:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;36187:7;36171:24;;;;;;;;;;;;35917:286:::0;:::o;41248:122::-;19868:13;:11;:13::i;:::-;41358:4:::1;41321:34;;:41;;;;;;;;;;;;;;;;;;41248:122::o:0;41378:110::-;19868:13;:11;:13::i;:::-;41468:12:::1;41454:11;:26;;;;41378:110:::0;:::o;20888:238::-;19868:13;:11;:13::i;:::-;21011:1:::1;20991:22;;:8;:22;;;;20969:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;21090:28;21109:8;21090:18;:28::i;:::-;20888:238:::0;:::o;34560:366::-;34263:10;34252:21;;:7;:5;:7::i;:::-;:21;;;:54;;;;34296:10;34277:29;;:15;;;;;;;;;;;:29;;;34252:54;34230:136;;;;;;;;;;;;:::i;:::-;;;;;;;;;34655:3:::1;34638:21;;:5;:21;;;34634:126;;;34684:10;34676:28;;:51;34705:21;34676:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;34742:7;;34634:126;34770:17;34797:5;34770:33;;34814:15;34832:10;:20;;;34861:4;34832:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34814:53;;34878:10;:19;;;34898:10;34910:7;34878:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;34623:303;;34377:1;34560:366:::0;:::o;4624:98::-;4677:7;4704:10;4697:17;;4624:98;:::o;15260:380::-;15413:1;15396:19;;:5;:19;;;;15388:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15494:1;15475:21;;:7;:21;;;;15467:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15578:6;15548:11;:18;15560:5;15548:18;;;;;;;;;;;;;;;:27;15567:7;15548:27;;;;;;;;;;;;;;;:36;;;;15616:7;15600:32;;15609:5;15600:32;;;15625:6;15600:32;;;;;;:::i;:::-;;;;;;;;15260:380;;;:::o;20147:132::-;20222:12;:10;:12::i;:::-;20211:23;;:7;:5;:7::i;:::-;:23;;;20203:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20147:132::o;15931:502::-;16066:24;16093:25;16103:5;16110:7;16093:9;:25::i;:::-;16066:52;;16153:17;16133:16;:37;16129:297;;16233:6;16213:16;:26;;16187:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;16348:51;16357:5;16364:7;16392:6;16373:16;:25;16348:8;:51::i;:::-;16129:297;16055:378;15931:502;;;:::o;37229:1821::-;37377:1;37361:18;;:4;:18;;;;37353:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37454:1;37440:16;;:2;:16;;;;37432:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;37514:8;;;;;;;;;;;37509:66;;37539:24;37546:4;37552:2;37556:6;37539;:24::i;:::-;37509:66;37587:12;37602:6;;37587:21;;37619:13;37635:7;;37619:23;;37660:8;:14;37669:4;37660:14;;;;;;;;;;;;;;;;;;;;;;;;;37659:15;:32;;;;;37679:8;:12;37688:2;37679:12;;;;;;;;;;;;;;;;;;;;;;;;;37678:13;37659:32;37655:111;;;37716:16;;;;;;;;;;;37708:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;37655:111;37792:1;37782:6;:11;37778:50;;;37810:7;;;;37778:50;37840:12;37856:8;;;;;;;;;;;37855:9;37840:24;;37881:19;:25;37901:4;37881:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;37910:19;:23;37930:2;37910:23;;;;;;;;;;;;;;;;;;;;;;;;;37881:52;37877:100;;;37960:5;37950:15;;37877:100;37989:14;38006:24;38024:4;38006:9;:24::i;:::-;37989:41;;38043:12;38068:18;;38058:6;:28;;:55;;;;;38112:1;38103:6;:10;38058:55;:104;;;;;38131:25;:31;38157:4;38131:31;;;;;;;;;;;;;;;;;;;;;;;;;38130:32;38058:104;:128;;;;;38179:7;38058:128;38043:143;;38201:7;:20;;;;;38213:8;;;;;;;;;;;38212:9;38201:20;38197:352;;;38249:4;38238:8;;:15;;;;;;;;;;;;;;;;;;38268:19;38290:24;38300:13;;;;;;;;;;;38290:9;:24::i;:::-;38268:46;;38377:3;38357:16;;38343:11;:30;;;;:::i;:::-;38342:38;;;;:::i;:::-;38333:6;:47;38329:135;;;38445:3;38425:16;;38411:11;:30;;;;:::i;:::-;38410:38;;;;:::i;:::-;38401:47;;38329:135;38478:28;38499:6;38478:20;:28::i;:::-;38532:5;38521:8;;:16;;;;;;;;;;;;;;;;;;38223:326;38197:352;38565:7;:30;;;;;38582:13;;;;;;;;;;;38576:19;;:2;:19;;;38565:30;:46;;;;;38610:1;38599:8;:12;38565:46;38561:436;;;38628:12;38665:3;38653:8;38644:6;:17;;;;:::i;:::-;38643:25;;;;:::i;:::-;38628:40;;38701:4;38692:6;:13;;;;:::i;:::-;38683:22;;38722:42;38738:4;38752;38759;38722:15;:42::i;:::-;38613:163;38561:436;;;38786:7;:32;;;;;38805:13;;;;;;;;;;;38797:21;;:4;:21;;;38786:32;:47;;;;;38832:1;38822:7;:11;38786:47;38782:215;;;38850:12;38886:3;38875:7;38866:6;:16;;;;:::i;:::-;38865:24;;;;:::i;:::-;38850:39;;38922:4;38913:6;:13;;;;:::i;:::-;38904:22;;38943:42;38959:4;38973;38980;38943:15;:42::i;:::-;38835:162;38782:215;38561:436;39009:33;39025:4;39031:2;39035:6;39009:15;:33::i;:::-;37342:1708;;;;;37229:1821;;;;:::o;14231:591::-;14334:1;14315:21;;:7;:21;;;;14307:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14387:49;14408:7;14425:1;14429:6;14387:20;:49::i;:::-;14449:22;14474:9;:18;14484:7;14474:18;;;;;;;;;;;;;;;;14449:43;;14529:6;14511:14;:24;;14503:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14648:6;14631:14;:23;14610:9;:18;14620:7;14610:18;;;;;;;;;;;;;;;:44;;;;14692:6;14676:12;;:22;;;;;;;:::i;:::-;;;;;;;;14742:1;14716:37;;14725:7;14716:37;;;14746:6;14716:37;;;;;;:::i;:::-;;;;;;;;14766:48;14786:7;14803:1;14807:6;14766:19;:48::i;:::-;14296:526;14231:591;;:::o;21286:191::-;21360:16;21379:6;;;;;;;;;;;21360:25;;21405:8;21396:6;;:17;;;;;;;;;;;;;;;;;;21460:8;21429:40;;21450:8;21429:40;;;;;;;;;;;;21349:128;21286:191;:::o;12504:708::-;12651:1;12635:18;;:4;:18;;;;12627:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12728:1;12714:16;;:2;:16;;;;12706:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12783:38;12804:4;12810:2;12814:6;12783:20;:38::i;:::-;12834:19;12856:9;:15;12866:4;12856:15;;;;;;;;;;;;;;;;12834:37;;12919:6;12904:11;:21;;12882:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;13059:6;13045:11;:20;13027:9;:15;13037:4;13027:15;;;;;;;;;;;;;;;:38;;;;13104:6;13087:9;:13;13097:2;13087:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;13143:2;13128:26;;13137:4;13128:26;;;13147:6;13128:26;;;;;;:::i;:::-;;;;;;;;13167:37;13187:4;13193:2;13197:6;13167:19;:37::i;:::-;12616:596;12504:708;;;:::o;35527:345::-;35667:5;35632:40;;:25;:31;35658:4;35632:31;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;;35610:146;;;;;;;;;;;;:::i;:::-;;;;;;;;;35801:5;35767:25;:31;35793:4;35767:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;35858:5;35824:40;;35852:4;35824:40;;;;;;;;;;;;35527:345;;:::o;40151:322::-;40234:34;;;;;;;;;;;40229:237;;40290:28;40309:4;40315:2;40290:18;:28::i;:::-;40289:29;:46;;;;;40323:8;:12;40332:2;40323:12;;;;;;;;;;;;;;;;;;;;;;;;;40322:13;40289:46;40285:170;;;40356:29;40374:2;40378:6;40356:17;:29::i;:::-;40406:33;40428:2;40432:6;40406:21;:33::i;:::-;40285:170;40229:237;40151:322;;;:::o;39086:685::-;39156:21;39194:1;39180:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39156:40;;39225:4;39207;39212:1;39207:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;39251:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;39241:4;39246:1;39241:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;39319:1;39294:21;:26;39286:35;;;;;;39349:15;;;;;;;;;;;:66;;;39434:11;39464:1;39484:4;39515;39539:15;39349:220;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39332:258;;;;;;39602:18;39623:21;39602:42;;39655:45;39671:15;;;;;;;;;;;39689:10;39655:7;:45::i;:::-;39718;39739:11;39752:10;39718:45;;;;;;;:::i;:::-;;;;;;;;39145:626;;39086:685;:::o;17033:125::-;;;;:::o;17762:124::-;;;;:::o;40481:140::-;40579:11;;40569:6;:21;;40561:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;40481:140;;:::o;40629:272::-;40723:13;;;;;;;;;;;40717:19;;:2;:19;;;40713:58;;;40753:7;;40713:58;40831:10;;40821:6;40805:13;40815:2;40805:9;:13::i;:::-;:22;;;;:::i;:::-;:36;;40783:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;40629:272;;;:::o;34934:132::-;35014:9;:14;;35034:4;35047:6;35014:44;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34934:132;;:::o;7:90:1:-;41:7;84:5;77:13;70:21;59:32;;7:90;;;:::o;103:109::-;184:21;199:5;184:21;:::i;:::-;179:3;172:34;103:109;;:::o;218:210::-;305:4;343:2;332:9;328:18;320:26;;356:65;418:1;407:9;403:17;394:6;356:65;:::i;:::-;218:210;;;;:::o;434:99::-;486:6;520:5;514:12;504:22;;434:99;;;:::o;539:169::-;623:11;657:6;652:3;645:19;697:4;692:3;688:14;673:29;;539:169;;;;:::o;714:307::-;782:1;792:113;806:6;803:1;800:13;792:113;;;891:1;886:3;882:11;876:18;872:1;867:3;863:11;856:39;828:2;825:1;821:10;816:15;;792:113;;;923:6;920:1;917:13;914:101;;;1003:1;994:6;989:3;985:16;978:27;914:101;763:258;714:307;;;:::o;1027:102::-;1068:6;1119:2;1115:7;1110:2;1103:5;1099:14;1095:28;1085:38;;1027:102;;;:::o;1135:364::-;1223:3;1251:39;1284:5;1251:39;:::i;:::-;1306:71;1370:6;1365:3;1306:71;:::i;:::-;1299:78;;1386:52;1431:6;1426:3;1419:4;1412:5;1408:16;1386:52;:::i;:::-;1463:29;1485:6;1463:29;:::i;:::-;1458:3;1454:39;1447:46;;1227:272;1135:364;;;;:::o;1505:313::-;1618:4;1656:2;1645:9;1641:18;1633:26;;1705:9;1699:4;1695:20;1691:1;1680:9;1676:17;1669:47;1733:78;1806:4;1797:6;1733:78;:::i;:::-;1725:86;;1505:313;;;;:::o;1905:117::-;2014:1;2011;2004:12;2151:126;2188:7;2228:42;2221:5;2217:54;2206:65;;2151:126;;;:::o;2283:96::-;2320:7;2349:24;2367:5;2349:24;:::i;:::-;2338:35;;2283:96;;;:::o;2385:122::-;2458:24;2476:5;2458:24;:::i;:::-;2451:5;2448:35;2438:63;;2497:1;2494;2487:12;2438:63;2385:122;:::o;2513:139::-;2559:5;2597:6;2584:20;2575:29;;2613:33;2640:5;2613:33;:::i;:::-;2513:139;;;;:::o;2658:77::-;2695:7;2724:5;2713:16;;2658:77;;;:::o;2741:122::-;2814:24;2832:5;2814:24;:::i;:::-;2807:5;2804:35;2794:63;;2853:1;2850;2843:12;2794:63;2741:122;:::o;2869:139::-;2915:5;2953:6;2940:20;2931:29;;2969:33;2996:5;2969:33;:::i;:::-;2869:139;;;;:::o;3014:474::-;3082:6;3090;3139:2;3127:9;3118:7;3114:23;3110:32;3107:119;;;3145:79;;:::i;:::-;3107:119;3265:1;3290:53;3335:7;3326:6;3315:9;3311:22;3290:53;:::i;:::-;3280:63;;3236:117;3392:2;3418:53;3463:7;3454:6;3443:9;3439:22;3418:53;:::i;:::-;3408:63;;3363:118;3014:474;;;;;:::o;3494:60::-;3522:3;3543:5;3536:12;;3494:60;;;:::o;3560:142::-;3610:9;3643:53;3661:34;3670:24;3688:5;3670:24;:::i;:::-;3661:34;:::i;:::-;3643:53;:::i;:::-;3630:66;;3560:142;;;:::o;3708:126::-;3758:9;3791:37;3822:5;3791:37;:::i;:::-;3778:50;;3708:126;;;:::o;3840:153::-;3917:9;3950:37;3981:5;3950:37;:::i;:::-;3937:50;;3840:153;;;:::o;3999:185::-;4113:64;4171:5;4113:64;:::i;:::-;4108:3;4101:77;3999:185;;:::o;4190:276::-;4310:4;4348:2;4337:9;4333:18;4325:26;;4361:98;4456:1;4445:9;4441:17;4432:6;4361:98;:::i;:::-;4190:276;;;;:::o;4472:329::-;4531:6;4580:2;4568:9;4559:7;4555:23;4551:32;4548:119;;;4586:79;;:::i;:::-;4548:119;4706:1;4731:53;4776:7;4767:6;4756:9;4752:22;4731:53;:::i;:::-;4721:63;;4677:117;4472:329;;;;:::o;4807:118::-;4894:24;4912:5;4894:24;:::i;:::-;4889:3;4882:37;4807:118;;:::o;4931:222::-;5024:4;5062:2;5051:9;5047:18;5039:26;;5075:71;5143:1;5132:9;5128:17;5119:6;5075:71;:::i;:::-;4931:222;;;;:::o;5159:329::-;5218:6;5267:2;5255:9;5246:7;5242:23;5238:32;5235:119;;;5273:79;;:::i;:::-;5235:119;5393:1;5418:53;5463:7;5454:6;5443:9;5439:22;5418:53;:::i;:::-;5408:63;;5364:117;5159:329;;;;:::o;5494:619::-;5571:6;5579;5587;5636:2;5624:9;5615:7;5611:23;5607:32;5604:119;;;5642:79;;:::i;:::-;5604:119;5762:1;5787:53;5832:7;5823:6;5812:9;5808:22;5787:53;:::i;:::-;5777:63;;5733:117;5889:2;5915:53;5960:7;5951:6;5940:9;5936:22;5915:53;:::i;:::-;5905:63;;5860:118;6017:2;6043:53;6088:7;6079:6;6068:9;6064:22;6043:53;:::i;:::-;6033:63;;5988:118;5494:619;;;;;:::o;6119:86::-;6154:7;6194:4;6187:5;6183:16;6172:27;;6119:86;;;:::o;6211:112::-;6294:22;6310:5;6294:22;:::i;:::-;6289:3;6282:35;6211:112;;:::o;6329:214::-;6418:4;6456:2;6445:9;6441:18;6433:26;;6469:67;6533:1;6522:9;6518:17;6509:6;6469:67;:::i;:::-;6329:214;;;;:::o;6549:118::-;6636:24;6654:5;6636:24;:::i;:::-;6631:3;6624:37;6549:118;;:::o;6673:222::-;6766:4;6804:2;6793:9;6789:18;6781:26;;6817:71;6885:1;6874:9;6870:17;6861:6;6817:71;:::i;:::-;6673:222;;;;:::o;6901:474::-;6969:6;6977;7026:2;7014:9;7005:7;7001:23;6997:32;6994:119;;;7032:79;;:::i;:::-;6994:119;7152:1;7177:53;7222:7;7213:6;7202:9;7198:22;7177:53;:::i;:::-;7167:63;;7123:117;7279:2;7305:53;7350:7;7341:6;7330:9;7326:22;7305:53;:::i;:::-;7295:63;;7250:118;6901:474;;;;;:::o;7381:116::-;7451:21;7466:5;7451:21;:::i;:::-;7444:5;7441:32;7431:60;;7487:1;7484;7477:12;7431:60;7381:116;:::o;7503:133::-;7546:5;7584:6;7571:20;7562:29;;7600:30;7624:5;7600:30;:::i;:::-;7503:133;;;;:::o;7642:468::-;7707:6;7715;7764:2;7752:9;7743:7;7739:23;7735:32;7732:119;;;7770:79;;:::i;:::-;7732:119;7890:1;7915:53;7960:7;7951:6;7940:9;7936:22;7915:53;:::i;:::-;7905:63;;7861:117;8017:2;8043:50;8085:7;8076:6;8065:9;8061:22;8043:50;:::i;:::-;8033:60;;7988:115;7642:468;;;;;:::o;8116:474::-;8184:6;8192;8241:2;8229:9;8220:7;8216:23;8212:32;8209:119;;;8247:79;;:::i;:::-;8209:119;8367:1;8392:53;8437:7;8428:6;8417:9;8413:22;8392:53;:::i;:::-;8382:63;;8338:117;8494:2;8520:53;8565:7;8556:6;8545:9;8541:22;8520:53;:::i;:::-;8510:63;;8465:118;8116:474;;;;;:::o;8596:182::-;8736:34;8732:1;8724:6;8720:14;8713:58;8596:182;:::o;8784:366::-;8926:3;8947:67;9011:2;9006:3;8947:67;:::i;:::-;8940:74;;9023:93;9112:3;9023:93;:::i;:::-;9141:2;9136:3;9132:12;9125:19;;8784:366;;;:::o;9156:419::-;9322:4;9360:2;9349:9;9345:18;9337:26;;9409:9;9403:4;9399:20;9395:1;9384:9;9380:17;9373:47;9437:131;9563:4;9437:131;:::i;:::-;9429:139;;9156:419;;;:::o;9581:174::-;9721:26;9717:1;9709:6;9705:14;9698:50;9581:174;:::o;9761:366::-;9903:3;9924:67;9988:2;9983:3;9924:67;:::i;:::-;9917:74;;10000:93;10089:3;10000:93;:::i;:::-;10118:2;10113:3;10109:12;10102:19;;9761:366;;;:::o;10133:419::-;10299:4;10337:2;10326:9;10322:18;10314:26;;10386:9;10380:4;10376:20;10372:1;10361:9;10357:17;10350:47;10414:131;10540:4;10414:131;:::i;:::-;10406:139;;10133:419;;;:::o;10558:180::-;10606:77;10603:1;10596:88;10703:4;10700:1;10693:15;10727:4;10724:1;10717:15;10744:320;10788:6;10825:1;10819:4;10815:12;10805:22;;10872:1;10866:4;10862:12;10893:18;10883:81;;10949:4;10941:6;10937:17;10927:27;;10883:81;11011:2;11003:6;11000:14;10980:18;10977:38;10974:84;;;11030:18;;:::i;:::-;10974:84;10795:269;10744:320;;;:::o;11070:174::-;11210:26;11206:1;11198:6;11194:14;11187:50;11070:174;:::o;11250:366::-;11392:3;11413:67;11477:2;11472:3;11413:67;:::i;:::-;11406:74;;11489:93;11578:3;11489:93;:::i;:::-;11607:2;11602:3;11598:12;11591:19;;11250:366;;;:::o;11622:419::-;11788:4;11826:2;11815:9;11811:18;11803:26;;11875:9;11869:4;11865:20;11861:1;11850:9;11846:17;11839:47;11903:131;12029:4;11903:131;:::i;:::-;11895:139;;11622:419;;;:::o;12047:157::-;12187:9;12183:1;12175:6;12171:14;12164:33;12047:157;:::o;12210:365::-;12352:3;12373:66;12437:1;12432:3;12373:66;:::i;:::-;12366:73;;12448:93;12537:3;12448:93;:::i;:::-;12566:2;12561:3;12557:12;12550:19;;12210:365;;;:::o;12581:419::-;12747:4;12785:2;12774:9;12770:18;12762:26;;12834:9;12828:4;12824:20;12820:1;12809:9;12805:17;12798:47;12862:131;12988:4;12862:131;:::i;:::-;12854:139;;12581:419;;;:::o;13006:158::-;13146:10;13142:1;13134:6;13130:14;13123:34;13006:158;:::o;13170:365::-;13312:3;13333:66;13397:1;13392:3;13333:66;:::i;:::-;13326:73;;13408:93;13497:3;13408:93;:::i;:::-;13526:2;13521:3;13517:12;13510:19;;13170:365;;;:::o;13541:419::-;13707:4;13745:2;13734:9;13730:18;13722:26;;13794:9;13788:4;13784:20;13780:1;13769:9;13765:17;13758:47;13822:131;13948:4;13822:131;:::i;:::-;13814:139;;13541:419;;;:::o;13966:180::-;14014:77;14011:1;14004:88;14111:4;14108:1;14101:15;14135:4;14132:1;14125:15;14152:305;14192:3;14211:20;14229:1;14211:20;:::i;:::-;14206:25;;14245:20;14263:1;14245:20;:::i;:::-;14240:25;;14399:1;14331:66;14327:74;14324:1;14321:81;14318:107;;;14405:18;;:::i;:::-;14318:107;14449:1;14446;14442:9;14435:16;;14152:305;;;;:::o;14463:175::-;14603:27;14599:1;14591:6;14587:14;14580:51;14463:175;:::o;14644:366::-;14786:3;14807:67;14871:2;14866:3;14807:67;:::i;:::-;14800:74;;14883:93;14972:3;14883:93;:::i;:::-;15001:2;14996:3;14992:12;14985:19;;14644:366;;;:::o;15016:419::-;15182:4;15220:2;15209:9;15205:18;15197:26;;15269:9;15263:4;15259:20;15255:1;15244:9;15240:17;15233:47;15297:131;15423:4;15297:131;:::i;:::-;15289:139;;15016:419;;;:::o;15441:332::-;15562:4;15600:2;15589:9;15585:18;15577:26;;15613:71;15681:1;15670:9;15666:17;15657:6;15613:71;:::i;:::-;15694:72;15762:2;15751:9;15747:18;15738:6;15694:72;:::i;:::-;15441:332;;;;;:::o;15779:244::-;15919:34;15915:1;15907:6;15903:14;15896:58;15988:27;15983:2;15975:6;15971:15;15964:52;15779:244;:::o;16029:366::-;16171:3;16192:67;16256:2;16251:3;16192:67;:::i;:::-;16185:74;;16268:93;16357:3;16268:93;:::i;:::-;16386:2;16381:3;16377:12;16370:19;;16029:366;;;:::o;16401:419::-;16567:4;16605:2;16594:9;16590:18;16582:26;;16654:9;16648:4;16644:20;16640:1;16629:9;16625:17;16618:47;16682:131;16808:4;16682:131;:::i;:::-;16674:139;;16401:419;;;:::o;16826:224::-;16966:34;16962:1;16954:6;16950:14;16943:58;17035:7;17030:2;17022:6;17018:15;17011:32;16826:224;:::o;17056:366::-;17198:3;17219:67;17283:2;17278:3;17219:67;:::i;:::-;17212:74;;17295:93;17384:3;17295:93;:::i;:::-;17413:2;17408:3;17404:12;17397:19;;17056:366;;;:::o;17428:419::-;17594:4;17632:2;17621:9;17617:18;17609:26;;17681:9;17675:4;17671:20;17667:1;17656:9;17652:17;17645:47;17709:131;17835:4;17709:131;:::i;:::-;17701:139;;17428:419;;;:::o;17853:227::-;17993:34;17989:1;17981:6;17977:14;17970:58;18062:10;18057:2;18049:6;18045:15;18038:35;17853:227;:::o;18086:366::-;18228:3;18249:67;18313:2;18308:3;18249:67;:::i;:::-;18242:74;;18325:93;18414:3;18325:93;:::i;:::-;18443:2;18438:3;18434:12;18427:19;;18086:366;;;:::o;18458:419::-;18624:4;18662:2;18651:9;18647:18;18639:26;;18711:9;18705:4;18701:20;18697:1;18686:9;18682:17;18675:47;18739:131;18865:4;18739:131;:::i;:::-;18731:139;;18458:419;;;:::o;18883:223::-;19023:34;19019:1;19011:6;19007:14;19000:58;19092:6;19087:2;19079:6;19075:15;19068:31;18883:223;:::o;19112:366::-;19254:3;19275:67;19339:2;19334:3;19275:67;:::i;:::-;19268:74;;19351:93;19440:3;19351:93;:::i;:::-;19469:2;19464:3;19460:12;19453:19;;19112:366;;;:::o;19484:419::-;19650:4;19688:2;19677:9;19673:18;19665:26;;19737:9;19731:4;19727:20;19723:1;19712:9;19708:17;19701:47;19765:131;19891:4;19765:131;:::i;:::-;19757:139;;19484:419;;;:::o;19909:225::-;20049:34;20045:1;20037:6;20033:14;20026:58;20118:8;20113:2;20105:6;20101:15;20094:33;19909:225;:::o;20140:366::-;20282:3;20303:67;20367:2;20362:3;20303:67;:::i;:::-;20296:74;;20379:93;20468:3;20379:93;:::i;:::-;20497:2;20492:3;20488:12;20481:19;;20140:366;;;:::o;20512:419::-;20678:4;20716:2;20705:9;20701:18;20693:26;;20765:9;20759:4;20755:20;20751:1;20740:9;20736:17;20729:47;20793:131;20919:4;20793:131;:::i;:::-;20785:139;;20512:419;;;:::o;20937:143::-;20994:5;21025:6;21019:13;21010:22;;21041:33;21068:5;21041:33;:::i;:::-;20937:143;;;;:::o;21086:351::-;21156:6;21205:2;21193:9;21184:7;21180:23;21176:32;21173:119;;;21211:79;;:::i;:::-;21173:119;21331:1;21356:64;21412:7;21403:6;21392:9;21388:22;21356:64;:::i;:::-;21346:74;;21302:128;21086:351;;;;:::o;21443:332::-;21564:4;21602:2;21591:9;21587:18;21579:26;;21615:71;21683:1;21672:9;21668:17;21659:6;21615:71;:::i;:::-;21696:72;21764:2;21753:9;21749:18;21740:6;21696:72;:::i;:::-;21443:332;;;;;:::o;21781:137::-;21835:5;21866:6;21860:13;21851:22;;21882:30;21906:5;21882:30;:::i;:::-;21781:137;;;;:::o;21924:345::-;21991:6;22040:2;22028:9;22019:7;22015:23;22011:32;22008:119;;;22046:79;;:::i;:::-;22008:119;22166:1;22191:61;22244:7;22235:6;22224:9;22220:22;22191:61;:::i;:::-;22181:71;;22137:125;21924:345;;;;:::o;22275:223::-;22415:34;22411:1;22403:6;22399:14;22392:58;22484:6;22479:2;22471:6;22467:15;22460:31;22275:223;:::o;22504:366::-;22646:3;22667:67;22731:2;22726:3;22667:67;:::i;:::-;22660:74;;22743:93;22832:3;22743:93;:::i;:::-;22861:2;22856:3;22852:12;22845:19;;22504:366;;;:::o;22876:419::-;23042:4;23080:2;23069:9;23065:18;23057:26;;23129:9;23123:4;23119:20;23115:1;23104:9;23100:17;23093:47;23157:131;23283:4;23157:131;:::i;:::-;23149:139;;22876:419;;;:::o;23301:221::-;23441:34;23437:1;23429:6;23425:14;23418:58;23510:4;23505:2;23497:6;23493:15;23486:29;23301:221;:::o;23528:366::-;23670:3;23691:67;23755:2;23750:3;23691:67;:::i;:::-;23684:74;;23767:93;23856:3;23767:93;:::i;:::-;23885:2;23880:3;23876:12;23869:19;;23528:366;;;:::o;23900:419::-;24066:4;24104:2;24093:9;24089:18;24081:26;;24153:9;24147:4;24143:20;24139:1;24128:9;24124:17;24117:47;24181:131;24307:4;24181:131;:::i;:::-;24173:139;;23900:419;;;:::o;24325:179::-;24465:31;24461:1;24453:6;24449:14;24442:55;24325:179;:::o;24510:366::-;24652:3;24673:67;24737:2;24732:3;24673:67;:::i;:::-;24666:74;;24749:93;24838:3;24749:93;:::i;:::-;24867:2;24862:3;24858:12;24851:19;;24510:366;;;:::o;24882:419::-;25048:4;25086:2;25075:9;25071:18;25063:26;;25135:9;25129:4;25125:20;25121:1;25110:9;25106:17;25099:47;25163:131;25289:4;25163:131;:::i;:::-;25155:139;;24882:419;;;:::o;25307:224::-;25447:34;25443:1;25435:6;25431:14;25424:58;25516:7;25511:2;25503:6;25499:15;25492:32;25307:224;:::o;25537:366::-;25679:3;25700:67;25764:2;25759:3;25700:67;:::i;:::-;25693:74;;25776:93;25865:3;25776:93;:::i;:::-;25894:2;25889:3;25885:12;25878:19;;25537:366;;;:::o;25909:419::-;26075:4;26113:2;26102:9;26098:18;26090:26;;26162:9;26156:4;26152:20;26148:1;26137:9;26133:17;26126:47;26190:131;26316:4;26190:131;:::i;:::-;26182:139;;25909:419;;;:::o;26334:222::-;26474:34;26470:1;26462:6;26458:14;26451:58;26543:5;26538:2;26530:6;26526:15;26519:30;26334:222;:::o;26562:366::-;26704:3;26725:67;26789:2;26784:3;26725:67;:::i;:::-;26718:74;;26801:93;26890:3;26801:93;:::i;:::-;26919:2;26914:3;26910:12;26903:19;;26562:366;;;:::o;26934:419::-;27100:4;27138:2;27127:9;27123:18;27115:26;;27187:9;27181:4;27177:20;27173:1;27162:9;27158:17;27151:47;27215:131;27341:4;27215:131;:::i;:::-;27207:139;;26934:419;;;:::o;27359:167::-;27499:19;27495:1;27487:6;27483:14;27476:43;27359:167;:::o;27532:366::-;27674:3;27695:67;27759:2;27754:3;27695:67;:::i;:::-;27688:74;;27771:93;27860:3;27771:93;:::i;:::-;27889:2;27884:3;27880:12;27873:19;;27532:366;;;:::o;27904:419::-;28070:4;28108:2;28097:9;28093:18;28085:26;;28157:9;28151:4;28147:20;28143:1;28132:9;28128:17;28121:47;28185:131;28311:4;28185:131;:::i;:::-;28177:139;;27904:419;;;:::o;28329:348::-;28369:7;28392:20;28410:1;28392:20;:::i;:::-;28387:25;;28426:20;28444:1;28426:20;:::i;:::-;28421:25;;28614:1;28546:66;28542:74;28539:1;28536:81;28531:1;28524:9;28517:17;28513:105;28510:131;;;28621:18;;:::i;:::-;28510:131;28669:1;28666;28662:9;28651:20;;28329:348;;;;:::o;28683:180::-;28731:77;28728:1;28721:88;28828:4;28825:1;28818:15;28852:4;28849:1;28842:15;28869:185;28909:1;28926:20;28944:1;28926:20;:::i;:::-;28921:25;;28960:20;28978:1;28960:20;:::i;:::-;28955:25;;28999:1;28989:35;;29004:18;;:::i;:::-;28989:35;29046:1;29043;29039:9;29034:14;;28869:185;;;;:::o;29060:191::-;29100:4;29120:20;29138:1;29120:20;:::i;:::-;29115:25;;29154:20;29172:1;29154:20;:::i;:::-;29149:25;;29193:1;29190;29187:8;29184:34;;;29198:18;;:::i;:::-;29184:34;29243:1;29240;29236:9;29228:17;;29060:191;;;;:::o;29257:220::-;29397:34;29393:1;29385:6;29381:14;29374:58;29466:3;29461:2;29453:6;29449:15;29442:28;29257:220;:::o;29483:366::-;29625:3;29646:67;29710:2;29705:3;29646:67;:::i;:::-;29639:74;;29722:93;29811:3;29722:93;:::i;:::-;29840:2;29835:3;29831:12;29824:19;;29483:366;;;:::o;29855:419::-;30021:4;30059:2;30048:9;30044:18;30036:26;;30108:9;30102:4;30098:20;30094:1;30083:9;30079:17;30072:47;30136:131;30262:4;30136:131;:::i;:::-;30128:139;;29855:419;;;:::o;30280:221::-;30420:34;30416:1;30408:6;30404:14;30397:58;30489:4;30484:2;30476:6;30472:15;30465:29;30280:221;:::o;30507:366::-;30649:3;30670:67;30734:2;30729:3;30670:67;:::i;:::-;30663:74;;30746:93;30835:3;30746:93;:::i;:::-;30864:2;30859:3;30855:12;30848:19;;30507:366;;;:::o;30879:419::-;31045:4;31083:2;31072:9;31068:18;31060:26;;31132:9;31126:4;31122:20;31118:1;31107:9;31103:17;31096:47;31160:131;31286:4;31160:131;:::i;:::-;31152:139;;30879:419;;;:::o;31304:225::-;31444:34;31440:1;31432:6;31428:14;31421:58;31513:8;31508:2;31500:6;31496:15;31489:33;31304:225;:::o;31535:366::-;31677:3;31698:67;31762:2;31757:3;31698:67;:::i;:::-;31691:74;;31774:93;31863:3;31774:93;:::i;:::-;31892:2;31887:3;31883:12;31876:19;;31535:366;;;:::o;31907:419::-;32073:4;32111:2;32100:9;32096:18;32088:26;;32160:9;32154:4;32150:20;32146:1;32135:9;32131:17;32124:47;32188:131;32314:4;32188:131;:::i;:::-;32180:139;;31907:419;;;:::o;32332:243::-;32472:34;32468:1;32460:6;32456:14;32449:58;32541:26;32536:2;32528:6;32524:15;32517:51;32332:243;:::o;32581:366::-;32723:3;32744:67;32808:2;32803:3;32744:67;:::i;:::-;32737:74;;32820:93;32909:3;32820:93;:::i;:::-;32938:2;32933:3;32929:12;32922:19;;32581:366;;;:::o;32953:419::-;33119:4;33157:2;33146:9;33142:18;33134:26;;33206:9;33200:4;33196:20;33192:1;33181:9;33177:17;33170:47;33234:131;33360:4;33234:131;:::i;:::-;33226:139;;32953:419;;;:::o;33378:180::-;33426:77;33423:1;33416:88;33523:4;33520:1;33513:15;33547:4;33544:1;33537:15;33564:180;33612:77;33609:1;33602:88;33709:4;33706:1;33699:15;33733:4;33730:1;33723:15;33750:143;33807:5;33838:6;33832:13;33823:22;;33854:33;33881:5;33854:33;:::i;:::-;33750:143;;;;:::o;33899:351::-;33969:6;34018:2;34006:9;33997:7;33993:23;33989:32;33986:119;;;34024:79;;:::i;:::-;33986:119;34144:1;34169:64;34225:7;34216:6;34205:9;34201:22;34169:64;:::i;:::-;34159:74;;34115:128;33899:351;;;;:::o;34256:85::-;34301:7;34330:5;34319:16;;34256:85;;;:::o;34347:158::-;34405:9;34438:61;34456:42;34465:32;34491:5;34465:32;:::i;:::-;34456:42;:::i;:::-;34438:61;:::i;:::-;34425:74;;34347:158;;;:::o;34511:147::-;34606:45;34645:5;34606:45;:::i;:::-;34601:3;34594:58;34511:147;;:::o;34664:114::-;34731:6;34765:5;34759:12;34749:22;;34664:114;;;:::o;34784:184::-;34883:11;34917:6;34912:3;34905:19;34957:4;34952:3;34948:14;34933:29;;34784:184;;;;:::o;34974:132::-;35041:4;35064:3;35056:11;;35094:4;35089:3;35085:14;35077:22;;34974:132;;;:::o;35112:108::-;35189:24;35207:5;35189:24;:::i;:::-;35184:3;35177:37;35112:108;;:::o;35226:179::-;35295:10;35316:46;35358:3;35350:6;35316:46;:::i;:::-;35394:4;35389:3;35385:14;35371:28;;35226:179;;;;:::o;35411:113::-;35481:4;35513;35508:3;35504:14;35496:22;;35411:113;;;:::o;35560:732::-;35679:3;35708:54;35756:5;35708:54;:::i;:::-;35778:86;35857:6;35852:3;35778:86;:::i;:::-;35771:93;;35888:56;35938:5;35888:56;:::i;:::-;35967:7;35998:1;35983:284;36008:6;36005:1;36002:13;35983:284;;;36084:6;36078:13;36111:63;36170:3;36155:13;36111:63;:::i;:::-;36104:70;;36197:60;36250:6;36197:60;:::i;:::-;36187:70;;36043:224;36030:1;36027;36023:9;36018:14;;35983:284;;;35987:14;36283:3;36276:10;;35684:608;;;35560:732;;;;:::o;36298:831::-;36561:4;36599:3;36588:9;36584:19;36576:27;;36613:71;36681:1;36670:9;36666:17;36657:6;36613:71;:::i;:::-;36694:80;36770:2;36759:9;36755:18;36746:6;36694:80;:::i;:::-;36821:9;36815:4;36811:20;36806:2;36795:9;36791:18;36784:48;36849:108;36952:4;36943:6;36849:108;:::i;:::-;36841:116;;36967:72;37035:2;37024:9;37020:18;37011:6;36967:72;:::i;:::-;37049:73;37117:3;37106:9;37102:19;37093:6;37049:73;:::i;:::-;36298:831;;;;;;;;:::o;37135:168::-;37275:20;37271:1;37263:6;37259:14;37252:44;37135:168;:::o;37309:366::-;37451:3;37472:67;37536:2;37531:3;37472:67;:::i;:::-;37465:74;;37548:93;37637:3;37548:93;:::i;:::-;37666:2;37661:3;37657:12;37650:19;;37309:366;;;:::o;37681:419::-;37847:4;37885:2;37874:9;37870:18;37862:26;;37934:9;37928:4;37924:20;37920:1;37909:9;37905:17;37898:47;37962:131;38088:4;37962:131;:::i;:::-;37954:139;;37681:419;;;:::o;38106:174::-;38246:26;38242:1;38234:6;38230:14;38223:50;38106:174;:::o;38286:366::-;38428:3;38449:67;38513:2;38508:3;38449:67;:::i;:::-;38442:74;;38525:93;38614:3;38525:93;:::i;:::-;38643:2;38638:3;38634:12;38627:19;;38286:366;;;:::o;38658:419::-;38824:4;38862:2;38851:9;38847:18;38839:26;;38911:9;38905:4;38901:20;38897:1;38886:9;38882:17;38875:47;38939:131;39065:4;38939:131;:::i;:::-;38931:139;;38658:419;;;:::o;39083:147::-;39184:11;39221:3;39206:18;;39083:147;;;;:::o;39236:114::-;;:::o;39356:398::-;39515:3;39536:83;39617:1;39612:3;39536:83;:::i;:::-;39529:90;;39628:93;39717:3;39628:93;:::i;:::-;39746:1;39741:3;39737:11;39730:18;;39356:398;;;:::o;39760:379::-;39944:3;39966:147;40109:3;39966:147;:::i;:::-;39959:154;;40130:3;40123:10;;39760:379;;;:::o
Swarm Source
ipfs://93bebb2f65ab2c12fce5fe3061b645b14e70ab21c0a5a182c4cbad82d18f0c39
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.