ETH Price: $3,399.61 (-0.54%)
Gas: 16 Gwei

Contract

0x145d8E1C19F67288B7dB0b40F06a026774babd7E
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve189404512024-01-05 10:22:35195 days ago1704450155IN
0x145d8E1C...774babd7E
0 ETH0.0007022214.86042342
Approve185313542023-11-09 2:16:35252 days ago1699496195IN
0x145d8E1C...774babd7E
0 ETH0.0016407734.99730431
Approve185313472023-11-09 2:15:11252 days ago1699496111IN
0x145d8E1C...774babd7E
0 ETH0.0015303632.38516941
Approve185313362023-11-09 2:12:59252 days ago1699495979IN
0x145d8E1C...774babd7E
0 ETH0.001296927.65560841
Approve185313312023-11-09 2:11:59252 days ago1699495919IN
0x145d8E1C...774babd7E
0 ETH0.0015077431.90658434
Approve185313302023-11-09 2:11:47252 days ago1699495907IN
0x145d8E1C...774babd7E
0 ETH0.0015856133.56296827
Approve185313282023-11-09 2:11:23252 days ago1699495883IN
0x145d8E1C...774babd7E
0 ETH0.0014872431.47267834
Renounce Ownersh...185313262023-11-09 2:10:59252 days ago1699495859IN
0x145d8E1C...774babd7E
0 ETH0.0007290131.09585518
Set Fee185313222023-11-09 2:10:11252 days ago1699495811IN
0x145d8E1C...774babd7E
0 ETH0.0010612129.07905097
Approve185313052023-11-09 2:06:35252 days ago1699495595IN
0x145d8E1C...774babd7E
0 ETH0.0012780827.08101739
Approve185312932023-11-09 2:03:59252 days ago1699495439IN
0x145d8E1C...774babd7E
0 ETH0.0016629235.19948873
Set Fee185312862023-11-09 2:02:35252 days ago1699495355IN
0x145d8E1C...774babd7E
0 ETH0.001227831.24655121
Approve185312842023-11-09 2:02:11252 days ago1699495331IN
0x145d8E1C...774babd7E
0 ETH0.0016115334.11156328
Set Fee185312782023-11-09 2:00:47252 days ago1699495247IN
0x145d8E1C...774babd7E
0 ETH0.0010068527.5896575
Approve185312712023-11-09 1:59:23252 days ago1699495163IN
0x145d8E1C...774babd7E
0 ETH0.0015083631.92776459
Approve185312662023-11-09 1:58:23252 days ago1699495103IN
0x145d8E1C...774babd7E
0 ETH0.001436230.3927113
Set Fee185312652023-11-09 1:58:11252 days ago1699495091IN
0x145d8E1C...774babd7E
0 ETH0.0010358628.3844088
Set Fee185312642023-11-09 1:57:59252 days ago1699495079IN
0x145d8E1C...774babd7E
0 ETH0.0010509426.74575057
Set Max Wallet S...185312622023-11-09 1:57:35252 days ago1699495055IN
0x145d8E1C...774babd7E
0 ETH0.0008463229.18771673
Set Max Txn Amou...185312612023-11-09 1:57:23252 days ago1699495043IN
0x145d8E1C...774babd7E
0 ETH0.0008700730.00569373
Approve185312502023-11-09 1:55:11252 days ago1699494911IN
0x145d8E1C...774babd7E
0 ETH0.0014964731.66803533
Approve185312492023-11-09 1:54:59252 days ago1699494899IN
0x145d8E1C...774babd7E
0 ETH0.0015060231.87009035
Approve185312472023-11-09 1:54:35252 days ago1699494875IN
0x145d8E1C...774babd7E
0 ETH0.0015579332.96870355
Approve185312472023-11-09 1:54:35252 days ago1699494875IN
0x145d8E1C...774babd7E
0 ETH0.0015579332.96870355
Approve185312472023-11-09 1:54:35252 days ago1699494875IN
0x145d8E1C...774babd7E
0 ETH0.0015579332.96870355
View all transactions

Latest 8 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
185313532023-11-09 2:16:23252 days ago1699496183
0x145d8E1C...774babd7E
0.00841144 ETH
185313532023-11-09 2:16:23252 days ago1699496183
0x145d8E1C...774babd7E
0.00841144 ETH
185313182023-11-09 2:09:23252 days ago1699495763
0x145d8E1C...774babd7E
0.94476491 ETH
185313182023-11-09 2:09:23252 days ago1699495763
0x145d8E1C...774babd7E
0.94476491 ETH
185312562023-11-09 1:56:23252 days ago1699494983
0x145d8E1C...774babd7E
0.1821868 ETH
185312562023-11-09 1:56:23252 days ago1699494983
0x145d8E1C...774babd7E
0.1821868 ETH
185312542023-11-09 1:55:59252 days ago1699494959
0x145d8E1C...774babd7E
0.2135643 ETH
185312542023-11-09 1:55:59252 days ago1699494959
0x145d8E1C...774babd7E
0.2135643 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
WILSON

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-09
*/

/*

Telegram: https://t.me/losientoerc
Twitter: https://twitter.com/LoSientoERC
Website: https://wilsonlosiento.com/         

kkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO000000000000000000000KKKKKKKKKKKKKKKKKKKKKKKKKKKKK
kkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOO0OOkkO000000OOO00000000000000000000000000000KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
kOOOOOOOOOOOOOOOOOOOOOOOOOO00000000Oxl:,''',;:ok000000000000000000000000000KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
OOOOOOOOOOOOOOOOO0000000000000000Od;...   .....'cx0000000000000KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
OOOOOOOOOOOO0000000000000000000Kx;.............'';d000KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKXXXXXXXXXXXX
OOOOO0000000000000000000000K0kxl'..    .......',;;cx0KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKXXXXXXXXXXXXXXXXXXXXXXXXX
000000000000000000000KKKK0kdoo;..     ..........;clxOKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0KKK00KKKKKKKKKKKKKKKKKKK0kOKO;.... ......  ...',lk0KKKKKKKKKKKKKKKKKKKKKKKKKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
KKKKOO000KKKKKKKKKKKKKKKKKXXKo..',.   .    .....':kKNNXKKKKKKKKKKKKKKKKKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
KKKKOkxodxk0KKKKKXKKXKKKKXXX0:.....        ......':kNNNXXKKKKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXNNXXNNNXNNNNN
KKKKKKxllcldxOKKKXXXXXXXXXXXO;.. ..          .....;kKXXXK00KXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKXXXXNNNNXXNNXXNNNXXXNNNNNNNN
KKXXXKOdlcclodxk0XXXXXXXXXXX0;...''...       .  ..:odkkkxloxO0KXXXXXXXXXXXXXXXXXXXXXXNXXXKKKKXXXXNNXXXXXXXXNNXXKXNXNNNNNN
XXXXXXX0ocllollodkKXXXXXXNXXXo;l::;.,.           ..,ldl;'';::ldkO0XXXXXXXXXXXNNNNNNNNNNNXK0000KKXXXKKKKKKKXNNNXKKXKKXNNNN
XXXXXXXXkllllllodx0XXXXNNNNXNXK0odl:kc            ..,,....'',;:cloxO0KXNNXNNNNNNNNNNNNNNNXXXXXXXXNXXXXXXXXNNNNNXKKKKXNNNN
XXXXXKKK0kdxxdkOO0KKXKKKKKKKKKK0O0kdk;              .......',''',,;:codkO0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKKKXXXXXX
OOOOOOOOOOOOOkOOOOO00000000OO000OOO0o. ......          .............',:lloxxkO000000000OOO000000000000000000000000000KKKK
kkOOOOkkkkOkkkkkkOOOO000000000OOOOOkc':llcl,                 .........',,;clloxkOOO0Ooc:clxOOOOOOOOOOO00000000000OOOO0000
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOkkxllkkkkkc.                   ..........':clooxkkOxc',,;cdO0OOOOkkkkxxxkkkkkkkkkkkkkkkO
xxxxxxxkkkkkxxxxxxxxxxxkkOkkkxkxxxxxddxxxdxl.                       .......;;cooodxkkdc;',:dOOOOOkkkkkxxkkkkkOOOOkkkkkkkk
dddxxxkkkkkkkkkxxxxddxxxxkkkxxxxxxxxxxdddddd;.                      .......,;;cc:cldxo:;',lkkkkkOOOOOOkkkkkkkkkkkkkkkkkkk
dddxxxxxxxxxxxxxdooooollooddddxxxxxxxxxxddddoc'                      .....'',;;lc,;cdl',;:dkkkkkkkkOOkkkxxxxkkkOOOOOOkkkx
ddxxxxxxxxxxxxxxxxxxxxddoooooooddoddddddooodddl.                       ...',,',::,';l:,cdxkOOOOOkkkkkkOOOOkkkkkkOOOOkkkkk
dddoooooodddddxxxxxxxxddxxkkkkkkkxxxxxxxxxkkkkxd;.                      ....'....',,;,cxxkkkkxxxxkkkkkkkkkkkkxxdxdddddddx
doooooooddddddddddddddddxxxxxxxxxxxxkxxxkkkOOkkkxd:.                    ......  .';,,'cxxxdddooddddddxxxxxxxdddodddxddddd
ddddddddddddooooddxxxxxxkkkOkkkkkxxxxxxxxddddooooooc,.                   ........;;''':dooooddddddxxkkkxxxxxxxxxxxxkkkOOO
llloddxxkxxdddddoollllllloooddddxddddoooooooooooollll;.                     ....','...cxxdddddddxxxxxxxxxxxxkkkxkkkkOOOkk
oooddddddddddddddoooollllllooddxxkxxxxxxddddxxxxxxxxxxxc.                     .......;dkkxxxxddooddddoodoodddddxxxxxxxxdo
:ccloooddddddxxddooooodddooooloodxddooddxxkkkkkkkkkkkxxdc.     .,'.      ..........,:odxxkkkxxxxxdoooooooodxkkkkkkkkkkkkk
:::::::::::;;;,,''''',,;;::ccllllllc::::::cclloodxxxxxddo;.   .lkx:.     ..;::;;;;;:::::cccc:::;;;;;;;;::clodddddooodddxx
::;,,,'''''''''''''''''',,,,,;;:::::::;;;;;;;;;::cccccc:::,. .lxddd:    .,loodoooollllloooooooooolllccccccccccccccccloddd
;;;;;;;;;;,,,,,,,,,,,,,,,,,;;:cllooooooooollooooooooooooooo:.;xxxxx:.   .cxxxxxddooloooodddxxxkkxxxddollllccccccc:::::ccl
ccccccclllllcclllllllllllllllodddddddddddddddxxxxxxxxxxxxxxo',dkxxkd,...;dxxxxxdddoooooddddxxxkkkkkxxxxxdddddddxxxxxxxxxx
ccccllllllooooooooddddddxxxxxxxxxxxddddddddxxxxkkkkkxxxxxxxxc'lkxxxxd;.:dxdddddddxkkkxxxxxxxkxxxkkxkkOOOOkOO00OOkkkkxxxdd
lllllllccccllllllooddddxxkkkkkxxxxdddddddddoooooooollllcllll;.;ddoccl:':dlccc:cccclloolllllllllllllllllcccllooolllccc:::;
xxxddxxxxxxxxxxxxxxddddxxxxxxxxxxkkkkkxxxxxxddddddooolllllllc,'lkxdddd:,dkkkkkkkkkkOOOOkkkkkkkkkkxxdollccccccccllllllllll
ddddddddddxxxxxxddooooooooddddddxxkkkkkOOkkkxxxxkkkkkkkxddxxxl';dxdooo:'cxoooolllllllllllllllllooolllccccccllllloodddxxxx
ddxxxddddooddooooollllllllllllooooddddddddddxxxxxkkxxxdoooooll:''lxoodo;;olcc::;;,,,,,,,,;;;:::cccclloooolllccc::::::::cc
ddddddddoddddddxxxxxdoollllcc:;,,,,;;;;;;::cclllooooolllllcllc;..,ddood:'ldlloooollloloooooooodddoodddddddxxxdddddddddddd
c:::cclllooooodooollllllllccccc:::::::;;:::::::::::::::::ccc::;...,oxdo;.;doclllooodddddddddooolllccccccccllooooooddxxxxk
::cclllllllllcc::,.....',,,,,;::ccllooodddooooollc::::::::;,,'......;:;'..ldooooocclllooooooooooollllllccccclloooddxxxxxx
llllllllllllllclc'.         ........''',,;;;::::ccccclc::;;,,,,,,,,,'.....':llllc;,;;;::::::ccccclloodddxxkkkOOOOOkkxdooo
lllllllcccc:::;;,.........                     ...........'',,,,,,,,;;:cloooooooooooooolllllllcccccccccccccccccccclllcc:;
.'',,,,,,,'''.....................                                ......'',,;;;::ccllooddddddxxxxxkkkkkkkkkkkkdlc:;'.....
''..''............................                                                .......',,;;::::clloddolc::;'..........
'',,,,,,''''....................... .........                                               ............'................
;;,,,,,,,,,'''''.............................   .                                                      ..................
;;;,,,,;;;;,,,,''''........................      ..  .    .                                            ..................
lcccc:::::;;;;,,''''.................................... ............    .     ..   .    ...    ..............''.....'.''
oolllcccc::::::;;;;,,'''''''............................................................................''.'',,,,,''',,,;
,,;;:ccccccccc::;;;;;;,,,,''...........'''''''''.....'''',,''''..................'''..........',;,,,,'',,,,,,,;;;;,;;;;;;
::::::c:::;,,'................................'''.........'''',,,,'''''...........''.'''.....'''',,,;;;,;;;;;,,,,,,,,,,;,

*/

//* SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.9;

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

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

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

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

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

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

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

}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}

contract WILSON is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = unicode"Wilson";
    string private constant _symbol = unicode"WILSON";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 2000000000 * 10**9;

    uint256 private _taxLastBlock;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 20;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 40;

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap;
    address payable public _developmentAddress = payable(msg.sender);
    address payable private _marketingAddress = payable(msg.sender);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen = true;
    bool private inSwap = false;
    bool private swapEnabled = true;
    bool private antiCaEmpty = true;

    uint256 public _maxTxAmount =  2 * (_tTotal/100);
    uint256 public _maxWalletSize = 2 * (_tTotal/100);
    uint256 public _swapTokensAtAmount = 5 *(_tTotal/1000);

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;

        _taxLastBlock=block.number;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (from != owner() && to != owner()) {

            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");

            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenBalance = balanceOf(address(this));

            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(antiCaEmpty && block.number==_taxLastBlock)
                canSwap=false; //dont allow ca to sell 2 times in a block

            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                    _taxLastBlock=block.number;
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {

            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }

        }

        _tokenTransfer(from, to, amount, takeFee);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }

    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }

    function manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function blockBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function blockSingleBot(address thebot) public onlyOwner {
        bots[thebot] = true;
    }

    function unblockBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

    //Avoid the newest bots that empty ca tokens.
    function toggleantiCaEmpty(bool _value) public onlyOwner {
        antiCaEmpty = _value;
    }

    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

}

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":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_developmentAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"thebot","type":"address"}],"name":"blockSingleBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"toggleantiCaEmpty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052671bc16d674ec800006000196200001c91906200077c565b6000196200002b9190620007e3565b60075560006009556014600a556000600b556028600c55600b54600d55600c54600e55600d54600f55600e5460105533601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601660146101000a81548160ff0219169083151502179055506000601660156101000a81548160ff02191690831515021790555060016016806101000a81548160ff0219169083151502179055506001601660176101000a81548160ff0219169083151502179055506064671bc16d674ec800006200015e91906200081e565b60026200016c919062000856565b6017556064671bc16d674ec800006200018691906200081e565b600262000194919062000856565b6018556103e8671bc16d674ec80000620001af91906200081e565b6005620001bd919062000856565b601955348015620001cd57600080fd5b506000620001e06200071260201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060075460026000620002956200071260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000379573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200039f91906200090b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000407573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042d91906200090b565b6040518363ffffffff1660e01b81526004016200044c9291906200094e565b6020604051808303816000875af11580156200046c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200049291906200090b565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004e86200071a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550436006819055506200069c6200071260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef671bc16d674ec800006040516200070391906200098c565b60405180910390a350620009a9565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620007898262000743565b9150620007968362000743565b925082620007a957620007a86200074d565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007f08262000743565b9150620007fd8362000743565b9250828203905081811115620008185762000817620007b4565b5b92915050565b60006200082b8262000743565b9150620008388362000743565b9250826200084b576200084a6200074d565b5b828204905092915050565b6000620008638262000743565b9150620008708362000743565b9250828202620008808162000743565b915082820484148315176200089a5762000899620007b4565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008d382620008a6565b9050919050565b620008e581620008c6565b8114620008f157600080fd5b50565b6000815190506200090581620008da565b92915050565b600060208284031215620009245762000923620008a1565b5b60006200093484828501620008f4565b91505092915050565b6200094881620008c6565b82525050565b60006040820190506200096560008301856200093d565b6200097460208301846200093d565b9392505050565b620009868162000743565b82525050565b6000602082019050620009a360008301846200097b565b92915050565b61405280620009b96000396000f3fe6080604052600436106101f15760003560e01c80637d1db4a51161010d578063a9059cbb116100a0578063c3c8cd801161006f578063c3c8cd80146106e3578063c492f046146106fa578063dd62ed3e14610723578063ea1644d514610760578063f2fde38b14610789576101f8565b8063a9059cbb14610617578063aff0598314610654578063be1aa3cd1461067d578063bfd79284146106a6576101f8565b80638f9a55c0116100dc5780638f9a55c01461056f57806395d89b411461059a57806398a5c315146105c5578063a2a957bb146105ee576101f8565b80637d1db4a5146104b35780637f2feddc146104de5780638da5cb5b1461051b5780638f70ccf714610546576101f8565b80633d6a9afe116101855780636fc3eaec116101545780636fc3eaec1461041f57806370a0823114610436578063715018a61461047357806374010ece1461048a576101f8565b80633d6a9afe1461037757806349bd5a5e146103a25780636b999053146103cd5780636d8aa8f8146103f6576101f8565b806318160ddd116101c157806318160ddd146102b957806323b872dd146102e45780632fd689e314610321578063313ce5671461034c576101f8565b8062b8cf2a146101fd57806306fdde0314610226578063095ea7b3146102515780631694505e1461028e576101f8565b366101f857005b600080fd5b34801561020957600080fd5b50610224600480360381019061021f9190612fe6565b6107b2565b005b34801561023257600080fd5b5061023b6108dc565b60405161024891906130ae565b60405180910390f35b34801561025d57600080fd5b5061027860048036038101906102739190613106565b610919565b6040516102859190613161565b60405180910390f35b34801561029a57600080fd5b506102a3610937565b6040516102b091906131db565b60405180910390f35b3480156102c557600080fd5b506102ce61095d565b6040516102db9190613205565b60405180910390f35b3480156102f057600080fd5b5061030b60048036038101906103069190613220565b61096d565b6040516103189190613161565b60405180910390f35b34801561032d57600080fd5b50610336610a46565b6040516103439190613205565b60405180910390f35b34801561035857600080fd5b50610361610a4c565b60405161036e919061328f565b60405180910390f35b34801561038357600080fd5b5061038c610a55565b60405161039991906132cb565b60405180910390f35b3480156103ae57600080fd5b506103b7610a7b565b6040516103c491906132f5565b60405180910390f35b3480156103d957600080fd5b506103f460048036038101906103ef9190613310565b610aa1565b005b34801561040257600080fd5b5061041d60048036038101906104189190613369565b610b91565b005b34801561042b57600080fd5b50610434610c42565b005b34801561044257600080fd5b5061045d60048036038101906104589190613310565b610d13565b60405161046a9190613205565b60405180910390f35b34801561047f57600080fd5b50610488610d64565b005b34801561049657600080fd5b506104b160048036038101906104ac9190613396565b610eb7565b005b3480156104bf57600080fd5b506104c8610f56565b6040516104d59190613205565b60405180910390f35b3480156104ea57600080fd5b5061050560048036038101906105009190613310565b610f5c565b6040516105129190613205565b60405180910390f35b34801561052757600080fd5b50610530610f74565b60405161053d91906132f5565b60405180910390f35b34801561055257600080fd5b5061056d60048036038101906105689190613369565b610f9d565b005b34801561057b57600080fd5b5061058461104f565b6040516105919190613205565b60405180910390f35b3480156105a657600080fd5b506105af611055565b6040516105bc91906130ae565b60405180910390f35b3480156105d157600080fd5b506105ec60048036038101906105e79190613396565b611092565b005b3480156105fa57600080fd5b50610615600480360381019061061091906133c3565b611131565b005b34801561062357600080fd5b5061063e60048036038101906106399190613106565b6111e8565b60405161064b9190613161565b60405180910390f35b34801561066057600080fd5b5061067b60048036038101906106769190613369565b611206565b005b34801561068957600080fd5b506106a4600480360381019061069f9190613310565b6112b8565b005b3480156106b257600080fd5b506106cd60048036038101906106c89190613310565b6113a8565b6040516106da9190613161565b60405180910390f35b3480156106ef57600080fd5b506106f86113c8565b005b34801561070657600080fd5b50610721600480360381019061071c9190613485565b6114a1565b005b34801561072f57600080fd5b5061074a600480360381019061074591906134e5565b6115db565b6040516107579190613205565b60405180910390f35b34801561076c57600080fd5b5061078760048036038101906107829190613396565b611662565b005b34801561079557600080fd5b506107b060048036038101906107ab9190613310565b611701565b005b6107ba6118c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610847576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083e90613571565b60405180910390fd5b60005b81518110156108d85760016011600084848151811061086c5761086b613591565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108d0906135ef565b91505061084a565b5050565b60606040518060400160405280600681526020017f57696c736f6e0000000000000000000000000000000000000000000000000000815250905090565b600061092d6109266118c2565b84846118ca565b6001905092915050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000671bc16d674ec80000905090565b600061097a848484611a93565b610a3b846109866118c2565b610a3685604051806060016040528060288152602001613ff560289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109ec6118c2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123449092919063ffffffff16565b6118ca565b600190509392505050565b60195481565b60006009905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610aa96118c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2d90613571565b60405180910390fd5b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610b996118c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1d90613571565b60405180910390fd5b806016806101000a81548160ff02191690831515021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c836118c2565b73ffffffffffffffffffffffffffffffffffffffff161480610cf95750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ce16118c2565b73ffffffffffffffffffffffffffffffffffffffff16145b610d0257600080fd5b6000479050610d10816123a8565b50565b6000610d5d600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612414565b9050919050565b610d6c6118c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df090613571565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610ebf6118c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4390613571565b60405180910390fd5b8060178190555050565b60175481565b60126020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610fa56118c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611032576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102990613571565b60405180910390fd5b80601660146101000a81548160ff02191690831515021790555050565b60185481565b60606040518060400160405280600681526020017f57494c534f4e0000000000000000000000000000000000000000000000000000815250905090565b61109a6118c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611127576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111e90613571565b60405180910390fd5b8060198190555050565b6111396118c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bd90613571565b60405180910390fd5b8360098190555082600b8190555081600a8190555080600c8190555050505050565b60006111fc6111f56118c2565b8484611a93565b6001905092915050565b61120e6118c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461129b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129290613571565b60405180910390fd5b80601660176101000a81548160ff02191690831515021790555050565b6112c06118c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461134d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134490613571565b60405180910390fd5b6001601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60116020528060005260406000206000915054906101000a900460ff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114096118c2565b73ffffffffffffffffffffffffffffffffffffffff16148061147f5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114676118c2565b73ffffffffffffffffffffffffffffffffffffffff16145b61148857600080fd5b600061149330610d13565b905061149e81612482565b50565b6114a96118c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611536576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152d90613571565b60405180910390fd5b60005b838390508110156115d557816005600086868581811061155c5761155b613591565b5b90506020020160208101906115719190613310565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806115cd906135ef565b915050611539565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61166a6118c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ee90613571565b60405180910390fd5b8060188190555050565b6117096118c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178d90613571565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fc906136a9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611939576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119309061373b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199f906137cd565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a869190613205565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af99061385f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b68906138f1565b60405180910390fd5b60008111611bb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bab90613983565b60405180910390fd5b611bbc610f74565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c2a5750611bfa610f74565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561204357601660149054906101000a900460ff16611cb957611c4b610f74565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611caf90613a15565b60405180910390fd5b5b601754811115611cfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf590613a81565b60405180910390fd5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611da25750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611de1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd890613b13565b60405180910390fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611e8e5760185481611e4384610d13565b611e4d9190613b33565b10611e8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8490613bd9565b60405180910390fd5b5b6000611e9930610d13565b905060006019548210159050601660179054906101000a900460ff168015611ec2575060065443145b15611ecc57600090505b6017548210611edb5760175491505b808015611ef55750601660159054906101000a900460ff16155b8015611f4f5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611f65575060168054906101000a900460ff165b8015611fbb5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120115750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120405761201f82612482565b6000479050600081111561203e57612036476123a8565b436006819055505b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120ea5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061219d5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561219c5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156121ab5760009050612332565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156122565750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561226e57600954600d81905550600a54600e819055505b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156123195750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561233157600b54600d81905550600c54600e819055505b5b61233e848484846126fb565b50505050565b600083831115829061238c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238391906130ae565b60405180910390fd5b506000838561239b9190613bf9565b9050809150509392505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612410573d6000803e3d6000fd5b5050565b600060075482111561245b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245290613c9f565b60405180910390fd5b6000612465612728565b905061247a818461275390919063ffffffff16565b915050919050565b6001601660156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156124ba576124b9612e45565b5b6040519080825280602002602001820160405280156124e85781602001602082028036833780820191505090505b5090503081600081518110612500576124ff613591565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125cb9190613cd4565b816001815181106125df576125de613591565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061264630601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846118ca565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016126aa959493929190613dfa565b600060405180830381600087803b1580156126c457600080fd5b505af11580156126d8573d6000803e3d6000fd5b50505050506000601660156101000a81548160ff02191690831515021790555050565b806127095761270861279d565b5b6127148484846127da565b80612722576127216129a5565b5b50505050565b60008060006127356129b9565b9150915061274c818361275390919063ffffffff16565b9250505090565b600061279583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a18565b905092915050565b6000600d541480156127b157506000600e54145b6127d857600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b6000806000806000806127ec87612a7b565b95509550955095509550955061284a86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ae390919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128df85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b2d90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061292b81612b8b565b6129358483612c48565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516129929190613205565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b600080600060075490506000671bc16d674ec8000090506129ed671bc16d674ec8000060075461275390919063ffffffff16565b821015612a0b57600754671bc16d674ec80000935093505050612a14565b81819350935050505b9091565b60008083118290612a5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5691906130ae565b60405180910390fd5b5060008385612a6e9190613e83565b9050809150509392505050565b6000806000806000806000806000612a988a600d54600e54612c82565b9250925092506000612aa8612728565b90506000806000612abb8e878787612d18565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612b2583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612344565b905092915050565b6000808284612b3c9190613b33565b905083811015612b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7890613f00565b60405180910390fd5b8091505092915050565b6000612b95612728565b90506000612bac8284612da190919063ffffffff16565b9050612c0081600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b2d90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612c5d82600754612ae390919063ffffffff16565b600781905550612c7881600854612b2d90919063ffffffff16565b6008819055505050565b600080600080612cae6064612ca0888a612da190919063ffffffff16565b61275390919063ffffffff16565b90506000612cd86064612cca888b612da190919063ffffffff16565b61275390919063ffffffff16565b90506000612d0182612cf3858c612ae390919063ffffffff16565b612ae390919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612d318589612da190919063ffffffff16565b90506000612d488689612da190919063ffffffff16565b90506000612d5f8789612da190919063ffffffff16565b90506000612d8882612d7a8587612ae390919063ffffffff16565b612ae390919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612db35760009050612e15565b60008284612dc19190613f20565b9050828482612dd09190613e83565b14612e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e0790613fd4565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612e7d82612e34565b810181811067ffffffffffffffff82111715612e9c57612e9b612e45565b5b80604052505050565b6000612eaf612e1b565b9050612ebb8282612e74565b919050565b600067ffffffffffffffff821115612edb57612eda612e45565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f1c82612ef1565b9050919050565b612f2c81612f11565b8114612f3757600080fd5b50565b600081359050612f4981612f23565b92915050565b6000612f62612f5d84612ec0565b612ea5565b90508083825260208201905060208402830185811115612f8557612f84612eec565b5b835b81811015612fae5780612f9a8882612f3a565b845260208401935050602081019050612f87565b5050509392505050565b600082601f830112612fcd57612fcc612e2f565b5b8135612fdd848260208601612f4f565b91505092915050565b600060208284031215612ffc57612ffb612e25565b5b600082013567ffffffffffffffff81111561301a57613019612e2a565b5b61302684828501612fb8565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561306957808201518184015260208101905061304e565b60008484015250505050565b60006130808261302f565b61308a818561303a565b935061309a81856020860161304b565b6130a381612e34565b840191505092915050565b600060208201905081810360008301526130c88184613075565b905092915050565b6000819050919050565b6130e3816130d0565b81146130ee57600080fd5b50565b600081359050613100816130da565b92915050565b6000806040838503121561311d5761311c612e25565b5b600061312b85828601612f3a565b925050602061313c858286016130f1565b9150509250929050565b60008115159050919050565b61315b81613146565b82525050565b60006020820190506131766000830184613152565b92915050565b6000819050919050565b60006131a161319c61319784612ef1565b61317c565b612ef1565b9050919050565b60006131b382613186565b9050919050565b60006131c5826131a8565b9050919050565b6131d5816131ba565b82525050565b60006020820190506131f060008301846131cc565b92915050565b6131ff816130d0565b82525050565b600060208201905061321a60008301846131f6565b92915050565b60008060006060848603121561323957613238612e25565b5b600061324786828701612f3a565b935050602061325886828701612f3a565b9250506040613269868287016130f1565b9150509250925092565b600060ff82169050919050565b61328981613273565b82525050565b60006020820190506132a46000830184613280565b92915050565b60006132b582612ef1565b9050919050565b6132c5816132aa565b82525050565b60006020820190506132e060008301846132bc565b92915050565b6132ef81612f11565b82525050565b600060208201905061330a60008301846132e6565b92915050565b60006020828403121561332657613325612e25565b5b600061333484828501612f3a565b91505092915050565b61334681613146565b811461335157600080fd5b50565b6000813590506133638161333d565b92915050565b60006020828403121561337f5761337e612e25565b5b600061338d84828501613354565b91505092915050565b6000602082840312156133ac576133ab612e25565b5b60006133ba848285016130f1565b91505092915050565b600080600080608085870312156133dd576133dc612e25565b5b60006133eb878288016130f1565b94505060206133fc878288016130f1565b935050604061340d878288016130f1565b925050606061341e878288016130f1565b91505092959194509250565b600080fd5b60008083601f84011261344557613444612e2f565b5b8235905067ffffffffffffffff8111156134625761346161342a565b5b60208301915083602082028301111561347e5761347d612eec565b5b9250929050565b60008060006040848603121561349e5761349d612e25565b5b600084013567ffffffffffffffff8111156134bc576134bb612e2a565b5b6134c88682870161342f565b935093505060206134db86828701613354565b9150509250925092565b600080604083850312156134fc576134fb612e25565b5b600061350a85828601612f3a565b925050602061351b85828601612f3a565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061355b60208361303a565b915061356682613525565b602082019050919050565b6000602082019050818103600083015261358a8161354e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006135fa826130d0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361362c5761362b6135c0565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061369360268361303a565b915061369e82613637565b604082019050919050565b600060208201905081810360008301526136c281613686565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061372560248361303a565b9150613730826136c9565b604082019050919050565b6000602082019050818103600083015261375481613718565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006137b760228361303a565b91506137c28261375b565b604082019050919050565b600060208201905081810360008301526137e6816137aa565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061384960258361303a565b9150613854826137ed565b604082019050919050565b600060208201905081810360008301526138788161383c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006138db60238361303a565b91506138e68261387f565b604082019050919050565b6000602082019050818103600083015261390a816138ce565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061396d60298361303a565b915061397882613911565b604082019050919050565b6000602082019050818103600083015261399c81613960565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006139ff603f8361303a565b9150613a0a826139a3565b604082019050919050565b60006020820190508181036000830152613a2e816139f2565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613a6b601c8361303a565b9150613a7682613a35565b602082019050919050565b60006020820190508181036000830152613a9a81613a5e565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613afd60238361303a565b9150613b0882613aa1565b604082019050919050565b60006020820190508181036000830152613b2c81613af0565b9050919050565b6000613b3e826130d0565b9150613b49836130d0565b9250828201905080821115613b6157613b606135c0565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613bc360238361303a565b9150613bce82613b67565b604082019050919050565b60006020820190508181036000830152613bf281613bb6565b9050919050565b6000613c04826130d0565b9150613c0f836130d0565b9250828203905081811115613c2757613c266135c0565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613c89602a8361303a565b9150613c9482613c2d565b604082019050919050565b60006020820190508181036000830152613cb881613c7c565b9050919050565b600081519050613cce81612f23565b92915050565b600060208284031215613cea57613ce9612e25565b5b6000613cf884828501613cbf565b91505092915050565b6000819050919050565b6000613d26613d21613d1c84613d01565b61317c565b6130d0565b9050919050565b613d3681613d0b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613d7181612f11565b82525050565b6000613d838383613d68565b60208301905092915050565b6000602082019050919050565b6000613da782613d3c565b613db18185613d47565b9350613dbc83613d58565b8060005b83811015613ded578151613dd48882613d77565b9750613ddf83613d8f565b925050600181019050613dc0565b5085935050505092915050565b600060a082019050613e0f60008301886131f6565b613e1c6020830187613d2d565b8181036040830152613e2e8186613d9c565b9050613e3d60608301856132e6565b613e4a60808301846131f6565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613e8e826130d0565b9150613e99836130d0565b925082613ea957613ea8613e54565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613eea601b8361303a565b9150613ef582613eb4565b602082019050919050565b60006020820190508181036000830152613f1981613edd565b9050919050565b6000613f2b826130d0565b9150613f36836130d0565b9250828202613f44816130d0565b91508282048414831517613f5b57613f5a6135c0565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613fbe60218361303a565b9150613fc982613f62565b604082019050919050565b60006020820190508181036000830152613fed81613fb1565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202d58e37faf1825c1202fdaa91085b386404be17627ce5110d361f805838ecd2764736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101f15760003560e01c80637d1db4a51161010d578063a9059cbb116100a0578063c3c8cd801161006f578063c3c8cd80146106e3578063c492f046146106fa578063dd62ed3e14610723578063ea1644d514610760578063f2fde38b14610789576101f8565b8063a9059cbb14610617578063aff0598314610654578063be1aa3cd1461067d578063bfd79284146106a6576101f8565b80638f9a55c0116100dc5780638f9a55c01461056f57806395d89b411461059a57806398a5c315146105c5578063a2a957bb146105ee576101f8565b80637d1db4a5146104b35780637f2feddc146104de5780638da5cb5b1461051b5780638f70ccf714610546576101f8565b80633d6a9afe116101855780636fc3eaec116101545780636fc3eaec1461041f57806370a0823114610436578063715018a61461047357806374010ece1461048a576101f8565b80633d6a9afe1461037757806349bd5a5e146103a25780636b999053146103cd5780636d8aa8f8146103f6576101f8565b806318160ddd116101c157806318160ddd146102b957806323b872dd146102e45780632fd689e314610321578063313ce5671461034c576101f8565b8062b8cf2a146101fd57806306fdde0314610226578063095ea7b3146102515780631694505e1461028e576101f8565b366101f857005b600080fd5b34801561020957600080fd5b50610224600480360381019061021f9190612fe6565b6107b2565b005b34801561023257600080fd5b5061023b6108dc565b60405161024891906130ae565b60405180910390f35b34801561025d57600080fd5b5061027860048036038101906102739190613106565b610919565b6040516102859190613161565b60405180910390f35b34801561029a57600080fd5b506102a3610937565b6040516102b091906131db565b60405180910390f35b3480156102c557600080fd5b506102ce61095d565b6040516102db9190613205565b60405180910390f35b3480156102f057600080fd5b5061030b60048036038101906103069190613220565b61096d565b6040516103189190613161565b60405180910390f35b34801561032d57600080fd5b50610336610a46565b6040516103439190613205565b60405180910390f35b34801561035857600080fd5b50610361610a4c565b60405161036e919061328f565b60405180910390f35b34801561038357600080fd5b5061038c610a55565b60405161039991906132cb565b60405180910390f35b3480156103ae57600080fd5b506103b7610a7b565b6040516103c491906132f5565b60405180910390f35b3480156103d957600080fd5b506103f460048036038101906103ef9190613310565b610aa1565b005b34801561040257600080fd5b5061041d60048036038101906104189190613369565b610b91565b005b34801561042b57600080fd5b50610434610c42565b005b34801561044257600080fd5b5061045d60048036038101906104589190613310565b610d13565b60405161046a9190613205565b60405180910390f35b34801561047f57600080fd5b50610488610d64565b005b34801561049657600080fd5b506104b160048036038101906104ac9190613396565b610eb7565b005b3480156104bf57600080fd5b506104c8610f56565b6040516104d59190613205565b60405180910390f35b3480156104ea57600080fd5b5061050560048036038101906105009190613310565b610f5c565b6040516105129190613205565b60405180910390f35b34801561052757600080fd5b50610530610f74565b60405161053d91906132f5565b60405180910390f35b34801561055257600080fd5b5061056d60048036038101906105689190613369565b610f9d565b005b34801561057b57600080fd5b5061058461104f565b6040516105919190613205565b60405180910390f35b3480156105a657600080fd5b506105af611055565b6040516105bc91906130ae565b60405180910390f35b3480156105d157600080fd5b506105ec60048036038101906105e79190613396565b611092565b005b3480156105fa57600080fd5b50610615600480360381019061061091906133c3565b611131565b005b34801561062357600080fd5b5061063e60048036038101906106399190613106565b6111e8565b60405161064b9190613161565b60405180910390f35b34801561066057600080fd5b5061067b60048036038101906106769190613369565b611206565b005b34801561068957600080fd5b506106a4600480360381019061069f9190613310565b6112b8565b005b3480156106b257600080fd5b506106cd60048036038101906106c89190613310565b6113a8565b6040516106da9190613161565b60405180910390f35b3480156106ef57600080fd5b506106f86113c8565b005b34801561070657600080fd5b50610721600480360381019061071c9190613485565b6114a1565b005b34801561072f57600080fd5b5061074a600480360381019061074591906134e5565b6115db565b6040516107579190613205565b60405180910390f35b34801561076c57600080fd5b5061078760048036038101906107829190613396565b611662565b005b34801561079557600080fd5b506107b060048036038101906107ab9190613310565b611701565b005b6107ba6118c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610847576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083e90613571565b60405180910390fd5b60005b81518110156108d85760016011600084848151811061086c5761086b613591565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108d0906135ef565b91505061084a565b5050565b60606040518060400160405280600681526020017f57696c736f6e0000000000000000000000000000000000000000000000000000815250905090565b600061092d6109266118c2565b84846118ca565b6001905092915050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000671bc16d674ec80000905090565b600061097a848484611a93565b610a3b846109866118c2565b610a3685604051806060016040528060288152602001613ff560289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109ec6118c2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123449092919063ffffffff16565b6118ca565b600190509392505050565b60195481565b60006009905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610aa96118c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2d90613571565b60405180910390fd5b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610b996118c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1d90613571565b60405180910390fd5b806016806101000a81548160ff02191690831515021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c836118c2565b73ffffffffffffffffffffffffffffffffffffffff161480610cf95750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ce16118c2565b73ffffffffffffffffffffffffffffffffffffffff16145b610d0257600080fd5b6000479050610d10816123a8565b50565b6000610d5d600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612414565b9050919050565b610d6c6118c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df090613571565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610ebf6118c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4390613571565b60405180910390fd5b8060178190555050565b60175481565b60126020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610fa56118c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611032576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102990613571565b60405180910390fd5b80601660146101000a81548160ff02191690831515021790555050565b60185481565b60606040518060400160405280600681526020017f57494c534f4e0000000000000000000000000000000000000000000000000000815250905090565b61109a6118c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611127576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111e90613571565b60405180910390fd5b8060198190555050565b6111396118c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bd90613571565b60405180910390fd5b8360098190555082600b8190555081600a8190555080600c8190555050505050565b60006111fc6111f56118c2565b8484611a93565b6001905092915050565b61120e6118c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461129b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129290613571565b60405180910390fd5b80601660176101000a81548160ff02191690831515021790555050565b6112c06118c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461134d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134490613571565b60405180910390fd5b6001601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60116020528060005260406000206000915054906101000a900460ff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114096118c2565b73ffffffffffffffffffffffffffffffffffffffff16148061147f5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114676118c2565b73ffffffffffffffffffffffffffffffffffffffff16145b61148857600080fd5b600061149330610d13565b905061149e81612482565b50565b6114a96118c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611536576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152d90613571565b60405180910390fd5b60005b838390508110156115d557816005600086868581811061155c5761155b613591565b5b90506020020160208101906115719190613310565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806115cd906135ef565b915050611539565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61166a6118c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ee90613571565b60405180910390fd5b8060188190555050565b6117096118c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178d90613571565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fc906136a9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611939576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119309061373b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199f906137cd565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a869190613205565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af99061385f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b68906138f1565b60405180910390fd5b60008111611bb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bab90613983565b60405180910390fd5b611bbc610f74565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c2a5750611bfa610f74565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561204357601660149054906101000a900460ff16611cb957611c4b610f74565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611caf90613a15565b60405180910390fd5b5b601754811115611cfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf590613a81565b60405180910390fd5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611da25750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611de1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd890613b13565b60405180910390fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611e8e5760185481611e4384610d13565b611e4d9190613b33565b10611e8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8490613bd9565b60405180910390fd5b5b6000611e9930610d13565b905060006019548210159050601660179054906101000a900460ff168015611ec2575060065443145b15611ecc57600090505b6017548210611edb5760175491505b808015611ef55750601660159054906101000a900460ff16155b8015611f4f5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611f65575060168054906101000a900460ff165b8015611fbb5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120115750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120405761201f82612482565b6000479050600081111561203e57612036476123a8565b436006819055505b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120ea5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061219d5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561219c5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156121ab5760009050612332565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156122565750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561226e57600954600d81905550600a54600e819055505b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156123195750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561233157600b54600d81905550600c54600e819055505b5b61233e848484846126fb565b50505050565b600083831115829061238c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238391906130ae565b60405180910390fd5b506000838561239b9190613bf9565b9050809150509392505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612410573d6000803e3d6000fd5b5050565b600060075482111561245b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245290613c9f565b60405180910390fd5b6000612465612728565b905061247a818461275390919063ffffffff16565b915050919050565b6001601660156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156124ba576124b9612e45565b5b6040519080825280602002602001820160405280156124e85781602001602082028036833780820191505090505b5090503081600081518110612500576124ff613591565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125cb9190613cd4565b816001815181106125df576125de613591565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061264630601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846118ca565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016126aa959493929190613dfa565b600060405180830381600087803b1580156126c457600080fd5b505af11580156126d8573d6000803e3d6000fd5b50505050506000601660156101000a81548160ff02191690831515021790555050565b806127095761270861279d565b5b6127148484846127da565b80612722576127216129a5565b5b50505050565b60008060006127356129b9565b9150915061274c818361275390919063ffffffff16565b9250505090565b600061279583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a18565b905092915050565b6000600d541480156127b157506000600e54145b6127d857600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b6000806000806000806127ec87612a7b565b95509550955095509550955061284a86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ae390919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128df85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b2d90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061292b81612b8b565b6129358483612c48565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516129929190613205565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b600080600060075490506000671bc16d674ec8000090506129ed671bc16d674ec8000060075461275390919063ffffffff16565b821015612a0b57600754671bc16d674ec80000935093505050612a14565b81819350935050505b9091565b60008083118290612a5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5691906130ae565b60405180910390fd5b5060008385612a6e9190613e83565b9050809150509392505050565b6000806000806000806000806000612a988a600d54600e54612c82565b9250925092506000612aa8612728565b90506000806000612abb8e878787612d18565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612b2583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612344565b905092915050565b6000808284612b3c9190613b33565b905083811015612b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7890613f00565b60405180910390fd5b8091505092915050565b6000612b95612728565b90506000612bac8284612da190919063ffffffff16565b9050612c0081600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b2d90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612c5d82600754612ae390919063ffffffff16565b600781905550612c7881600854612b2d90919063ffffffff16565b6008819055505050565b600080600080612cae6064612ca0888a612da190919063ffffffff16565b61275390919063ffffffff16565b90506000612cd86064612cca888b612da190919063ffffffff16565b61275390919063ffffffff16565b90506000612d0182612cf3858c612ae390919063ffffffff16565b612ae390919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612d318589612da190919063ffffffff16565b90506000612d488689612da190919063ffffffff16565b90506000612d5f8789612da190919063ffffffff16565b90506000612d8882612d7a8587612ae390919063ffffffff16565b612ae390919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612db35760009050612e15565b60008284612dc19190613f20565b9050828482612dd09190613e83565b14612e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e0790613fd4565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612e7d82612e34565b810181811067ffffffffffffffff82111715612e9c57612e9b612e45565b5b80604052505050565b6000612eaf612e1b565b9050612ebb8282612e74565b919050565b600067ffffffffffffffff821115612edb57612eda612e45565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f1c82612ef1565b9050919050565b612f2c81612f11565b8114612f3757600080fd5b50565b600081359050612f4981612f23565b92915050565b6000612f62612f5d84612ec0565b612ea5565b90508083825260208201905060208402830185811115612f8557612f84612eec565b5b835b81811015612fae5780612f9a8882612f3a565b845260208401935050602081019050612f87565b5050509392505050565b600082601f830112612fcd57612fcc612e2f565b5b8135612fdd848260208601612f4f565b91505092915050565b600060208284031215612ffc57612ffb612e25565b5b600082013567ffffffffffffffff81111561301a57613019612e2a565b5b61302684828501612fb8565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561306957808201518184015260208101905061304e565b60008484015250505050565b60006130808261302f565b61308a818561303a565b935061309a81856020860161304b565b6130a381612e34565b840191505092915050565b600060208201905081810360008301526130c88184613075565b905092915050565b6000819050919050565b6130e3816130d0565b81146130ee57600080fd5b50565b600081359050613100816130da565b92915050565b6000806040838503121561311d5761311c612e25565b5b600061312b85828601612f3a565b925050602061313c858286016130f1565b9150509250929050565b60008115159050919050565b61315b81613146565b82525050565b60006020820190506131766000830184613152565b92915050565b6000819050919050565b60006131a161319c61319784612ef1565b61317c565b612ef1565b9050919050565b60006131b382613186565b9050919050565b60006131c5826131a8565b9050919050565b6131d5816131ba565b82525050565b60006020820190506131f060008301846131cc565b92915050565b6131ff816130d0565b82525050565b600060208201905061321a60008301846131f6565b92915050565b60008060006060848603121561323957613238612e25565b5b600061324786828701612f3a565b935050602061325886828701612f3a565b9250506040613269868287016130f1565b9150509250925092565b600060ff82169050919050565b61328981613273565b82525050565b60006020820190506132a46000830184613280565b92915050565b60006132b582612ef1565b9050919050565b6132c5816132aa565b82525050565b60006020820190506132e060008301846132bc565b92915050565b6132ef81612f11565b82525050565b600060208201905061330a60008301846132e6565b92915050565b60006020828403121561332657613325612e25565b5b600061333484828501612f3a565b91505092915050565b61334681613146565b811461335157600080fd5b50565b6000813590506133638161333d565b92915050565b60006020828403121561337f5761337e612e25565b5b600061338d84828501613354565b91505092915050565b6000602082840312156133ac576133ab612e25565b5b60006133ba848285016130f1565b91505092915050565b600080600080608085870312156133dd576133dc612e25565b5b60006133eb878288016130f1565b94505060206133fc878288016130f1565b935050604061340d878288016130f1565b925050606061341e878288016130f1565b91505092959194509250565b600080fd5b60008083601f84011261344557613444612e2f565b5b8235905067ffffffffffffffff8111156134625761346161342a565b5b60208301915083602082028301111561347e5761347d612eec565b5b9250929050565b60008060006040848603121561349e5761349d612e25565b5b600084013567ffffffffffffffff8111156134bc576134bb612e2a565b5b6134c88682870161342f565b935093505060206134db86828701613354565b9150509250925092565b600080604083850312156134fc576134fb612e25565b5b600061350a85828601612f3a565b925050602061351b85828601612f3a565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061355b60208361303a565b915061356682613525565b602082019050919050565b6000602082019050818103600083015261358a8161354e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006135fa826130d0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361362c5761362b6135c0565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061369360268361303a565b915061369e82613637565b604082019050919050565b600060208201905081810360008301526136c281613686565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061372560248361303a565b9150613730826136c9565b604082019050919050565b6000602082019050818103600083015261375481613718565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006137b760228361303a565b91506137c28261375b565b604082019050919050565b600060208201905081810360008301526137e6816137aa565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061384960258361303a565b9150613854826137ed565b604082019050919050565b600060208201905081810360008301526138788161383c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006138db60238361303a565b91506138e68261387f565b604082019050919050565b6000602082019050818103600083015261390a816138ce565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061396d60298361303a565b915061397882613911565b604082019050919050565b6000602082019050818103600083015261399c81613960565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006139ff603f8361303a565b9150613a0a826139a3565b604082019050919050565b60006020820190508181036000830152613a2e816139f2565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613a6b601c8361303a565b9150613a7682613a35565b602082019050919050565b60006020820190508181036000830152613a9a81613a5e565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613afd60238361303a565b9150613b0882613aa1565b604082019050919050565b60006020820190508181036000830152613b2c81613af0565b9050919050565b6000613b3e826130d0565b9150613b49836130d0565b9250828201905080821115613b6157613b606135c0565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613bc360238361303a565b9150613bce82613b67565b604082019050919050565b60006020820190508181036000830152613bf281613bb6565b9050919050565b6000613c04826130d0565b9150613c0f836130d0565b9250828203905081811115613c2757613c266135c0565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613c89602a8361303a565b9150613c9482613c2d565b604082019050919050565b60006020820190508181036000830152613cb881613c7c565b9050919050565b600081519050613cce81612f23565b92915050565b600060208284031215613cea57613ce9612e25565b5b6000613cf884828501613cbf565b91505092915050565b6000819050919050565b6000613d26613d21613d1c84613d01565b61317c565b6130d0565b9050919050565b613d3681613d0b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613d7181612f11565b82525050565b6000613d838383613d68565b60208301905092915050565b6000602082019050919050565b6000613da782613d3c565b613db18185613d47565b9350613dbc83613d58565b8060005b83811015613ded578151613dd48882613d77565b9750613ddf83613d8f565b925050600181019050613dc0565b5085935050505092915050565b600060a082019050613e0f60008301886131f6565b613e1c6020830187613d2d565b8181036040830152613e2e8186613d9c565b9050613e3d60608301856132e6565b613e4a60808301846131f6565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613e8e826130d0565b9150613e99836130d0565b925082613ea957613ea8613e54565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613eea601b8361303a565b9150613ef582613eb4565b602082019050919050565b60006020820190508181036000830152613f1981613edd565b9050919050565b6000613f2b826130d0565b9150613f36836130d0565b9250828202613f44816130d0565b91508282048414831517613f5b57613f5a6135c0565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613fbe60218361303a565b9150613fc982613f62565b604082019050919050565b60006020820190508181036000830152613fed81613fb1565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202d58e37faf1825c1202fdaa91085b386404be17627ce5110d361f805838ecd2764736f6c63430008130033

Deployed Bytecode Sourcemap

10475:14014:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19404:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13044:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13969:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11803:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13321:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14170:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12149:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13230:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11660:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11851:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19684:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23716:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19161:235;;;;;;;;;;;;;:::i;:::-;;13424:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7962:148;;;;;;;;;;;;;:::i;:::-;;24011:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12038:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11610:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7748:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18808:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12093:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13135:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23525:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23182:291;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13570:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23876:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19581:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11572:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18917:236;;;;;;;;;;;;;:::i;:::-;;24250:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13777:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24127:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8118:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19404:169;7885:12;:10;:12::i;:::-;7875:22;;:6;;;;;;;;;;:22;;;7867:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19480:9:::1;19475:91;19499:5;:12;19495:1;:16;19475:91;;;19550:4;19533;:14;19538:5;19544:1;19538:8;;;;;;;;:::i;:::-;;;;;;;;19533:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;19513:3;;;;;:::i;:::-;;;;19475:91;;;;19404:169:::0;:::o;13044:83::-;13081:13;13114:5;;;;;;;;;;;;;;;;;13107:12;;13044:83;:::o;13969:193::-;14071:4;14093:39;14102:12;:10;:12::i;:::-;14116:7;14125:6;14093:8;:39::i;:::-;14150:4;14143:11;;13969:193;;;;:::o;11803:41::-;;;;;;;;;;;;;:::o;13321:95::-;13374:7;11034:18;13394:14;;13321:95;:::o;14170:446::-;14302:4;14319:36;14329:6;14337:9;14348:6;14319:9;:36::i;:::-;14366:220;14389:6;14410:12;:10;:12::i;:::-;14437:138;14493:6;14437:138;;;;;;;;;;;;;;;;;:11;:19;14449:6;14437:19;;;;;;;;;;;;;;;:33;14457:12;:10;:12::i;:::-;14437:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;14366:8;:220::i;:::-;14604:4;14597:11;;14170:446;;;;;:::o;12149:54::-;;;;:::o;13230:83::-;13271:5;10708:1;13289:16;;13230:83;:::o;11660:64::-;;;;;;;;;;;;;:::o;11851:28::-;;;;;;;;;;;;;:::o;19684:92::-;7885:12;:10;:12::i;:::-;7875:22;;:6;;;;;;;;;;:22;;;7867:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19763:5:::1;19748:4;:12;19753:6;19748:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;19684:92:::0;:::o;23716:101::-;7885:12;:10;:12::i;:::-;7875:22;;:6;;;;;;;;;;:22;;;7867:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23797:12:::1;23783:11;::::0;:26:::1;;;;;;;;;;;;;;;;;;23716:101:::0;:::o;19161:235::-;19227:19;;;;;;;;;;;19211:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;19266:17;;;;;;;;;;;19250:33;;:12;:10;:12::i;:::-;:33;;;19211:72;19203:81;;;;;;19295:26;19324:21;19295:50;;19356:32;19369:18;19356:12;:32::i;:::-;19192:204;19161:235::o;13424:138::-;13490:7;13517:37;13537:7;:16;13545:7;13537:16;;;;;;;;;;;;;;;;13517:19;:37::i;:::-;13510:44;;13424:138;;;:::o;7962:148::-;7885:12;:10;:12::i;:::-;7875:22;;:6;;;;;;;;;;:22;;;7867:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8069:1:::1;8032:40;;8053:6;::::0;::::1;;;;;;;;8032:40;;;;;;;;;;;;8100:1;8083:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;7962:148::o:0;24011:108::-;7885:12;:10;:12::i;:::-;7875:22;;:6;;;;;;;;;;:22;;;7867:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24100:11:::1;24085:12;:26;;;;24011:108:::0;:::o;12038:48::-;;;;:::o;11610:43::-;;;;;;;;;;;;;;;;;:::o;7748:79::-;7786:7;7813:6;;;;;;;;;;;7806:13;;7748:79;:::o;18808:101::-;7885:12;:10;:12::i;:::-;7875:22;;:6;;;;;;;;;;:22;;;7867:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18889:12:::1;18875:11;;:26;;;;;;;;;;;;;;;;;;18808:101:::0;:::o;12093:49::-;;;;:::o;13135:87::-;13174:13;13207:7;;;;;;;;;;;;;;;;;13200:14;;13135:87;:::o;23525:139::-;7885:12;:10;:12::i;:::-;7875:22;;:6;;;;;;;;;;:22;;;7867:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23638:18:::1;23616:19;:40;;;;23525:139:::0;:::o;23182:291::-;7885:12;:10;:12::i;:::-;7875:22;;:6;;;;;;;;;;:22;;;7867:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23333:13:::1;23316:14;:30;;;;23375:14;23357:15;:32;;;;23415:11;23400:12;:26;;;;23453:12;23437:13;:28;;;;23182:291:::0;;;;:::o;13570:199::-;13675:4;13697:42;13707:12;:10;:12::i;:::-;13721:9;13732:6;13697:9;:42::i;:::-;13757:4;13750:11;;13570:199;;;;:::o;23876:96::-;7885:12;:10;:12::i;:::-;7875:22;;:6;;;;;;;;;;:22;;;7867:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23958:6:::1;23944:11;;:20;;;;;;;;;;;;;;;;;;23876:96:::0;:::o;19581:95::-;7885:12;:10;:12::i;:::-;7875:22;;:6;;;;;;;;;;:22;;;7867:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19664:4:::1;19649;:12;19654:6;19649:12;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;19581:95:::0;:::o;11572:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;18917:236::-;18983:19;;;;;;;;;;;18967:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;19022:17;;;;;;;;;;;19006:33;;:12;:10;:12::i;:::-;:33;;;18967:72;18959:81;;;;;;19051:23;19077:24;19095:4;19077:9;:24::i;:::-;19051:50;;19112:33;19129:15;19112:16;:33::i;:::-;18948:205;18917:236::o;24250:234::-;7885:12;:10;:12::i;:::-;7875:22;;:6;;;;;;;;;;:22;;;7867:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24367:9:::1;24363:114;24386:8;;:15;;24382:1;:19;24363:114;;;24457:8;24423:18;:31;24442:8;;24451:1;24442:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;24423:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;24403:3;;;;;:::i;:::-;;;;24363:114;;;;24250:234:::0;;;:::o;13777:184::-;13894:7;13926:11;:18;13938:5;13926:18;;;;;;;;;;;;;;;:27;13945:7;13926:27;;;;;;;;;;;;;;;;13919:34;;13777:184;;;;:::o;24127:115::-;7885:12;:10;:12::i;:::-;7875:22;;:6;;;;;;;;;;:22;;;7867:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24221:13:::1;24204:14;:30;;;;24127:115:::0;:::o;8118:244::-;7885:12;:10;:12::i;:::-;7875:22;;:6;;;;;;;;;;:22;;;7867:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8227:1:::1;8207:22;;:8;:22;;::::0;8199:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8317:8;8288:38;;8309:6;::::0;::::1;;;;;;;;8288:38;;;;;;;;;;;;8346:8;8337:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;8118:244:::0;:::o;6517:98::-;6570:7;6597:10;6590:17;;6517:98;:::o;15307:369::-;15451:1;15434:19;;:5;:19;;;15426:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15532:1;15513:21;;:7;:21;;;15505:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15614:6;15584:11;:18;15596:5;15584:18;;;;;;;;;;;;;;;:27;15603:7;15584:27;;;;;;;;;;;;;;;:36;;;;15652:7;15636:32;;15645:5;15636:32;;;15661:6;15636:32;;;;;;:::i;:::-;;;;;;;;15307:369;;;:::o;15684:2518::-;15822:1;15806:18;;:4;:18;;;15798:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15899:1;15885:16;;:2;:16;;;15877:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15969:1;15960:6;:10;15952:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16041:7;:5;:7::i;:::-;16033:15;;:4;:15;;;;:32;;;;;16058:7;:5;:7::i;:::-;16052:13;;:2;:13;;;;16033:32;16029:1447;;;16122:11;;;;;;;;;;;16117:144;;16170:7;:5;:7::i;:::-;16162:15;;:4;:15;;;16154:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;16117:144;16295:12;;16285:6;:22;;16277:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;16364:4;:10;16369:4;16364:10;;;;;;;;;;;;;;;;;;;;;;;;;16363:11;:24;;;;;16379:4;:8;16384:2;16379:8;;;;;;;;;;;;;;;;;;;;;;;;;16378:9;16363:24;16355:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;16453:13;;;;;;;;;;;16447:19;;:2;:19;;;16444:146;;16520:14;;16511:6;16495:13;16505:2;16495:9;:13::i;:::-;:22;;;;:::i;:::-;:39;16487:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;16444:146;16606:28;16637:24;16655:4;16637:9;:24::i;:::-;16606:55;;16678:12;16717:19;;16693:20;:43;;16678:58;;16756:11;;;;;;;;;;;:42;;;;;16785:13;;16771:12;:27;16756:42;16753:77;;;16825:5;16817:13;;16753:77;16917:12;;16893:20;:36;16890:124;;16986:12;;16963:35;;16890:124;17034:7;:18;;;;;17046:6;;;;;;;;;;;17045:7;17034:18;:43;;;;;17064:13;;;;;;;;;;;17056:21;;:4;:21;;;;17034:43;:58;;;;;17081:11;;;;;;;;;;17034:58;:87;;;;;17097:18;:24;17116:4;17097:24;;;;;;;;;;;;;;;;;;;;;;;;;17096:25;17034:87;:114;;;;;17126:18;:22;17145:2;17126:22;;;;;;;;;;;;;;;;;;;;;;;;;17125:23;17034:114;17030:435;;;17169:38;17186:20;17169:16;:38::i;:::-;17226:26;17255:21;17226:50;;17320:1;17299:18;:22;17295:155;;;17346:35;17359:21;17346:12;:35::i;:::-;17418:12;17404:13;:26;;;;17295:155;17150:315;17030:435;16067:1409;;16029:1447;17488:12;17503:4;17488:19;;17552:18;:24;17571:4;17552:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;17580:18;:22;17599:2;17580:22;;;;;;;;;;;;;;;;;;;;;;;;;17552:50;17551:102;;;;17616:13;;;;;;;;;;;17608:21;;:4;:21;;;;:44;;;;;17639:13;;;;;;;;;;;17633:19;;:2;:19;;;;17608:44;17551:102;17547:594;;;17680:5;17670:15;;17547:594;;;17763:13;;;;;;;;;;;17755:21;;:4;:21;;;:55;;;;;17794:15;;;;;;;;;;;17780:30;;:2;:30;;;;17755:55;17752:162;;;17843:14;;17831:9;:26;;;;17886:12;;17876:7;:22;;;;17752:162;17973:13;;;;;;;;;;;17967:19;;:2;:19;;;:55;;;;;18006:15;;;;;;;;;;;17990:32;;:4;:32;;;;17967:55;17963:165;;;18055:15;;18043:9;:27;;;;18099:13;;18089:7;:23;;;;17963:165;17547:594;18153:41;18168:4;18174:2;18178:6;18186:7;18153:14;:41::i;:::-;15787:2415;15684:2518;;;:::o;8726:224::-;8846:7;8879:1;8874;:6;;8882:12;8866:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;8906:9;8922:1;8918;:5;;;;:::i;:::-;8906:17;;8941:1;8934:8;;;8726:224;;;;;:::o;18701:99::-;18758:17;;;;;;;;;;;:26;;:34;18785:6;18758:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18701:99;:::o;14624:323::-;14719:7;14777;;14766;:18;;14744:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;14865:19;14887:10;:8;:10::i;:::-;14865:32;;14915:24;14927:11;14915:7;:11;;:24;;;;:::i;:::-;14908:31;;;14624:323;;;:::o;18210:483::-;12306:4;12297:6;;:13;;;;;;;;;;;;;;;;;;18288:21:::1;18326:1;18312:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18288:40;;18357:4;18339;18344:1;18339:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;18383:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18373:4;18378:1;18373:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;18416:62;18433:4;18448:15;;;;;;;;;;;18466:11;18416:8;:62::i;:::-;18489:15;;;;;;;;;;;:66;;;18570:11;18596:1;18612:4;18639;18659:15;18489:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18277:416;12342:5:::0;12333:6;;:14;;;;;;;;;;;;;;;;;;18210:483;:::o;19784:282::-;19940:7;19935:28;;19949:14;:12;:14::i;:::-;19935:28;19974:44;19992:6;20000:9;20011:6;19974:17;:44::i;:::-;20034:7;20029:29;;20043:15;:13;:15::i;:::-;20029:29;19784:282;;;;:::o;22745:164::-;22787:7;22808:15;22825;22844:19;:17;:19::i;:::-;22807:56;;;;22881:20;22893:7;22881;:11;;:20;;;;:::i;:::-;22874:27;;;;22745:164;:::o;9212:132::-;9270:7;9297:39;9301:1;9304;9297:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;9290:46;;9212:132;;;;:::o;14955:219::-;15015:1;15002:9;;:14;:30;;;;;15031:1;15020:7;;:12;15002:30;15034:7;14998:43;15073:9;;15053:17;:29;;;;15111:7;;15093:15;:25;;;;15143:1;15131:9;:13;;;;15165:1;15155:7;:11;;;;14955:219;:::o;20074:610::-;20221:15;20251:23;20289:12;20316:23;20354:12;20381:13;20408:19;20419:7;20408:10;:19::i;:::-;20206:221;;;;;;;;;;;;20456:28;20476:7;20456;:15;20464:6;20456:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;20438:7;:15;20446:6;20438:15;;;;;;;;;;;;;;;:46;;;;20516:39;20539:15;20516:7;:18;20524:9;20516:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;20495:7;:18;20503:9;20495:18;;;;;;;;;;;;;;;:60;;;;20566:16;20576:5;20566:9;:16::i;:::-;20593:23;20605:4;20611;20593:11;:23::i;:::-;20649:9;20632:44;;20641:6;20632:44;;;20660:15;20632:44;;;;;;:::i;:::-;;;;;;;;20195:489;;;;;;20074:610;;;:::o;15182:117::-;15238:17;;15226:9;:29;;;;15276:15;;15266:7;:25;;;;15182:117::o;22917:257::-;22968:7;22977;22997:15;23015:7;;22997:25;;23033:15;11034:18;23033:25;;23083:20;11034:18;23083:7;;:11;;:20;;;;:::i;:::-;23073:7;:30;23069:61;;;23113:7;;11034:18;23105:25;;;;;;;;23069:61;23149:7;23158;23141:25;;;;;;22917:257;;;:::o;9352:223::-;9472:7;9504:1;9500;:5;9507:12;9492:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9531:9;9547:1;9543;:5;;;;:::i;:::-;9531:17;;9566:1;9559:8;;;9352:223;;;;;:::o;21103:615::-;21203:7;21225;21247;21269;21291;21313;21349:23;21374:12;21388:13;21418:40;21430:7;21439:9;;21450:7;;21418:11;:40::i;:::-;21348:110;;;;;;21469:19;21491:10;:8;:10::i;:::-;21469:32;;21513:15;21530:23;21555:12;21584:46;21596:7;21605:4;21611:5;21618:11;21584;:46::i;:::-;21512:118;;;;;;21649:7;21658:15;21675:4;21681:15;21698:4;21704:5;21641:69;;;;;;;;;;;;;;;;;;;21103:615;;;;;;;:::o;8582:136::-;8640:7;8667:43;8671:1;8674;8667:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;8660:50;;8582:136;;;;:::o;8395:179::-;8453:7;8473:9;8489:1;8485;:5;;;;:::i;:::-;8473:17;;8514:1;8509;:6;;8501:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;8565:1;8558:8;;;8395:179;;;;:::o;20692:211::-;20745:19;20767:10;:8;:10::i;:::-;20745:32;;20788:13;20804:22;20814:11;20804:5;:9;;:22;;;;:::i;:::-;20788:38;;20862:33;20889:5;20862:7;:22;20878:4;20862:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;20837:7;:22;20853:4;20837:22;;;;;;;;;;;;;;;:58;;;;20734:169;;20692:211;:::o;20911:147::-;20989:17;21001:4;20989:7;;:11;;:17;;;;:::i;:::-;20979:7;:27;;;;21030:20;21045:4;21030:10;;:14;;:20;;;;:::i;:::-;21017:10;:33;;;;20911:147;;:::o;21726:469::-;21895:7;21917;21939;21974:12;21989:30;22015:3;21989:21;22001:8;21989:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;21974:45;;22030:13;22046:28;22070:3;22046:19;22058:6;22046:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;22030:44;;22085:23;22111:28;22133:5;22111:17;22123:4;22111:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;22085:54;;22158:15;22175:4;22181:5;22150:37;;;;;;;;;21726:469;;;;;;;:::o;22203:534::-;22397:7;22419;22441;22476:15;22494:24;22506:11;22494:7;:11;;:24;;;;:::i;:::-;22476:42;;22529:12;22544:21;22553:11;22544:4;:8;;:21;;;;:::i;:::-;22529:36;;22576:13;22592:22;22602:11;22592:5;:9;;:22;;;;:::i;:::-;22576:38;;22625:23;22651:28;22673:5;22651:17;22663:4;22651:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;22625:54;;22698:7;22707:15;22724:4;22690:39;;;;;;;;;;22203:534;;;;;;;;:::o;8958:246::-;9016:7;9045:1;9040;:6;9036:47;;9070:1;9063:8;;;;9036:47;9093:9;9109:1;9105;:5;;;;:::i;:::-;9093:17;;9138:1;9133;9129;:5;;;;:::i;:::-;:10;9121:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;9195:1;9188:8;;;8958:246;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:246::-;4152:1;4162:113;4176:6;4173:1;4170:13;4162:113;;;4261:1;4256:3;4252:11;4246:18;4242:1;4237:3;4233:11;4226:39;4198:2;4195:1;4191:10;4186:15;;4162:113;;;4309:1;4300:6;4295:3;4291:16;4284:27;4133:184;4071:246;;;:::o;4323:377::-;4411:3;4439:39;4472:5;4439:39;:::i;:::-;4494:71;4558:6;4553:3;4494:71;:::i;:::-;4487:78;;4574:65;4632:6;4627:3;4620:4;4613:5;4609:16;4574:65;:::i;:::-;4664:29;4686:6;4664:29;:::i;:::-;4659:3;4655:39;4648:46;;4415:285;4323:377;;;;:::o;4706:313::-;4819:4;4857:2;4846:9;4842:18;4834:26;;4906:9;4900:4;4896:20;4892:1;4881:9;4877:17;4870:47;4934:78;5007:4;4998:6;4934:78;:::i;:::-;4926:86;;4706:313;;;;:::o;5025:77::-;5062:7;5091:5;5080:16;;5025:77;;;:::o;5108:122::-;5181:24;5199:5;5181:24;:::i;:::-;5174:5;5171:35;5161:63;;5220:1;5217;5210:12;5161:63;5108:122;:::o;5236:139::-;5282:5;5320:6;5307:20;5298:29;;5336:33;5363:5;5336:33;:::i;:::-;5236:139;;;;:::o;5381:474::-;5449:6;5457;5506:2;5494:9;5485:7;5481:23;5477:32;5474:119;;;5512:79;;:::i;:::-;5474:119;5632:1;5657:53;5702:7;5693:6;5682:9;5678:22;5657:53;:::i;:::-;5647:63;;5603:117;5759:2;5785:53;5830:7;5821:6;5810:9;5806:22;5785:53;:::i;:::-;5775:63;;5730:118;5381:474;;;;;:::o;5861:90::-;5895:7;5938:5;5931:13;5924:21;5913:32;;5861:90;;;:::o;5957:109::-;6038:21;6053:5;6038:21;:::i;:::-;6033:3;6026:34;5957:109;;:::o;6072:210::-;6159:4;6197:2;6186:9;6182:18;6174:26;;6210:65;6272:1;6261:9;6257:17;6248:6;6210:65;:::i;:::-;6072:210;;;;:::o;6288:60::-;6316:3;6337:5;6330:12;;6288:60;;;:::o;6354:142::-;6404:9;6437:53;6455:34;6464:24;6482:5;6464:24;:::i;:::-;6455:34;:::i;:::-;6437:53;:::i;:::-;6424:66;;6354:142;;;:::o;6502:126::-;6552:9;6585:37;6616:5;6585:37;:::i;:::-;6572:50;;6502:126;;;:::o;6634:152::-;6710:9;6743:37;6774:5;6743:37;:::i;:::-;6730:50;;6634:152;;;:::o;6792:183::-;6905:63;6962:5;6905:63;:::i;:::-;6900:3;6893:76;6792:183;;:::o;6981:274::-;7100:4;7138:2;7127:9;7123:18;7115:26;;7151:97;7245:1;7234:9;7230:17;7221:6;7151:97;:::i;:::-;6981:274;;;;:::o;7261:118::-;7348:24;7366:5;7348:24;:::i;:::-;7343:3;7336:37;7261:118;;:::o;7385:222::-;7478:4;7516:2;7505:9;7501:18;7493:26;;7529:71;7597:1;7586:9;7582:17;7573:6;7529:71;:::i;:::-;7385:222;;;;:::o;7613:619::-;7690:6;7698;7706;7755:2;7743:9;7734:7;7730:23;7726:32;7723:119;;;7761:79;;:::i;:::-;7723:119;7881:1;7906:53;7951:7;7942:6;7931:9;7927:22;7906:53;:::i;:::-;7896:63;;7852:117;8008:2;8034:53;8079:7;8070:6;8059:9;8055:22;8034:53;:::i;:::-;8024:63;;7979:118;8136:2;8162:53;8207:7;8198:6;8187:9;8183:22;8162:53;:::i;:::-;8152:63;;8107:118;7613:619;;;;;:::o;8238:86::-;8273:7;8313:4;8306:5;8302:16;8291:27;;8238:86;;;:::o;8330:112::-;8413:22;8429:5;8413:22;:::i;:::-;8408:3;8401:35;8330:112;;:::o;8448:214::-;8537:4;8575:2;8564:9;8560:18;8552:26;;8588:67;8652:1;8641:9;8637:17;8628:6;8588:67;:::i;:::-;8448:214;;;;:::o;8668:104::-;8713:7;8742:24;8760:5;8742:24;:::i;:::-;8731:35;;8668:104;;;:::o;8778:142::-;8881:32;8907:5;8881:32;:::i;:::-;8876:3;8869:45;8778:142;;:::o;8926:254::-;9035:4;9073:2;9062:9;9058:18;9050:26;;9086:87;9170:1;9159:9;9155:17;9146:6;9086:87;:::i;:::-;8926:254;;;;:::o;9186:118::-;9273:24;9291:5;9273:24;:::i;:::-;9268:3;9261:37;9186:118;;:::o;9310:222::-;9403:4;9441:2;9430:9;9426:18;9418:26;;9454:71;9522:1;9511:9;9507:17;9498:6;9454:71;:::i;:::-;9310:222;;;;:::o;9538:329::-;9597:6;9646:2;9634:9;9625:7;9621:23;9617:32;9614:119;;;9652:79;;:::i;:::-;9614:119;9772:1;9797:53;9842:7;9833:6;9822:9;9818:22;9797:53;:::i;:::-;9787:63;;9743:117;9538:329;;;;:::o;9873:116::-;9943:21;9958:5;9943:21;:::i;:::-;9936:5;9933:32;9923:60;;9979:1;9976;9969:12;9923:60;9873:116;:::o;9995:133::-;10038:5;10076:6;10063:20;10054:29;;10092:30;10116:5;10092:30;:::i;:::-;9995:133;;;;:::o;10134:323::-;10190:6;10239:2;10227:9;10218:7;10214:23;10210:32;10207:119;;;10245:79;;:::i;:::-;10207:119;10365:1;10390:50;10432:7;10423:6;10412:9;10408:22;10390:50;:::i;:::-;10380:60;;10336:114;10134:323;;;;:::o;10463:329::-;10522:6;10571:2;10559:9;10550:7;10546:23;10542:32;10539:119;;;10577:79;;:::i;:::-;10539:119;10697:1;10722:53;10767:7;10758:6;10747:9;10743:22;10722:53;:::i;:::-;10712:63;;10668:117;10463:329;;;;:::o;10798:765::-;10884:6;10892;10900;10908;10957:3;10945:9;10936:7;10932:23;10928:33;10925:120;;;10964:79;;:::i;:::-;10925:120;11084:1;11109:53;11154:7;11145:6;11134:9;11130:22;11109:53;:::i;:::-;11099:63;;11055:117;11211:2;11237:53;11282:7;11273:6;11262:9;11258:22;11237:53;:::i;:::-;11227:63;;11182:118;11339:2;11365:53;11410:7;11401:6;11390:9;11386:22;11365:53;:::i;:::-;11355:63;;11310:118;11467:2;11493:53;11538:7;11529:6;11518:9;11514:22;11493:53;:::i;:::-;11483:63;;11438:118;10798:765;;;;;;;:::o;11569:117::-;11678:1;11675;11668:12;11709:568;11782:8;11792:6;11842:3;11835:4;11827:6;11823:17;11819:27;11809:122;;11850:79;;:::i;:::-;11809:122;11963:6;11950:20;11940:30;;11993:18;11985:6;11982:30;11979:117;;;12015:79;;:::i;:::-;11979:117;12129:4;12121:6;12117:17;12105:29;;12183:3;12175:4;12167:6;12163:17;12153:8;12149:32;12146:41;12143:128;;;12190:79;;:::i;:::-;12143:128;11709:568;;;;;:::o;12283:698::-;12375:6;12383;12391;12440:2;12428:9;12419:7;12415:23;12411:32;12408:119;;;12446:79;;:::i;:::-;12408:119;12594:1;12583:9;12579:17;12566:31;12624:18;12616:6;12613:30;12610:117;;;12646:79;;:::i;:::-;12610:117;12759:80;12831:7;12822:6;12811:9;12807:22;12759:80;:::i;:::-;12741:98;;;;12537:312;12888:2;12914:50;12956:7;12947:6;12936:9;12932:22;12914:50;:::i;:::-;12904:60;;12859:115;12283:698;;;;;:::o;12987:474::-;13055:6;13063;13112:2;13100:9;13091:7;13087:23;13083:32;13080:119;;;13118:79;;:::i;:::-;13080:119;13238:1;13263:53;13308:7;13299:6;13288:9;13284:22;13263:53;:::i;:::-;13253:63;;13209:117;13365:2;13391:53;13436:7;13427:6;13416:9;13412:22;13391:53;:::i;:::-;13381:63;;13336:118;12987:474;;;;;:::o;13467:182::-;13607:34;13603:1;13595:6;13591:14;13584:58;13467:182;:::o;13655:366::-;13797:3;13818:67;13882:2;13877:3;13818:67;:::i;:::-;13811:74;;13894:93;13983:3;13894:93;:::i;:::-;14012:2;14007:3;14003:12;13996:19;;13655:366;;;:::o;14027:419::-;14193:4;14231:2;14220:9;14216:18;14208:26;;14280:9;14274:4;14270:20;14266:1;14255:9;14251:17;14244:47;14308:131;14434:4;14308:131;:::i;:::-;14300:139;;14027:419;;;:::o;14452:180::-;14500:77;14497:1;14490:88;14597:4;14594:1;14587:15;14621:4;14618:1;14611:15;14638:180;14686:77;14683:1;14676:88;14783:4;14780:1;14773:15;14807:4;14804:1;14797:15;14824:233;14863:3;14886:24;14904:5;14886:24;:::i;:::-;14877:33;;14932:66;14925:5;14922:77;14919:103;;15002:18;;:::i;:::-;14919:103;15049:1;15042:5;15038:13;15031:20;;14824:233;;;:::o;15063:225::-;15203:34;15199:1;15191:6;15187:14;15180:58;15272:8;15267:2;15259:6;15255:15;15248:33;15063:225;:::o;15294:366::-;15436:3;15457:67;15521:2;15516:3;15457:67;:::i;:::-;15450:74;;15533:93;15622:3;15533:93;:::i;:::-;15651:2;15646:3;15642:12;15635:19;;15294:366;;;:::o;15666:419::-;15832:4;15870:2;15859:9;15855:18;15847:26;;15919:9;15913:4;15909:20;15905:1;15894:9;15890:17;15883:47;15947:131;16073:4;15947:131;:::i;:::-;15939:139;;15666:419;;;:::o;16091:223::-;16231:34;16227:1;16219:6;16215:14;16208:58;16300:6;16295:2;16287:6;16283:15;16276:31;16091:223;:::o;16320:366::-;16462:3;16483:67;16547:2;16542:3;16483:67;:::i;:::-;16476:74;;16559:93;16648:3;16559:93;:::i;:::-;16677:2;16672:3;16668:12;16661:19;;16320:366;;;:::o;16692:419::-;16858:4;16896:2;16885:9;16881:18;16873:26;;16945:9;16939:4;16935:20;16931:1;16920:9;16916:17;16909:47;16973:131;17099:4;16973:131;:::i;:::-;16965:139;;16692:419;;;:::o;17117:221::-;17257:34;17253:1;17245:6;17241:14;17234:58;17326:4;17321:2;17313:6;17309:15;17302:29;17117:221;:::o;17344:366::-;17486:3;17507:67;17571:2;17566:3;17507:67;:::i;:::-;17500:74;;17583:93;17672:3;17583:93;:::i;:::-;17701:2;17696:3;17692:12;17685:19;;17344:366;;;:::o;17716:419::-;17882:4;17920:2;17909:9;17905:18;17897:26;;17969:9;17963:4;17959:20;17955:1;17944:9;17940:17;17933:47;17997:131;18123:4;17997:131;:::i;:::-;17989:139;;17716:419;;;:::o;18141:224::-;18281:34;18277:1;18269:6;18265:14;18258:58;18350:7;18345:2;18337:6;18333:15;18326:32;18141:224;:::o;18371:366::-;18513:3;18534:67;18598:2;18593:3;18534:67;:::i;:::-;18527:74;;18610:93;18699:3;18610:93;:::i;:::-;18728:2;18723:3;18719:12;18712:19;;18371:366;;;:::o;18743:419::-;18909:4;18947:2;18936:9;18932:18;18924:26;;18996:9;18990:4;18986:20;18982:1;18971:9;18967:17;18960:47;19024:131;19150:4;19024:131;:::i;:::-;19016:139;;18743:419;;;:::o;19168:222::-;19308:34;19304:1;19296:6;19292:14;19285:58;19377:5;19372:2;19364:6;19360:15;19353:30;19168:222;:::o;19396:366::-;19538:3;19559:67;19623:2;19618:3;19559:67;:::i;:::-;19552:74;;19635:93;19724:3;19635:93;:::i;:::-;19753:2;19748:3;19744:12;19737:19;;19396:366;;;:::o;19768:419::-;19934:4;19972:2;19961:9;19957:18;19949:26;;20021:9;20015:4;20011:20;20007:1;19996:9;19992:17;19985:47;20049:131;20175:4;20049:131;:::i;:::-;20041:139;;19768:419;;;:::o;20193:228::-;20333:34;20329:1;20321:6;20317:14;20310:58;20402:11;20397:2;20389:6;20385:15;20378:36;20193:228;:::o;20427:366::-;20569:3;20590:67;20654:2;20649:3;20590:67;:::i;:::-;20583:74;;20666:93;20755:3;20666:93;:::i;:::-;20784:2;20779:3;20775:12;20768:19;;20427:366;;;:::o;20799:419::-;20965:4;21003:2;20992:9;20988:18;20980:26;;21052:9;21046:4;21042:20;21038:1;21027:9;21023:17;21016:47;21080:131;21206:4;21080:131;:::i;:::-;21072:139;;20799:419;;;:::o;21224:250::-;21364:34;21360:1;21352:6;21348:14;21341:58;21433:33;21428:2;21420:6;21416:15;21409:58;21224:250;:::o;21480:366::-;21622:3;21643:67;21707:2;21702:3;21643:67;:::i;:::-;21636:74;;21719:93;21808:3;21719:93;:::i;:::-;21837:2;21832:3;21828:12;21821:19;;21480:366;;;:::o;21852:419::-;22018:4;22056:2;22045:9;22041:18;22033:26;;22105:9;22099:4;22095:20;22091:1;22080:9;22076:17;22069:47;22133:131;22259:4;22133:131;:::i;:::-;22125:139;;21852:419;;;:::o;22277:178::-;22417:30;22413:1;22405:6;22401:14;22394:54;22277:178;:::o;22461:366::-;22603:3;22624:67;22688:2;22683:3;22624:67;:::i;:::-;22617:74;;22700:93;22789:3;22700:93;:::i;:::-;22818:2;22813:3;22809:12;22802:19;;22461:366;;;:::o;22833:419::-;22999:4;23037:2;23026:9;23022:18;23014:26;;23086:9;23080:4;23076:20;23072:1;23061:9;23057:17;23050:47;23114:131;23240:4;23114:131;:::i;:::-;23106:139;;22833:419;;;:::o;23258:222::-;23398:34;23394:1;23386:6;23382:14;23375:58;23467:5;23462:2;23454:6;23450:15;23443:30;23258:222;:::o;23486:366::-;23628:3;23649:67;23713:2;23708:3;23649:67;:::i;:::-;23642:74;;23725:93;23814:3;23725:93;:::i;:::-;23843:2;23838:3;23834:12;23827:19;;23486:366;;;:::o;23858:419::-;24024:4;24062:2;24051:9;24047:18;24039:26;;24111:9;24105:4;24101:20;24097:1;24086:9;24082:17;24075:47;24139:131;24265:4;24139:131;:::i;:::-;24131:139;;23858:419;;;:::o;24283:191::-;24323:3;24342:20;24360:1;24342:20;:::i;:::-;24337:25;;24376:20;24394:1;24376:20;:::i;:::-;24371:25;;24419:1;24416;24412:9;24405:16;;24440:3;24437:1;24434:10;24431:36;;;24447:18;;:::i;:::-;24431:36;24283:191;;;;:::o;24480:222::-;24620:34;24616:1;24608:6;24604:14;24597:58;24689:5;24684:2;24676:6;24672:15;24665:30;24480:222;:::o;24708:366::-;24850:3;24871:67;24935:2;24930:3;24871:67;:::i;:::-;24864:74;;24947:93;25036:3;24947:93;:::i;:::-;25065:2;25060:3;25056:12;25049:19;;24708:366;;;:::o;25080:419::-;25246:4;25284:2;25273:9;25269:18;25261:26;;25333:9;25327:4;25323:20;25319:1;25308:9;25304:17;25297:47;25361:131;25487:4;25361:131;:::i;:::-;25353:139;;25080:419;;;:::o;25505:194::-;25545:4;25565:20;25583:1;25565:20;:::i;:::-;25560:25;;25599:20;25617:1;25599:20;:::i;:::-;25594:25;;25643:1;25640;25636:9;25628:17;;25667:1;25661:4;25658:11;25655:37;;;25672:18;;:::i;:::-;25655:37;25505:194;;;;:::o;25705:229::-;25845:34;25841:1;25833:6;25829:14;25822:58;25914:12;25909:2;25901:6;25897:15;25890:37;25705:229;:::o;25940:366::-;26082:3;26103:67;26167:2;26162:3;26103:67;:::i;:::-;26096:74;;26179:93;26268:3;26179:93;:::i;:::-;26297:2;26292:3;26288:12;26281:19;;25940:366;;;:::o;26312:419::-;26478:4;26516:2;26505:9;26501:18;26493:26;;26565:9;26559:4;26555:20;26551:1;26540:9;26536:17;26529:47;26593:131;26719:4;26593:131;:::i;:::-;26585:139;;26312:419;;;:::o;26737:143::-;26794:5;26825:6;26819:13;26810:22;;26841:33;26868:5;26841:33;:::i;:::-;26737:143;;;;:::o;26886:351::-;26956:6;27005:2;26993:9;26984:7;26980:23;26976:32;26973:119;;;27011:79;;:::i;:::-;26973:119;27131:1;27156:64;27212:7;27203:6;27192:9;27188:22;27156:64;:::i;:::-;27146:74;;27102:128;26886:351;;;;:::o;27243:85::-;27288:7;27317:5;27306:16;;27243:85;;;:::o;27334:158::-;27392:9;27425:61;27443:42;27452:32;27478:5;27452:32;:::i;:::-;27443:42;:::i;:::-;27425:61;:::i;:::-;27412:74;;27334:158;;;:::o;27498:147::-;27593:45;27632:5;27593:45;:::i;:::-;27588:3;27581:58;27498:147;;:::o;27651:114::-;27718:6;27752:5;27746:12;27736:22;;27651:114;;;:::o;27771:184::-;27870:11;27904:6;27899:3;27892:19;27944:4;27939:3;27935:14;27920:29;;27771:184;;;;:::o;27961:132::-;28028:4;28051:3;28043:11;;28081:4;28076:3;28072:14;28064:22;;27961:132;;;:::o;28099:108::-;28176:24;28194:5;28176:24;:::i;:::-;28171:3;28164:37;28099:108;;:::o;28213:179::-;28282:10;28303:46;28345:3;28337:6;28303:46;:::i;:::-;28381:4;28376:3;28372:14;28358:28;;28213:179;;;;:::o;28398:113::-;28468:4;28500;28495:3;28491:14;28483:22;;28398:113;;;:::o;28547:732::-;28666:3;28695:54;28743:5;28695:54;:::i;:::-;28765:86;28844:6;28839:3;28765:86;:::i;:::-;28758:93;;28875:56;28925:5;28875:56;:::i;:::-;28954:7;28985:1;28970:284;28995:6;28992:1;28989:13;28970:284;;;29071:6;29065:13;29098:63;29157:3;29142:13;29098:63;:::i;:::-;29091:70;;29184:60;29237:6;29184:60;:::i;:::-;29174:70;;29030:224;29017:1;29014;29010:9;29005:14;;28970:284;;;28974:14;29270:3;29263:10;;28671:608;;;28547:732;;;;:::o;29285:831::-;29548:4;29586:3;29575:9;29571:19;29563:27;;29600:71;29668:1;29657:9;29653:17;29644:6;29600:71;:::i;:::-;29681:80;29757:2;29746:9;29742:18;29733:6;29681:80;:::i;:::-;29808:9;29802:4;29798:20;29793:2;29782:9;29778:18;29771:48;29836:108;29939:4;29930:6;29836:108;:::i;:::-;29828:116;;29954:72;30022:2;30011:9;30007:18;29998:6;29954:72;:::i;:::-;30036:73;30104:3;30093:9;30089:19;30080:6;30036:73;:::i;:::-;29285:831;;;;;;;;:::o;30122:180::-;30170:77;30167:1;30160:88;30267:4;30264:1;30257:15;30291:4;30288:1;30281:15;30308:185;30348:1;30365:20;30383:1;30365:20;:::i;:::-;30360:25;;30399:20;30417:1;30399:20;:::i;:::-;30394:25;;30438:1;30428:35;;30443:18;;:::i;:::-;30428:35;30485:1;30482;30478:9;30473:14;;30308:185;;;;:::o;30499:177::-;30639:29;30635:1;30627:6;30623:14;30616:53;30499:177;:::o;30682:366::-;30824:3;30845:67;30909:2;30904:3;30845:67;:::i;:::-;30838:74;;30921:93;31010:3;30921:93;:::i;:::-;31039:2;31034:3;31030:12;31023:19;;30682:366;;;:::o;31054:419::-;31220:4;31258:2;31247:9;31243:18;31235:26;;31307:9;31301:4;31297:20;31293:1;31282:9;31278:17;31271:47;31335:131;31461:4;31335:131;:::i;:::-;31327:139;;31054:419;;;:::o;31479:410::-;31519:7;31542:20;31560:1;31542:20;:::i;:::-;31537:25;;31576:20;31594:1;31576:20;:::i;:::-;31571:25;;31631:1;31628;31624:9;31653:30;31671:11;31653:30;:::i;:::-;31642:41;;31832:1;31823:7;31819:15;31816:1;31813:22;31793:1;31786:9;31766:83;31743:139;;31862:18;;:::i;:::-;31743:139;31527:362;31479:410;;;;:::o;31895:220::-;32035:34;32031:1;32023:6;32019:14;32012:58;32104:3;32099:2;32091:6;32087:15;32080:28;31895:220;:::o;32121:366::-;32263:3;32284:67;32348:2;32343:3;32284:67;:::i;:::-;32277:74;;32360:93;32449:3;32360:93;:::i;:::-;32478:2;32473:3;32469:12;32462:19;;32121:366;;;:::o;32493:419::-;32659:4;32697:2;32686:9;32682:18;32674:26;;32746:9;32740:4;32736:20;32732:1;32721:9;32717:17;32710:47;32774:131;32900:4;32774:131;:::i;:::-;32766:139;;32493:419;;;:::o

Swarm Source

ipfs://2d58e37faf1825c1202fdaa91085b386404be17627ce5110d361f805838ecd27

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.