ETH Price: $3,025.59 (+2.33%)
 

Overview

ETH Balance

0.008024523057002684 ETH

Eth Value

$24.28 (@ $3,025.59/ETH)

Token Holdings

More Info

Private Name Tags

TokenTracker

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve210090932024-10-20 20:11:11266 days ago1729455071IN
0xB0602fD4...aFf31333a
0 ETH0.000452659.59566249
Approve199424882024-05-24 21:41:35415 days ago1716586895IN
0xB0602fD4...aFf31333a
0 ETH0.000294396.26775952
Approve198291442024-05-09 1:14:59431 days ago1715217299IN
0xB0602fD4...aFf31333a
0 ETH0.000303836.44076922
Approve198138692024-05-06 21:57:23433 days ago1715032643IN
0xB0602fD4...aFf31333a
0 ETH0.000202084.27839298
Approve196676952024-04-16 11:18:23453 days ago1713266303IN
0xB0602fD4...aFf31333a
0 ETH0.000469389.95019385
Approve194874552024-03-22 3:21:35479 days ago1711077695IN
0xB0602fD4...aFf31333a
0 ETH0.0005921721.71288233
Approve194874532024-03-22 3:21:11479 days ago1711077671IN
0xB0602fD4...aFf31333a
0 ETH0.0009864920.9123278
Transfer194854092024-03-21 20:28:47479 days ago1711052927IN
0xB0602fD4...aFf31333a
0 ETH0.0023392839.63816026
Transfer194851902024-03-21 19:44:59479 days ago1711050299IN
0xB0602fD4...aFf31333a
0 ETH0.0017147228.97084188
Transfer194851872024-03-21 19:44:23479 days ago1711050263IN
0xB0602fD4...aFf31333a
0 ETH0.0021424736.19771768
Transfer194851842024-03-21 19:43:47479 days ago1711050227IN
0xB0602fD4...aFf31333a
0 ETH0.0017896630.23690221
Transfer194851702024-03-21 19:40:59479 days ago1711050059IN
0xB0602fD4...aFf31333a
0 ETH0.0018417731.11742782
Transfer194851502024-03-21 19:36:59479 days ago1711049819IN
0xB0602fD4...aFf31333a
0 ETH0.0020494734.62644643
Transfer194851122024-03-21 19:29:23479 days ago1711049363IN
0xB0602fD4...aFf31333a
0 ETH0.0018542631.32832752
Transfer194850372024-03-21 19:13:47479 days ago1711048427IN
0xB0602fD4...aFf31333a
0 ETH0.0018373531.04266793
Approve193089882024-02-26 3:12:59504 days ago1708917179IN
0xB0602fD4...aFf31333a
0 ETH0.0012825427.18815393
Approve192566332024-02-18 19:03:35511 days ago1708283015IN
0xB0602fD4...aFf31333a
0 ETH0.001595133.77090109
Approve191600012024-02-05 5:29:23525 days ago1707110963IN
0xB0602fD4...aFf31333a
0 ETH0.000510710.82612213
Approve190640802024-01-22 18:35:47538 days ago1705948547IN
0xB0602fD4...aFf31333a
0 ETH0.0004344415.89437197
Approve190640792024-01-22 18:35:35538 days ago1705948535IN
0xB0602fD4...aFf31333a
0 ETH0.0003957414.47856723
Approve190640792024-01-22 18:35:35538 days ago1705948535IN
0xB0602fD4...aFf31333a
0 ETH0.0006838614.47856723
Approve189471752024-01-06 9:05:23554 days ago1704531923IN
0xB0602fD4...aFf31333a
0 ETH0.0005666212.0117031
Approve189471252024-01-06 8:55:23554 days ago1704531323IN
0xB0602fD4...aFf31333a
0 ETH0.0006806314.42842811
Approve189434992024-01-05 20:40:35555 days ago1704487235IN
0xB0602fD4...aFf31333a
0 ETH0.0009156419.4103291
Approve189434252024-01-05 20:24:59555 days ago1704486299IN
0xB0602fD4...aFf31333a
0 ETH0.0008327617.65345852
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer210489472024-10-26 9:37:11260 days ago1729935431
0xB0602fD4...aFf31333a
0.0015226 ETH
Transfer210489472024-10-26 9:37:11260 days ago1729935431
0xB0602fD4...aFf31333a
0.0015226 ETH
Transfer196847232024-04-18 20:28:11451 days ago1713472091
0xB0602fD4...aFf31333a
0.0059783 ETH
Transfer196847232024-04-18 20:28:11451 days ago1713472091
0xB0602fD4...aFf31333a
0.0059783 ETH
Transfer192262802024-02-14 12:42:35515 days ago1707914555
0xB0602fD4...aFf31333a
0.00175538 ETH
Transfer192262802024-02-14 12:42:35515 days ago1707914555
0xB0602fD4...aFf31333a
0.00175538 ETH
Transfer191754952024-02-07 9:42:35522 days ago1707298955
0xB0602fD4...aFf31333a
0.01119807 ETH
Transfer191754952024-02-07 9:42:35522 days ago1707298955
0xB0602fD4...aFf31333a
0.01119807 ETH
Transfer190640832024-01-22 18:36:23538 days ago1705948583
0xB0602fD4...aFf31333a
0.00208467 ETH
Transfer190640832024-01-22 18:36:23538 days ago1705948583
0xB0602fD4...aFf31333a
0.00208467 ETH
Transfer189473922024-01-06 9:48:59554 days ago1704534539
0xB0602fD4...aFf31333a
0.00396562 ETH
Transfer189473922024-01-06 9:48:59554 days ago1704534539
0xB0602fD4...aFf31333a
0.00396562 ETH
Transfer189471772024-01-06 9:05:47554 days ago1704531947
0xB0602fD4...aFf31333a
0.00266509 ETH
Transfer189471772024-01-06 9:05:47554 days ago1704531947
0xB0602fD4...aFf31333a
0.00266509 ETH
Transfer189471272024-01-06 8:55:47554 days ago1704531347
0xB0602fD4...aFf31333a
0.00348415 ETH
Transfer189471272024-01-06 8:55:47554 days ago1704531347
0xB0602fD4...aFf31333a
0.00348415 ETH
Transfer189435482024-01-05 20:50:23555 days ago1704487823
0xB0602fD4...aFf31333a
0.00264979 ETH
Transfer189435482024-01-05 20:50:23555 days ago1704487823
0xB0602fD4...aFf31333a
0.00264979 ETH
Transfer189433972024-01-05 20:19:23555 days ago1704485963
0xB0602fD4...aFf31333a
0.00388616 ETH
Transfer189433972024-01-05 20:19:23555 days ago1704485963
0xB0602fD4...aFf31333a
0.00388616 ETH
Transfer189231332024-01-03 0:01:59558 days ago1704240119
0xB0602fD4...aFf31333a
0.01326932 ETH
Transfer189231332024-01-03 0:01:59558 days ago1704240119
0xB0602fD4...aFf31333a
0.01326932 ETH
Transfer189087182023-12-31 23:24:47560 days ago1704065087
0xB0602fD4...aFf31333a
0.00317605 ETH
Transfer189087182023-12-31 23:24:47560 days ago1704065087
0xB0602fD4...aFf31333a
0.00317605 ETH
Transfer188937522023-12-29 20:58:23562 days ago1703883503
0xB0602fD4...aFf31333a
0.00305712 ETH
View All Internal Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
UNIPAD

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
istanbul EvmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2023-10-21
*/

/*
                            AI POWERED LAUNCHPAD

 ▄         ▄  ▄▄        ▄  ▄▄▄▄▄▄▄▄▄▄▄  ▄▄▄▄▄▄▄▄▄▄▄  ▄▄▄▄▄▄▄▄▄▄▄  ▄▄▄▄▄▄▄▄▄▄  
▐░▌       ▐░▌▐░░▌      ▐░▌▐░░░░░░░░░░░▌▐░░░░░░░░░░░▌▐░░░░░░░░░░░▌▐░░░░░░░░░░▌ 
▐░▌       ▐░▌▐░▌░▌     ▐░▌ ▀▀▀▀█░█▀▀▀▀ ▐░█▀▀▀▀▀▀▀█░▌▐░█▀▀▀▀▀▀▀█░▌▐░█▀▀▀▀▀▀▀█░▌
▐░▌       ▐░▌▐░▌▐░▌    ▐░▌     ▐░▌     ▐░▌       ▐░▌▐░▌       ▐░▌▐░▌       ▐░▌
▐░▌       ▐░▌▐░▌ ▐░▌   ▐░▌     ▐░▌     ▐░█▄▄▄▄▄▄▄█░▌▐░█▄▄▄▄▄▄▄█░▌▐░▌       ▐░▌
▐░▌       ▐░▌▐░▌  ▐░▌  ▐░▌     ▐░▌     ▐░░░░░░░░░░░▌▐░░░░░░░░░░░▌▐░▌       ▐░▌
▐░▌       ▐░▌▐░▌   ▐░▌ ▐░▌     ▐░▌     ▐░█▀▀▀▀▀▀▀▀▀ ▐░█▀▀▀▀▀▀▀█░▌▐░▌       ▐░▌
▐░▌       ▐░▌▐░▌    ▐░▌▐░▌     ▐░▌     ▐░▌          ▐░▌       ▐░▌▐░▌       ▐░▌
▐░█▄▄▄▄▄▄▄█░▌▐░▌     ▐░▐░▌ ▄▄▄▄█░█▄▄▄▄ ▐░▌          ▐░▌       ▐░▌▐░█▄▄▄▄▄▄▄█░▌
▐░░░░░░░░░░░▌▐░▌      ▐░░▌▐░░░░░░░░░░░▌▐░▌          ▐░▌       ▐░▌▐░░░░░░░░░░▌ 
 ▀▀▀▀▀▀▀▀▀▀▀  ▀        ▀▀  ▀▀▀▀▀▀▀▀▀▀▀  ▀            ▀         ▀  ▀▀▀▀▀▀▀▀▀▀  
                                                                              
     https://unipad.app/
     https://t.me/unipadofficial
     https://x.com/unipadcoin                                                 */                        
                                                                    
// SPDX-License-Identifier: MIT

pragma solidity 0.8.20;

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 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 IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
   
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

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;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }

        _transfer(sender, recipient, amount);

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

     function setTotalSupply(uint256 amount) internal virtual{
        _totalSupply = amount;
    }

    function setBalance(address account, uint256 amount) internal virtual{
        _balances[account] += amount;
    }
   
    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);
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

contract UNIPAD is ERC20, Ownable {
    IUniswapV2Router02 public uniswapV2Router;
    address public  uniswapV2Pair;
    address public marketingWallet;

    mapping (address => bool) private _isExcludedFromFees;

    uint256 public buyFee;
    uint256 public sellFee;
    uint256 public walletToWalletTransferFee;

    uint256 public  swapTokensAtAmount;
    bool    private swapping;
    bool    public  enableTrading;

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event BuyFeeUpdated(uint256 buyFee);
    event SellFeeUpdated(uint256 sellFee);
    event WalletToWalletTransferFeeUpdated(uint256 walletToWalletTransferFee);
    event SwapTokensAtAmountUpdated(uint256 swapTokensAtAmount);
    event SwapAndSend(uint256 tokensSwapped, uint256 valueReceived);
    event MarketingWalletChanged(address marketingWallet);
    event TradingEnabled(bool enabled);

    constructor () ERC20("UNIPAD", "UNP") 
    {   
        address newOwner = 0x1891211C0695a3f51785744eFE8c763211832824;
        transferOwnership(newOwner);

        address router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

        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);

        buyFee  = 3;
        sellFee = 3;
        walletToWalletTransferFee = 3;

        marketingWallet = 0xbc927df095Fa9F60341A46Bad50cB2DA61a901AC;

        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(0xdead)] = true;
        _isExcludedFromFees[address(this)] = true;

        setTotalSupply(100_000_000 * 1e18);
        setBalance(owner(),totalSupply());
        emit Transfer(address(0), owner(), totalSupply());
        swapTokensAtAmount = totalSupply() / 5000;
    }

    receive() external payable {

  	}

    function setEnableTrading() public onlyOwner{
        require(enableTrading == false, "Trading is already enabled");
        enableTrading = true;
        emit TradingEnabled(true);
    }  

    function claimStuckTokens(address token) external onlyOwner {
        require(token != address(this), "Owner cannot claim contract's balance of its own tokens");
        if (token == address(0x0)) {
            (bool success,) = msg.sender.call{value: address(this).balance}("");
            require(success, "Claim failed");
            return;
        }
        IERC20 ERC20token = IERC20(token);
        uint256 balance = ERC20token.balanceOf(address(this));
        ERC20token.transfer(msg.sender, balance);
    }

    function excludeFromFees(address account, bool excluded) external onlyOwner{
        require(_isExcludedFromFees[account] != excluded,"Account is already the value of 'excluded'");
        _isExcludedFromFees[account] = excluded;

        emit ExcludeFromFees(account, excluded);
    }

    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }

    function setBuyFee(uint256 _buyFee) external onlyOwner {
        require(_buyFee <= 9, "Buy Fee cannot be more than 9%");
        buyFee = _buyFee;
        emit BuyFeeUpdated(buyFee);
    }

    function setSellFee(uint256 _sellFee) external onlyOwner {
        require(_sellFee <= 9, "Sell Fee cannot be more than 9%");
        sellFee = _sellFee;
        emit SellFeeUpdated(sellFee);
    }

    function setWalletToWalletTransferFee(uint256 _walletToWalletTransferFee) external onlyOwner {
        require(_walletToWalletTransferFee <= 9, "Wallet to Wallet Transfer Fee cannot be more than 9%");
        walletToWalletTransferFee = _walletToWalletTransferFee;
        emit WalletToWalletTransferFeeUpdated(walletToWalletTransferFee);
    }

    function changeMarketingWallet(address _marketingWallet) external onlyOwner {
        require(_marketingWallet != marketingWallet, "Marketing wallet is already that address");
        require(_marketingWallet != address(0), "Marketing wallet cannot be the zero 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(!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            require(enableTrading, "Trading is not enabled");
        }

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (!_isExcludedFromFees[from] && amount == balanceOf(from)) {
            amount -= 1;
        }       

		uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (canSwap &&
            !swapping &&
            to == uniswapV2Pair
        ) {
            swapping = true;

            swap(contractTokenBalance);        

            swapping = false;
        }

        uint256 _totalFees;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to] || swapping) {
            _totalFees = 0;
        } else if (from == uniswapV2Pair) {
            _totalFees = buyFee;
        } else if (to == uniswapV2Pair) {
            _totalFees = sellFee;
        } else {
            _totalFees = walletToWalletTransferFee;
        }

        if (_totalFees > 0) {
            uint256 fees = (amount * _totalFees) / 100;
            amount = amount - fees;
            super._transfer(from, address(this), fees);
        }

        super._transfer(from, to, amount);
    }

    function setSwapTokensAtAmount(uint256 newAmount) external onlyOwner{
        require(newAmount > totalSupply() / 1e6, "SwapTokensAtAmount must be greater than 0.0001% of total supply");
        swapTokensAtAmount = newAmount;
        emit SwapTokensAtAmountUpdated(swapTokensAtAmount);
    }

    function swap(uint256 tokenAmount) private {
        uint256 initialBalance = address(this).balance;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp);

        uint256 newBalance = address(this).balance - initialBalance;

        bool success = payable(marketingWallet).send(newBalance);
        if (success) {
            emit SwapAndSend(tokenAmount, newBalance);
        }
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"buyFee","type":"uint256"}],"name":"BuyFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"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":false,"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"SellFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"valueReceived","type":"uint256"}],"name":"SwapAndSend","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"SwapTokensAtAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"TradingEnabled","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":false,"internalType":"uint256","name":"walletToWalletTransferFee","type":"uint256"}],"name":"WalletToWalletTransferFeeUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"enableTrading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"uint256","name":"_buyFee","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setEnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_walletToWalletTransferFee","type":"uint256"}],"name":"setWalletToWalletTransferFee","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"walletToWalletTransferFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b506040518060400160405280600681526020017f554e4950414400000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f554e50000000000000000000000000000000000000000000000000000000000081525081600390816200008f919062000d24565b508060049081620000a1919062000d24565b5050506000620000b66200066460201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000731891211c0695a3f51785744efe8c76321183282490506200017f816200066c60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050600081905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000211919062000e75565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000279573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029f919062000e75565b6040518363ffffffff1660e01b8152600401620002be92919062000eb8565b6020604051808303816000875af1158015620002de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000304919062000e75565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003dd30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200084060201b60201c565b6003600a819055506003600b819055506003600c8190555073bc927df095fa9f60341a46bad50cb2da61a901ac600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960006200046062000a1160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016009600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200057f6a52b7d2dcc80cd2e400000062000a3b60201b60201c565b620005af6200059362000a1160201b60201c565b620005a362000a4560201b60201c565b62000a4f60201b60201c565b620005bf62000a1160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200061e62000a4560201b60201c565b6040516200062d919062000ef6565b60405180910390a36113886200064862000a4560201b60201c565b62000654919062000f71565b600d81905550505050506200122f565b600033905090565b6200067c6200066460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200070e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000705906200100a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000780576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200077790620010a2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620008b2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008a9906200113a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000924576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200091b90620011d2565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000a04919062000ef6565b60405180910390a3505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8060028190555050565b6000600254905090565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000a9f9190620011f4565b925050819055505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000b2c57607f821691505b60208210810362000b425762000b4162000ae4565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000bac7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b6d565b62000bb8868362000b6d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000c0562000bff62000bf98462000bd0565b62000bda565b62000bd0565b9050919050565b6000819050919050565b62000c218362000be4565b62000c3962000c308262000c0c565b84845462000b7a565b825550505050565b600090565b62000c5062000c41565b62000c5d81848462000c16565b505050565b5b8181101562000c855762000c7960008262000c46565b60018101905062000c63565b5050565b601f82111562000cd45762000c9e8162000b48565b62000ca98462000b5d565b8101602085101562000cb9578190505b62000cd162000cc88562000b5d565b83018262000c62565b50505b505050565b600082821c905092915050565b600062000cf96000198460080262000cd9565b1980831691505092915050565b600062000d14838362000ce6565b9150826002028217905092915050565b62000d2f8262000aaa565b67ffffffffffffffff81111562000d4b5762000d4a62000ab5565b5b62000d57825462000b13565b62000d6482828562000c89565b600060209050601f83116001811462000d9c576000841562000d87578287015190505b62000d93858262000d06565b86555062000e03565b601f19841662000dac8662000b48565b60005b8281101562000dd65784890151825560018201915060208501945060208101905062000daf565b8683101562000df6578489015162000df2601f89168262000ce6565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000e3d8262000e10565b9050919050565b62000e4f8162000e30565b811462000e5b57600080fd5b50565b60008151905062000e6f8162000e44565b92915050565b60006020828403121562000e8e5762000e8d62000e0b565b5b600062000e9e8482850162000e5e565b91505092915050565b62000eb28162000e30565b82525050565b600060408201905062000ecf600083018562000ea7565b62000ede602083018462000ea7565b9392505050565b62000ef08162000bd0565b82525050565b600060208201905062000f0d600083018462000ee5565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000f7e8262000bd0565b915062000f8b8362000bd0565b92508262000f9e5762000f9d62000f13565b5b828204905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000ff260208362000fa9565b915062000fff8262000fba565b602082019050919050565b60006020820190508181036000830152620010258162000fe3565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006200108a60268362000fa9565b915062001097826200102c565b604082019050919050565b60006020820190508181036000830152620010bd816200107b565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006200112260248362000fa9565b91506200112f82620010c4565b604082019050919050565b60006020820190508181036000830152620011558162001113565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000620011ba60228362000fa9565b9150620011c7826200115c565b604082019050919050565b60006020820190508181036000830152620011ed81620011ab565b9050919050565b6000620012018262000bd0565b91506200120e8362000bd0565b925082820190508082111562001229576200122862000f42565b5b92915050565b613d28806200123f6000396000f3fe6080604052600436106101dc5760003560e01c8063715018a611610102578063a9059cbb11610095578063dd62ed3e11610064578063dd62ed3e146106bb578063e2f45605146106f8578063f2fde38b14610723578063f9d0831a1461074c576101e3565b8063a9059cbb14610603578063afa4f3b214610640578063bb85c6d114610669578063c024666814610692576101e3565b80638da5cb5b116100d15780638da5cb5b1461054757806395d89b4114610572578063a457c2d71461059d578063a6f14f6c146105da576101e3565b8063715018a6146104b157806375f0a874146104c85780638a8c523c146104f35780638b4cee081461051e576101e3565b8063313ce5671161017a5780634fbee193116101495780634fbee193146103f557806364afd18b14610432578063702509fd1461044957806370a0823114610474576101e3565b8063313ce567146103375780633950935114610362578063470624021461039f57806349bd5a5e146103ca576101e3565b80631694505e116101b65780631694505e1461027957806318160ddd146102a457806323b872dd146102cf5780632b14ca561461030c576101e3565b806306fdde03146101e8578063095ea7b3146102135780630cc835a314610250576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd610775565b60405161020a9190612a37565b60405180910390f35b34801561021f57600080fd5b5061023a60048036038101906102359190612af2565b610807565b6040516102479190612b4d565b60405180910390f35b34801561025c57600080fd5b5061027760048036038101906102729190612b68565b610825565b005b34801561028557600080fd5b5061028e610943565b60405161029b9190612bf4565b60405180910390f35b3480156102b057600080fd5b506102b9610969565b6040516102c69190612c1e565b60405180910390f35b3480156102db57600080fd5b506102f660048036038101906102f19190612c39565b610973565b6040516103039190612b4d565b60405180910390f35b34801561031857600080fd5b50610321610a92565b60405161032e9190612c1e565b60405180910390f35b34801561034357600080fd5b5061034c610a98565b6040516103599190612ca8565b60405180910390f35b34801561036e57600080fd5b5061038960048036038101906103849190612af2565b610aa1565b6040516103969190612b4d565b60405180910390f35b3480156103ab57600080fd5b506103b4610b4d565b6040516103c19190612c1e565b60405180910390f35b3480156103d657600080fd5b506103df610b53565b6040516103ec9190612cd2565b60405180910390f35b34801561040157600080fd5b5061041c60048036038101906104179190612ced565b610b79565b6040516104299190612b4d565b60405180910390f35b34801561043e57600080fd5b50610447610bcf565b005b34801561045557600080fd5b5061045e610d11565b60405161046b9190612c1e565b60405180910390f35b34801561048057600080fd5b5061049b60048036038101906104969190612ced565b610d17565b6040516104a89190612c1e565b60405180910390f35b3480156104bd57600080fd5b506104c6610d5f565b005b3480156104d457600080fd5b506104dd610eb7565b6040516104ea9190612cd2565b60405180910390f35b3480156104ff57600080fd5b50610508610edd565b6040516105159190612b4d565b60405180910390f35b34801561052a57600080fd5b5061054560048036038101906105409190612b68565b610ef0565b005b34801561055357600080fd5b5061055c61100e565b6040516105699190612cd2565b60405180910390f35b34801561057e57600080fd5b50610587611038565b6040516105949190612a37565b60405180910390f35b3480156105a957600080fd5b506105c460048036038101906105bf9190612af2565b6110ca565b6040516105d19190612b4d565b60405180910390f35b3480156105e657600080fd5b5061060160048036038101906105fc9190612b68565b6111b5565b005b34801561060f57600080fd5b5061062a60048036038101906106259190612af2565b6112d3565b6040516106379190612b4d565b60405180910390f35b34801561064c57600080fd5b5061066760048036038101906106629190612b68565b6112f1565b005b34801561067557600080fd5b50610690600480360381019061068b9190612ced565b611422565b005b34801561069e57600080fd5b506106b960048036038101906106b49190612d46565b611655565b005b3480156106c757600080fd5b506106e260048036038101906106dd9190612d86565b611827565b6040516106ef9190612c1e565b60405180910390f35b34801561070457600080fd5b5061070d6118ae565b60405161071a9190612c1e565b60405180910390f35b34801561072f57600080fd5b5061074a60048036038101906107459190612ced565b6118b4565b005b34801561075857600080fd5b50610773600480360381019061076e9190612ced565b611a7a565b005b60606003805461078490612df5565b80601f01602080910402602001604051908101604052809291908181526020018280546107b090612df5565b80156107fd5780601f106107d2576101008083540402835291602001916107fd565b820191906000526020600020905b8154815290600101906020018083116107e057829003601f168201915b5050505050905090565b600061081b610814611d6d565b8484611d75565b6001905092915050565b61082d611d6d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b390612e72565b60405180910390fd5b6009811115610900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f790612ede565b60405180910390fd5b80600a819055507f7c1445c98b278c9970d007fca6048704bcb25af7cc4a04eb56565d9a9f149ca3600a546040516109389190612c1e565b60405180910390a150565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109bf611d6d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a7b5782811015610a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5d90612f70565b60405180910390fd5b610a7a85610a72611d6d565b858403611d75565b5b610a86858585611f3e565b60019150509392505050565b600b5481565b60006012905090565b6000610b43610aae611d6d565b848460016000610abc611d6d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b3e9190612fbf565b611d75565b6001905092915050565b600a5481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610bd7611d6d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5d90612e72565b60405180910390fd5b60001515600e60019054906101000a900460ff16151514610cbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb39061303f565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055507fbeda7dca7bc1b3e80b871f4818129ec73b771581f803d553aeb3484098e5f65a6001604051610d079190612b4d565b60405180910390a1565b600c5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d67611d6d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ded90612e72565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e60019054906101000a900460ff1681565b610ef8611d6d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7e90612e72565b60405180910390fd5b6009811115610fcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc2906130ab565b60405180910390fd5b80600b819055507f495ee53ee22006979ebc689a00ed737d7c13b6419142f82dcaea4ed95ac1e780600b546040516110039190612c1e565b60405180910390a150565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461104790612df5565b80601f016020809104026020016040519081016040528092919081815260200182805461107390612df5565b80156110c05780601f10611095576101008083540402835291602001916110c0565b820191906000526020600020905b8154815290600101906020018083116110a357829003601f168201915b5050505050905090565b600080600160006110d9611d6d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611196576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118d9061313d565b60405180910390fd5b6111aa6111a1611d6d565b85858403611d75565b600191505092915050565b6111bd611d6d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461124c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124390612e72565b60405180910390fd5b6009811115611290576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611287906131cf565b60405180910390fd5b80600c819055507f55a18e0066d4ca4f044c3c7bff35c003f6b02ad8a7c71b6d33ae71d262833251600c546040516112c89190612c1e565b60405180910390a150565b60006112e76112e0611d6d565b8484611f3e565b6001905092915050565b6112f9611d6d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137f90612e72565b60405180910390fd5b620f4240611394610969565b61139e919061321e565b81116113df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d6906132c1565b60405180910390fd5b80600d819055507f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b145600d546040516114179190612c1e565b60405180910390a150565b61142a611d6d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b090612e72565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611549576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154090613353565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115af906133e5565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161164a9190612cd2565b60405180910390a150565b61165d611d6d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e390612e72565b60405180910390fd5b801515600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615150361177e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177590613477565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161181b9190612b4d565b60405180910390a25050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600d5481565b6118bc611d6d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461194b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194290612e72565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b190613509565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611a82611d6d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0890612e72565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b769061359b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c655760003373ffffffffffffffffffffffffffffffffffffffff1647604051611bd9906135ec565b60006040518083038185875af1925050503d8060008114611c16576040519150601f19603f3d011682016040523d82523d6000602084013e611c1b565b606091505b5050905080611c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c569061364d565b60405180910390fd5b50611d6a565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611ca59190612cd2565b602060405180830381865afa158015611cc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce69190613682565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611d239291906136af565b6020604051808303816000875af1158015611d42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d6691906136ed565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611de4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddb9061378c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4a9061381e565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f319190612c1e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa4906138b0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361201c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201390613942565b60405180910390fd5b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120c05750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561211557600e60019054906101000a900460ff16612114576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210b906139ae565b60405180910390fd5b5b6000810361212e5761212983836000612455565b612450565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561218f575061218c83610d17565b81145b156121a4576001816121a191906139ce565b90505b60006121af30610d17565b90506000600d5482101590508080156121d55750600e60009054906101000a900460ff16155b801561222e5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15612273576001600e60006101000a81548160ff021916908315150217905550612257826126d4565b6000600e60006101000a81548160ff0219169083151502179055505b6000600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806123165750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061232d5750600e60009054906101000a900460ff165b1561233b5760009050612401565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361239a57600a549050612400565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036123f957600b5490506123ff565b600c5490505b5b5b60008111156124415760006064828661241a9190613a02565b612424919061321e565b9050808561243291906139ce565b945061243f873083612455565b505b61244c868686612455565b5050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036124c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124bb906138b0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612533576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252a90613942565b60405180910390fd5b61253e83838361299d565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156125c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125bb90613ab6565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546126579190612fbf565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126bb9190612c1e565b60405180910390a36126ce8484846129a2565b50505050565b60004790506000600267ffffffffffffffff8111156126f6576126f5613ad6565b5b6040519080825280602002602001820160405280156127245781602001602082028036833780820191505090505b509050308160008151811061273c5761273b613b05565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128079190613b49565b8160018151811061281b5761281a613b05565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b81526004016128b9959493929190613c6f565b600060405180830381600087803b1580156128d357600080fd5b505af11580156128e7573d6000803e3d6000fd5b50505050600082476128f991906139ce565b90506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f1935050505090508015612996577f1309193d68e1a43bd32da5f04e07935cc194c20b2bd1813be5c6898b99dac4be858360405161298d929190613cc9565b60405180910390a15b5050505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129e15780820151818401526020810190506129c6565b60008484015250505050565b6000601f19601f8301169050919050565b6000612a09826129a7565b612a1381856129b2565b9350612a238185602086016129c3565b612a2c816129ed565b840191505092915050565b60006020820190508181036000830152612a5181846129fe565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a8982612a5e565b9050919050565b612a9981612a7e565b8114612aa457600080fd5b50565b600081359050612ab681612a90565b92915050565b6000819050919050565b612acf81612abc565b8114612ada57600080fd5b50565b600081359050612aec81612ac6565b92915050565b60008060408385031215612b0957612b08612a59565b5b6000612b1785828601612aa7565b9250506020612b2885828601612add565b9150509250929050565b60008115159050919050565b612b4781612b32565b82525050565b6000602082019050612b626000830184612b3e565b92915050565b600060208284031215612b7e57612b7d612a59565b5b6000612b8c84828501612add565b91505092915050565b6000819050919050565b6000612bba612bb5612bb084612a5e565b612b95565b612a5e565b9050919050565b6000612bcc82612b9f565b9050919050565b6000612bde82612bc1565b9050919050565b612bee81612bd3565b82525050565b6000602082019050612c096000830184612be5565b92915050565b612c1881612abc565b82525050565b6000602082019050612c336000830184612c0f565b92915050565b600080600060608486031215612c5257612c51612a59565b5b6000612c6086828701612aa7565b9350506020612c7186828701612aa7565b9250506040612c8286828701612add565b9150509250925092565b600060ff82169050919050565b612ca281612c8c565b82525050565b6000602082019050612cbd6000830184612c99565b92915050565b612ccc81612a7e565b82525050565b6000602082019050612ce76000830184612cc3565b92915050565b600060208284031215612d0357612d02612a59565b5b6000612d1184828501612aa7565b91505092915050565b612d2381612b32565b8114612d2e57600080fd5b50565b600081359050612d4081612d1a565b92915050565b60008060408385031215612d5d57612d5c612a59565b5b6000612d6b85828601612aa7565b9250506020612d7c85828601612d31565b9150509250929050565b60008060408385031215612d9d57612d9c612a59565b5b6000612dab85828601612aa7565b9250506020612dbc85828601612aa7565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612e0d57607f821691505b602082108103612e2057612e1f612dc6565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612e5c6020836129b2565b9150612e6782612e26565b602082019050919050565b60006020820190508181036000830152612e8b81612e4f565b9050919050565b7f427579204665652063616e6e6f74206265206d6f7265207468616e2039250000600082015250565b6000612ec8601e836129b2565b9150612ed382612e92565b602082019050919050565b60006020820190508181036000830152612ef781612ebb565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612f5a6028836129b2565b9150612f6582612efe565b604082019050919050565b60006020820190508181036000830152612f8981612f4d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612fca82612abc565b9150612fd583612abc565b9250828201905080821115612fed57612fec612f90565b5b92915050565b7f54726164696e6720697320616c726561647920656e61626c6564000000000000600082015250565b6000613029601a836129b2565b915061303482612ff3565b602082019050919050565b600060208201905081810360008301526130588161301c565b9050919050565b7f53656c6c204665652063616e6e6f74206265206d6f7265207468616e20392500600082015250565b6000613095601f836129b2565b91506130a08261305f565b602082019050919050565b600060208201905081810360008301526130c481613088565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006131276025836129b2565b9150613132826130cb565b604082019050919050565b600060208201905081810360008301526131568161311a565b9050919050565b7f57616c6c657420746f2057616c6c6574205472616e736665722046656520636160008201527f6e6e6f74206265206d6f7265207468616e203925000000000000000000000000602082015250565b60006131b96034836129b2565b91506131c48261315d565b604082019050919050565b600060208201905081810360008301526131e8816131ac565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061322982612abc565b915061323483612abc565b925082613244576132436131ef565b5b828204905092915050565b7f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460008201527f6572207468616e20302e3030303125206f6620746f74616c20737570706c7900602082015250565b60006132ab603f836129b2565b91506132b68261324f565b604082019050919050565b600060208201905081810360008301526132da8161329e565b9050919050565b7f4d61726b6574696e672077616c6c657420697320616c7265616479207468617460008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b600061333d6028836129b2565b9150613348826132e1565b604082019050919050565b6000602082019050818103600083015261336c81613330565b9050919050565b7f4d61726b6574696e672077616c6c65742063616e6e6f7420626520746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b60006133cf602b836129b2565b91506133da82613373565b604082019050919050565b600060208201905081810360008301526133fe816133c2565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000613461602a836129b2565b915061346c82613405565b604082019050919050565b6000602082019050818103600083015261349081613454565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006134f36026836129b2565b91506134fe82613497565b604082019050919050565b60006020820190508181036000830152613522816134e6565b9050919050565b7f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160008201527f6c616e6365206f6620697473206f776e20746f6b656e73000000000000000000602082015250565b60006135856037836129b2565b915061359082613529565b604082019050919050565b600060208201905081810360008301526135b481613578565b9050919050565b600081905092915050565b50565b60006135d66000836135bb565b91506135e1826135c6565b600082019050919050565b60006135f7826135c9565b9150819050919050565b7f436c61696d206661696c65640000000000000000000000000000000000000000600082015250565b6000613637600c836129b2565b915061364282613601565b602082019050919050565b600060208201905081810360008301526136668161362a565b9050919050565b60008151905061367c81612ac6565b92915050565b60006020828403121561369857613697612a59565b5b60006136a68482850161366d565b91505092915050565b60006040820190506136c46000830185612cc3565b6136d16020830184612c0f565b9392505050565b6000815190506136e781612d1a565b92915050565b60006020828403121561370357613702612a59565b5b6000613711848285016136d8565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006137766024836129b2565b91506137818261371a565b604082019050919050565b600060208201905081810360008301526137a581613769565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006138086022836129b2565b9150613813826137ac565b604082019050919050565b60006020820190508181036000830152613837816137fb565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061389a6025836129b2565b91506138a58261383e565b604082019050919050565b600060208201905081810360008301526138c98161388d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061392c6023836129b2565b9150613937826138d0565b604082019050919050565b6000602082019050818103600083015261395b8161391f565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656400000000000000000000600082015250565b60006139986016836129b2565b91506139a382613962565b602082019050919050565b600060208201905081810360008301526139c78161398b565b9050919050565b60006139d982612abc565b91506139e483612abc565b92508282039050818111156139fc576139fb612f90565b5b92915050565b6000613a0d82612abc565b9150613a1883612abc565b9250828202613a2681612abc565b91508282048414831517613a3d57613a3c612f90565b5b5092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613aa06026836129b2565b9150613aab82613a44565b604082019050919050565b60006020820190508181036000830152613acf81613a93565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613b4381612a90565b92915050565b600060208284031215613b5f57613b5e612a59565b5b6000613b6d84828501613b34565b91505092915050565b6000819050919050565b6000613b9b613b96613b9184613b76565b612b95565b612abc565b9050919050565b613bab81613b80565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613be681612a7e565b82525050565b6000613bf88383613bdd565b60208301905092915050565b6000602082019050919050565b6000613c1c82613bb1565b613c268185613bbc565b9350613c3183613bcd565b8060005b83811015613c62578151613c498882613bec565b9750613c5483613c04565b925050600181019050613c35565b5085935050505092915050565b600060a082019050613c846000830188612c0f565b613c916020830187613ba2565b8181036040830152613ca38186613c11565b9050613cb26060830185612cc3565b613cbf6080830184612c0f565b9695505050505050565b6000604082019050613cde6000830185612c0f565b613ceb6020830184612c0f565b939250505056fea2646970667358221220bb82f9218bfa494ba521837eb39815e1413c4113175a10a56a11b9e00d46eace64736f6c63430008140033

Deployed Bytecode

0x6080604052600436106101dc5760003560e01c8063715018a611610102578063a9059cbb11610095578063dd62ed3e11610064578063dd62ed3e146106bb578063e2f45605146106f8578063f2fde38b14610723578063f9d0831a1461074c576101e3565b8063a9059cbb14610603578063afa4f3b214610640578063bb85c6d114610669578063c024666814610692576101e3565b80638da5cb5b116100d15780638da5cb5b1461054757806395d89b4114610572578063a457c2d71461059d578063a6f14f6c146105da576101e3565b8063715018a6146104b157806375f0a874146104c85780638a8c523c146104f35780638b4cee081461051e576101e3565b8063313ce5671161017a5780634fbee193116101495780634fbee193146103f557806364afd18b14610432578063702509fd1461044957806370a0823114610474576101e3565b8063313ce567146103375780633950935114610362578063470624021461039f57806349bd5a5e146103ca576101e3565b80631694505e116101b65780631694505e1461027957806318160ddd146102a457806323b872dd146102cf5780632b14ca561461030c576101e3565b806306fdde03146101e8578063095ea7b3146102135780630cc835a314610250576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd610775565b60405161020a9190612a37565b60405180910390f35b34801561021f57600080fd5b5061023a60048036038101906102359190612af2565b610807565b6040516102479190612b4d565b60405180910390f35b34801561025c57600080fd5b5061027760048036038101906102729190612b68565b610825565b005b34801561028557600080fd5b5061028e610943565b60405161029b9190612bf4565b60405180910390f35b3480156102b057600080fd5b506102b9610969565b6040516102c69190612c1e565b60405180910390f35b3480156102db57600080fd5b506102f660048036038101906102f19190612c39565b610973565b6040516103039190612b4d565b60405180910390f35b34801561031857600080fd5b50610321610a92565b60405161032e9190612c1e565b60405180910390f35b34801561034357600080fd5b5061034c610a98565b6040516103599190612ca8565b60405180910390f35b34801561036e57600080fd5b5061038960048036038101906103849190612af2565b610aa1565b6040516103969190612b4d565b60405180910390f35b3480156103ab57600080fd5b506103b4610b4d565b6040516103c19190612c1e565b60405180910390f35b3480156103d657600080fd5b506103df610b53565b6040516103ec9190612cd2565b60405180910390f35b34801561040157600080fd5b5061041c60048036038101906104179190612ced565b610b79565b6040516104299190612b4d565b60405180910390f35b34801561043e57600080fd5b50610447610bcf565b005b34801561045557600080fd5b5061045e610d11565b60405161046b9190612c1e565b60405180910390f35b34801561048057600080fd5b5061049b60048036038101906104969190612ced565b610d17565b6040516104a89190612c1e565b60405180910390f35b3480156104bd57600080fd5b506104c6610d5f565b005b3480156104d457600080fd5b506104dd610eb7565b6040516104ea9190612cd2565b60405180910390f35b3480156104ff57600080fd5b50610508610edd565b6040516105159190612b4d565b60405180910390f35b34801561052a57600080fd5b5061054560048036038101906105409190612b68565b610ef0565b005b34801561055357600080fd5b5061055c61100e565b6040516105699190612cd2565b60405180910390f35b34801561057e57600080fd5b50610587611038565b6040516105949190612a37565b60405180910390f35b3480156105a957600080fd5b506105c460048036038101906105bf9190612af2565b6110ca565b6040516105d19190612b4d565b60405180910390f35b3480156105e657600080fd5b5061060160048036038101906105fc9190612b68565b6111b5565b005b34801561060f57600080fd5b5061062a60048036038101906106259190612af2565b6112d3565b6040516106379190612b4d565b60405180910390f35b34801561064c57600080fd5b5061066760048036038101906106629190612b68565b6112f1565b005b34801561067557600080fd5b50610690600480360381019061068b9190612ced565b611422565b005b34801561069e57600080fd5b506106b960048036038101906106b49190612d46565b611655565b005b3480156106c757600080fd5b506106e260048036038101906106dd9190612d86565b611827565b6040516106ef9190612c1e565b60405180910390f35b34801561070457600080fd5b5061070d6118ae565b60405161071a9190612c1e565b60405180910390f35b34801561072f57600080fd5b5061074a60048036038101906107459190612ced565b6118b4565b005b34801561075857600080fd5b50610773600480360381019061076e9190612ced565b611a7a565b005b60606003805461078490612df5565b80601f01602080910402602001604051908101604052809291908181526020018280546107b090612df5565b80156107fd5780601f106107d2576101008083540402835291602001916107fd565b820191906000526020600020905b8154815290600101906020018083116107e057829003601f168201915b5050505050905090565b600061081b610814611d6d565b8484611d75565b6001905092915050565b61082d611d6d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b390612e72565b60405180910390fd5b6009811115610900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f790612ede565b60405180910390fd5b80600a819055507f7c1445c98b278c9970d007fca6048704bcb25af7cc4a04eb56565d9a9f149ca3600a546040516109389190612c1e565b60405180910390a150565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109bf611d6d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a7b5782811015610a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5d90612f70565b60405180910390fd5b610a7a85610a72611d6d565b858403611d75565b5b610a86858585611f3e565b60019150509392505050565b600b5481565b60006012905090565b6000610b43610aae611d6d565b848460016000610abc611d6d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b3e9190612fbf565b611d75565b6001905092915050565b600a5481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610bd7611d6d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5d90612e72565b60405180910390fd5b60001515600e60019054906101000a900460ff16151514610cbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb39061303f565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055507fbeda7dca7bc1b3e80b871f4818129ec73b771581f803d553aeb3484098e5f65a6001604051610d079190612b4d565b60405180910390a1565b600c5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d67611d6d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ded90612e72565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e60019054906101000a900460ff1681565b610ef8611d6d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7e90612e72565b60405180910390fd5b6009811115610fcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc2906130ab565b60405180910390fd5b80600b819055507f495ee53ee22006979ebc689a00ed737d7c13b6419142f82dcaea4ed95ac1e780600b546040516110039190612c1e565b60405180910390a150565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461104790612df5565b80601f016020809104026020016040519081016040528092919081815260200182805461107390612df5565b80156110c05780601f10611095576101008083540402835291602001916110c0565b820191906000526020600020905b8154815290600101906020018083116110a357829003601f168201915b5050505050905090565b600080600160006110d9611d6d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611196576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118d9061313d565b60405180910390fd5b6111aa6111a1611d6d565b85858403611d75565b600191505092915050565b6111bd611d6d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461124c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124390612e72565b60405180910390fd5b6009811115611290576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611287906131cf565b60405180910390fd5b80600c819055507f55a18e0066d4ca4f044c3c7bff35c003f6b02ad8a7c71b6d33ae71d262833251600c546040516112c89190612c1e565b60405180910390a150565b60006112e76112e0611d6d565b8484611f3e565b6001905092915050565b6112f9611d6d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137f90612e72565b60405180910390fd5b620f4240611394610969565b61139e919061321e565b81116113df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d6906132c1565b60405180910390fd5b80600d819055507f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b145600d546040516114179190612c1e565b60405180910390a150565b61142a611d6d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b090612e72565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611549576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154090613353565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115af906133e5565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161164a9190612cd2565b60405180910390a150565b61165d611d6d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e390612e72565b60405180910390fd5b801515600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615150361177e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177590613477565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161181b9190612b4d565b60405180910390a25050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600d5481565b6118bc611d6d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461194b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194290612e72565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b190613509565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611a82611d6d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0890612e72565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b769061359b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c655760003373ffffffffffffffffffffffffffffffffffffffff1647604051611bd9906135ec565b60006040518083038185875af1925050503d8060008114611c16576040519150601f19603f3d011682016040523d82523d6000602084013e611c1b565b606091505b5050905080611c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c569061364d565b60405180910390fd5b50611d6a565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611ca59190612cd2565b602060405180830381865afa158015611cc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce69190613682565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611d239291906136af565b6020604051808303816000875af1158015611d42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d6691906136ed565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611de4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddb9061378c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4a9061381e565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f319190612c1e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa4906138b0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361201c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201390613942565b60405180910390fd5b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120c05750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561211557600e60019054906101000a900460ff16612114576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210b906139ae565b60405180910390fd5b5b6000810361212e5761212983836000612455565b612450565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561218f575061218c83610d17565b81145b156121a4576001816121a191906139ce565b90505b60006121af30610d17565b90506000600d5482101590508080156121d55750600e60009054906101000a900460ff16155b801561222e5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15612273576001600e60006101000a81548160ff021916908315150217905550612257826126d4565b6000600e60006101000a81548160ff0219169083151502179055505b6000600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806123165750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061232d5750600e60009054906101000a900460ff165b1561233b5760009050612401565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361239a57600a549050612400565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036123f957600b5490506123ff565b600c5490505b5b5b60008111156124415760006064828661241a9190613a02565b612424919061321e565b9050808561243291906139ce565b945061243f873083612455565b505b61244c868686612455565b5050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036124c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124bb906138b0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612533576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252a90613942565b60405180910390fd5b61253e83838361299d565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156125c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125bb90613ab6565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546126579190612fbf565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126bb9190612c1e565b60405180910390a36126ce8484846129a2565b50505050565b60004790506000600267ffffffffffffffff8111156126f6576126f5613ad6565b5b6040519080825280602002602001820160405280156127245781602001602082028036833780820191505090505b509050308160008151811061273c5761273b613b05565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128079190613b49565b8160018151811061281b5761281a613b05565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b81526004016128b9959493929190613c6f565b600060405180830381600087803b1580156128d357600080fd5b505af11580156128e7573d6000803e3d6000fd5b50505050600082476128f991906139ce565b90506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f1935050505090508015612996577f1309193d68e1a43bd32da5f04e07935cc194c20b2bd1813be5c6898b99dac4be858360405161298d929190613cc9565b60405180910390a15b5050505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129e15780820151818401526020810190506129c6565b60008484015250505050565b6000601f19601f8301169050919050565b6000612a09826129a7565b612a1381856129b2565b9350612a238185602086016129c3565b612a2c816129ed565b840191505092915050565b60006020820190508181036000830152612a5181846129fe565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a8982612a5e565b9050919050565b612a9981612a7e565b8114612aa457600080fd5b50565b600081359050612ab681612a90565b92915050565b6000819050919050565b612acf81612abc565b8114612ada57600080fd5b50565b600081359050612aec81612ac6565b92915050565b60008060408385031215612b0957612b08612a59565b5b6000612b1785828601612aa7565b9250506020612b2885828601612add565b9150509250929050565b60008115159050919050565b612b4781612b32565b82525050565b6000602082019050612b626000830184612b3e565b92915050565b600060208284031215612b7e57612b7d612a59565b5b6000612b8c84828501612add565b91505092915050565b6000819050919050565b6000612bba612bb5612bb084612a5e565b612b95565b612a5e565b9050919050565b6000612bcc82612b9f565b9050919050565b6000612bde82612bc1565b9050919050565b612bee81612bd3565b82525050565b6000602082019050612c096000830184612be5565b92915050565b612c1881612abc565b82525050565b6000602082019050612c336000830184612c0f565b92915050565b600080600060608486031215612c5257612c51612a59565b5b6000612c6086828701612aa7565b9350506020612c7186828701612aa7565b9250506040612c8286828701612add565b9150509250925092565b600060ff82169050919050565b612ca281612c8c565b82525050565b6000602082019050612cbd6000830184612c99565b92915050565b612ccc81612a7e565b82525050565b6000602082019050612ce76000830184612cc3565b92915050565b600060208284031215612d0357612d02612a59565b5b6000612d1184828501612aa7565b91505092915050565b612d2381612b32565b8114612d2e57600080fd5b50565b600081359050612d4081612d1a565b92915050565b60008060408385031215612d5d57612d5c612a59565b5b6000612d6b85828601612aa7565b9250506020612d7c85828601612d31565b9150509250929050565b60008060408385031215612d9d57612d9c612a59565b5b6000612dab85828601612aa7565b9250506020612dbc85828601612aa7565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612e0d57607f821691505b602082108103612e2057612e1f612dc6565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612e5c6020836129b2565b9150612e6782612e26565b602082019050919050565b60006020820190508181036000830152612e8b81612e4f565b9050919050565b7f427579204665652063616e6e6f74206265206d6f7265207468616e2039250000600082015250565b6000612ec8601e836129b2565b9150612ed382612e92565b602082019050919050565b60006020820190508181036000830152612ef781612ebb565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612f5a6028836129b2565b9150612f6582612efe565b604082019050919050565b60006020820190508181036000830152612f8981612f4d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612fca82612abc565b9150612fd583612abc565b9250828201905080821115612fed57612fec612f90565b5b92915050565b7f54726164696e6720697320616c726561647920656e61626c6564000000000000600082015250565b6000613029601a836129b2565b915061303482612ff3565b602082019050919050565b600060208201905081810360008301526130588161301c565b9050919050565b7f53656c6c204665652063616e6e6f74206265206d6f7265207468616e20392500600082015250565b6000613095601f836129b2565b91506130a08261305f565b602082019050919050565b600060208201905081810360008301526130c481613088565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006131276025836129b2565b9150613132826130cb565b604082019050919050565b600060208201905081810360008301526131568161311a565b9050919050565b7f57616c6c657420746f2057616c6c6574205472616e736665722046656520636160008201527f6e6e6f74206265206d6f7265207468616e203925000000000000000000000000602082015250565b60006131b96034836129b2565b91506131c48261315d565b604082019050919050565b600060208201905081810360008301526131e8816131ac565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061322982612abc565b915061323483612abc565b925082613244576132436131ef565b5b828204905092915050565b7f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460008201527f6572207468616e20302e3030303125206f6620746f74616c20737570706c7900602082015250565b60006132ab603f836129b2565b91506132b68261324f565b604082019050919050565b600060208201905081810360008301526132da8161329e565b9050919050565b7f4d61726b6574696e672077616c6c657420697320616c7265616479207468617460008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b600061333d6028836129b2565b9150613348826132e1565b604082019050919050565b6000602082019050818103600083015261336c81613330565b9050919050565b7f4d61726b6574696e672077616c6c65742063616e6e6f7420626520746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b60006133cf602b836129b2565b91506133da82613373565b604082019050919050565b600060208201905081810360008301526133fe816133c2565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000613461602a836129b2565b915061346c82613405565b604082019050919050565b6000602082019050818103600083015261349081613454565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006134f36026836129b2565b91506134fe82613497565b604082019050919050565b60006020820190508181036000830152613522816134e6565b9050919050565b7f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160008201527f6c616e6365206f6620697473206f776e20746f6b656e73000000000000000000602082015250565b60006135856037836129b2565b915061359082613529565b604082019050919050565b600060208201905081810360008301526135b481613578565b9050919050565b600081905092915050565b50565b60006135d66000836135bb565b91506135e1826135c6565b600082019050919050565b60006135f7826135c9565b9150819050919050565b7f436c61696d206661696c65640000000000000000000000000000000000000000600082015250565b6000613637600c836129b2565b915061364282613601565b602082019050919050565b600060208201905081810360008301526136668161362a565b9050919050565b60008151905061367c81612ac6565b92915050565b60006020828403121561369857613697612a59565b5b60006136a68482850161366d565b91505092915050565b60006040820190506136c46000830185612cc3565b6136d16020830184612c0f565b9392505050565b6000815190506136e781612d1a565b92915050565b60006020828403121561370357613702612a59565b5b6000613711848285016136d8565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006137766024836129b2565b91506137818261371a565b604082019050919050565b600060208201905081810360008301526137a581613769565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006138086022836129b2565b9150613813826137ac565b604082019050919050565b60006020820190508181036000830152613837816137fb565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061389a6025836129b2565b91506138a58261383e565b604082019050919050565b600060208201905081810360008301526138c98161388d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061392c6023836129b2565b9150613937826138d0565b604082019050919050565b6000602082019050818103600083015261395b8161391f565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656400000000000000000000600082015250565b60006139986016836129b2565b91506139a382613962565b602082019050919050565b600060208201905081810360008301526139c78161398b565b9050919050565b60006139d982612abc565b91506139e483612abc565b92508282039050818111156139fc576139fb612f90565b5b92915050565b6000613a0d82612abc565b9150613a1883612abc565b9250828202613a2681612abc565b91508282048414831517613a3d57613a3c612f90565b5b5092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613aa06026836129b2565b9150613aab82613a44565b604082019050919050565b60006020820190508181036000830152613acf81613a93565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613b4381612a90565b92915050565b600060208284031215613b5f57613b5e612a59565b5b6000613b6d84828501613b34565b91505092915050565b6000819050919050565b6000613b9b613b96613b9184613b76565b612b95565b612abc565b9050919050565b613bab81613b80565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613be681612a7e565b82525050565b6000613bf88383613bdd565b60208301905092915050565b6000602082019050919050565b6000613c1c82613bb1565b613c268185613bbc565b9350613c3183613bcd565b8060005b83811015613c62578151613c498882613bec565b9750613c5483613c04565b925050600181019050613c35565b5085935050505092915050565b600060a082019050613c846000830188612c0f565b613c916020830187613ba2565b8181036040830152613ca38186613c11565b9050613cb26060830185612cc3565b613cbf6080830184612c0f565b9695505050505050565b6000604082019050613cde6000830185612c0f565b613ceb6020830184612c0f565b939250505056fea2646970667358221220bb82f9218bfa494ba521837eb39815e1413c4113175a10a56a11b9e00d46eace64736f6c63430008140033

Deployed Bytecode Sourcemap

14520:7010:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10579:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11493:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17803:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14561:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10900:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11670:573;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14774:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10799:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12251:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14746:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14609:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17670:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16636:191;;;;;;;;;;;;;:::i;:::-;;14803:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11016:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9762:148;;;;;;;;;;;;;:::i;:::-;;14645:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14924:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18004:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9548:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10687:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12474:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18213:348;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11151:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20554:296;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18569:380;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17372:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11334:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14852:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9918:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16837:527;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10579:100;10633:13;10666:5;10659:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10579:100;:::o;11493:169::-;11576:4;11593:39;11602:12;:10;:12::i;:::-;11616:7;11625:6;11593:8;:39::i;:::-;11650:4;11643:11;;11493:169;;;;:::o;17803:193::-;9685:12;:10;:12::i;:::-;9675:22;;:6;;;;;;;;;;;:22;;;9667:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17888:1:::1;17877:7;:12;;17869:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;17944:7;17935:6;:16;;;;17967:21;17981:6;;17967:21;;;;;;:::i;:::-;;;;;;;;17803:193:::0;:::o;14561:41::-;;;;;;;;;;;;;:::o;10900:108::-;10961:7;10988:12;;10981:19;;10900:108;:::o;11670:573::-;11810:4;11827:24;11854:11;:19;11866:6;11854:19;;;;;;;;;;;;;;;:33;11874:12;:10;:12::i;:::-;11854:33;;;;;;;;;;;;;;;;11827:60;;11922:17;11902:16;:37;11898:265;;11984:6;11964:16;:26;;11956:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;12079:57;12088:6;12096:12;:10;:12::i;:::-;12129:6;12110:16;:25;12079:8;:57::i;:::-;11898:265;12175:36;12185:6;12193:9;12204:6;12175:9;:36::i;:::-;12231:4;12224:11;;;11670:573;;;;;:::o;14774:22::-;;;;:::o;10799:93::-;10857:5;10882:2;10875:9;;10799:93;:::o;12251:215::-;12339:4;12356:80;12365:12;:10;:12::i;:::-;12379:7;12425:10;12388:11;:25;12400:12;:10;:12::i;:::-;12388:25;;;;;;;;;;;;;;;:34;12414:7;12388:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;12356:8;:80::i;:::-;12454:4;12447:11;;12251:215;;;;:::o;14746:21::-;;;;:::o;14609:29::-;;;;;;;;;;;;;:::o;17670:125::-;17735:4;17759:19;:28;17779:7;17759:28;;;;;;;;;;;;;;;;;;;;;;;;;17752:35;;17670:125;;;:::o;16636:191::-;9685:12;:10;:12::i;:::-;9675:22;;:6;;;;;;;;;;;:22;;;9667:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16716:5:::1;16699:22;;:13;;;;;;;;;;;:22;;;16691:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;16779:4;16763:13;;:20;;;;;;;;;;;;;;;;;;16799;16814:4;16799:20;;;;;;:::i;:::-;;;;;;;;16636:191::o:0;14803:40::-;;;;:::o;11016:127::-;11090:7;11117:9;:18;11127:7;11117:18;;;;;;;;;;;;;;;;11110:25;;11016:127;;;:::o;9762:148::-;9685:12;:10;:12::i;:::-;9675:22;;:6;;;;;;;;;;;:22;;;9667:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9869:1:::1;9832:40;;9853:6;;;;;;;;;;;9832:40;;;;;;;;;;;;9900:1;9883:6;;:19;;;;;;;;;;;;;;;;;;9762:148::o:0;14645:30::-;;;;;;;;;;;;;:::o;14924:29::-;;;;;;;;;;;;;:::o;18004:201::-;9685:12;:10;:12::i;:::-;9675:22;;:6;;;;;;;;;;;:22;;;9667:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18092:1:::1;18080:8;:13;;18072:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;18150:8;18140:7;:18;;;;18174:23;18189:7;;18174:23;;;;;;:::i;:::-;;;;;;;;18004:201:::0;:::o;9548:79::-;9586:7;9613:6;;;;;;;;;;;9606:13;;9548:79;:::o;10687:104::-;10743:13;10776:7;10769:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10687:104;:::o;12474:413::-;12567:4;12584:24;12611:11;:25;12623:12;:10;:12::i;:::-;12611:25;;;;;;;;;;;;;;;:34;12637:7;12611:34;;;;;;;;;;;;;;;;12584:61;;12684:15;12664:16;:35;;12656:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;12777:67;12786:12;:10;:12::i;:::-;12800:7;12828:15;12809:16;:34;12777:8;:67::i;:::-;12875:4;12868:11;;;12474:413;;;;:::o;18213:348::-;9685:12;:10;:12::i;:::-;9675:22;;:6;;;;;;;;;;;:22;;;9667:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18355:1:::1;18325:26;:31;;18317:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;18452:26;18424:25;:54;;;;18494:59;18527:25;;18494:59;;;;;;:::i;:::-;;;;;;;;18213:348:::0;:::o;11151:175::-;11237:4;11254:42;11264:12;:10;:12::i;:::-;11278:9;11289:6;11254:9;:42::i;:::-;11314:4;11307:11;;11151:175;;;;:::o;20554:296::-;9685:12;:10;:12::i;:::-;9675:22;;:6;;;;;;;;;;;:22;;;9667:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20669:3:::1;20653:13;:11;:13::i;:::-;:19;;;;:::i;:::-;20641:9;:31;20633:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;20772:9;20751:18;:30;;;;20797:45;20823:18;;20797:45;;;;;;:::i;:::-;;;;;;;;20554:296:::0;:::o;18569:380::-;9685:12;:10;:12::i;:::-;9675:22;;:6;;;;;;;;;;;:22;;;9667:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18684:15:::1;;;;;;;;;;;18664:35;;:16;:35;;::::0;18656:88:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18791:1;18763:30;;:16;:30;;::::0;18755:86:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18870:16;18852:15;;:34;;;;;;;;;;;;;;;;;;18902:39;18925:15;;;;;;;;;;;18902:39;;;;;;:::i;:::-;;;;;;;;18569:380:::0;:::o;17372:290::-;9685:12;:10;:12::i;:::-;9675:22;;:6;;;;;;;;;;;:22;;;9667:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17498:8:::1;17466:40;;:19;:28;17486:7;17466:28;;;;;;;;;;;;;;;;;;;;;;;;;:40;;::::0;17458:94:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;17594:8;17563:19;:28;17583:7;17563:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;17636:7;17620:34;;;17645:8;17620:34;;;;;;:::i;:::-;;;;;;;;17372:290:::0;;:::o;11334:151::-;11423:7;11450:11;:18;11462:5;11450:18;;;;;;;;;;;;;;;:27;11469:7;11450:27;;;;;;;;;;;;;;;;11443:34;;11334:151;;;;:::o;14852:34::-;;;;:::o;9918:244::-;9685:12;:10;:12::i;:::-;9675:22;;:6;;;;;;;;;;;:22;;;9667:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10027:1:::1;10007:22;;:8;:22;;::::0;9999:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10117:8;10088:38;;10109:6;;;;;;;;;;;10088:38;;;;;;;;;;;;10146:8;10137:6;;:17;;;;;;;;;;;;;;;;;;9918:244:::0;:::o;16837:527::-;9685:12;:10;:12::i;:::-;9675:22;;:6;;;;;;;;;;;:22;;;9667:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16933:4:::1;16916:22;;:5;:22;;::::0;16908:90:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;17030:3;17013:21;;:5;:21;;::::0;17009:189:::1;;17052:12;17069:10;:15;;17092:21;17069:49;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17051:67;;;17141:7;17133:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;17180:7;;;17009:189;17208:17;17235:5;17208:33;;17252:15;17270:10;:20;;;17299:4;17270:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17252:53;;17316:10;:19;;;17336:10;17348:7;17316:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16897:467;;9745:1;16837:527:::0;:::o;8871:98::-;8924:7;8951:10;8944:17;;8871:98;:::o;13868:380::-;14021:1;14004:19;;:5;:19;;;13996:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14102:1;14083:21;;:7;:21;;;14075:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14186:6;14156:11;:18;14168:5;14156:18;;;;;;;;;;;;;;;:27;14175:7;14156:27;;;;;;;;;;;;;;;:36;;;;14224:7;14208:32;;14217:5;14208:32;;;14233:6;14208:32;;;;;;:::i;:::-;;;;;;;;13868:380;;;:::o;18961:1585::-;19074:1;19058:18;;:4;:18;;;19050:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19151:1;19137:16;;:2;:16;;;19129:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19210:19;:25;19230:4;19210:25;;;;;;;;;;;;;;;;;;;;;;;;;19209:26;:54;;;;;19240:19;:23;19260:2;19240:23;;;;;;;;;;;;;;;;;;;;;;;;;19239:24;19209:54;19206:134;;;19288:13;;;;;;;;;;;19280:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;19206:134;19366:1;19356:6;:11;19352:93;;19384:28;19400:4;19406:2;19410:1;19384:15;:28::i;:::-;19427:7;;19352:93;19462:19;:25;19482:4;19462:25;;;;;;;;;;;;;;;;;;;;;;;;;19461:26;:55;;;;;19501:15;19511:4;19501:9;:15::i;:::-;19491:6;:25;19461:55;19457:99;;;19543:1;19533:11;;;;;:::i;:::-;;;19457:99;19569:28;19600:24;19618:4;19600:9;:24::i;:::-;19569:55;;19637:12;19676:18;;19652:20;:42;;19637:57;;19711:7;:33;;;;;19736:8;;;;;;;;;;;19735:9;19711:33;:69;;;;;19767:13;;;;;;;;;;;19761:19;;:2;:19;;;19711:69;19707:211;;;19818:4;19807:8;;:15;;;;;;;;;;;;;;;;;;19839:26;19844:20;19839:4;:26::i;:::-;19901:5;19890:8;;:16;;;;;;;;;;;;;;;;;;19707:211;19930:18;19963:19;:25;19983:4;19963:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;19992:19;:23;20012:2;19992:23;;;;;;;;;;;;;;;;;;;;;;;;;19963:52;:64;;;;20019:8;;;;;;;;;;;19963:64;19959:339;;;20057:1;20044:14;;19959:339;;;20088:13;;;;;;;;;;;20080:21;;:4;:21;;;20076:222;;20131:6;;20118:19;;20076:222;;;20165:13;;;;;;;;;;;20159:19;;:2;:19;;;20155:143;;20208:7;;20195:20;;20155:143;;;20261:25;;20248:38;;20155:143;20076:222;19959:339;20327:1;20314:10;:14;20310:183;;;20345:12;20384:3;20370:10;20361:6;:19;;;;:::i;:::-;20360:27;;;;:::i;:::-;20345:42;;20420:4;20411:6;:13;;;;:::i;:::-;20402:22;;20439:42;20455:4;20469;20476;20439:15;:42::i;:::-;20330:163;20310:183;20505:33;20521:4;20527:2;20531:6;20505:15;:33::i;:::-;19039:1507;;;18961:1585;;;;:::o;12895:733::-;13053:1;13035:20;;:6;:20;;;13027:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;13137:1;13116:23;;:9;:23;;;13108:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13192:47;13213:6;13221:9;13232:6;13192:20;:47::i;:::-;13252:21;13276:9;:17;13286:6;13276:17;;;;;;;;;;;;;;;;13252:41;;13329:6;13312:13;:23;;13304:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;13450:6;13434:13;:22;13414:9;:17;13424:6;13414:17;;;;;;;;;;;;;;;:42;;;;13502:6;13478:9;:20;13488:9;13478:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;13543:9;13526:35;;13535:6;13526:35;;;13554:6;13526:35;;;;;;:::i;:::-;;;;;;;;13574:46;13594:6;13602:9;13613:6;13574:19;:46::i;:::-;13016:612;12895:733;;;:::o;20858:669::-;20912:22;20937:21;20912:46;;20971:21;21009:1;20995:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20971:40;;21040:4;21022;21027:1;21022:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;21066:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21056:4;21061:1;21056:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;21101:15;;;;;;;;;;;:66;;;21182:11;21208:1;21224:4;21251;21271:15;21101:186;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21300:18;21345:14;21321:21;:38;;;;:::i;:::-;21300:59;;21372:12;21395:15;;;;;;;;;;;21387:29;;:41;21417:10;21387:41;;;;;;;;;;;;;;;;;;;;;;;21372:56;;21443:7;21439:81;;;21472:36;21484:11;21497:10;21472:36;;;;;;;:::i;:::-;;;;;;;;21439:81;20901:626;;;;20858:669;:::o;14256:125::-;;;;:::o;14389:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:152::-;4203:9;4236:37;4267:5;4236:37;:::i;:::-;4223:50;;4127:152;;;:::o;4285:183::-;4398:63;4455:5;4398:63;:::i;:::-;4393:3;4386:76;4285:183;;:::o;4474:274::-;4593:4;4631:2;4620:9;4616:18;4608:26;;4644:97;4738:1;4727:9;4723:17;4714:6;4644:97;:::i;:::-;4474:274;;;;:::o;4754:118::-;4841:24;4859:5;4841:24;:::i;:::-;4836:3;4829:37;4754:118;;:::o;4878:222::-;4971:4;5009:2;4998:9;4994:18;4986:26;;5022:71;5090:1;5079:9;5075:17;5066:6;5022:71;:::i;:::-;4878:222;;;;:::o;5106:619::-;5183:6;5191;5199;5248:2;5236:9;5227:7;5223:23;5219:32;5216:119;;;5254:79;;:::i;:::-;5216:119;5374:1;5399:53;5444:7;5435:6;5424:9;5420:22;5399:53;:::i;:::-;5389:63;;5345:117;5501:2;5527:53;5572:7;5563:6;5552:9;5548:22;5527:53;:::i;:::-;5517:63;;5472:118;5629:2;5655:53;5700:7;5691:6;5680:9;5676:22;5655:53;:::i;:::-;5645:63;;5600:118;5106:619;;;;;:::o;5731:86::-;5766:7;5806:4;5799:5;5795:16;5784:27;;5731:86;;;:::o;5823:112::-;5906:22;5922:5;5906:22;:::i;:::-;5901:3;5894:35;5823:112;;:::o;5941:214::-;6030:4;6068:2;6057:9;6053:18;6045:26;;6081:67;6145:1;6134:9;6130:17;6121:6;6081:67;:::i;:::-;5941:214;;;;:::o;6161:118::-;6248:24;6266:5;6248:24;:::i;:::-;6243:3;6236:37;6161:118;;:::o;6285:222::-;6378:4;6416:2;6405:9;6401:18;6393:26;;6429:71;6497:1;6486:9;6482:17;6473:6;6429:71;:::i;:::-;6285:222;;;;:::o;6513:329::-;6572:6;6621:2;6609:9;6600:7;6596:23;6592:32;6589:119;;;6627:79;;:::i;:::-;6589:119;6747:1;6772:53;6817:7;6808:6;6797:9;6793:22;6772:53;:::i;:::-;6762:63;;6718:117;6513:329;;;;:::o;6848:116::-;6918:21;6933:5;6918:21;:::i;:::-;6911:5;6908:32;6898:60;;6954:1;6951;6944:12;6898:60;6848:116;:::o;6970:133::-;7013:5;7051:6;7038:20;7029:29;;7067:30;7091:5;7067:30;:::i;:::-;6970:133;;;;:::o;7109:468::-;7174:6;7182;7231:2;7219:9;7210:7;7206:23;7202:32;7199:119;;;7237:79;;:::i;:::-;7199:119;7357:1;7382:53;7427:7;7418:6;7407:9;7403:22;7382:53;:::i;:::-;7372:63;;7328:117;7484:2;7510:50;7552:7;7543:6;7532:9;7528:22;7510:50;:::i;:::-;7500:60;;7455:115;7109:468;;;;;:::o;7583:474::-;7651:6;7659;7708:2;7696:9;7687:7;7683:23;7679:32;7676:119;;;7714:79;;:::i;:::-;7676:119;7834:1;7859:53;7904:7;7895:6;7884:9;7880:22;7859:53;:::i;:::-;7849:63;;7805:117;7961:2;7987:53;8032:7;8023:6;8012:9;8008:22;7987:53;:::i;:::-;7977:63;;7932:118;7583:474;;;;;:::o;8063:180::-;8111:77;8108:1;8101:88;8208:4;8205:1;8198:15;8232:4;8229:1;8222:15;8249:320;8293:6;8330:1;8324:4;8320:12;8310:22;;8377:1;8371:4;8367:12;8398:18;8388:81;;8454:4;8446:6;8442:17;8432:27;;8388:81;8516:2;8508:6;8505:14;8485:18;8482:38;8479:84;;8535:18;;:::i;:::-;8479:84;8300:269;8249:320;;;:::o;8575:182::-;8715:34;8711:1;8703:6;8699:14;8692:58;8575:182;:::o;8763:366::-;8905:3;8926:67;8990:2;8985:3;8926:67;:::i;:::-;8919:74;;9002:93;9091:3;9002:93;:::i;:::-;9120:2;9115:3;9111:12;9104:19;;8763:366;;;:::o;9135:419::-;9301:4;9339:2;9328:9;9324:18;9316:26;;9388:9;9382:4;9378:20;9374:1;9363:9;9359:17;9352:47;9416:131;9542:4;9416:131;:::i;:::-;9408:139;;9135:419;;;:::o;9560:180::-;9700:32;9696:1;9688:6;9684:14;9677:56;9560:180;:::o;9746:366::-;9888:3;9909:67;9973:2;9968:3;9909:67;:::i;:::-;9902:74;;9985:93;10074:3;9985:93;:::i;:::-;10103:2;10098:3;10094:12;10087:19;;9746:366;;;:::o;10118:419::-;10284:4;10322:2;10311:9;10307:18;10299:26;;10371:9;10365:4;10361:20;10357:1;10346:9;10342:17;10335:47;10399:131;10525:4;10399:131;:::i;:::-;10391:139;;10118:419;;;:::o;10543:227::-;10683:34;10679:1;10671:6;10667:14;10660:58;10752:10;10747:2;10739:6;10735:15;10728:35;10543:227;:::o;10776:366::-;10918:3;10939:67;11003:2;10998:3;10939:67;:::i;:::-;10932:74;;11015:93;11104:3;11015:93;:::i;:::-;11133:2;11128:3;11124:12;11117:19;;10776:366;;;:::o;11148:419::-;11314:4;11352:2;11341:9;11337:18;11329:26;;11401:9;11395:4;11391:20;11387:1;11376:9;11372:17;11365:47;11429:131;11555:4;11429:131;:::i;:::-;11421:139;;11148:419;;;:::o;11573:180::-;11621:77;11618:1;11611:88;11718:4;11715:1;11708:15;11742:4;11739:1;11732:15;11759:191;11799:3;11818:20;11836:1;11818:20;:::i;:::-;11813:25;;11852:20;11870:1;11852:20;:::i;:::-;11847:25;;11895:1;11892;11888:9;11881:16;;11916:3;11913:1;11910:10;11907:36;;;11923:18;;:::i;:::-;11907:36;11759:191;;;;:::o;11956:176::-;12096:28;12092:1;12084:6;12080:14;12073:52;11956:176;:::o;12138:366::-;12280:3;12301:67;12365:2;12360:3;12301:67;:::i;:::-;12294:74;;12377:93;12466:3;12377:93;:::i;:::-;12495:2;12490:3;12486:12;12479:19;;12138:366;;;:::o;12510:419::-;12676:4;12714:2;12703:9;12699:18;12691:26;;12763:9;12757:4;12753:20;12749:1;12738:9;12734:17;12727:47;12791:131;12917:4;12791:131;:::i;:::-;12783:139;;12510:419;;;:::o;12935:181::-;13075:33;13071:1;13063:6;13059:14;13052:57;12935:181;:::o;13122:366::-;13264:3;13285:67;13349:2;13344:3;13285:67;:::i;:::-;13278:74;;13361:93;13450:3;13361:93;:::i;:::-;13479:2;13474:3;13470:12;13463:19;;13122:366;;;:::o;13494:419::-;13660:4;13698:2;13687:9;13683:18;13675:26;;13747:9;13741:4;13737:20;13733:1;13722:9;13718:17;13711:47;13775:131;13901:4;13775:131;:::i;:::-;13767:139;;13494:419;;;:::o;13919:224::-;14059:34;14055:1;14047:6;14043:14;14036:58;14128:7;14123:2;14115:6;14111:15;14104:32;13919:224;:::o;14149:366::-;14291:3;14312:67;14376:2;14371:3;14312:67;:::i;:::-;14305:74;;14388:93;14477:3;14388:93;:::i;:::-;14506:2;14501:3;14497:12;14490:19;;14149:366;;;:::o;14521:419::-;14687:4;14725:2;14714:9;14710:18;14702:26;;14774:9;14768:4;14764:20;14760:1;14749:9;14745:17;14738:47;14802:131;14928:4;14802:131;:::i;:::-;14794:139;;14521:419;;;:::o;14946:239::-;15086:34;15082:1;15074:6;15070:14;15063:58;15155:22;15150:2;15142:6;15138:15;15131:47;14946:239;:::o;15191:366::-;15333:3;15354:67;15418:2;15413:3;15354:67;:::i;:::-;15347:74;;15430:93;15519:3;15430:93;:::i;:::-;15548:2;15543:3;15539:12;15532:19;;15191:366;;;:::o;15563:419::-;15729:4;15767:2;15756:9;15752:18;15744:26;;15816:9;15810:4;15806:20;15802:1;15791:9;15787:17;15780:47;15844:131;15970:4;15844:131;:::i;:::-;15836:139;;15563:419;;;:::o;15988:180::-;16036:77;16033:1;16026:88;16133:4;16130:1;16123:15;16157:4;16154:1;16147:15;16174:185;16214:1;16231:20;16249:1;16231:20;:::i;:::-;16226:25;;16265:20;16283:1;16265:20;:::i;:::-;16260:25;;16304:1;16294:35;;16309:18;;:::i;:::-;16294:35;16351:1;16348;16344:9;16339:14;;16174:185;;;;:::o;16365:250::-;16505:34;16501:1;16493:6;16489:14;16482:58;16574:33;16569:2;16561:6;16557:15;16550:58;16365:250;:::o;16621:366::-;16763:3;16784:67;16848:2;16843:3;16784:67;:::i;:::-;16777:74;;16860:93;16949:3;16860:93;:::i;:::-;16978:2;16973:3;16969:12;16962:19;;16621:366;;;:::o;16993:419::-;17159:4;17197:2;17186:9;17182:18;17174:26;;17246:9;17240:4;17236:20;17232:1;17221:9;17217:17;17210:47;17274:131;17400:4;17274:131;:::i;:::-;17266:139;;16993:419;;;:::o;17418:227::-;17558:34;17554:1;17546:6;17542:14;17535:58;17627:10;17622:2;17614:6;17610:15;17603:35;17418:227;:::o;17651:366::-;17793:3;17814:67;17878:2;17873:3;17814:67;:::i;:::-;17807:74;;17890:93;17979:3;17890:93;:::i;:::-;18008:2;18003:3;17999:12;17992:19;;17651:366;;;:::o;18023:419::-;18189:4;18227:2;18216:9;18212:18;18204:26;;18276:9;18270:4;18266:20;18262:1;18251:9;18247:17;18240:47;18304:131;18430:4;18304:131;:::i;:::-;18296:139;;18023:419;;;:::o;18448:230::-;18588:34;18584:1;18576:6;18572:14;18565:58;18657:13;18652:2;18644:6;18640:15;18633:38;18448:230;:::o;18684:366::-;18826:3;18847:67;18911:2;18906:3;18847:67;:::i;:::-;18840:74;;18923:93;19012:3;18923:93;:::i;:::-;19041:2;19036:3;19032:12;19025:19;;18684:366;;;:::o;19056:419::-;19222:4;19260:2;19249:9;19245:18;19237:26;;19309:9;19303:4;19299:20;19295:1;19284:9;19280:17;19273:47;19337:131;19463:4;19337:131;:::i;:::-;19329:139;;19056:419;;;:::o;19481:229::-;19621:34;19617:1;19609:6;19605:14;19598:58;19690:12;19685:2;19677:6;19673:15;19666:37;19481:229;:::o;19716:366::-;19858:3;19879:67;19943:2;19938:3;19879:67;:::i;:::-;19872:74;;19955:93;20044:3;19955:93;:::i;:::-;20073:2;20068:3;20064:12;20057:19;;19716:366;;;:::o;20088:419::-;20254:4;20292:2;20281:9;20277:18;20269:26;;20341:9;20335:4;20331:20;20327:1;20316:9;20312:17;20305:47;20369:131;20495:4;20369:131;:::i;:::-;20361:139;;20088:419;;;:::o;20513:225::-;20653:34;20649:1;20641:6;20637:14;20630:58;20722:8;20717:2;20709:6;20705:15;20698:33;20513:225;:::o;20744:366::-;20886:3;20907:67;20971:2;20966:3;20907:67;:::i;:::-;20900:74;;20983:93;21072:3;20983:93;:::i;:::-;21101:2;21096:3;21092:12;21085:19;;20744:366;;;:::o;21116:419::-;21282:4;21320:2;21309:9;21305:18;21297:26;;21369:9;21363:4;21359:20;21355:1;21344:9;21340:17;21333:47;21397:131;21523:4;21397:131;:::i;:::-;21389:139;;21116:419;;;:::o;21541:242::-;21681:34;21677:1;21669:6;21665:14;21658:58;21750:25;21745:2;21737:6;21733:15;21726:50;21541:242;:::o;21789:366::-;21931:3;21952:67;22016:2;22011:3;21952:67;:::i;:::-;21945:74;;22028:93;22117:3;22028:93;:::i;:::-;22146:2;22141:3;22137:12;22130:19;;21789:366;;;:::o;22161:419::-;22327:4;22365:2;22354:9;22350:18;22342:26;;22414:9;22408:4;22404:20;22400:1;22389:9;22385:17;22378:47;22442:131;22568:4;22442:131;:::i;:::-;22434:139;;22161:419;;;:::o;22586:147::-;22687:11;22724:3;22709:18;;22586:147;;;;:::o;22739:114::-;;:::o;22859:398::-;23018:3;23039:83;23120:1;23115:3;23039:83;:::i;:::-;23032:90;;23131:93;23220:3;23131:93;:::i;:::-;23249:1;23244:3;23240:11;23233:18;;22859:398;;;:::o;23263:379::-;23447:3;23469:147;23612:3;23469:147;:::i;:::-;23462:154;;23633:3;23626:10;;23263:379;;;:::o;23648:162::-;23788:14;23784:1;23776:6;23772:14;23765:38;23648:162;:::o;23816:366::-;23958:3;23979:67;24043:2;24038:3;23979:67;:::i;:::-;23972:74;;24055:93;24144:3;24055:93;:::i;:::-;24173:2;24168:3;24164:12;24157:19;;23816:366;;;:::o;24188:419::-;24354:4;24392:2;24381:9;24377:18;24369:26;;24441:9;24435:4;24431:20;24427:1;24416:9;24412:17;24405:47;24469:131;24595:4;24469:131;:::i;:::-;24461:139;;24188:419;;;:::o;24613:143::-;24670:5;24701:6;24695:13;24686:22;;24717:33;24744:5;24717:33;:::i;:::-;24613:143;;;;:::o;24762:351::-;24832:6;24881:2;24869:9;24860:7;24856:23;24852:32;24849:119;;;24887:79;;:::i;:::-;24849:119;25007:1;25032:64;25088:7;25079:6;25068:9;25064:22;25032:64;:::i;:::-;25022:74;;24978:128;24762:351;;;;:::o;25119:332::-;25240:4;25278:2;25267:9;25263:18;25255:26;;25291:71;25359:1;25348:9;25344:17;25335:6;25291:71;:::i;:::-;25372:72;25440:2;25429:9;25425:18;25416:6;25372:72;:::i;:::-;25119:332;;;;;:::o;25457:137::-;25511:5;25542:6;25536:13;25527:22;;25558:30;25582:5;25558:30;:::i;:::-;25457:137;;;;:::o;25600:345::-;25667:6;25716:2;25704:9;25695:7;25691:23;25687:32;25684:119;;;25722:79;;:::i;:::-;25684:119;25842:1;25867:61;25920:7;25911:6;25900:9;25896:22;25867:61;:::i;:::-;25857:71;;25813:125;25600:345;;;;:::o;25951:223::-;26091:34;26087:1;26079:6;26075:14;26068:58;26160:6;26155:2;26147:6;26143:15;26136:31;25951:223;:::o;26180:366::-;26322:3;26343:67;26407:2;26402:3;26343:67;:::i;:::-;26336:74;;26419:93;26508:3;26419:93;:::i;:::-;26537:2;26532:3;26528:12;26521:19;;26180:366;;;:::o;26552:419::-;26718:4;26756:2;26745:9;26741:18;26733:26;;26805:9;26799:4;26795:20;26791:1;26780:9;26776:17;26769:47;26833:131;26959:4;26833:131;:::i;:::-;26825:139;;26552:419;;;:::o;26977:221::-;27117:34;27113:1;27105:6;27101:14;27094:58;27186:4;27181:2;27173:6;27169:15;27162:29;26977:221;:::o;27204:366::-;27346:3;27367:67;27431:2;27426:3;27367:67;:::i;:::-;27360:74;;27443:93;27532:3;27443:93;:::i;:::-;27561:2;27556:3;27552:12;27545:19;;27204:366;;;:::o;27576:419::-;27742:4;27780:2;27769:9;27765:18;27757:26;;27829:9;27823:4;27819:20;27815:1;27804:9;27800:17;27793:47;27857:131;27983:4;27857:131;:::i;:::-;27849:139;;27576:419;;;:::o;28001:224::-;28141:34;28137:1;28129:6;28125:14;28118:58;28210:7;28205:2;28197:6;28193:15;28186:32;28001:224;:::o;28231:366::-;28373:3;28394:67;28458:2;28453:3;28394:67;:::i;:::-;28387:74;;28470:93;28559:3;28470:93;:::i;:::-;28588:2;28583:3;28579:12;28572:19;;28231:366;;;:::o;28603:419::-;28769:4;28807:2;28796:9;28792:18;28784:26;;28856:9;28850:4;28846:20;28842:1;28831:9;28827:17;28820:47;28884:131;29010:4;28884:131;:::i;:::-;28876:139;;28603:419;;;:::o;29028:222::-;29168:34;29164:1;29156:6;29152:14;29145:58;29237:5;29232:2;29224:6;29220:15;29213:30;29028:222;:::o;29256:366::-;29398:3;29419:67;29483:2;29478:3;29419:67;:::i;:::-;29412:74;;29495:93;29584:3;29495:93;:::i;:::-;29613:2;29608:3;29604:12;29597:19;;29256:366;;;:::o;29628:419::-;29794:4;29832:2;29821:9;29817:18;29809:26;;29881:9;29875:4;29871:20;29867:1;29856:9;29852:17;29845:47;29909:131;30035:4;29909:131;:::i;:::-;29901:139;;29628:419;;;:::o;30053:172::-;30193:24;30189:1;30181:6;30177:14;30170:48;30053:172;:::o;30231:366::-;30373:3;30394:67;30458:2;30453:3;30394:67;:::i;:::-;30387:74;;30470:93;30559:3;30470:93;:::i;:::-;30588:2;30583:3;30579:12;30572:19;;30231:366;;;:::o;30603:419::-;30769:4;30807:2;30796:9;30792:18;30784:26;;30856:9;30850:4;30846:20;30842:1;30831:9;30827:17;30820:47;30884:131;31010:4;30884:131;:::i;:::-;30876:139;;30603:419;;;:::o;31028:194::-;31068:4;31088:20;31106:1;31088:20;:::i;:::-;31083:25;;31122:20;31140:1;31122:20;:::i;:::-;31117:25;;31166:1;31163;31159:9;31151:17;;31190:1;31184:4;31181:11;31178:37;;;31195:18;;:::i;:::-;31178:37;31028:194;;;;:::o;31228:410::-;31268:7;31291:20;31309:1;31291:20;:::i;:::-;31286:25;;31325:20;31343:1;31325:20;:::i;:::-;31320:25;;31380:1;31377;31373:9;31402:30;31420:11;31402:30;:::i;:::-;31391:41;;31581:1;31572:7;31568:15;31565:1;31562:22;31542:1;31535:9;31515:83;31492:139;;31611:18;;:::i;:::-;31492:139;31276:362;31228:410;;;;:::o;31644:225::-;31784:34;31780:1;31772:6;31768:14;31761:58;31853:8;31848:2;31840:6;31836:15;31829:33;31644:225;:::o;31875:366::-;32017:3;32038:67;32102:2;32097:3;32038:67;:::i;:::-;32031:74;;32114:93;32203:3;32114:93;:::i;:::-;32232:2;32227:3;32223:12;32216:19;;31875:366;;;:::o;32247:419::-;32413:4;32451:2;32440:9;32436:18;32428:26;;32500:9;32494:4;32490:20;32486:1;32475:9;32471:17;32464:47;32528:131;32654:4;32528:131;:::i;:::-;32520:139;;32247:419;;;:::o;32672:180::-;32720:77;32717:1;32710:88;32817:4;32814:1;32807:15;32841:4;32838:1;32831:15;32858:180;32906:77;32903:1;32896:88;33003:4;33000:1;32993:15;33027:4;33024:1;33017:15;33044:143;33101:5;33132:6;33126:13;33117:22;;33148:33;33175:5;33148:33;:::i;:::-;33044:143;;;;:::o;33193:351::-;33263:6;33312:2;33300:9;33291:7;33287:23;33283:32;33280:119;;;33318:79;;:::i;:::-;33280:119;33438:1;33463:64;33519:7;33510:6;33499:9;33495:22;33463:64;:::i;:::-;33453:74;;33409:128;33193:351;;;;:::o;33550:85::-;33595:7;33624:5;33613:16;;33550:85;;;:::o;33641:158::-;33699:9;33732:61;33750:42;33759:32;33785:5;33759:32;:::i;:::-;33750:42;:::i;:::-;33732:61;:::i;:::-;33719:74;;33641:158;;;:::o;33805:147::-;33900:45;33939:5;33900:45;:::i;:::-;33895:3;33888:58;33805:147;;:::o;33958:114::-;34025:6;34059:5;34053:12;34043:22;;33958:114;;;:::o;34078:184::-;34177:11;34211:6;34206:3;34199:19;34251:4;34246:3;34242:14;34227:29;;34078:184;;;;:::o;34268:132::-;34335:4;34358:3;34350:11;;34388:4;34383:3;34379:14;34371:22;;34268:132;;;:::o;34406:108::-;34483:24;34501:5;34483:24;:::i;:::-;34478:3;34471:37;34406:108;;:::o;34520:179::-;34589:10;34610:46;34652:3;34644:6;34610:46;:::i;:::-;34688:4;34683:3;34679:14;34665:28;;34520:179;;;;:::o;34705:113::-;34775:4;34807;34802:3;34798:14;34790:22;;34705:113;;;:::o;34854:732::-;34973:3;35002:54;35050:5;35002:54;:::i;:::-;35072:86;35151:6;35146:3;35072:86;:::i;:::-;35065:93;;35182:56;35232:5;35182:56;:::i;:::-;35261:7;35292:1;35277:284;35302:6;35299:1;35296:13;35277:284;;;35378:6;35372:13;35405:63;35464:3;35449:13;35405:63;:::i;:::-;35398:70;;35491:60;35544:6;35491:60;:::i;:::-;35481:70;;35337:224;35324:1;35321;35317:9;35312:14;;35277:284;;;35281:14;35577:3;35570:10;;34978:608;;;34854:732;;;;:::o;35592:831::-;35855:4;35893:3;35882:9;35878:19;35870:27;;35907:71;35975:1;35964:9;35960:17;35951:6;35907:71;:::i;:::-;35988:80;36064:2;36053:9;36049:18;36040:6;35988:80;:::i;:::-;36115:9;36109:4;36105:20;36100:2;36089:9;36085:18;36078:48;36143:108;36246:4;36237:6;36143:108;:::i;:::-;36135:116;;36261:72;36329:2;36318:9;36314:18;36305:6;36261:72;:::i;:::-;36343:73;36411:3;36400:9;36396:19;36387:6;36343:73;:::i;:::-;35592:831;;;;;;;;:::o;36429:332::-;36550:4;36588:2;36577:9;36573:18;36565:26;;36601:71;36669:1;36658:9;36654:17;36645:6;36601:71;:::i;:::-;36682:72;36750:2;36739:9;36735:18;36726:6;36682:72;:::i;:::-;36429:332;;;;;:::o

Swarm Source

ipfs://bb82f9218bfa494ba521837eb39815e1413c4113175a10a56a11b9e00d46eace

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.