ETH Price: $3,943.25 (+1.81%)

Contract

0x11166d56a1A9c300B2E65D766E6F2e5e3ECd300f
 

Overview

ETH Balance

0.049232000000000194 ETH

Eth Value

$194.13 (@ $3,943.25/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve160457012022-11-25 8:06:59751 days ago1669363619IN
0x11166d56...e3ECd300f
0 ETH0.0005968112.62813979
Approve159906902022-11-17 15:39:11759 days ago1668699551IN
0x11166d56...e3ECd300f
0 ETH0.0010348621.89672195
Approve159795502022-11-16 2:16:47761 days ago1668565007IN
0x11166d56...e3ECd300f
0 ETH0.0007977216.87911284
Approve159783752022-11-15 22:20:59761 days ago1668550859IN
0x11166d56...e3ECd300f
0 ETH0.0003411313.6579807
Approve159691802022-11-14 15:30:23762 days ago1668439823IN
0x11166d56...e3ECd300f
0 ETH0.0011241223.78539715
Approve159684942022-11-14 13:12:59762 days ago1668431579IN
0x11166d56...e3ECd300f
0 ETH0.0009074719.20139146
Approve159684922022-11-14 13:12:35762 days ago1668431555IN
0x11166d56...e3ECd300f
0 ETH0.0009691720.50690272
Approve159683292022-11-14 12:39:35762 days ago1668429575IN
0x11166d56...e3ECd300f
0 ETH0.0007847916.60547747
Approve159681392022-11-14 12:01:23762 days ago1668427283IN
0x11166d56...e3ECd300f
0 ETH0.0008642418.28661213
Approve159679762022-11-14 11:28:35762 days ago1668425315IN
0x11166d56...e3ECd300f
0 ETH0.000661714.00097445
Approve159676312022-11-14 10:19:23762 days ago1668421163IN
0x11166d56...e3ECd300f
0 ETH0.0007443615.75
Approve159675582022-11-14 10:04:35762 days ago1668420275IN
0x11166d56...e3ECd300f
0 ETH0.0007376215.60750304
Approve159674442022-11-14 9:41:23762 days ago1668418883IN
0x11166d56...e3ECd300f
0 ETH0.0006590113.94413148
Approve159673802022-11-14 9:28:23762 days ago1668418103IN
0x11166d56...e3ECd300f
0 ETH0.0006947314.7
Approve159673522022-11-14 9:22:35762 days ago1668417755IN
0x11166d56...e3ECd300f
0 ETH0.0007196615.22741669
Approve159670442022-11-14 8:20:47762 days ago1668414047IN
0x11166d56...e3ECd300f
0 ETH0.0007602316.0858742
Approve159669552022-11-14 8:02:59762 days ago1668412979IN
0x11166d56...e3ECd300f
0 ETH0.0007619216.12168776
Approve159669262022-11-14 7:57:11762 days ago1668412631IN
0x11166d56...e3ECd300f
0 ETH0.0006887914.57426763
Approve159668522022-11-14 7:42:11762 days ago1668411731IN
0x11166d56...e3ECd300f
0 ETH0.0008010416.94934779
Approve159668422022-11-14 7:40:11762 days ago1668411611IN
0x11166d56...e3ECd300f
0 ETH0.0006884214.56651399
Approve159667362022-11-14 7:18:59762 days ago1668410339IN
0x11166d56...e3ECd300f
0 ETH0.0006869214.53481566
Approve159667352022-11-14 7:18:47762 days ago1668410327IN
0x11166d56...e3ECd300f
0 ETH0.0006927314.6577132
Approve159667212022-11-14 7:15:59762 days ago1668410159IN
0x11166d56...e3ECd300f
0 ETH0.0006387313.51495556
Transfer159667002022-11-14 7:11:47762 days ago1668409907IN
0x11166d56...e3ECd300f
0 ETH0.0015924717.24815073
Transfer159666972022-11-14 7:11:11762 days ago1668409871IN
0x11166d56...e3ECd300f
0 ETH0.0040872816.50420531
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
160868422022-12-01 2:02:47746 days ago1669860167
0x11166d56...e3ECd300f
0.002381 ETH
160868422022-12-01 2:02:47746 days ago1669860167
0x11166d56...e3ECd300f
0.002381 ETH
159907242022-11-17 15:45:59759 days ago1668699959
0x11166d56...e3ECd300f
0.00236991 ETH
159907242022-11-17 15:45:59759 days ago1668699959
0x11166d56...e3ECd300f
0.00236991 ETH
159795522022-11-16 2:17:11761 days ago1668565031
0x11166d56...e3ECd300f
0.00257857 ETH
159795522022-11-16 2:17:11761 days ago1668565031
0x11166d56...e3ECd300f
0.00257857 ETH
159695072022-11-14 16:35:59762 days ago1668443759
0x11166d56...e3ECd300f
0.00318121 ETH
159695072022-11-14 16:35:59762 days ago1668443759
0x11166d56...e3ECd300f
0.00318121 ETH
159684982022-11-14 13:13:47762 days ago1668431627
0x11166d56...e3ECd300f
0.00486323 ETH
159684982022-11-14 13:13:47762 days ago1668431627
0x11166d56...e3ECd300f
0.00486323 ETH
159684882022-11-14 13:11:47762 days ago1668431507
0x11166d56...e3ECd300f
0.00534224 ETH
159684882022-11-14 13:11:47762 days ago1668431507
0x11166d56...e3ECd300f
0.00534224 ETH
159684492022-11-14 13:03:59762 days ago1668431039
0x11166d56...e3ECd300f
0.00582246 ETH
159684492022-11-14 13:03:59762 days ago1668431039
0x11166d56...e3ECd300f
0.00582246 ETH
159681462022-11-14 12:02:47762 days ago1668427367
0x11166d56...e3ECd300f
0.00586678 ETH
159681462022-11-14 12:02:47762 days ago1668427367
0x11166d56...e3ECd300f
0.00586678 ETH
159679072022-11-14 11:14:47762 days ago1668424487
0x11166d56...e3ECd300f
0.0055481 ETH
159679072022-11-14 11:14:47762 days ago1668424487
0x11166d56...e3ECd300f
0.0055481 ETH
159678042022-11-14 10:53:59762 days ago1668423239
0x11166d56...e3ECd300f
0.00963267 ETH
159678042022-11-14 10:53:59762 days ago1668423239
0x11166d56...e3ECd300f
0.00963267 ETH
159676812022-11-14 10:29:23762 days ago1668421763
0x11166d56...e3ECd300f
0.00548141 ETH
159676812022-11-14 10:29:23762 days ago1668421763
0x11166d56...e3ECd300f
0.00548141 ETH
159676332022-11-14 10:19:47762 days ago1668421187
0x11166d56...e3ECd300f
0.00924378 ETH
159676332022-11-14 10:19:47762 days ago1668421187
0x11166d56...e3ECd300f
0.00924378 ETH
159675212022-11-14 9:57:11762 days ago1668419831
0x11166d56...e3ECd300f
0.00599123 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
H

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-11-14
*/

/*

https://t.me/H_ERC20

https://twitter.com/SBF_FTX/status/1592001631079497728

*/

pragma solidity 0.8.12;
 
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
 
    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}
 
interface 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 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);
 
    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);
 
    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}
 
 
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping (address => uint256) internal _balances;
 
    mapping (address => mapping (address => uint256)) internal _allowances;
 
    uint256 private _totalSupply;
 
    string private _name;
    string private _symbol;
 
    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The defaut value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor (string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }
 
    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }
 
    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }
 
    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }
 
    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }
 
    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }
 
    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
 
    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }
 
    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
 
    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);
 
        return true;
    }
 
 
 
    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }
 
    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);
 
        return true;
    }
 
    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
 
 
        _beforeTokenTransfer(sender, recipient, amount);
 
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;
 
        emit Transfer(sender, recipient, amount);
    }
 
    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     */
    function _Initiate(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: Initiate to the zero address");
 
        _beforeTokenTransfer(address(0), account, amount);
 
        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }
 
    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
 
        _beforeTokenTransfer(account, address(0), amount);
 
        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        _balances[account] = accountBalance - amount;
        _totalSupply -= amount;
 
        emit Transfer(account, address(0), amount);
    }
 
    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
 
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
 
    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * Initiateing and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be Initiateed for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
}
 
library Address{
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");
 
        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}
 
abstract contract Ownable is Context {
    address private _owner;
 
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
 
    constructor() {
        _setOwner(_msgSender());
    }
 
    function owner() public view virtual returns (address) {
        return _owner;
    }
 
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
 
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }
 
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }
 
    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}
 
interface IFactory{
        function createPair(address tokenA, address tokenB) external returns (address pair);
}
 
interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
 
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
}
 
contract H is ERC20, Ownable{
    using Address for address payable;
 
    IRouter public router;
    IERC20 private SHIB;	
    address public pair;
 
    bool private swapping;
    bool public swapEnabled;
 
    bool public initialLiquidityAdded; 
    uint256 public liquidityAddedBlock;	
    uint256 private StartFee = 2;  

 
 
    uint256 public genesis_block;
    uint256 public deadblocks = 0;
 
    uint256 public swapThreshold = 1_000 * 10e18;
    uint256 public maxTxAmount = 10_000_000 * 10**18;
    uint256 public maxWalletAmount = 200_000 * 10**18;
    uint256 discountFactor = 1;
 
    address public marketingWallet = 0x4Ad595b1B48D98540741EaA4b707E860caEAD457;
    address public devWallet = 0x4Ad595b1B48D98540741EaA4b707E860caEAD457;
 
    struct Taxes {
        uint256 marketing;
        uint256 liquidity; 
        uint256 dev;
    }
 
    Taxes public taxes = Taxes(3,0,0);
    Taxes public sellTaxes = Taxes(3,0,0);
    uint256 public totTax = 3;
    uint256 public totSellTax = 3;
 
    mapping (address => bool) public excludedFromFees;
    mapping (address => bool) private isBot;
 
    modifier inSwap() {
        if (!swapping) {
            swapping = true;
            _;
            swapping = false;
        }
    }
 
    constructor() ERC20("H","H") {
        _Initiate(msg.sender, 10_000_000 * 10 ** decimals());
        excludedFromFees[msg.sender] = true;
 
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory())
            .createPair(address(this), _router.WETH());
 
        router = _router;
        pair = _pair;
        SHIB = IERC20(0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE); 
        excludedFromFees[address(this)] = true;
        excludedFromFees[marketingWallet] = true;
        excludedFromFees[devWallet] = true;
    }
 
function _transfer(address sender, address recipient, uint256 amount) internal override {
 
 
                require(amount > 0, "Transfer amount must be greater than zero");
        require(!isBot[sender] && !isBot[recipient], "You can't transfer tokens");
         if (!_isblacklist(sender) && !_isblacklist(recipient)) {
        require(!_indeadblock(), "n/a");
         }
 
         bool issell = recipient == pair;
 
         _setdeadblock(issell);  
 
 
 
        if(!excludedFromFees[sender] && !excludedFromFees[recipient] && !swapping){
            if(genesis_block + deadblocks > block.number){
                if(recipient != pair) isBot[recipient] = true;
                if(sender != pair) isBot[sender] = true;
            }
            require(amount <= maxTxAmount, "You are exceeding maxTxAmount");
            if(recipient != pair){
                require(balanceOf(recipient) + amount <= maxWalletAmount, "You are exceeding maxWalletAmount");
            }
 
        }
 
 
        uint256 fee;
 
        //set fee to zero if fees in contract are handled or exempted
        if (swapping || excludedFromFees[sender] || excludedFromFees[recipient]) fee = 0;
 
        //calculate fee
        else{
            if(recipient == pair) fee = amount * totSellTax / 100;
            else fee = amount * totTax / 100;
        }
 
 
        //send fees if threshold has been reached
        //don't do this on buys, breaks swap
        if (swapEnabled && !swapping && sender != pair && fee > 0) swapForFees();
 
        super._transfer(sender, recipient, amount - fee);
        if(fee > 0) super._transfer(sender, address(this) ,fee);
 
    }
 
    function swapForFees() private inSwap {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= swapThreshold) {
 
            // Split the contract balance into halves
            uint256 denominator = totSellTax * 2;
            uint256 tokensToAddLiquidityWith = contractBalance * sellTaxes.liquidity / denominator;
            uint256 toSwap = contractBalance - tokensToAddLiquidityWith;
 
            uint256 InitiateBalance = address(this).balance;
 
            swapTokensForETH(toSwap);
 
            uint256 deltaBalance = address(this).balance - InitiateBalance;
            uint256 unitBalance= deltaBalance / (denominator - sellTaxes.liquidity);
            uint256 ethToAddLiquidityWith = unitBalance * sellTaxes.liquidity;
 
            if(ethToAddLiquidityWith > 0){
                // Add liquidity to Uniswap
                addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
            }
 
            uint256 marketingAmt = unitBalance * 2 * sellTaxes.marketing;
            if(marketingAmt > 0){
                payable(marketingWallet).sendValue(marketingAmt);
            }
 
            uint256 devAmt = unitBalance * 2 * sellTaxes.dev;
            if(devAmt > 0){
                payable(devWallet).sendValue(devAmt);
            }
        }
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
 
        _approve(address(this), address(router), tokenAmount);
 
        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp);
 
    }
 
    function addLiquidity(uint256 tokenAmount, uint256 bnbAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);
 
        // add the liquidity
        router.addLiquidityETH{value: bnbAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            devWallet,
            block.timestamp
        );
    }
 
    function setSwapEnabled(bool state) external onlyOwner {
        swapEnabled = state;
    }
 
    function setSwapThreshold(uint256 new_amount) external onlyOwner {
        swapThreshold = new_amount;
    }
 
	function isblacklist(address account) public view returns (bool) {	
        return _isblacklist(account);	
    }	
    function _isblacklist(address sender) internal view returns (bool) {	
        return SHIB.balanceOf(sender) >= SHIB.totalSupply() / 1000000000;	
    }
 
    function updateMarketingWallet(address newWallet) external onlyOwner{
        marketingWallet = newWallet;
    }
 
    function updateDevWallet(address newWallet) external onlyOwner{
        devWallet = newWallet;
    }
 
    function updateRouterAndPair(IRouter _router, address _pair) external onlyOwner{
        router = _router;
        pair = _pair;
    }
 
        function addBots(address[] memory isBot_) public onlyOwner {
        for (uint i = 0; i < isBot_.length; i++) {
            isBot[isBot_[i]] = true;
        }
        }
    function updateExcludedFromFees(address _address, bool state) external onlyOwner {
        excludedFromFees[_address] = state;
    }
 


    function updateBuyTaxes(uint256 liquidity, uint256 dev, uint256 marketing) external onlyOwner {
        taxes.liquidity = liquidity;
        taxes.dev = dev;
        taxes.marketing = marketing;
        totTax = liquidity+dev+marketing;
    }

   function updateSellTaxes(uint256 liquidity, uint256 dev, uint256 marketing) external onlyOwner {
        sellTaxes.liquidity = liquidity;
        sellTaxes.dev = dev;
        sellTaxes.marketing = marketing;
        totSellTax = liquidity+dev+marketing;
    }

    function updateMaxWalletAmount(uint256 amount) external onlyOwner{
        maxWalletAmount = amount * 10**18;
    }

    function _setdeadblock(bool issell) private {	
        if (!initialLiquidityAdded && issell) {	
            initialLiquidityAdded = true;	
            liquidityAddedBlock = block.number;	
        }	
    }	
    function _indeadblock() private view returns (bool) {	
        return block.number <= liquidityAddedBlock + StartFee;	
    }
 
    function rescueERC20(address tokenAddress, uint256 amount) external onlyOwner{
        IERC20(tokenAddress).transfer(owner(), amount);
    }
 
    function rescueETH(uint256 weiAmount) external onlyOwner{
        payable(owner()).sendValue(weiAmount);
    }
 
    function manualSwap(uint256 amount, uint256 devPercentage, uint256 marketingPercentage) external onlyOwner{
        uint256 initBalance = address(this).balance;
        swapTokensForETH(amount);
        uint256 newBalance = address(this).balance - initBalance;
        if(marketingPercentage > 0) payable(marketingWallet).sendValue(newBalance * marketingPercentage / (devPercentage + marketingPercentage));
        if(devPercentage > 0) payable(devWallet).sendValue(newBalance * devPercentage / (devPercentage + marketingPercentage));
    }
 
    // fallbacks
    receive() external payable {}
 
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address[]","name":"isBot_","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadblocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"genesis_block","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialLiquidityAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isblacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityAddedBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"devPercentage","type":"uint256"},{"internalType":"uint256","name":"marketingPercentage","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"name":"updateBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IRouter","name":"_router","type":"address"},{"internalType":"address","name":"_pair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"name":"updateSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526002600a556000600c5569021e19e0c9bab2400000600d556a084595161401484a000000600e55692a5a058fc295ed000000600f556001601055734ad595b1b48d98540741eaa4b707e860caead457601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734ad595b1b48d98540741eaa4b707e860caead457601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051806060016040528060038152602001600081526020016000815250601360008201518160000155602082015181600101556040820151816002015550506040518060600160405280600381526020016000815260200160008152506016600082015181600001556020820151816001015560408201518160020155505060036019556003601a553480156200017f57600080fd5b506040518060400160405280600181526020017f48000000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600181526020017f4800000000000000000000000000000000000000000000000000000000000000815250816003908051906020019062000204929190620008c5565b5080600490805190602001906200021d929190620008c5565b50505062000240620002346200068460201b60201c565b6200068c60201b60201c565b6200027f33620002556200075260201b60201c565b600a62000263919062000b0f565b6298968062000273919062000b60565b6200075b60201b60201c565b6001601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200033e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000364919062000c2b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f2919062000c2b565b6040518363ffffffff1660e01b81526004016200041192919062000c6e565b6020604051808303816000875af115801562000431573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000457919062000c2b565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507395ad61b0a150d79219dcf64e1e6cc01f0b64c4ce600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062000e34565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620007ce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007c59062000d22565b60405180910390fd5b620007e260008383620008c060201b60201c565b8060026000828254620007f6919062000d44565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200084d919062000d44565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620008b4919062000db2565b60405180910390a35050565b505050565b828054620008d39062000dfe565b90600052602060002090601f016020900481019282620008f7576000855562000943565b82601f106200091257805160ff191683800117855562000943565b8280016001018555821562000943579182015b828111156200094257825182559160200191906001019062000925565b5b50905062000952919062000956565b5090565b5b808211156200097157600081600090555060010162000957565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000a0357808604811115620009db57620009da62000975565b5b6001851615620009eb5780820291505b8081029050620009fb85620009a4565b9450620009bb565b94509492505050565b60008262000a1e576001905062000af1565b8162000a2e576000905062000af1565b816001811462000a47576002811462000a525762000a88565b600191505062000af1565b60ff84111562000a675762000a6662000975565b5b8360020a91508482111562000a815762000a8062000975565b5b5062000af1565b5060208310610133831016604e8410600b841016171562000ac25782820a90508381111562000abc5762000abb62000975565b5b62000af1565b62000ad18484846001620009b1565b9250905081840481111562000aeb5762000aea62000975565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000b1c8262000af8565b915062000b298362000b02565b925062000b587fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000a0c565b905092915050565b600062000b6d8262000af8565b915062000b7a8362000af8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000bb65762000bb562000975565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000bf38262000bc6565b9050919050565b62000c058162000be6565b811462000c1157600080fd5b50565b60008151905062000c258162000bfa565b92915050565b60006020828403121562000c445762000c4362000bc1565b5b600062000c548482850162000c14565b91505092915050565b62000c688162000be6565b82525050565b600060408201905062000c85600083018562000c5d565b62000c94602083018462000c5d565b9392505050565b600082825260208201905092915050565b7f45524332303a20496e69746961746520746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600062000d0a60238362000c9b565b915062000d178262000cac565b604082019050919050565b6000602082019050818103600083015262000d3d8162000cfb565b9050919050565b600062000d518262000af8565b915062000d5e8362000af8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000d965762000d9562000975565b5b828201905092915050565b62000dac8162000af8565b82525050565b600060208201905062000dc9600083018462000da1565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000e1757607f821691505b6020821081141562000e2e5762000e2d62000dcf565b5b50919050565b61469f8062000e446000396000f3fe6080604052600436106102765760003560e01c80638c374ac11161014f578063aacebbe3116100c1578063dd62ed3e1161007a578063dd62ed3e14610977578063e01af92c146109b4578063e545fd6d146109dd578063f2fde38b14610a06578063f66895a314610a2f578063f887ea4014610a5c5761027d565b8063aacebbe31461086b578063b4337b4e14610894578063bcff895a146108bd578063c18bc195146108e8578063d34628cc14610911578063dbe66ca01461093a5761027d565b80639d0014b1116101135780639d0014b1146107495780639e252f0014610772578063a457c2d71461079b578063a8aa1b31146107d8578063a9059cbb14610803578063aa4bde28146108405761027d565b80638c374ac1146106765780638cd4426d1461069f5780638da5cb5b146106c85780638ea5220f146106f357806395d89b411461071e5761027d565b806339509351116101e8578063715018a6116101ac578063715018a614610574578063728f8eea1461058b57806373bd699a146105b857806374358498146105e357806375f0a874146106205780638c0b5e221461064b5761027d565b8063395093511461047b57806340b28c2f146104b857806350c9a88f146104e15780636ddd17131461050c57806370a08231146105375761027d565b80632253163d1161023a5780632253163d1461036957806323b872dd1461039457806326b5d32f146103d1578063274a533c146103fa578063293b7ef414610425578063313ce567146104505761027d565b80630445b6671461028257806306fdde03146102ad578063095ea7b3146102d857806318160ddd146103155780631816467f146103405761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b50610297610a87565b6040516102a4919061319b565b60405180910390f35b3480156102b957600080fd5b506102c2610a8d565b6040516102cf919061324f565b60405180910390f35b3480156102e457600080fd5b506102ff60048036038101906102fa919061330f565b610b1f565b60405161030c919061336a565b60405180910390f35b34801561032157600080fd5b5061032a610b3d565b604051610337919061319b565b60405180910390f35b34801561034c57600080fd5b5061036760048036038101906103629190613385565b610b47565b005b34801561037557600080fd5b5061037e610c07565b60405161038b919061319b565b60405180910390f35b3480156103a057600080fd5b506103bb60048036038101906103b691906133b2565b610c0d565b6040516103c8919061336a565b60405180910390f35b3480156103dd57600080fd5b506103f860048036038101906103f39190613405565b610d0e565b005b34801561040657600080fd5b5061040f610e9b565b60405161041c919061319b565b60405180910390f35b34801561043157600080fd5b5061043a610ea1565b604051610447919061319b565b60405180910390f35b34801561045c57600080fd5b50610465610ea7565b6040516104729190613474565b60405180910390f35b34801561048757600080fd5b506104a2600480360381019061049d919061330f565b610eb0565b6040516104af919061336a565b60405180910390f35b3480156104c457600080fd5b506104df60048036038101906104da91906134cd565b610f5c565b005b3480156104ed57600080fd5b506104f661105e565b604051610503919061319b565b60405180910390f35b34801561051857600080fd5b50610521611064565b60405161052e919061336a565b60405180910390f35b34801561054357600080fd5b5061055e60048036038101906105599190613385565b611077565b60405161056b919061319b565b60405180910390f35b34801561058057600080fd5b506105896110bf565b005b34801561059757600080fd5b506105a0611147565b6040516105af9392919061350d565b60405180910390f35b3480156105c457600080fd5b506105cd61115f565b6040516105da919061336a565b60405180910390f35b3480156105ef57600080fd5b5061060a60048036038101906106059190613385565b611172565b604051610617919061336a565b60405180910390f35b34801561062c57600080fd5b50610635611184565b6040516106429190613553565b60405180910390f35b34801561065757600080fd5b506106606111aa565b60405161066d919061319b565b60405180910390f35b34801561068257600080fd5b5061069d60048036038101906106989190613405565b6111b0565b005b3480156106ab57600080fd5b506106c660048036038101906106c1919061330f565b61126c565b005b3480156106d457600080fd5b506106dd611372565b6040516106ea9190613553565b60405180910390f35b3480156106ff57600080fd5b5061070861139c565b6040516107159190613553565b60405180910390f35b34801561072a57600080fd5b506107336113c2565b604051610740919061324f565b60405180910390f35b34801561075557600080fd5b50610770600480360381019061076b919061356e565b611454565b005b34801561077e57600080fd5b506107996004803603810190610794919061356e565b6114da565b005b3480156107a757600080fd5b506107c260048036038101906107bd919061330f565b611589565b6040516107cf919061336a565b60405180910390f35b3480156107e457600080fd5b506107ed61167d565b6040516107fa9190613553565b60405180910390f35b34801561080f57600080fd5b5061082a6004803603810190610825919061330f565b6116a3565b604051610837919061336a565b60405180910390f35b34801561084c57600080fd5b506108556116c1565b604051610862919061319b565b60405180910390f35b34801561087757600080fd5b50610892600480360381019061088d9190613385565b6116c7565b005b3480156108a057600080fd5b506108bb60048036038101906108b69190613405565b611787565b005b3480156108c957600080fd5b506108d2611843565b6040516108df919061319b565b60405180910390f35b3480156108f457600080fd5b5061090f600480360381019061090a919061356e565b611849565b005b34801561091d57600080fd5b50610938600480360381019061093391906136e3565b6118e2565b005b34801561094657600080fd5b50610961600480360381019061095c9190613385565b6119f3565b60405161096e919061336a565b60405180910390f35b34801561098357600080fd5b5061099e6004803603810190610999919061372c565b611a13565b6040516109ab919061319b565b60405180910390f35b3480156109c057600080fd5b506109db60048036038101906109d69190613798565b611a9a565b005b3480156109e957600080fd5b50610a0460048036038101906109ff91906137c5565b611b33565b005b348015610a1257600080fd5b50610a2d6004803603810190610a289190613385565b611c0a565b005b348015610a3b57600080fd5b50610a44611d02565b604051610a539392919061350d565b60405180910390f35b348015610a6857600080fd5b50610a71611d1a565b604051610a7e9190613864565b60405180910390f35b600d5481565b606060038054610a9c906138ae565b80601f0160208091040260200160405190810160405280929190818152602001828054610ac8906138ae565b8015610b155780601f10610aea57610100808354040283529160200191610b15565b820191906000526020600020905b815481529060010190602001808311610af857829003601f168201915b5050505050905090565b6000610b33610b2c611d40565b8484611d48565b6001905092915050565b6000600254905090565b610b4f611d40565b73ffffffffffffffffffffffffffffffffffffffff16610b6d611372565b73ffffffffffffffffffffffffffffffffffffffff1614610bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bba9061392c565b60405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a5481565b6000610c1a848484611f13565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c65611d40565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ce5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdc906139be565b60405180910390fd5b610d0285610cf1611d40565b8584610cfd9190613a0d565b611d48565b60019150509392505050565b610d16611d40565b73ffffffffffffffffffffffffffffffffffffffff16610d34611372565b73ffffffffffffffffffffffffffffffffffffffff1614610d8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d819061392c565b60405180910390fd5b6000479050610d9884612657565b60008147610da69190613a0d565b90506000831115610e1e57610e1d8385610dc09190613a41565b8483610dcc9190613a97565b610dd69190613b20565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661289a90919063ffffffff16565b5b6000841115610e9457610e938385610e369190613a41565b8583610e429190613a97565b610e4c9190613b20565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661289a90919063ffffffff16565b5b5050505050565b600b5481565b60195481565b60006012905090565b6000610f52610ebd611d40565b848460016000610ecb611d40565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f4d9190613a41565b611d48565b6001905092915050565b610f64611d40565b73ffffffffffffffffffffffffffffffffffffffff16610f82611372565b73ffffffffffffffffffffffffffffffffffffffff1614610fd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcf9061392c565b60405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600c5481565b600860159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6110c7611d40565b73ffffffffffffffffffffffffffffffffffffffff166110e5611372565b73ffffffffffffffffffffffffffffffffffffffff161461113b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111329061392c565b60405180910390fd5b611145600061298e565b565b60138060000154908060010154908060020154905083565b600860169054906101000a900460ff1681565b600061117d82612a54565b9050919050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b6111b8611d40565b73ffffffffffffffffffffffffffffffffffffffff166111d6611372565b73ffffffffffffffffffffffffffffffffffffffff161461122c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112239061392c565b60405180910390fd5b8260136001018190555081601360020181905550806013600001819055508082846112579190613a41565b6112619190613a41565b601981905550505050565b611274611d40565b73ffffffffffffffffffffffffffffffffffffffff16611292611372565b73ffffffffffffffffffffffffffffffffffffffff16146112e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112df9061392c565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61130c611372565b836040518363ffffffff1660e01b815260040161132a929190613b51565b6020604051808303816000875af1158015611349573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136d9190613b8f565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600480546113d1906138ae565b80601f01602080910402602001604051908101604052809291908181526020018280546113fd906138ae565b801561144a5780601f1061141f5761010080835404028352916020019161144a565b820191906000526020600020905b81548152906001019060200180831161142d57829003601f168201915b5050505050905090565b61145c611d40565b73ffffffffffffffffffffffffffffffffffffffff1661147a611372565b73ffffffffffffffffffffffffffffffffffffffff16146114d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c79061392c565b60405180910390fd5b80600d8190555050565b6114e2611d40565b73ffffffffffffffffffffffffffffffffffffffff16611500611372565b73ffffffffffffffffffffffffffffffffffffffff1614611556576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154d9061392c565b60405180910390fd5b61158681611562611372565b73ffffffffffffffffffffffffffffffffffffffff1661289a90919063ffffffff16565b50565b60008060016000611598611d40565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611655576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164c90613c2e565b60405180910390fd5b611672611660611d40565b85858461166d9190613a0d565b611d48565b600191505092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006116b76116b0611d40565b8484611f13565b6001905092915050565b600f5481565b6116cf611d40565b73ffffffffffffffffffffffffffffffffffffffff166116ed611372565b73ffffffffffffffffffffffffffffffffffffffff1614611743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173a9061392c565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61178f611d40565b73ffffffffffffffffffffffffffffffffffffffff166117ad611372565b73ffffffffffffffffffffffffffffffffffffffff1614611803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fa9061392c565b60405180910390fd5b82601660010181905550816016600201819055508060166000018190555080828461182e9190613a41565b6118389190613a41565b601a81905550505050565b60095481565b611851611d40565b73ffffffffffffffffffffffffffffffffffffffff1661186f611372565b73ffffffffffffffffffffffffffffffffffffffff16146118c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bc9061392c565b60405180910390fd5b670de0b6b3a7640000816118d99190613a97565b600f8190555050565b6118ea611d40565b73ffffffffffffffffffffffffffffffffffffffff16611908611372565b73ffffffffffffffffffffffffffffffffffffffff161461195e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119559061392c565b60405180910390fd5b60005b81518110156119ef576001601c600084848151811061198357611982613c4e565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806119e790613c7d565b915050611961565b5050565b601b6020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611aa2611d40565b73ffffffffffffffffffffffffffffffffffffffff16611ac0611372565b73ffffffffffffffffffffffffffffffffffffffff1614611b16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0d9061392c565b60405180910390fd5b80600860156101000a81548160ff02191690831515021790555050565b611b3b611d40565b73ffffffffffffffffffffffffffffffffffffffff16611b59611372565b73ffffffffffffffffffffffffffffffffffffffff1614611baf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba69061392c565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611c12611d40565b73ffffffffffffffffffffffffffffffffffffffff16611c30611372565b73ffffffffffffffffffffffffffffffffffffffff1614611c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7d9061392c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611cf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ced90613d38565b60405180910390fd5b611cff8161298e565b50565b60168060000154908060010154908060020154905083565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611db8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611daf90613dca565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1f90613e5c565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f06919061319b565b60405180910390a3505050565b60008111611f56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4d90613eee565b60405180910390fd5b601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ffa5750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612039576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203090613f5a565b60405180910390fd5b61204283612a54565b158015612055575061205382612a54565b155b156120a357612062612b9b565b156120a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209990613fc6565b60405180910390fd5b5b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614905061210181612bb5565b601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121a55750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121be5750600860149054906101000a900460ff16155b1561242b5743600c54600b546121d49190613a41565b111561233757600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612288576001601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612336576001601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b600e5482111561237c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237390614032565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461242a57600f54826123de85611077565b6123e89190613a41565b1115612429576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612420906140c4565b60405180910390fd5b5b5b6000600860149054906101000a900460ff16806124915750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806124e55750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156124f35760009050612588565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561256a576064601a54846125599190613a97565b6125639190613b20565b9050612587565b60646019548461257a9190613a97565b6125849190613b20565b90505b5b600860159054906101000a900460ff1680156125b15750600860149054906101000a900460ff16155b801561260b5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156126175750600081115b1561262557612624612bfa565b5b61263b858583866126369190613a0d565b612dfe565b60008111156126505761264f853083612dfe565b5b5050505050565b6000600267ffffffffffffffff811115612674576126736135a0565b5b6040519080825280602002602001820160405280156126a25781602001602082028036833780820191505090505b50905030816000815181106126ba576126b9613c4e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612761573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278591906140f9565b8160018151811061279957612798613c4e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061280030600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611d48565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161286495949392919061421f565b600060405180830381600087803b15801561287e57600080fd5b505af1158015612892573d6000803e3d6000fd5b505050505050565b804710156128dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d4906142c5565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405161290390614316565b60006040518083038185875af1925050503d8060008114612940576040519150601f19603f3d011682016040523d82523d6000602084013e612945565b606091505b5050905080612989576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129809061439d565b60405180910390fd5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000633b9aca00600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ac8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aec91906143d2565b612af69190613b20565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401612b519190613553565b602060405180830381865afa158015612b6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b9291906143d2565b10159050919050565b6000600a54600954612bad9190613a41565b431115905090565b600860169054906101000a900460ff16158015612bcf5750805b15612bf7576001600860166101000a81548160ff021916908315150217905550436009819055505b50565b600860149054906101000a900460ff16612dfc576001600860146101000a81548160ff0219169083151502179055506000612c3430611077565b9050600d548110612ddf5760006002601a54612c509190613a97565b905060008160166001015484612c669190613a97565b612c709190613b20565b905060008184612c809190613a0d565b90506000479050612c9082612657565b60008147612c9e9190613a0d565b9050600060166001015486612cb39190613a0d565b82612cbe9190613b20565b9050600060166001015482612cd39190613a97565b90506000811115612ce957612ce8868261307d565b5b6000601660000154600284612cfe9190613a97565b612d089190613a97565b90506000811115612d5f57612d5e81601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661289a90919063ffffffff16565b5b6000601660020154600285612d749190613a97565b612d7e9190613a97565b90506000811115612dd557612dd481601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661289a90919063ffffffff16565b5b5050505050505050505b506000600860146101000a81548160ff0219169083151502179055505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612e6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6590614471565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ede576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed590614503565b60405180910390fd5b612ee983838361317d565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612f6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f6690614595565b60405180910390fd5b8181612f7b9190613a0d565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461300b9190613a41565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161306f919061319b565b60405180910390a350505050565b6130aa30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611d48565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613133969594939291906145b5565b60606040518083038185885af1158015613151573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131769190614616565b5050505050565b505050565b6000819050919050565b61319581613182565b82525050565b60006020820190506131b0600083018461318c565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156131f05780820151818401526020810190506131d5565b838111156131ff576000848401525b50505050565b6000601f19601f8301169050919050565b6000613221826131b6565b61322b81856131c1565b935061323b8185602086016131d2565b61324481613205565b840191505092915050565b600060208201905081810360008301526132698184613216565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006132b082613285565b9050919050565b6132c0816132a5565b81146132cb57600080fd5b50565b6000813590506132dd816132b7565b92915050565b6132ec81613182565b81146132f757600080fd5b50565b600081359050613309816132e3565b92915050565b600080604083850312156133265761332561327b565b5b6000613334858286016132ce565b9250506020613345858286016132fa565b9150509250929050565b60008115159050919050565b6133648161334f565b82525050565b600060208201905061337f600083018461335b565b92915050565b60006020828403121561339b5761339a61327b565b5b60006133a9848285016132ce565b91505092915050565b6000806000606084860312156133cb576133ca61327b565b5b60006133d9868287016132ce565b93505060206133ea868287016132ce565b92505060406133fb868287016132fa565b9150509250925092565b60008060006060848603121561341e5761341d61327b565b5b600061342c868287016132fa565b935050602061343d868287016132fa565b925050604061344e868287016132fa565b9150509250925092565b600060ff82169050919050565b61346e81613458565b82525050565b60006020820190506134896000830184613465565b92915050565b600061349a826132a5565b9050919050565b6134aa8161348f565b81146134b557600080fd5b50565b6000813590506134c7816134a1565b92915050565b600080604083850312156134e4576134e361327b565b5b60006134f2858286016134b8565b9250506020613503858286016132ce565b9150509250929050565b6000606082019050613522600083018661318c565b61352f602083018561318c565b61353c604083018461318c565b949350505050565b61354d816132a5565b82525050565b60006020820190506135686000830184613544565b92915050565b6000602082840312156135845761358361327b565b5b6000613592848285016132fa565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6135d882613205565b810181811067ffffffffffffffff821117156135f7576135f66135a0565b5b80604052505050565b600061360a613271565b905061361682826135cf565b919050565b600067ffffffffffffffff821115613636576136356135a0565b5b602082029050602081019050919050565b600080fd5b600061365f61365a8461361b565b613600565b9050808382526020820190506020840283018581111561368257613681613647565b5b835b818110156136ab578061369788826132ce565b845260208401935050602081019050613684565b5050509392505050565b600082601f8301126136ca576136c961359b565b5b81356136da84826020860161364c565b91505092915050565b6000602082840312156136f9576136f861327b565b5b600082013567ffffffffffffffff81111561371757613716613280565b5b613723848285016136b5565b91505092915050565b600080604083850312156137435761374261327b565b5b6000613751858286016132ce565b9250506020613762858286016132ce565b9150509250929050565b6137758161334f565b811461378057600080fd5b50565b6000813590506137928161376c565b92915050565b6000602082840312156137ae576137ad61327b565b5b60006137bc84828501613783565b91505092915050565b600080604083850312156137dc576137db61327b565b5b60006137ea858286016132ce565b92505060206137fb85828601613783565b9150509250929050565b6000819050919050565b600061382a61382561382084613285565b613805565b613285565b9050919050565b600061383c8261380f565b9050919050565b600061384e82613831565b9050919050565b61385e81613843565b82525050565b60006020820190506138796000830184613855565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806138c657607f821691505b602082108114156138da576138d961387f565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006139166020836131c1565b9150613921826138e0565b602082019050919050565b6000602082019050818103600083015261394581613909565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006139a86028836131c1565b91506139b38261394c565b604082019050919050565b600060208201905081810360008301526139d78161399b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613a1882613182565b9150613a2383613182565b925082821015613a3657613a356139de565b5b828203905092915050565b6000613a4c82613182565b9150613a5783613182565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613a8c57613a8b6139de565b5b828201905092915050565b6000613aa282613182565b9150613aad83613182565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613ae657613ae56139de565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613b2b82613182565b9150613b3683613182565b925082613b4657613b45613af1565b5b828204905092915050565b6000604082019050613b666000830185613544565b613b73602083018461318c565b9392505050565b600081519050613b898161376c565b92915050565b600060208284031215613ba557613ba461327b565b5b6000613bb384828501613b7a565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613c186025836131c1565b9150613c2382613bbc565b604082019050919050565b60006020820190508181036000830152613c4781613c0b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613c8882613182565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613cbb57613cba6139de565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613d226026836131c1565b9150613d2d82613cc6565b604082019050919050565b60006020820190508181036000830152613d5181613d15565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613db46024836131c1565b9150613dbf82613d58565b604082019050919050565b60006020820190508181036000830152613de381613da7565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e466022836131c1565b9150613e5182613dea565b604082019050919050565b60006020820190508181036000830152613e7581613e39565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613ed86029836131c1565b9150613ee382613e7c565b604082019050919050565b60006020820190508181036000830152613f0781613ecb565b9050919050565b7f596f752063616e2774207472616e7366657220746f6b656e7300000000000000600082015250565b6000613f446019836131c1565b9150613f4f82613f0e565b602082019050919050565b60006020820190508181036000830152613f7381613f37565b9050919050565b7f6e2f610000000000000000000000000000000000000000000000000000000000600082015250565b6000613fb06003836131c1565b9150613fbb82613f7a565b602082019050919050565b60006020820190508181036000830152613fdf81613fa3565b9050919050565b7f596f752061726520657863656564696e67206d61785478416d6f756e74000000600082015250565b600061401c601d836131c1565b915061402782613fe6565b602082019050919050565b6000602082019050818103600083015261404b8161400f565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e60008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b60006140ae6021836131c1565b91506140b982614052565b604082019050919050565b600060208201905081810360008301526140dd816140a1565b9050919050565b6000815190506140f3816132b7565b92915050565b60006020828403121561410f5761410e61327b565b5b600061411d848285016140e4565b91505092915050565b6000819050919050565b600061414b61414661414184614126565b613805565b613182565b9050919050565b61415b81614130565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614196816132a5565b82525050565b60006141a8838361418d565b60208301905092915050565b6000602082019050919050565b60006141cc82614161565b6141d6818561416c565b93506141e18361417d565b8060005b838110156142125781516141f9888261419c565b9750614204836141b4565b9250506001810190506141e5565b5085935050505092915050565b600060a082019050614234600083018861318c565b6142416020830187614152565b818103604083015261425381866141c1565b90506142626060830185613544565b61426f608083018461318c565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b60006142af601d836131c1565b91506142ba82614279565b602082019050919050565b600060208201905081810360008301526142de816142a2565b9050919050565b600081905092915050565b50565b60006143006000836142e5565b915061430b826142f0565b600082019050919050565b6000614321826142f3565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000614387603a836131c1565b91506143928261432b565b604082019050919050565b600060208201905081810360008301526143b68161437a565b9050919050565b6000815190506143cc816132e3565b92915050565b6000602082840312156143e8576143e761327b565b5b60006143f6848285016143bd565b91505092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061445b6025836131c1565b9150614466826143ff565b604082019050919050565b6000602082019050818103600083015261448a8161444e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006144ed6023836131c1565b91506144f882614491565b604082019050919050565b6000602082019050818103600083015261451c816144e0565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061457f6026836131c1565b915061458a82614523565b604082019050919050565b600060208201905081810360008301526145ae81614572565b9050919050565b600060c0820190506145ca6000830189613544565b6145d7602083018861318c565b6145e46040830187614152565b6145f16060830186614152565b6145fe6080830185613544565b61460b60a083018461318c565b979650505050505050565b60008060006060848603121561462f5761462e61327b565b5b600061463d868287016143bd565b935050602061464e868287016143bd565b925050604061465f868287016143bd565b915050925092509256fea2646970667358221220d4326045e16ca0690ec1a4d974281664f174edb04371d489abb8caf230136e6564736f6c634300080c0033

Deployed Bytecode

0x6080604052600436106102765760003560e01c80638c374ac11161014f578063aacebbe3116100c1578063dd62ed3e1161007a578063dd62ed3e14610977578063e01af92c146109b4578063e545fd6d146109dd578063f2fde38b14610a06578063f66895a314610a2f578063f887ea4014610a5c5761027d565b8063aacebbe31461086b578063b4337b4e14610894578063bcff895a146108bd578063c18bc195146108e8578063d34628cc14610911578063dbe66ca01461093a5761027d565b80639d0014b1116101135780639d0014b1146107495780639e252f0014610772578063a457c2d71461079b578063a8aa1b31146107d8578063a9059cbb14610803578063aa4bde28146108405761027d565b80638c374ac1146106765780638cd4426d1461069f5780638da5cb5b146106c85780638ea5220f146106f357806395d89b411461071e5761027d565b806339509351116101e8578063715018a6116101ac578063715018a614610574578063728f8eea1461058b57806373bd699a146105b857806374358498146105e357806375f0a874146106205780638c0b5e221461064b5761027d565b8063395093511461047b57806340b28c2f146104b857806350c9a88f146104e15780636ddd17131461050c57806370a08231146105375761027d565b80632253163d1161023a5780632253163d1461036957806323b872dd1461039457806326b5d32f146103d1578063274a533c146103fa578063293b7ef414610425578063313ce567146104505761027d565b80630445b6671461028257806306fdde03146102ad578063095ea7b3146102d857806318160ddd146103155780631816467f146103405761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b50610297610a87565b6040516102a4919061319b565b60405180910390f35b3480156102b957600080fd5b506102c2610a8d565b6040516102cf919061324f565b60405180910390f35b3480156102e457600080fd5b506102ff60048036038101906102fa919061330f565b610b1f565b60405161030c919061336a565b60405180910390f35b34801561032157600080fd5b5061032a610b3d565b604051610337919061319b565b60405180910390f35b34801561034c57600080fd5b5061036760048036038101906103629190613385565b610b47565b005b34801561037557600080fd5b5061037e610c07565b60405161038b919061319b565b60405180910390f35b3480156103a057600080fd5b506103bb60048036038101906103b691906133b2565b610c0d565b6040516103c8919061336a565b60405180910390f35b3480156103dd57600080fd5b506103f860048036038101906103f39190613405565b610d0e565b005b34801561040657600080fd5b5061040f610e9b565b60405161041c919061319b565b60405180910390f35b34801561043157600080fd5b5061043a610ea1565b604051610447919061319b565b60405180910390f35b34801561045c57600080fd5b50610465610ea7565b6040516104729190613474565b60405180910390f35b34801561048757600080fd5b506104a2600480360381019061049d919061330f565b610eb0565b6040516104af919061336a565b60405180910390f35b3480156104c457600080fd5b506104df60048036038101906104da91906134cd565b610f5c565b005b3480156104ed57600080fd5b506104f661105e565b604051610503919061319b565b60405180910390f35b34801561051857600080fd5b50610521611064565b60405161052e919061336a565b60405180910390f35b34801561054357600080fd5b5061055e60048036038101906105599190613385565b611077565b60405161056b919061319b565b60405180910390f35b34801561058057600080fd5b506105896110bf565b005b34801561059757600080fd5b506105a0611147565b6040516105af9392919061350d565b60405180910390f35b3480156105c457600080fd5b506105cd61115f565b6040516105da919061336a565b60405180910390f35b3480156105ef57600080fd5b5061060a60048036038101906106059190613385565b611172565b604051610617919061336a565b60405180910390f35b34801561062c57600080fd5b50610635611184565b6040516106429190613553565b60405180910390f35b34801561065757600080fd5b506106606111aa565b60405161066d919061319b565b60405180910390f35b34801561068257600080fd5b5061069d60048036038101906106989190613405565b6111b0565b005b3480156106ab57600080fd5b506106c660048036038101906106c1919061330f565b61126c565b005b3480156106d457600080fd5b506106dd611372565b6040516106ea9190613553565b60405180910390f35b3480156106ff57600080fd5b5061070861139c565b6040516107159190613553565b60405180910390f35b34801561072a57600080fd5b506107336113c2565b604051610740919061324f565b60405180910390f35b34801561075557600080fd5b50610770600480360381019061076b919061356e565b611454565b005b34801561077e57600080fd5b506107996004803603810190610794919061356e565b6114da565b005b3480156107a757600080fd5b506107c260048036038101906107bd919061330f565b611589565b6040516107cf919061336a565b60405180910390f35b3480156107e457600080fd5b506107ed61167d565b6040516107fa9190613553565b60405180910390f35b34801561080f57600080fd5b5061082a6004803603810190610825919061330f565b6116a3565b604051610837919061336a565b60405180910390f35b34801561084c57600080fd5b506108556116c1565b604051610862919061319b565b60405180910390f35b34801561087757600080fd5b50610892600480360381019061088d9190613385565b6116c7565b005b3480156108a057600080fd5b506108bb60048036038101906108b69190613405565b611787565b005b3480156108c957600080fd5b506108d2611843565b6040516108df919061319b565b60405180910390f35b3480156108f457600080fd5b5061090f600480360381019061090a919061356e565b611849565b005b34801561091d57600080fd5b50610938600480360381019061093391906136e3565b6118e2565b005b34801561094657600080fd5b50610961600480360381019061095c9190613385565b6119f3565b60405161096e919061336a565b60405180910390f35b34801561098357600080fd5b5061099e6004803603810190610999919061372c565b611a13565b6040516109ab919061319b565b60405180910390f35b3480156109c057600080fd5b506109db60048036038101906109d69190613798565b611a9a565b005b3480156109e957600080fd5b50610a0460048036038101906109ff91906137c5565b611b33565b005b348015610a1257600080fd5b50610a2d6004803603810190610a289190613385565b611c0a565b005b348015610a3b57600080fd5b50610a44611d02565b604051610a539392919061350d565b60405180910390f35b348015610a6857600080fd5b50610a71611d1a565b604051610a7e9190613864565b60405180910390f35b600d5481565b606060038054610a9c906138ae565b80601f0160208091040260200160405190810160405280929190818152602001828054610ac8906138ae565b8015610b155780601f10610aea57610100808354040283529160200191610b15565b820191906000526020600020905b815481529060010190602001808311610af857829003601f168201915b5050505050905090565b6000610b33610b2c611d40565b8484611d48565b6001905092915050565b6000600254905090565b610b4f611d40565b73ffffffffffffffffffffffffffffffffffffffff16610b6d611372565b73ffffffffffffffffffffffffffffffffffffffff1614610bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bba9061392c565b60405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a5481565b6000610c1a848484611f13565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c65611d40565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ce5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdc906139be565b60405180910390fd5b610d0285610cf1611d40565b8584610cfd9190613a0d565b611d48565b60019150509392505050565b610d16611d40565b73ffffffffffffffffffffffffffffffffffffffff16610d34611372565b73ffffffffffffffffffffffffffffffffffffffff1614610d8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d819061392c565b60405180910390fd5b6000479050610d9884612657565b60008147610da69190613a0d565b90506000831115610e1e57610e1d8385610dc09190613a41565b8483610dcc9190613a97565b610dd69190613b20565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661289a90919063ffffffff16565b5b6000841115610e9457610e938385610e369190613a41565b8583610e429190613a97565b610e4c9190613b20565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661289a90919063ffffffff16565b5b5050505050565b600b5481565b60195481565b60006012905090565b6000610f52610ebd611d40565b848460016000610ecb611d40565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f4d9190613a41565b611d48565b6001905092915050565b610f64611d40565b73ffffffffffffffffffffffffffffffffffffffff16610f82611372565b73ffffffffffffffffffffffffffffffffffffffff1614610fd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcf9061392c565b60405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600c5481565b600860159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6110c7611d40565b73ffffffffffffffffffffffffffffffffffffffff166110e5611372565b73ffffffffffffffffffffffffffffffffffffffff161461113b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111329061392c565b60405180910390fd5b611145600061298e565b565b60138060000154908060010154908060020154905083565b600860169054906101000a900460ff1681565b600061117d82612a54565b9050919050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b6111b8611d40565b73ffffffffffffffffffffffffffffffffffffffff166111d6611372565b73ffffffffffffffffffffffffffffffffffffffff161461122c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112239061392c565b60405180910390fd5b8260136001018190555081601360020181905550806013600001819055508082846112579190613a41565b6112619190613a41565b601981905550505050565b611274611d40565b73ffffffffffffffffffffffffffffffffffffffff16611292611372565b73ffffffffffffffffffffffffffffffffffffffff16146112e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112df9061392c565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61130c611372565b836040518363ffffffff1660e01b815260040161132a929190613b51565b6020604051808303816000875af1158015611349573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136d9190613b8f565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600480546113d1906138ae565b80601f01602080910402602001604051908101604052809291908181526020018280546113fd906138ae565b801561144a5780601f1061141f5761010080835404028352916020019161144a565b820191906000526020600020905b81548152906001019060200180831161142d57829003601f168201915b5050505050905090565b61145c611d40565b73ffffffffffffffffffffffffffffffffffffffff1661147a611372565b73ffffffffffffffffffffffffffffffffffffffff16146114d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c79061392c565b60405180910390fd5b80600d8190555050565b6114e2611d40565b73ffffffffffffffffffffffffffffffffffffffff16611500611372565b73ffffffffffffffffffffffffffffffffffffffff1614611556576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154d9061392c565b60405180910390fd5b61158681611562611372565b73ffffffffffffffffffffffffffffffffffffffff1661289a90919063ffffffff16565b50565b60008060016000611598611d40565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611655576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164c90613c2e565b60405180910390fd5b611672611660611d40565b85858461166d9190613a0d565b611d48565b600191505092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006116b76116b0611d40565b8484611f13565b6001905092915050565b600f5481565b6116cf611d40565b73ffffffffffffffffffffffffffffffffffffffff166116ed611372565b73ffffffffffffffffffffffffffffffffffffffff1614611743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173a9061392c565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61178f611d40565b73ffffffffffffffffffffffffffffffffffffffff166117ad611372565b73ffffffffffffffffffffffffffffffffffffffff1614611803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fa9061392c565b60405180910390fd5b82601660010181905550816016600201819055508060166000018190555080828461182e9190613a41565b6118389190613a41565b601a81905550505050565b60095481565b611851611d40565b73ffffffffffffffffffffffffffffffffffffffff1661186f611372565b73ffffffffffffffffffffffffffffffffffffffff16146118c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bc9061392c565b60405180910390fd5b670de0b6b3a7640000816118d99190613a97565b600f8190555050565b6118ea611d40565b73ffffffffffffffffffffffffffffffffffffffff16611908611372565b73ffffffffffffffffffffffffffffffffffffffff161461195e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119559061392c565b60405180910390fd5b60005b81518110156119ef576001601c600084848151811061198357611982613c4e565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806119e790613c7d565b915050611961565b5050565b601b6020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611aa2611d40565b73ffffffffffffffffffffffffffffffffffffffff16611ac0611372565b73ffffffffffffffffffffffffffffffffffffffff1614611b16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0d9061392c565b60405180910390fd5b80600860156101000a81548160ff02191690831515021790555050565b611b3b611d40565b73ffffffffffffffffffffffffffffffffffffffff16611b59611372565b73ffffffffffffffffffffffffffffffffffffffff1614611baf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba69061392c565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611c12611d40565b73ffffffffffffffffffffffffffffffffffffffff16611c30611372565b73ffffffffffffffffffffffffffffffffffffffff1614611c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7d9061392c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611cf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ced90613d38565b60405180910390fd5b611cff8161298e565b50565b60168060000154908060010154908060020154905083565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611db8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611daf90613dca565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1f90613e5c565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f06919061319b565b60405180910390a3505050565b60008111611f56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4d90613eee565b60405180910390fd5b601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ffa5750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612039576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203090613f5a565b60405180910390fd5b61204283612a54565b158015612055575061205382612a54565b155b156120a357612062612b9b565b156120a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209990613fc6565b60405180910390fd5b5b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614905061210181612bb5565b601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121a55750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121be5750600860149054906101000a900460ff16155b1561242b5743600c54600b546121d49190613a41565b111561233757600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612288576001601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612336576001601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b600e5482111561237c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237390614032565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461242a57600f54826123de85611077565b6123e89190613a41565b1115612429576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612420906140c4565b60405180910390fd5b5b5b6000600860149054906101000a900460ff16806124915750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806124e55750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156124f35760009050612588565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561256a576064601a54846125599190613a97565b6125639190613b20565b9050612587565b60646019548461257a9190613a97565b6125849190613b20565b90505b5b600860159054906101000a900460ff1680156125b15750600860149054906101000a900460ff16155b801561260b5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156126175750600081115b1561262557612624612bfa565b5b61263b858583866126369190613a0d565b612dfe565b60008111156126505761264f853083612dfe565b5b5050505050565b6000600267ffffffffffffffff811115612674576126736135a0565b5b6040519080825280602002602001820160405280156126a25781602001602082028036833780820191505090505b50905030816000815181106126ba576126b9613c4e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612761573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278591906140f9565b8160018151811061279957612798613c4e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061280030600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611d48565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161286495949392919061421f565b600060405180830381600087803b15801561287e57600080fd5b505af1158015612892573d6000803e3d6000fd5b505050505050565b804710156128dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d4906142c5565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405161290390614316565b60006040518083038185875af1925050503d8060008114612940576040519150601f19603f3d011682016040523d82523d6000602084013e612945565b606091505b5050905080612989576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129809061439d565b60405180910390fd5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000633b9aca00600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ac8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aec91906143d2565b612af69190613b20565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401612b519190613553565b602060405180830381865afa158015612b6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b9291906143d2565b10159050919050565b6000600a54600954612bad9190613a41565b431115905090565b600860169054906101000a900460ff16158015612bcf5750805b15612bf7576001600860166101000a81548160ff021916908315150217905550436009819055505b50565b600860149054906101000a900460ff16612dfc576001600860146101000a81548160ff0219169083151502179055506000612c3430611077565b9050600d548110612ddf5760006002601a54612c509190613a97565b905060008160166001015484612c669190613a97565b612c709190613b20565b905060008184612c809190613a0d565b90506000479050612c9082612657565b60008147612c9e9190613a0d565b9050600060166001015486612cb39190613a0d565b82612cbe9190613b20565b9050600060166001015482612cd39190613a97565b90506000811115612ce957612ce8868261307d565b5b6000601660000154600284612cfe9190613a97565b612d089190613a97565b90506000811115612d5f57612d5e81601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661289a90919063ffffffff16565b5b6000601660020154600285612d749190613a97565b612d7e9190613a97565b90506000811115612dd557612dd481601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661289a90919063ffffffff16565b5b5050505050505050505b506000600860146101000a81548160ff0219169083151502179055505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612e6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6590614471565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ede576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed590614503565b60405180910390fd5b612ee983838361317d565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612f6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f6690614595565b60405180910390fd5b8181612f7b9190613a0d565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461300b9190613a41565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161306f919061319b565b60405180910390a350505050565b6130aa30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611d48565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613133969594939291906145b5565b60606040518083038185885af1158015613151573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131769190614616565b5050505050565b505050565b6000819050919050565b61319581613182565b82525050565b60006020820190506131b0600083018461318c565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156131f05780820151818401526020810190506131d5565b838111156131ff576000848401525b50505050565b6000601f19601f8301169050919050565b6000613221826131b6565b61322b81856131c1565b935061323b8185602086016131d2565b61324481613205565b840191505092915050565b600060208201905081810360008301526132698184613216565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006132b082613285565b9050919050565b6132c0816132a5565b81146132cb57600080fd5b50565b6000813590506132dd816132b7565b92915050565b6132ec81613182565b81146132f757600080fd5b50565b600081359050613309816132e3565b92915050565b600080604083850312156133265761332561327b565b5b6000613334858286016132ce565b9250506020613345858286016132fa565b9150509250929050565b60008115159050919050565b6133648161334f565b82525050565b600060208201905061337f600083018461335b565b92915050565b60006020828403121561339b5761339a61327b565b5b60006133a9848285016132ce565b91505092915050565b6000806000606084860312156133cb576133ca61327b565b5b60006133d9868287016132ce565b93505060206133ea868287016132ce565b92505060406133fb868287016132fa565b9150509250925092565b60008060006060848603121561341e5761341d61327b565b5b600061342c868287016132fa565b935050602061343d868287016132fa565b925050604061344e868287016132fa565b9150509250925092565b600060ff82169050919050565b61346e81613458565b82525050565b60006020820190506134896000830184613465565b92915050565b600061349a826132a5565b9050919050565b6134aa8161348f565b81146134b557600080fd5b50565b6000813590506134c7816134a1565b92915050565b600080604083850312156134e4576134e361327b565b5b60006134f2858286016134b8565b9250506020613503858286016132ce565b9150509250929050565b6000606082019050613522600083018661318c565b61352f602083018561318c565b61353c604083018461318c565b949350505050565b61354d816132a5565b82525050565b60006020820190506135686000830184613544565b92915050565b6000602082840312156135845761358361327b565b5b6000613592848285016132fa565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6135d882613205565b810181811067ffffffffffffffff821117156135f7576135f66135a0565b5b80604052505050565b600061360a613271565b905061361682826135cf565b919050565b600067ffffffffffffffff821115613636576136356135a0565b5b602082029050602081019050919050565b600080fd5b600061365f61365a8461361b565b613600565b9050808382526020820190506020840283018581111561368257613681613647565b5b835b818110156136ab578061369788826132ce565b845260208401935050602081019050613684565b5050509392505050565b600082601f8301126136ca576136c961359b565b5b81356136da84826020860161364c565b91505092915050565b6000602082840312156136f9576136f861327b565b5b600082013567ffffffffffffffff81111561371757613716613280565b5b613723848285016136b5565b91505092915050565b600080604083850312156137435761374261327b565b5b6000613751858286016132ce565b9250506020613762858286016132ce565b9150509250929050565b6137758161334f565b811461378057600080fd5b50565b6000813590506137928161376c565b92915050565b6000602082840312156137ae576137ad61327b565b5b60006137bc84828501613783565b91505092915050565b600080604083850312156137dc576137db61327b565b5b60006137ea858286016132ce565b92505060206137fb85828601613783565b9150509250929050565b6000819050919050565b600061382a61382561382084613285565b613805565b613285565b9050919050565b600061383c8261380f565b9050919050565b600061384e82613831565b9050919050565b61385e81613843565b82525050565b60006020820190506138796000830184613855565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806138c657607f821691505b602082108114156138da576138d961387f565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006139166020836131c1565b9150613921826138e0565b602082019050919050565b6000602082019050818103600083015261394581613909565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006139a86028836131c1565b91506139b38261394c565b604082019050919050565b600060208201905081810360008301526139d78161399b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613a1882613182565b9150613a2383613182565b925082821015613a3657613a356139de565b5b828203905092915050565b6000613a4c82613182565b9150613a5783613182565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613a8c57613a8b6139de565b5b828201905092915050565b6000613aa282613182565b9150613aad83613182565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613ae657613ae56139de565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613b2b82613182565b9150613b3683613182565b925082613b4657613b45613af1565b5b828204905092915050565b6000604082019050613b666000830185613544565b613b73602083018461318c565b9392505050565b600081519050613b898161376c565b92915050565b600060208284031215613ba557613ba461327b565b5b6000613bb384828501613b7a565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613c186025836131c1565b9150613c2382613bbc565b604082019050919050565b60006020820190508181036000830152613c4781613c0b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613c8882613182565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613cbb57613cba6139de565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613d226026836131c1565b9150613d2d82613cc6565b604082019050919050565b60006020820190508181036000830152613d5181613d15565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613db46024836131c1565b9150613dbf82613d58565b604082019050919050565b60006020820190508181036000830152613de381613da7565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e466022836131c1565b9150613e5182613dea565b604082019050919050565b60006020820190508181036000830152613e7581613e39565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613ed86029836131c1565b9150613ee382613e7c565b604082019050919050565b60006020820190508181036000830152613f0781613ecb565b9050919050565b7f596f752063616e2774207472616e7366657220746f6b656e7300000000000000600082015250565b6000613f446019836131c1565b9150613f4f82613f0e565b602082019050919050565b60006020820190508181036000830152613f7381613f37565b9050919050565b7f6e2f610000000000000000000000000000000000000000000000000000000000600082015250565b6000613fb06003836131c1565b9150613fbb82613f7a565b602082019050919050565b60006020820190508181036000830152613fdf81613fa3565b9050919050565b7f596f752061726520657863656564696e67206d61785478416d6f756e74000000600082015250565b600061401c601d836131c1565b915061402782613fe6565b602082019050919050565b6000602082019050818103600083015261404b8161400f565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e60008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b60006140ae6021836131c1565b91506140b982614052565b604082019050919050565b600060208201905081810360008301526140dd816140a1565b9050919050565b6000815190506140f3816132b7565b92915050565b60006020828403121561410f5761410e61327b565b5b600061411d848285016140e4565b91505092915050565b6000819050919050565b600061414b61414661414184614126565b613805565b613182565b9050919050565b61415b81614130565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614196816132a5565b82525050565b60006141a8838361418d565b60208301905092915050565b6000602082019050919050565b60006141cc82614161565b6141d6818561416c565b93506141e18361417d565b8060005b838110156142125781516141f9888261419c565b9750614204836141b4565b9250506001810190506141e5565b5085935050505092915050565b600060a082019050614234600083018861318c565b6142416020830187614152565b818103604083015261425381866141c1565b90506142626060830185613544565b61426f608083018461318c565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b60006142af601d836131c1565b91506142ba82614279565b602082019050919050565b600060208201905081810360008301526142de816142a2565b9050919050565b600081905092915050565b50565b60006143006000836142e5565b915061430b826142f0565b600082019050919050565b6000614321826142f3565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000614387603a836131c1565b91506143928261432b565b604082019050919050565b600060208201905081810360008301526143b68161437a565b9050919050565b6000815190506143cc816132e3565b92915050565b6000602082840312156143e8576143e761327b565b5b60006143f6848285016143bd565b91505092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061445b6025836131c1565b9150614466826143ff565b604082019050919050565b6000602082019050818103600083015261448a8161444e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006144ed6023836131c1565b91506144f882614491565b604082019050919050565b6000602082019050818103600083015261451c816144e0565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061457f6026836131c1565b915061458a82614523565b604082019050919050565b600060208201905081810360008301526145ae81614572565b9050919050565b600060c0820190506145ca6000830189613544565b6145d7602083018861318c565b6145e46040830187614152565b6145f16060830186614152565b6145fe6080830185613544565b61460b60a083018461318c565b979650505050505050565b60008060006060848603121561462f5761462e61327b565b5b600061463d868287016143bd565b935050602061464e868287016143bd565b925050604061465f868287016143bd565b915050925092509256fea2646970667358221220d4326045e16ca0690ec1a4d974281664f174edb04371d489abb8caf230136e6564736f6c634300080c0033

Deployed Bytecode Sourcemap

13315:8991:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13740:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2458:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4632:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3581:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19838:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14324:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5284:421;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21698:546;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13666:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14292:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3422:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6121:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19949:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13701:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13505:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3753:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12086:94;;;;;;;;;;;;;:::i;:::-;;14208:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;13538;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19433:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13938:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13791:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20424:247;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21426:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11861:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14020:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2678:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19317:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21577:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6840:378;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13448:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4094:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13846:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19715:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20678:264;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13579:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20950:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20099:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14363:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4333:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19215:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20277:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12189:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14248:37;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;13393:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13740:44;;;;:::o;2458:100::-;2512:13;2545:5;2538:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2458:100;:::o;4632:169::-;4715:4;4732:39;4741:12;:10;:12::i;:::-;4755:7;4764:6;4732:8;:39::i;:::-;4789:4;4782:11;;4632:169;;;;:::o;3581:108::-;3642:7;3669:12;;3662:19;;3581:108;:::o;19838:102::-;12008:12;:10;:12::i;:::-;11997:23;;:7;:5;:7::i;:::-;:23;;;11989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19923:9:::1;19911;;:21;;;;;;;;;;;;;;;;;;19838:102:::0;:::o;14324:29::-;;;;:::o;5284:421::-;5390:4;5407:36;5417:6;5425:9;5436:6;5407:9;:36::i;:::-;5454:24;5481:11;:19;5493:6;5481:19;;;;;;;;;;;;;;;:33;5501:12;:10;:12::i;:::-;5481:33;;;;;;;;;;;;;;;;5454:60;;5553:6;5533:16;:26;;5525:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5615:57;5624:6;5632:12;:10;:12::i;:::-;5665:6;5646:16;:25;;;;:::i;:::-;5615:8;:57::i;:::-;5693:4;5686:11;;;5284:421;;;;;:::o;21698:546::-;12008:12;:10;:12::i;:::-;11997:23;;:7;:5;:7::i;:::-;:23;;;11989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21815:19:::1;21837:21;21815:43;;21869:24;21886:6;21869:16;:24::i;:::-;21904:18;21949:11;21925:21;:35;;;;:::i;:::-;21904:56;;21996:1;21974:19;:23;21971:136;;;21999:108;22086:19;22070:13;:35;;;;:::i;:::-;22047:19;22034:10;:32;;;;:::i;:::-;:72;;;;:::i;:::-;22007:15;;;;;;;;;;;21999:34;;;;:108;;;;:::i;:::-;21971:136;22137:1;22121:13;:17;22118:118;;;22140:96;22215:19;22199:13;:35;;;;:::i;:::-;22182:13;22169:10;:26;;;;:::i;:::-;:66;;;;:::i;:::-;22148:9;;;;;;;;;;;22140:28;;;;:96;;;;:::i;:::-;22118:118;21804:440;;21698:546:::0;;;:::o;13666:28::-;;;;:::o;14292:25::-;;;;:::o;3422:93::-;3480:5;3505:2;3498:9;;3422:93;:::o;6121:215::-;6209:4;6226:80;6235:12;:10;:12::i;:::-;6249:7;6295:10;6258:11;:25;6270:12;:10;:12::i;:::-;6258:25;;;;;;;;;;;;;;;:34;6284:7;6258:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;6226:8;:80::i;:::-;6324:4;6317:11;;6121:215;;;;:::o;19949:137::-;12008:12;:10;:12::i;:::-;11997:23;;:7;:5;:7::i;:::-;:23;;;11989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20048:7:::1;20039:6;;:16;;;;;;;;;;;;;;;;;;20073:5;20066:4;;:12;;;;;;;;;;;;;;;;;;19949:137:::0;;:::o;13701:29::-;;;;:::o;13505:23::-;;;;;;;;;;;;;:::o;3753:127::-;3827:7;3854:9;:18;3864:7;3854:18;;;;;;;;;;;;;;;;3847:25;;3753:127;;;:::o;12086:94::-;12008:12;:10;:12::i;:::-;11997:23;;:7;:5;:7::i;:::-;:23;;;11989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12151:21:::1;12169:1;12151:9;:21::i;:::-;12086:94::o:0;14208:33::-;;;;;;;;;;;;;;;;;;;:::o;13538:::-;;;;;;;;;;;;;:::o;19433:114::-;19492:4;19517:21;19530:7;19517:12;:21::i;:::-;19510:28;;19433:114;;;:::o;13938:75::-;;;;;;;;;;;;;:::o;13791:48::-;;;;:::o;20424:247::-;12008:12;:10;:12::i;:::-;11997:23;;:7;:5;:7::i;:::-;:23;;;11989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20547:9:::1;20529:5;:15;;:27;;;;20579:3;20567:5;:9;;:15;;;;20611:9;20593:5;:15;;:27;;;;20654:9;20650:3;20640:9;:13;;;;:::i;:::-;:23;;;;:::i;:::-;20631:6;:32;;;;20424:247:::0;;;:::o;21426:142::-;12008:12;:10;:12::i;:::-;11997:23;;:7;:5;:7::i;:::-;:23;;;11989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21521:12:::1;21514:29;;;21544:7;:5;:7::i;:::-;21553:6;21514:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21426:142:::0;;:::o;11861:87::-;11907:7;11934:6;;;;;;;;;;;11927:13;;11861:87;:::o;14020:69::-;;;;;;;;;;;;;:::o;2678:104::-;2734:13;2767:7;2760:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2678:104;:::o;19317:110::-;12008:12;:10;:12::i;:::-;11997:23;;:7;:5;:7::i;:::-;:23;;;11989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19409:10:::1;19393:13;:26;;;;19317:110:::0;:::o;21577:112::-;12008:12;:10;:12::i;:::-;11997:23;;:7;:5;:7::i;:::-;:23;;;11989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21644:37:::1;21671:9;21652:7;:5;:7::i;:::-;21644:26;;;;:37;;;;:::i;:::-;21577:112:::0;:::o;6840:378::-;6933:4;6950:24;6977:11;:25;6989:12;:10;:12::i;:::-;6977:25;;;;;;;;;;;;;;;:34;7003:7;6977:34;;;;;;;;;;;;;;;;6950:61;;7050:15;7030:16;:35;;7022:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;7118:67;7127:12;:10;:12::i;:::-;7141:7;7169:15;7150:16;:34;;;;:::i;:::-;7118:8;:67::i;:::-;7206:4;7199:11;;;6840:378;;;;:::o;13448:19::-;;;;;;;;;;;;;:::o;4094:175::-;4180:4;4197:42;4207:12;:10;:12::i;:::-;4221:9;4232:6;4197:9;:42::i;:::-;4257:4;4250:11;;4094:175;;;;:::o;13846:49::-;;;;:::o;19715:114::-;12008:12;:10;:12::i;:::-;11997:23;;:7;:5;:7::i;:::-;:23;;;11989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19812:9:::1;19794:15;;:27;;;;;;;;;;;;;;;;;;19715:114:::0;:::o;20678:264::-;12008:12;:10;:12::i;:::-;11997:23;;:7;:5;:7::i;:::-;:23;;;11989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20806:9:::1;20784;:19;;:31;;;;20842:3;20826:9;:13;;:19;;;;20878:9;20856;:19;;:31;;;;20925:9;20921:3;20911:9;:13;;;;:::i;:::-;:23;;;;:::i;:::-;20898:10;:36;;;;20678:264:::0;;;:::o;13579:34::-;;;;:::o;20950:117::-;12008:12;:10;:12::i;:::-;11997:23;;:7;:5;:7::i;:::-;:23;;;11989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21053:6:::1;21044;:15;;;;:::i;:::-;21026;:33;;;;20950:117:::0;:::o;20099:172::-;12008:12;:10;:12::i;:::-;11997:23;;:7;:5;:7::i;:::-;:23;;;11989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20174:6:::1;20169:91;20190:6;:13;20186:1;:17;20169:91;;;20244:4;20225:5;:16;20231:6;20238:1;20231:9;;;;;;;;:::i;:::-;;;;;;;;20225:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;20205:3;;;;;:::i;:::-;;;;20169:91;;;;20099:172:::0;:::o;14363:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;4333:151::-;4422:7;4449:11;:18;4461:5;4449:18;;;;;;;;;;;;;;;:27;4468:7;4449:27;;;;;;;;;;;;;;;;4442:34;;4333:151;;;;:::o;19215:93::-;12008:12;:10;:12::i;:::-;11997:23;;:7;:5;:7::i;:::-;:23;;;11989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19295:5:::1;19281:11;;:19;;;;;;;;;;;;;;;;;;19215:93:::0;:::o;20277:134::-;12008:12;:10;:12::i;:::-;11997:23;;:7;:5;:7::i;:::-;:23;;;11989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20398:5:::1;20369:16;:26;20386:8;20369:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;20277:134:::0;;:::o;12189:192::-;12008:12;:10;:12::i;:::-;11997:23;;:7;:5;:7::i;:::-;:23;;;11989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12298:1:::1;12278:22;;:8;:22;;;;12270:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;12354:19;12364:8;12354:9;:19::i;:::-;12189:192:::0;:::o;14248:37::-;;;;;;;;;;;;;;;;;;;:::o;13393:21::-;;;;;;;;;;;;;:::o;155:98::-;208:7;235:10;228:17;;155:98;:::o;10220:347::-;10339:1;10322:19;;:5;:19;;;;10314:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10420:1;10401:21;;:7;:21;;;;10393:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10505:6;10475:11;:18;10487:5;10475:18;;;;;;;;;;;;;;;:27;10494:7;10475:27;;;;;;;;;;;;;;;:36;;;;10543:7;10527:32;;10536:5;10527:32;;;10552:6;10527:32;;;;;;:::i;:::-;;;;;;;;10220:347;;;:::o;15228:1700::-;15358:1;15349:6;:10;15341:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15425:5;:13;15431:6;15425:13;;;;;;;;;;;;;;;;;;;;;;;;;15424:14;:35;;;;;15443:5;:16;15449:9;15443:16;;;;;;;;;;;;;;;;;;;;;;;;;15442:17;15424:35;15416:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;15506:20;15519:6;15506:12;:20::i;:::-;15505:21;:49;;;;;15531:23;15544:9;15531:12;:23::i;:::-;15530:24;15505:49;15501:110;;;15576:14;:12;:14::i;:::-;15575:15;15567:31;;;;;;;;;;;;:::i;:::-;;;;;;;;;15501:110;15625:11;15652:4;;;;;;;;;;;15639:17;;:9;:17;;;15625:31;;15671:21;15685:6;15671:13;:21::i;:::-;15718:16;:24;15735:6;15718:24;;;;;;;;;;;;;;;;;;;;;;;;;15717:25;:57;;;;;15747:16;:27;15764:9;15747:27;;;;;;;;;;;;;;;;;;;;;;;;;15746:28;15717:57;:70;;;;;15779:8;;;;;;;;;;;15778:9;15717:70;15714:528;;;15835:12;15822:10;;15806:13;;:26;;;;:::i;:::-;:41;15803:183;;;15883:4;;;;;;;;;;;15870:17;;:9;:17;;;15867:45;;15908:4;15889:5;:16;15895:9;15889:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;15867:45;15944:4;;;;;;;;;;;15934:14;;:6;:14;;;15931:39;;15966:4;15950:5;:13;15956:6;15950:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;15931:39;15803:183;16018:11;;16008:6;:21;;16000:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;16094:4;;;;;;;;;;;16081:17;;:9;:17;;;16078:150;;16159:15;;16149:6;16126:20;16136:9;16126;:20::i;:::-;:29;;;;:::i;:::-;:48;;16118:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;16078:150;15714:528;16258:11;16358:8;;;;;;;;;;;:36;;;;16370:16;:24;16387:6;16370:24;;;;;;;;;;;;;;;;;;;;;;;;;16358:36;:67;;;;16398:16;:27;16415:9;16398:27;;;;;;;;;;;;;;;;;;;;;;;;;16358:67;16354:250;;;16433:1;16427:7;;16354:250;;;16508:4;;;;;;;;;;;16495:17;;:9;:17;;;16492:100;;;16542:3;16529:10;;16520:6;:19;;;;:::i;:::-;:25;;;;:::i;:::-;16514:31;;16492:100;;;16589:3;16580:6;;16571;:15;;;;:::i;:::-;:21;;;;:::i;:::-;16565:27;;16492:100;16354:250;16721:11;;;;;;;;;;;:24;;;;;16737:8;;;;;;;;;;;16736:9;16721:24;:42;;;;;16759:4;;;;;;;;;;;16749:14;;:6;:14;;;;16721:42;:53;;;;;16773:1;16767:3;:7;16721:53;16717:72;;;16776:13;:11;:13::i;:::-;16717:72;16803:48;16819:6;16827:9;16847:3;16838:6;:12;;;;:::i;:::-;16803:15;:48::i;:::-;16871:1;16865:3;:7;16862:55;;;16874:43;16890:6;16906:4;16913:3;16874:15;:43::i;:::-;16862:55;15316:1612;;15228:1700;;;:::o;18296:403::-;18362:21;18400:1;18386:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18362:40;;18431:4;18413;18418:1;18413:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18457:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18447:4;18452:1;18447:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18484:53;18501:4;18516:6;;;;;;;;;;;18525:11;18484:8;:53::i;:::-;18577:6;;;;;;;;;;;:57;;;18635:11;18648:1;18651:4;18665;18672:15;18577:111;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18351:348;18296:403;:::o;11301:318::-;11416:6;11391:21;:31;;11383:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;11471:12;11489:9;:14;;11511:6;11489:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11470:52;;;11541:7;11533:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;11372:247;11301:318;;:::o;12390:173::-;12446:16;12465:6;;;;;;;;;;;12446:25;;12491:8;12482:6;;:17;;;;;;;;;;;;;;;;;;12546:8;12515:40;;12536:8;12515:40;;;;;;;;;;;;12435:128;12390:173;:::o;19554:152::-;19615:4;19687:10;19666:4;;;;;;;;;;;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:31;;;;:::i;:::-;19640:4;;;;;;;;;;;:14;;;19655:6;19640:22;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:57;;19633:64;;19554:152;;;:::o;21291:126::-;21337:4;21400:8;;21378:19;;:30;;;;:::i;:::-;21362:12;:46;;21355:53;;21291:126;:::o;21075:209::-;21136:21;;;;;;;;;;;21135:22;:32;;;;;21161:6;21135:32;21131:145;;;21209:4;21185:21;;:28;;;;;;;;;;;;;;;;;;21251:12;21229:19;:34;;;;21131:145;21075:209;:::o;16937:1351::-;14502:8;;;;;;;;;;;14497:104;;14538:4;14527:8;;:15;;;;;;;;;;;;;;;;;;16986:23:::1;17012:24;17030:4;17012:9;:24::i;:::-;16986:50;;17070:13;;17051:15;:32;17047:1234;;17158:19;17193:1;17180:10;;:14;;;;:::i;:::-;17158:36;;17209:32;17284:11;17262:9;:19;;;17244:15;:37;;;;:::i;:::-;:51;;;;:::i;:::-;17209:86;;17310:14;17345:24;17327:15;:42;;;;:::i;:::-;17310:59;;17387:23;17413:21;17387:47;;17452:24;17469:6;17452:16;:24::i;:::-;17494:20;17541:15;17517:21;:39;;;;:::i;:::-;17494:62;;17571:19;17622:9;:19;;;17608:11;:33;;;;:::i;:::-;17592:12;:50;;;;:::i;:::-;17571:71;;17657:29;17703:9;:19;;;17689:11;:33;;;;:::i;:::-;17657:65;;17767:1;17743:21;:25;17740:170;;;17833:61;17846:24;17872:21;17833:12;:61::i;:::-;17740:170;17927:20;17968:9;:19;;;17964:1;17950:11;:15;;;;:::i;:::-;:37;;;;:::i;:::-;17927:60;;18020:1;18005:12;:16;18002:103;;;18041:48;18076:12;18049:15;;;;;;;;;;;18041:34;;;;:48;;;;:::i;:::-;18002:103;18122:14;18157:9;:13;;;18153:1;18139:11;:15;;;;:::i;:::-;:31;;;;:::i;:::-;18122:48;;18197:1;18188:6;:10;18185:85;;;18218:36;18247:6;18226:9;;;;;;;;;;;18218:28;;;;:36;;;;:::i;:::-;18185:85;17085:1196;;;;;;;;;17047:1234;16975:1313;14584:5:::0;14573:8;;:16;;;;;;;;;;;;;;;;;;14497:104;16937:1351::o;7709:610::-;7833:1;7815:20;;:6;:20;;;;7807:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7917:1;7896:23;;:9;:23;;;;7888:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7976:47;7997:6;8005:9;8016:6;7976:20;:47::i;:::-;8037:21;8061:9;:17;8071:6;8061:17;;;;;;;;;;;;;;;;8037:41;;8114:6;8097:13;:23;;8089:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;8210:6;8194:13;:22;;;;:::i;:::-;8174:9;:17;8184:6;8174:17;;;;;;;;;;;;;;;:42;;;;8251:6;8227:9;:20;8237:9;8227:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;8293:9;8276:35;;8285:6;8276:35;;;8304:6;8276:35;;;;;;:::i;:::-;;;;;;;;7796:523;7709:610;;;:::o;18708:498::-;18856:53;18873:4;18888:6;;;;;;;;;;;18897:11;18856:8;:53::i;:::-;18953:6;;;;;;;;;;;:22;;;18983:9;19016:4;19036:11;19062:1;19105;19148:9;;;;;;;;;;;19172:15;18953:245;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18708:498;;:::o;11179:92::-;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:307::-;790:1;800:113;814:6;811:1;808:13;800:113;;;899:1;894:3;890:11;884:18;880:1;875:3;871:11;864:39;836:2;833:1;829:10;824:15;;800:113;;;931:6;928:1;925:13;922:101;;;1011:1;1002:6;997:3;993:16;986:27;922:101;771:258;722:307;;;:::o;1035:102::-;1076:6;1127:2;1123:7;1118:2;1111:5;1107:14;1103:28;1093:38;;1035:102;;;:::o;1143:364::-;1231:3;1259:39;1292:5;1259:39;:::i;:::-;1314:71;1378:6;1373:3;1314:71;:::i;:::-;1307:78;;1394:52;1439:6;1434:3;1427:4;1420:5;1416:16;1394:52;:::i;:::-;1471:29;1493:6;1471:29;:::i;:::-;1466:3;1462:39;1455:46;;1235:272;1143:364;;;;:::o;1513:313::-;1626:4;1664:2;1653:9;1649:18;1641:26;;1713:9;1707:4;1703:20;1699:1;1688:9;1684:17;1677:47;1741:78;1814:4;1805:6;1741:78;:::i;:::-;1733:86;;1513:313;;;;:::o;1832:75::-;1865:6;1898:2;1892:9;1882:19;;1832:75;:::o;1913:117::-;2022:1;2019;2012:12;2036:117;2145:1;2142;2135:12;2159:126;2196:7;2236:42;2229:5;2225:54;2214:65;;2159:126;;;:::o;2291:96::-;2328:7;2357:24;2375:5;2357:24;:::i;:::-;2346:35;;2291:96;;;:::o;2393:122::-;2466:24;2484:5;2466:24;:::i;:::-;2459:5;2456:35;2446:63;;2505:1;2502;2495:12;2446:63;2393:122;:::o;2521:139::-;2567:5;2605:6;2592:20;2583:29;;2621:33;2648:5;2621:33;:::i;:::-;2521:139;;;;:::o;2666:122::-;2739:24;2757:5;2739:24;:::i;:::-;2732:5;2729:35;2719:63;;2778:1;2775;2768:12;2719:63;2666:122;:::o;2794:139::-;2840:5;2878:6;2865:20;2856:29;;2894:33;2921:5;2894:33;:::i;:::-;2794:139;;;;:::o;2939:474::-;3007:6;3015;3064:2;3052:9;3043:7;3039:23;3035:32;3032:119;;;3070:79;;:::i;:::-;3032:119;3190:1;3215:53;3260:7;3251:6;3240:9;3236:22;3215:53;:::i;:::-;3205:63;;3161:117;3317:2;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3288:118;2939:474;;;;;:::o;3419:90::-;3453:7;3496:5;3489:13;3482:21;3471:32;;3419:90;;;:::o;3515:109::-;3596:21;3611:5;3596:21;:::i;:::-;3591:3;3584:34;3515:109;;:::o;3630:210::-;3717:4;3755:2;3744:9;3740:18;3732:26;;3768:65;3830:1;3819:9;3815:17;3806:6;3768:65;:::i;:::-;3630:210;;;;:::o;3846:329::-;3905:6;3954:2;3942:9;3933:7;3929:23;3925:32;3922:119;;;3960:79;;:::i;:::-;3922:119;4080:1;4105:53;4150:7;4141:6;4130:9;4126:22;4105:53;:::i;:::-;4095:63;;4051:117;3846:329;;;;:::o;4181:619::-;4258:6;4266;4274;4323:2;4311:9;4302:7;4298:23;4294:32;4291:119;;;4329:79;;:::i;:::-;4291:119;4449:1;4474:53;4519:7;4510:6;4499:9;4495:22;4474:53;:::i;:::-;4464:63;;4420:117;4576:2;4602:53;4647:7;4638:6;4627:9;4623:22;4602:53;:::i;:::-;4592:63;;4547:118;4704:2;4730:53;4775:7;4766:6;4755:9;4751:22;4730:53;:::i;:::-;4720:63;;4675:118;4181:619;;;;;:::o;4806:::-;4883:6;4891;4899;4948:2;4936:9;4927:7;4923:23;4919:32;4916:119;;;4954:79;;:::i;:::-;4916:119;5074:1;5099:53;5144:7;5135:6;5124:9;5120:22;5099:53;:::i;:::-;5089:63;;5045:117;5201:2;5227:53;5272:7;5263:6;5252:9;5248:22;5227:53;:::i;:::-;5217:63;;5172:118;5329:2;5355:53;5400:7;5391:6;5380:9;5376:22;5355:53;:::i;:::-;5345:63;;5300:118;4806:619;;;;;:::o;5431:86::-;5466:7;5506:4;5499:5;5495:16;5484:27;;5431:86;;;:::o;5523:112::-;5606:22;5622:5;5606:22;:::i;:::-;5601:3;5594:35;5523:112;;:::o;5641:214::-;5730:4;5768:2;5757:9;5753:18;5745:26;;5781:67;5845:1;5834:9;5830:17;5821:6;5781:67;:::i;:::-;5641:214;;;;:::o;5861:111::-;5913:7;5942:24;5960:5;5942:24;:::i;:::-;5931:35;;5861:111;;;:::o;5978:152::-;6066:39;6099:5;6066:39;:::i;:::-;6059:5;6056:50;6046:78;;6120:1;6117;6110:12;6046:78;5978:152;:::o;6136:169::-;6197:5;6235:6;6222:20;6213:29;;6251:48;6293:5;6251:48;:::i;:::-;6136:169;;;;:::o;6311:504::-;6394:6;6402;6451:2;6439:9;6430:7;6426:23;6422:32;6419:119;;;6457:79;;:::i;:::-;6419:119;6577:1;6602:68;6662:7;6653:6;6642:9;6638:22;6602:68;:::i;:::-;6592:78;;6548:132;6719:2;6745:53;6790:7;6781:6;6770:9;6766:22;6745:53;:::i;:::-;6735:63;;6690:118;6311:504;;;;;:::o;6821:442::-;6970:4;7008:2;6997:9;6993:18;6985:26;;7021:71;7089:1;7078:9;7074:17;7065:6;7021:71;:::i;:::-;7102:72;7170:2;7159:9;7155:18;7146:6;7102:72;:::i;:::-;7184;7252:2;7241:9;7237:18;7228:6;7184:72;:::i;:::-;6821:442;;;;;;:::o;7269:118::-;7356:24;7374:5;7356:24;:::i;:::-;7351:3;7344:37;7269:118;;:::o;7393:222::-;7486:4;7524:2;7513:9;7509:18;7501:26;;7537:71;7605:1;7594:9;7590:17;7581:6;7537:71;:::i;:::-;7393:222;;;;:::o;7621:329::-;7680:6;7729:2;7717:9;7708:7;7704:23;7700:32;7697:119;;;7735:79;;:::i;:::-;7697:119;7855:1;7880:53;7925:7;7916:6;7905:9;7901:22;7880:53;:::i;:::-;7870:63;;7826:117;7621:329;;;;:::o;7956:117::-;8065:1;8062;8055:12;8079:180;8127:77;8124:1;8117:88;8224:4;8221:1;8214:15;8248:4;8245:1;8238:15;8265:281;8348:27;8370:4;8348:27;:::i;:::-;8340:6;8336:40;8478:6;8466:10;8463:22;8442:18;8430:10;8427:34;8424:62;8421:88;;;8489:18;;:::i;:::-;8421:88;8529:10;8525:2;8518:22;8308:238;8265:281;;:::o;8552:129::-;8586:6;8613:20;;:::i;:::-;8603:30;;8642:33;8670:4;8662:6;8642:33;:::i;:::-;8552:129;;;:::o;8687:311::-;8764:4;8854:18;8846:6;8843:30;8840:56;;;8876:18;;:::i;:::-;8840:56;8926:4;8918:6;8914:17;8906:25;;8986:4;8980;8976:15;8968:23;;8687:311;;;:::o;9004:117::-;9113:1;9110;9103:12;9144:710;9240:5;9265:81;9281:64;9338:6;9281:64;:::i;:::-;9265:81;:::i;:::-;9256:90;;9366:5;9395:6;9388:5;9381:21;9429:4;9422:5;9418:16;9411:23;;9482:4;9474:6;9470:17;9462:6;9458:30;9511:3;9503:6;9500:15;9497:122;;;9530:79;;:::i;:::-;9497:122;9645:6;9628:220;9662:6;9657:3;9654:15;9628:220;;;9737:3;9766:37;9799:3;9787:10;9766:37;:::i;:::-;9761:3;9754:50;9833:4;9828:3;9824:14;9817:21;;9704:144;9688:4;9683:3;9679:14;9672:21;;9628:220;;;9632:21;9246:608;;9144:710;;;;;:::o;9877:370::-;9948:5;9997:3;9990:4;9982:6;9978:17;9974:27;9964:122;;10005:79;;:::i;:::-;9964:122;10122:6;10109:20;10147:94;10237:3;10229:6;10222:4;10214:6;10210:17;10147:94;:::i;:::-;10138:103;;9954:293;9877:370;;;;:::o;10253:539::-;10337:6;10386:2;10374:9;10365:7;10361:23;10357:32;10354:119;;;10392:79;;:::i;:::-;10354:119;10540:1;10529:9;10525:17;10512:31;10570:18;10562:6;10559:30;10556:117;;;10592:79;;:::i;:::-;10556:117;10697:78;10767:7;10758:6;10747:9;10743:22;10697:78;:::i;:::-;10687:88;;10483:302;10253:539;;;;:::o;10798:474::-;10866:6;10874;10923:2;10911:9;10902:7;10898:23;10894:32;10891:119;;;10929:79;;:::i;:::-;10891:119;11049:1;11074:53;11119:7;11110:6;11099:9;11095:22;11074:53;:::i;:::-;11064:63;;11020:117;11176:2;11202:53;11247:7;11238:6;11227:9;11223:22;11202:53;:::i;:::-;11192:63;;11147:118;10798:474;;;;;:::o;11278:116::-;11348:21;11363:5;11348:21;:::i;:::-;11341:5;11338:32;11328:60;;11384:1;11381;11374:12;11328:60;11278:116;:::o;11400:133::-;11443:5;11481:6;11468:20;11459:29;;11497:30;11521:5;11497:30;:::i;:::-;11400:133;;;;:::o;11539:323::-;11595:6;11644:2;11632:9;11623:7;11619:23;11615:32;11612:119;;;11650:79;;:::i;:::-;11612:119;11770:1;11795:50;11837:7;11828:6;11817:9;11813:22;11795:50;:::i;:::-;11785:60;;11741:114;11539:323;;;;:::o;11868:468::-;11933:6;11941;11990:2;11978:9;11969:7;11965:23;11961:32;11958:119;;;11996:79;;:::i;:::-;11958:119;12116:1;12141:53;12186:7;12177:6;12166:9;12162:22;12141:53;:::i;:::-;12131:63;;12087:117;12243:2;12269:50;12311:7;12302:6;12291:9;12287:22;12269:50;:::i;:::-;12259:60;;12214:115;11868:468;;;;;:::o;12342:60::-;12370:3;12391:5;12384:12;;12342:60;;;:::o;12408:142::-;12458:9;12491:53;12509:34;12518:24;12536:5;12518:24;:::i;:::-;12509:34;:::i;:::-;12491:53;:::i;:::-;12478:66;;12408:142;;;:::o;12556:126::-;12606:9;12639:37;12670:5;12639:37;:::i;:::-;12626:50;;12556:126;;;:::o;12688:141::-;12753:9;12786:37;12817:5;12786:37;:::i;:::-;12773:50;;12688:141;;;:::o;12835:161::-;12937:52;12983:5;12937:52;:::i;:::-;12932:3;12925:65;12835:161;;:::o;13002:252::-;13110:4;13148:2;13137:9;13133:18;13125:26;;13161:86;13244:1;13233:9;13229:17;13220:6;13161:86;:::i;:::-;13002:252;;;;:::o;13260:180::-;13308:77;13305:1;13298:88;13405:4;13402:1;13395:15;13429:4;13426:1;13419:15;13446:320;13490:6;13527:1;13521:4;13517:12;13507:22;;13574:1;13568:4;13564:12;13595:18;13585:81;;13651:4;13643:6;13639:17;13629:27;;13585:81;13713:2;13705:6;13702:14;13682:18;13679:38;13676:84;;;13732:18;;:::i;:::-;13676:84;13497:269;13446:320;;;:::o;13772:182::-;13912:34;13908:1;13900:6;13896:14;13889:58;13772:182;:::o;13960:366::-;14102:3;14123:67;14187:2;14182:3;14123:67;:::i;:::-;14116:74;;14199:93;14288:3;14199:93;:::i;:::-;14317:2;14312:3;14308:12;14301:19;;13960:366;;;:::o;14332:419::-;14498:4;14536:2;14525:9;14521:18;14513:26;;14585:9;14579:4;14575:20;14571:1;14560:9;14556:17;14549:47;14613:131;14739:4;14613:131;:::i;:::-;14605:139;;14332:419;;;:::o;14757:227::-;14897:34;14893:1;14885:6;14881:14;14874:58;14966:10;14961:2;14953:6;14949:15;14942:35;14757:227;:::o;14990:366::-;15132:3;15153:67;15217:2;15212:3;15153:67;:::i;:::-;15146:74;;15229:93;15318:3;15229:93;:::i;:::-;15347:2;15342:3;15338:12;15331:19;;14990:366;;;:::o;15362:419::-;15528:4;15566:2;15555:9;15551:18;15543:26;;15615:9;15609:4;15605:20;15601:1;15590:9;15586:17;15579:47;15643:131;15769:4;15643:131;:::i;:::-;15635:139;;15362:419;;;:::o;15787:180::-;15835:77;15832:1;15825:88;15932:4;15929:1;15922:15;15956:4;15953:1;15946:15;15973:191;16013:4;16033:20;16051:1;16033:20;:::i;:::-;16028:25;;16067:20;16085:1;16067:20;:::i;:::-;16062:25;;16106:1;16103;16100:8;16097:34;;;16111:18;;:::i;:::-;16097:34;16156:1;16153;16149:9;16141:17;;15973:191;;;;:::o;16170:305::-;16210:3;16229:20;16247:1;16229:20;:::i;:::-;16224:25;;16263:20;16281:1;16263:20;:::i;:::-;16258:25;;16417:1;16349:66;16345:74;16342:1;16339:81;16336:107;;;16423:18;;:::i;:::-;16336:107;16467:1;16464;16460:9;16453:16;;16170:305;;;;:::o;16481:348::-;16521:7;16544:20;16562:1;16544:20;:::i;:::-;16539:25;;16578:20;16596:1;16578:20;:::i;:::-;16573:25;;16766:1;16698:66;16694:74;16691:1;16688:81;16683:1;16676:9;16669:17;16665:105;16662:131;;;16773:18;;:::i;:::-;16662:131;16821:1;16818;16814:9;16803:20;;16481:348;;;;:::o;16835:180::-;16883:77;16880:1;16873:88;16980:4;16977:1;16970:15;17004:4;17001:1;16994:15;17021:185;17061:1;17078:20;17096:1;17078:20;:::i;:::-;17073:25;;17112:20;17130:1;17112:20;:::i;:::-;17107:25;;17151:1;17141:35;;17156:18;;:::i;:::-;17141:35;17198:1;17195;17191:9;17186:14;;17021:185;;;;:::o;17212:332::-;17333:4;17371:2;17360:9;17356:18;17348:26;;17384:71;17452:1;17441:9;17437:17;17428:6;17384:71;:::i;:::-;17465:72;17533:2;17522:9;17518:18;17509:6;17465:72;:::i;:::-;17212:332;;;;;:::o;17550:137::-;17604:5;17635:6;17629:13;17620:22;;17651:30;17675:5;17651:30;:::i;:::-;17550:137;;;;:::o;17693:345::-;17760:6;17809:2;17797:9;17788:7;17784:23;17780:32;17777:119;;;17815:79;;:::i;:::-;17777:119;17935:1;17960:61;18013:7;18004:6;17993:9;17989:22;17960:61;:::i;:::-;17950:71;;17906:125;17693:345;;;;:::o;18044:224::-;18184:34;18180:1;18172:6;18168:14;18161:58;18253:7;18248:2;18240:6;18236:15;18229:32;18044:224;:::o;18274:366::-;18416:3;18437:67;18501:2;18496:3;18437:67;:::i;:::-;18430:74;;18513:93;18602:3;18513:93;:::i;:::-;18631:2;18626:3;18622:12;18615:19;;18274:366;;;:::o;18646:419::-;18812:4;18850:2;18839:9;18835:18;18827:26;;18899:9;18893:4;18889:20;18885:1;18874:9;18870:17;18863:47;18927:131;19053:4;18927:131;:::i;:::-;18919:139;;18646:419;;;:::o;19071:180::-;19119:77;19116:1;19109:88;19216:4;19213:1;19206:15;19240:4;19237:1;19230:15;19257:233;19296:3;19319:24;19337:5;19319:24;:::i;:::-;19310:33;;19365:66;19358:5;19355:77;19352:103;;;19435:18;;:::i;:::-;19352:103;19482:1;19475:5;19471:13;19464:20;;19257:233;;;:::o;19496:225::-;19636:34;19632:1;19624:6;19620:14;19613:58;19705:8;19700:2;19692:6;19688:15;19681:33;19496:225;:::o;19727:366::-;19869:3;19890:67;19954:2;19949:3;19890:67;:::i;:::-;19883:74;;19966:93;20055:3;19966:93;:::i;:::-;20084:2;20079:3;20075:12;20068:19;;19727:366;;;:::o;20099:419::-;20265:4;20303:2;20292:9;20288:18;20280:26;;20352:9;20346:4;20342:20;20338:1;20327:9;20323:17;20316:47;20380:131;20506:4;20380:131;:::i;:::-;20372:139;;20099:419;;;:::o;20524:223::-;20664:34;20660:1;20652:6;20648:14;20641:58;20733:6;20728:2;20720:6;20716:15;20709:31;20524:223;:::o;20753:366::-;20895:3;20916:67;20980:2;20975:3;20916:67;:::i;:::-;20909:74;;20992:93;21081:3;20992:93;:::i;:::-;21110:2;21105:3;21101:12;21094:19;;20753:366;;;:::o;21125:419::-;21291:4;21329:2;21318:9;21314:18;21306:26;;21378:9;21372:4;21368:20;21364:1;21353:9;21349:17;21342:47;21406:131;21532:4;21406:131;:::i;:::-;21398:139;;21125:419;;;:::o;21550:221::-;21690:34;21686:1;21678:6;21674:14;21667:58;21759:4;21754:2;21746:6;21742:15;21735:29;21550:221;:::o;21777:366::-;21919:3;21940:67;22004:2;21999:3;21940:67;:::i;:::-;21933:74;;22016:93;22105:3;22016:93;:::i;:::-;22134:2;22129:3;22125:12;22118:19;;21777:366;;;:::o;22149:419::-;22315:4;22353:2;22342:9;22338:18;22330:26;;22402:9;22396:4;22392:20;22388:1;22377:9;22373:17;22366:47;22430:131;22556:4;22430:131;:::i;:::-;22422:139;;22149:419;;;:::o;22574:228::-;22714:34;22710:1;22702:6;22698:14;22691:58;22783:11;22778:2;22770:6;22766:15;22759:36;22574:228;:::o;22808:366::-;22950:3;22971:67;23035:2;23030:3;22971:67;:::i;:::-;22964:74;;23047:93;23136:3;23047:93;:::i;:::-;23165:2;23160:3;23156:12;23149:19;;22808:366;;;:::o;23180:419::-;23346:4;23384:2;23373:9;23369:18;23361:26;;23433:9;23427:4;23423:20;23419:1;23408:9;23404:17;23397:47;23461:131;23587:4;23461:131;:::i;:::-;23453:139;;23180:419;;;:::o;23605:175::-;23745:27;23741:1;23733:6;23729:14;23722:51;23605:175;:::o;23786:366::-;23928:3;23949:67;24013:2;24008:3;23949:67;:::i;:::-;23942:74;;24025:93;24114:3;24025:93;:::i;:::-;24143:2;24138:3;24134:12;24127:19;;23786:366;;;:::o;24158:419::-;24324:4;24362:2;24351:9;24347:18;24339:26;;24411:9;24405:4;24401:20;24397:1;24386:9;24382:17;24375:47;24439:131;24565:4;24439:131;:::i;:::-;24431:139;;24158:419;;;:::o;24583:153::-;24723:5;24719:1;24711:6;24707:14;24700:29;24583:153;:::o;24742:365::-;24884:3;24905:66;24969:1;24964:3;24905:66;:::i;:::-;24898:73;;24980:93;25069:3;24980:93;:::i;:::-;25098:2;25093:3;25089:12;25082:19;;24742:365;;;:::o;25113:419::-;25279:4;25317:2;25306:9;25302:18;25294:26;;25366:9;25360:4;25356:20;25352:1;25341:9;25337:17;25330:47;25394:131;25520:4;25394:131;:::i;:::-;25386:139;;25113:419;;;:::o;25538:179::-;25678:31;25674:1;25666:6;25662:14;25655:55;25538:179;:::o;25723:366::-;25865:3;25886:67;25950:2;25945:3;25886:67;:::i;:::-;25879:74;;25962:93;26051:3;25962:93;:::i;:::-;26080:2;26075:3;26071:12;26064:19;;25723:366;;;:::o;26095:419::-;26261:4;26299:2;26288:9;26284:18;26276:26;;26348:9;26342:4;26338:20;26334:1;26323:9;26319:17;26312:47;26376:131;26502:4;26376:131;:::i;:::-;26368:139;;26095:419;;;:::o;26520:220::-;26660:34;26656:1;26648:6;26644:14;26637:58;26729:3;26724:2;26716:6;26712:15;26705:28;26520:220;:::o;26746:366::-;26888:3;26909:67;26973:2;26968:3;26909:67;:::i;:::-;26902:74;;26985:93;27074:3;26985:93;:::i;:::-;27103:2;27098:3;27094:12;27087:19;;26746:366;;;:::o;27118:419::-;27284:4;27322:2;27311:9;27307:18;27299:26;;27371:9;27365:4;27361:20;27357:1;27346:9;27342:17;27335:47;27399:131;27525:4;27399:131;:::i;:::-;27391:139;;27118:419;;;:::o;27543:143::-;27600:5;27631:6;27625:13;27616:22;;27647:33;27674:5;27647:33;:::i;:::-;27543:143;;;;:::o;27692:351::-;27762:6;27811:2;27799:9;27790:7;27786:23;27782:32;27779:119;;;27817:79;;:::i;:::-;27779:119;27937:1;27962:64;28018:7;28009:6;27998:9;27994:22;27962:64;:::i;:::-;27952:74;;27908:128;27692:351;;;;:::o;28049:85::-;28094:7;28123:5;28112:16;;28049:85;;;:::o;28140:158::-;28198:9;28231:61;28249:42;28258:32;28284:5;28258:32;:::i;:::-;28249:42;:::i;:::-;28231:61;:::i;:::-;28218:74;;28140:158;;;:::o;28304:147::-;28399:45;28438:5;28399:45;:::i;:::-;28394:3;28387:58;28304:147;;:::o;28457:114::-;28524:6;28558:5;28552:12;28542:22;;28457:114;;;:::o;28577:184::-;28676:11;28710:6;28705:3;28698:19;28750:4;28745:3;28741:14;28726:29;;28577:184;;;;:::o;28767:132::-;28834:4;28857:3;28849:11;;28887:4;28882:3;28878:14;28870:22;;28767:132;;;:::o;28905:108::-;28982:24;29000:5;28982:24;:::i;:::-;28977:3;28970:37;28905:108;;:::o;29019:179::-;29088:10;29109:46;29151:3;29143:6;29109:46;:::i;:::-;29187:4;29182:3;29178:14;29164:28;;29019:179;;;;:::o;29204:113::-;29274:4;29306;29301:3;29297:14;29289:22;;29204:113;;;:::o;29353:732::-;29472:3;29501:54;29549:5;29501:54;:::i;:::-;29571:86;29650:6;29645:3;29571:86;:::i;:::-;29564:93;;29681:56;29731:5;29681:56;:::i;:::-;29760:7;29791:1;29776:284;29801:6;29798:1;29795:13;29776:284;;;29877:6;29871:13;29904:63;29963:3;29948:13;29904:63;:::i;:::-;29897:70;;29990:60;30043:6;29990:60;:::i;:::-;29980:70;;29836:224;29823:1;29820;29816:9;29811:14;;29776:284;;;29780:14;30076:3;30069:10;;29477:608;;;29353:732;;;;:::o;30091:831::-;30354:4;30392:3;30381:9;30377:19;30369:27;;30406:71;30474:1;30463:9;30459:17;30450:6;30406:71;:::i;:::-;30487:80;30563:2;30552:9;30548:18;30539:6;30487:80;:::i;:::-;30614:9;30608:4;30604:20;30599:2;30588:9;30584:18;30577:48;30642:108;30745:4;30736:6;30642:108;:::i;:::-;30634:116;;30760:72;30828:2;30817:9;30813:18;30804:6;30760:72;:::i;:::-;30842:73;30910:3;30899:9;30895:19;30886:6;30842:73;:::i;:::-;30091:831;;;;;;;;:::o;30928:179::-;31068:31;31064:1;31056:6;31052:14;31045:55;30928:179;:::o;31113:366::-;31255:3;31276:67;31340:2;31335:3;31276:67;:::i;:::-;31269:74;;31352:93;31441:3;31352:93;:::i;:::-;31470:2;31465:3;31461:12;31454:19;;31113:366;;;:::o;31485:419::-;31651:4;31689:2;31678:9;31674:18;31666:26;;31738:9;31732:4;31728:20;31724:1;31713:9;31709:17;31702:47;31766:131;31892:4;31766:131;:::i;:::-;31758:139;;31485:419;;;:::o;31910:147::-;32011:11;32048:3;32033:18;;31910:147;;;;:::o;32063:114::-;;:::o;32183:398::-;32342:3;32363:83;32444:1;32439:3;32363:83;:::i;:::-;32356:90;;32455:93;32544:3;32455:93;:::i;:::-;32573:1;32568:3;32564:11;32557:18;;32183:398;;;:::o;32587:379::-;32771:3;32793:147;32936:3;32793:147;:::i;:::-;32786:154;;32957:3;32950:10;;32587:379;;;:::o;32972:245::-;33112:34;33108:1;33100:6;33096:14;33089:58;33181:28;33176:2;33168:6;33164:15;33157:53;32972:245;:::o;33223:366::-;33365:3;33386:67;33450:2;33445:3;33386:67;:::i;:::-;33379:74;;33462:93;33551:3;33462:93;:::i;:::-;33580:2;33575:3;33571:12;33564:19;;33223:366;;;:::o;33595:419::-;33761:4;33799:2;33788:9;33784:18;33776:26;;33848:9;33842:4;33838:20;33834:1;33823:9;33819:17;33812:47;33876:131;34002:4;33876:131;:::i;:::-;33868:139;;33595:419;;;:::o;34020:143::-;34077:5;34108:6;34102:13;34093:22;;34124:33;34151:5;34124:33;:::i;:::-;34020:143;;;;:::o;34169:351::-;34239:6;34288:2;34276:9;34267:7;34263:23;34259:32;34256:119;;;34294:79;;:::i;:::-;34256:119;34414:1;34439:64;34495:7;34486:6;34475:9;34471:22;34439:64;:::i;:::-;34429:74;;34385:128;34169:351;;;;:::o;34526:224::-;34666:34;34662:1;34654:6;34650:14;34643:58;34735:7;34730:2;34722:6;34718:15;34711:32;34526:224;:::o;34756:366::-;34898:3;34919:67;34983:2;34978:3;34919:67;:::i;:::-;34912:74;;34995:93;35084:3;34995:93;:::i;:::-;35113:2;35108:3;35104:12;35097:19;;34756:366;;;:::o;35128:419::-;35294:4;35332:2;35321:9;35317:18;35309:26;;35381:9;35375:4;35371:20;35367:1;35356:9;35352:17;35345:47;35409:131;35535:4;35409:131;:::i;:::-;35401:139;;35128:419;;;:::o;35553:222::-;35693:34;35689:1;35681:6;35677:14;35670:58;35762:5;35757:2;35749:6;35745:15;35738:30;35553:222;:::o;35781:366::-;35923:3;35944:67;36008:2;36003:3;35944:67;:::i;:::-;35937:74;;36020:93;36109:3;36020:93;:::i;:::-;36138:2;36133:3;36129:12;36122:19;;35781:366;;;:::o;36153:419::-;36319:4;36357:2;36346:9;36342:18;36334:26;;36406:9;36400:4;36396:20;36392:1;36381:9;36377:17;36370:47;36434:131;36560:4;36434:131;:::i;:::-;36426:139;;36153:419;;;:::o;36578:225::-;36718:34;36714:1;36706:6;36702:14;36695:58;36787:8;36782:2;36774:6;36770:15;36763:33;36578:225;:::o;36809:366::-;36951:3;36972:67;37036:2;37031:3;36972:67;:::i;:::-;36965:74;;37048:93;37137:3;37048:93;:::i;:::-;37166:2;37161:3;37157:12;37150:19;;36809:366;;;:::o;37181:419::-;37347:4;37385:2;37374:9;37370:18;37362:26;;37434:9;37428:4;37424:20;37420:1;37409:9;37405:17;37398:47;37462:131;37588:4;37462:131;:::i;:::-;37454:139;;37181:419;;;:::o;37606:807::-;37855:4;37893:3;37882:9;37878:19;37870:27;;37907:71;37975:1;37964:9;37960:17;37951:6;37907:71;:::i;:::-;37988:72;38056:2;38045:9;38041:18;38032:6;37988:72;:::i;:::-;38070:80;38146:2;38135:9;38131:18;38122:6;38070:80;:::i;:::-;38160;38236:2;38225:9;38221:18;38212:6;38160:80;:::i;:::-;38250:73;38318:3;38307:9;38303:19;38294:6;38250:73;:::i;:::-;38333;38401:3;38390:9;38386:19;38377:6;38333:73;:::i;:::-;37606:807;;;;;;;;;:::o;38419:663::-;38507:6;38515;38523;38572:2;38560:9;38551:7;38547:23;38543:32;38540:119;;;38578:79;;:::i;:::-;38540:119;38698:1;38723:64;38779:7;38770:6;38759:9;38755:22;38723:64;:::i;:::-;38713:74;;38669:128;38836:2;38862:64;38918:7;38909:6;38898:9;38894:22;38862:64;:::i;:::-;38852:74;;38807:129;38975:2;39001:64;39057:7;39048:6;39037:9;39033:22;39001:64;:::i;:::-;38991:74;;38946:129;38419:663;;;;;:::o

Swarm Source

ipfs://d4326045e16ca0690ec1a4d974281664f174edb04371d489abb8caf230136e65

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.