ETH Price: $3,360.92 (-0.67%)
Gas: 1 Gwei

Contract

0x98e35F5599b57998900E5E0675721C90A5499327
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Approve201950612024-06-29 4:49:1125 hrs ago1719636551IN
0x98e35F55...0A5499327
0 ETH0.000208474.41376176
Approve201930222024-06-28 21:58:3532 hrs ago1719611915IN
0x98e35F55...0A5499327
0 ETH0.000126322.67447546
Approve201899832024-06-28 11:47:5942 hrs ago1719575279IN
0x98e35F55...0A5499327
0 ETH0.000217434.60355256
Approve201899552024-06-28 11:42:2342 hrs ago1719574943IN
0x98e35F55...0A5499327
0 ETH0.000142384.77652198
Approve201882502024-06-28 5:59:352 days ago1719554375IN
0x98e35F55...0A5499327
0 ETH0.000063282.34840393
Approve201882052024-06-28 5:50:352 days ago1719553835IN
0x98e35F55...0A5499327
0 ETH0.000071032.84726626
Approve201881922024-06-28 5:47:592 days ago1719553679IN
0x98e35F55...0A5499327
0 ETH0.000070682.8400298
Approve201815942024-06-27 7:40:592 days ago1719474059IN
0x98e35F55...0A5499327
0 ETH0.000198964.21783551
Approve201808512024-06-27 5:11:353 days ago1719465095IN
0x98e35F55...0A5499327
0 ETH0.000279745.93022865
Approve201785622024-06-26 21:31:593 days ago1719437519IN
0x98e35F55...0A5499327
0 ETH0.000349947.41840002
Approve201735212024-06-26 4:37:594 days ago1719376679IN
0x98e35F55...0A5499327
0 ETH0.000088731.88111541
Approve201719792024-06-25 23:27:594 days ago1719358079IN
0x98e35F55...0A5499327
0 ETH0.000187564.00359996
Transfer201707442024-06-25 19:19:594 days ago1719343199IN
0x98e35F55...0A5499327
0.0985 ETH0.00020919.93134869
Approve201677662024-06-25 9:21:114 days ago1719307271IN
0x98e35F55...0A5499327
0 ETH0.000183123.90393644
Approve201646922024-06-24 23:02:355 days ago1719270155IN
0x98e35F55...0A5499327
0 ETH0.000094783.80849252
Approve201563782024-06-23 19:08:476 days ago1719169727IN
0x98e35F55...0A5499327
0 ETH0.000184453.90519678
Approve201554732024-06-23 16:06:116 days ago1719158771IN
0x98e35F55...0A5499327
0 ETH0.000102473.80263742
Approve201554702024-06-23 16:05:356 days ago1719158735IN
0x98e35F55...0A5499327
0 ETH0.00009683.87992126
Approve201484122024-06-22 16:23:477 days ago1719073427IN
0x98e35F55...0A5499327
0 ETH0.000146913.11039682
Approve201483922024-06-22 16:19:477 days ago1719073187IN
0x98e35F55...0A5499327
0 ETH0.000177373.75539377
Transfer201478812024-06-22 14:36:117 days ago1719066971IN
0x98e35F55...0A5499327
0 ETH0.000534165.45697293
Approve201478522024-06-22 14:30:237 days ago1719066623IN
0x98e35F55...0A5499327
0 ETH0.000326796.96837611
Approve201386972024-06-21 7:47:238 days ago1718956043IN
0x98e35F55...0A5499327
0 ETH0.000334877.09878613
Approve201346342024-06-20 18:09:479 days ago1718906987IN
0x98e35F55...0A5499327
0 ETH0.000427889.13331804
Approve201253152024-06-19 10:53:4710 days ago1718794427IN
0x98e35F55...0A5499327
0 ETH0.000219934.66241067
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To Value
201993582024-06-29 19:13:5910 hrs ago1719688439
0x98e35F55...0A5499327
0.08713226 ETH
201993582024-06-29 19:13:5910 hrs ago1719688439
0x98e35F55...0A5499327
0.08713226 ETH
201950612024-06-29 4:49:1125 hrs ago1719636551
0x98e35F55...0A5499327
0.08193217 ETH
201950612024-06-29 4:49:1125 hrs ago1719636551
0x98e35F55...0A5499327
0.08193217 ETH
201900682024-06-28 12:04:5941 hrs ago1719576299
0x98e35F55...0A5499327
0.18912438 ETH
201900682024-06-28 12:04:5941 hrs ago1719576299
0x98e35F55...0A5499327
0.09062438 ETH
201403812024-06-21 13:25:118 days ago1718976311
0x98e35F55...0A5499327
0.11563173 ETH
201403812024-06-21 13:25:118 days ago1718976311
0x98e35F55...0A5499327
0.11563173 ETH
200910942024-06-14 15:58:5915 days ago1718380739
0x98e35F55...0A5499327
0.12919486 ETH
200910942024-06-14 15:58:5915 days ago1718380739
0x98e35F55...0A5499327
0.12919486 ETH
200633322024-06-10 18:50:5919 days ago1718045459
0x98e35F55...0A5499327
0.14013185 ETH
200633322024-06-10 18:50:5919 days ago1718045459
0x98e35F55...0A5499327
0.14013185 ETH
200310992024-06-06 6:48:4723 days ago1717656527
0x98e35F55...0A5499327
0.1397181 ETH
200310992024-06-06 6:48:4723 days ago1717656527
0x98e35F55...0A5499327
0.1397181 ETH
200092862024-06-03 5:44:1127 days ago1717393451
0x98e35F55...0A5499327
0.14369454 ETH
200092862024-06-03 5:44:1127 days ago1717393451
0x98e35F55...0A5499327
0.14369454 ETH
199745032024-05-29 9:03:4731 days ago1716973427
0x98e35F55...0A5499327
0.1553899 ETH
199745032024-05-29 9:03:4731 days ago1716973427
0x98e35F55...0A5499327
0.1553899 ETH
199591542024-05-27 5:35:1134 days ago1716788111
0x98e35F55...0A5499327
0.2128565 ETH
199591542024-05-27 5:35:1134 days ago1716788111
0x98e35F55...0A5499327
0.2128565 ETH
199506092024-05-26 0:56:2335 days ago1716684983
0x98e35F55...0A5499327
0.17125436 ETH
199506092024-05-26 0:56:2335 days ago1716684983
0x98e35F55...0A5499327
0.17125436 ETH
199445022024-05-25 4:27:5936 days ago1716611279
0x98e35F55...0A5499327
0.20418643 ETH
199445022024-05-25 4:27:5936 days ago1716611279
0x98e35F55...0A5499327
0.20418643 ETH
199176302024-05-21 10:16:5939 days ago1716286619
0x98e35F55...0A5499327
0.23293481 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BuddyAI

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-12-27
*/

/* 
Introducing Buddy AI: An Evolving AI-driven Multilingual Telegram bot designed to moderate communities, foster active engagement, provide real-time blockchain analytics and more.

Equipped with the capability to provide essential insights into market sentiments, vital information regarding tokens, wallets, and beyond, Buddy AI stands as your ultimate companion for all things blockchain-related.

Buddy AI is your go-to friend for every information you seek on the Blockchain. 

Telegram : https://t.me/BuddyAIERC

Telegram Bot : t.me/BuddyAIERCBOT

Medium :  https://medium.com/@buddyaieth/buddy-ai-82fb9db36c3d

Twitter : https://x.com/BuddyAIERC

Website : https://buddyai.pro


**/

// 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 BuddyAI is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "BuddyAI";
    string private constant _symbol = "Buddy";
    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 = 1000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _MFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 20;
    uint256 private _MFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 20;

    //Original Fee
    uint256 private _MFee = _MFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousMFee = _MFee;
    uint256 private _previoustaxFee = _taxFee;

    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap;
    address payable private _developmentAddress = payable(0x69340EA37bE90680564d6E445B1ef41672Ff120E);
    address payable private _marketingAddress = payable(0x69340EA37bE90680564d6E445B1ef41672Ff120E);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

    uint256 public _maxTxAmount = _tTotal;
    uint256 public _maxWalletSize = _tTotal * 2 / 100;
    uint256 public _swapTokensAtAmount = _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;

        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 (_MFee == 0 && _taxFee == 0) return;

        _previousMFee = _MFee;
        _previoustaxFee = _taxFee;

        _MFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _MFee = _previousMFee;
        _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(contractTokenBalance >= _swapTokensAtAmount*8)
            {
                contractTokenBalance = _swapTokensAtAmount*8;
            }

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

        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)) {
                _MFee = _MFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _MFee = _MFeeOnSell;
                _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 manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        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 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, _MFee, _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 MFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(MFee).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 MFeeOnBuy, uint256 MFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _MFeeOnBuy = MFeeOnBuy;
        _MFeeOnSell = MFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
        uint256 totalFee = _MFeeOnBuy+_MFeeOnSell+_taxFeeOnBuy+_taxFeeOnSell;
        require (totalFee <= 25,"Total Fees cannot be more than 25%");
    }

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

    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = _tTotal*maxTxAmount/100;
        require (_maxTxAmount>= _tTotal/100);
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = _tTotal*maxWalletSize/100;
        require (_maxWalletSize>= _tTotal/100);
    }

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

     function updateMarketingAddress(address _newmarketingAddress) public onlyOwner {
        _marketingAddress = payable(_newmarketingAddress);
    }


}

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":"_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":"","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":"MFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"MFeeOnSell","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":[],"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":[],"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"},{"inputs":[{"internalType":"address","name":"_newmarketingAddress","type":"address"}],"name":"updateMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405266038d7ea4c680005f196200001a919062000727565b5f196200002891906200078b565b6006555f60085560146009555f600a556014600b55600a54600c55600b54600d55600c54600e55600d54600f557369340ea37be90680564d6e445b1ef41672ff120e60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507369340ea37be90680564d6e445b1ef41672ff120e60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560146101000a81548160ff0219169083151502179055505f6015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555066038d7ea4c680006016556064600266038d7ea4c680006200016f9190620007c5565b6200017b91906200080f565b6017556103e866038d7ea4c680006200019591906200080f565b601855348015620001a4575f80fd5b505f620001b6620006c360201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460025f62000268620006c360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000347573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200036d9190620008ab565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003d3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003f99190620008ab565b6040518363ffffffff1660e01b815260040162000418929190620008ec565b6020604051808303815f875af115801562000435573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200045b9190620008ab565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f620004af620006ca60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506200064f620006c360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef66038d7ea4c68000604051620006b4919062000928565b60405180910390a35062000943565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200073382620006f1565b91506200074083620006f1565b925082620007535762000752620006fa565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200079782620006f1565b9150620007a483620006f1565b9250828203905081811115620007bf57620007be6200075e565b5b92915050565b5f620007d182620006f1565b9150620007de83620006f1565b9250828202620007ee81620006f1565b915082820484148315176200080857620008076200075e565b5b5092915050565b5f6200081b82620006f1565b91506200082883620006f1565b9250826200083b576200083a620006fa565b5b828204905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000875826200084a565b9050919050565b620008878162000869565b811462000892575f80fd5b50565b5f81519050620008a5816200087c565b92915050565b5f60208284031215620008c357620008c262000846565b5b5f620008d28482850162000895565b91505092915050565b620008e68162000869565b82525050565b5f604082019050620009015f830185620008db565b620009106020830184620008db565b9392505050565b6200092281620006f1565b82525050565b5f6020820190506200093d5f83018462000917565b92915050565b613cc980620009515f395ff3fe6080604052600436106101cf575f3560e01c806374010ece116100f6578063a2a957bb11610094578063c492f04611610063578063c492f04614610640578063dd62ed3e14610668578063ea1644d5146106a4578063f2fde38b146106cc576101d6565b8063a2a957bb1461058a578063a9059cbb146105b2578063bfd79284146105ee578063c3c8cd801461062a576101d6565b80638da5cb5b116100d05780638da5cb5b146104e45780638f9a55c01461050e57806395d89b411461053857806398a5c31514610562576101d6565b806374010ece146104565780637d1db4a51461047e5780637f2feddc146104a8576101d6565b80632fd689e31161016e5780636d8aa8f81161013d5780636d8aa8f8146103c65780636fc3eaec146103ee57806370a0823114610404578063715018a614610440576101d6565b80632fd689e314610320578063313ce5671461034a57806349bd5a5e146103745780636b9990531461039e576101d6565b80631694505e116101aa5780631694505e1461026857806318160ddd146102925780632369bf83146102bc57806323b872dd146102e4576101d6565b8062b8cf2a146101da57806306fdde0314610202578063095ea7b31461022c576101d6565b366101d657005b5f80fd5b3480156101e5575f80fd5b5061020060048036038101906101fb9190612cd6565b6106f4565b005b34801561020d575f80fd5b50610216610813565b6040516102239190612d97565b60405180910390f35b348015610237575f80fd5b50610252600480360381019061024d9190612dea565b610850565b60405161025f9190612e42565b60405180910390f35b348015610273575f80fd5b5061027c61086d565b6040516102899190612eb6565b60405180910390f35b34801561029d575f80fd5b506102a6610892565b6040516102b39190612ede565b60405180910390f35b3480156102c7575f80fd5b506102e260048036038101906102dd9190612ef7565b6108a0565b005b3480156102ef575f80fd5b5061030a60048036038101906103059190612f22565b610977565b6040516103179190612e42565b60405180910390f35b34801561032b575f80fd5b50610334610a4b565b6040516103419190612ede565b60405180910390f35b348015610355575f80fd5b5061035e610a51565b60405161036b9190612f8d565b60405180910390f35b34801561037f575f80fd5b50610388610a59565b6040516103959190612fb5565b60405180910390f35b3480156103a9575f80fd5b506103c460048036038101906103bf9190612ef7565b610a7e565b005b3480156103d1575f80fd5b506103ec60048036038101906103e79190612ff8565b610b69565b005b3480156103f9575f80fd5b50610402610c1a565b005b34801561040f575f80fd5b5061042a60048036038101906104259190612ef7565b610c2a565b6040516104379190612ede565b60405180910390f35b34801561044b575f80fd5b50610454610c78565b005b348015610461575f80fd5b5061047c60048036038101906104779190613023565b610dc6565b005b348015610489575f80fd5b50610492610ea3565b60405161049f9190612ede565b60405180910390f35b3480156104b3575f80fd5b506104ce60048036038101906104c99190612ef7565b610ea9565b6040516104db9190612ede565b60405180910390f35b3480156104ef575f80fd5b506104f8610ebe565b6040516105059190612fb5565b60405180910390f35b348015610519575f80fd5b50610522610ee5565b60405161052f9190612ede565b60405180910390f35b348015610543575f80fd5b5061054c610eeb565b6040516105599190612d97565b60405180910390f35b34801561056d575f80fd5b5061058860048036038101906105839190613023565b610f28565b005b348015610595575f80fd5b506105b060048036038101906105ab919061304e565b610fc6565b005b3480156105bd575f80fd5b506105d860048036038101906105d39190612dea565b6110ee565b6040516105e59190612e42565b60405180910390f35b3480156105f9575f80fd5b50610614600480360381019061060f9190612ef7565b61110b565b6040516106219190612e42565b60405180910390f35b348015610635575f80fd5b5061063e611128565b005b34801561064b575f80fd5b506106666004803603810190610661919061310b565b6111fd565b005b348015610673575f80fd5b5061068e60048036038101906106899190613168565b61132c565b60405161069b9190612ede565b60405180910390f35b3480156106af575f80fd5b506106ca60048036038101906106c59190613023565b6113ae565b005b3480156106d7575f80fd5b506106f260048036038101906106ed9190612ef7565b61148b565b005b6106fc611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077f906131f0565b60405180910390fd5b5f5b815181101561080f57600160105f8484815181106107ab576107aa61320e565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061078a565b5050565b60606040518060400160405280600781526020017f4275646479414900000000000000000000000000000000000000000000000000815250905090565b5f61086361085c611648565b848461164f565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f66038d7ea4c68000905090565b6108a8611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610934576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092b906131f0565b60405180910390fd5b8060135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f610983848484611812565b610a408461098f611648565b610a3b85604051806060016040528060288152602001613c6c6028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6109f2611648565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120929092919063ffffffff16565b61164f565b600190509392505050565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a86611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b09906131f0565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610b71611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf4906131f0565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b5f479050610c27816120f4565b50565b5f610c7160025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461215c565b9050919050565b610c80611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d03906131f0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610dce611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e51906131f0565b60405180910390fd5b60648166038d7ea4c68000610e6f9190613268565b610e7991906132d6565b601681905550606466038d7ea4c68000610e9391906132d6565b6016541015610ea0575f80fd5b50565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600581526020017f4275646479000000000000000000000000000000000000000000000000000000815250905090565b610f30611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb3906131f0565b60405180910390fd5b8060188190555050565b610fce611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461105a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611051906131f0565b60405180910390fd5b8360088190555082600a819055508160098190555080600b819055505f600b54600954600a5460085461108d9190613306565b6110979190613306565b6110a19190613306565b905060198111156110e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110de906133a9565b60405180910390fd5b5050505050565b5f6111016110fa611648565b8484611812565b6001905092915050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611168611648565b73ffffffffffffffffffffffffffffffffffffffff1614806111dd575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111c5611648565b73ffffffffffffffffffffffffffffffffffffffff16145b6111e5575f80fd5b5f6111ef30610c2a565b90506111fa816121c8565b50565b611205611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611291576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611288906131f0565b60405180910390fd5b5f5b83839050811015611326578160055f8686858181106112b5576112b461320e565b5b90506020020160208101906112ca9190612ef7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611293565b50505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6113b6611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611442576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611439906131f0565b60405180910390fd5b60648166038d7ea4c680006114579190613268565b61146191906132d6565b601781905550606466038d7ea4c6800061147b91906132d6565b6017541015611488575f80fd5b50565b611493611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461151f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611516906131f0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361158d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158490613437565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b4906134c5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361172b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172290613553565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118059190612ede565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611880576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611877906135e1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e59061366f565b60405180910390fd5b5f8111611930576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611927906136fd565b60405180910390fd5b611938610ebe565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119a65750611976610ebe565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d9f57601560149054906101000a900460ff16611a35576119c7610ebe565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2b9061378b565b60405180910390fd5b5b601654811115611a7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a71906137f3565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611b18575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611b57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4e90613881565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611c035760175481611bb884610c2a565b611bc29190613306565b10611c02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf99061390f565b60405180910390fd5b5b5f611c0d30610c2a565b90505f60185482101590506008601854611c279190613268565b8210611c3f576008601854611c3c9190613268565b91505b808015611c57575060158054906101000a900460ff16155b8015611cb0575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611cc85750601560169054906101000a900460ff165b8015611d1b575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611d6e575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d9c57611d7c826121c8565b5f47905067011c37937e080000811115611d9a57611d99476120f4565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611e3f575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611ef0575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611eef575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611efd575f9050612080565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611fa6575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611fbe57600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612067575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561207f57600a54600c81905550600b54600d819055505b5b61208c84848484612431565b50505050565b5f8383111582906120d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d09190612d97565b60405180910390fd5b505f83856120e7919061392d565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612158573d5f803e3d5ffd5b5050565b5f6006548211156121a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612199906139d0565b60405180910390fd5b5f6121ab61245e565b90506121c0818461248790919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156121fe576121fd612b40565b5b60405190808252806020026020018201604052801561222c5781602001602082028036833780820191505090505b50905030815f815181106122435761224261320e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122e7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061230b9190613a02565b8160018151811061231f5761231e61320e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123853060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461164f565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016123e7959493929190613b1d565b5f604051808303815f87803b1580156123fe575f80fd5b505af1158015612410573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b8061243f5761243e6124d0565b5b61244a848484612509565b80612458576124576126c9565b5b50505050565b5f805f6124696126dd565b91509150612480818361248790919063ffffffff16565b9250505090565b5f6124c883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612736565b905092915050565b5f600c541480156124e257505f600d54145b61250757600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f8061251887612797565b9550955095509550955095506125748660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127f790919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506126058560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461284090919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061264f8161289d565b6126598483612954565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126b69190612ede565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f66038d7ea4c68000905061270c66038d7ea4c6800060065461248790919063ffffffff16565b8210156127295760065466038d7ea4c68000935093505050612732565b81819350935050505b9091565b5f808311829061277c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127739190612d97565b60405180910390fd5b505f838561278a91906132d6565b9050809150509392505050565b5f805f805f805f805f6127af8a600c54600d5461298e565b9250925092505f6127be61245e565b90505f805f6127cf8e878787612a20565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61283883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612092565b905092915050565b5f80828461284e9190613306565b905083811015612893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288a90613bbf565b60405180910390fd5b8091505092915050565b5f6128a661245e565b90505f6128bc8284612aa490919063ffffffff16565b905061290e8160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461284090919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612969826006546127f790919063ffffffff16565b6006819055506129848160075461284090919063ffffffff16565b6007819055505050565b5f805f806129b860646129aa888a612aa490919063ffffffff16565b61248790919063ffffffff16565b90505f6129e160646129d3888b612aa490919063ffffffff16565b61248790919063ffffffff16565b90505f612a09826129fb858c6127f790919063ffffffff16565b6127f790919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612a378589612aa490919063ffffffff16565b90505f612a4d8689612aa490919063ffffffff16565b90505f612a638789612aa490919063ffffffff16565b90505f612a8b82612a7d85876127f790919063ffffffff16565b6127f790919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612ab4575f9050612b15565b5f8284612ac19190613268565b9050828482612ad091906132d6565b14612b10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0790613c4d565b60405180910390fd5b809150505b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612b7682612b30565b810181811067ffffffffffffffff82111715612b9557612b94612b40565b5b80604052505050565b5f612ba7612b1b565b9050612bb38282612b6d565b919050565b5f67ffffffffffffffff821115612bd257612bd1612b40565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612c1082612be7565b9050919050565b612c2081612c06565b8114612c2a575f80fd5b50565b5f81359050612c3b81612c17565b92915050565b5f612c53612c4e84612bb8565b612b9e565b90508083825260208201905060208402830185811115612c7657612c75612be3565b5b835b81811015612c9f5780612c8b8882612c2d565b845260208401935050602081019050612c78565b5050509392505050565b5f82601f830112612cbd57612cbc612b2c565b5b8135612ccd848260208601612c41565b91505092915050565b5f60208284031215612ceb57612cea612b24565b5b5f82013567ffffffffffffffff811115612d0857612d07612b28565b5b612d1484828501612ca9565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612d54578082015181840152602081019050612d39565b5f8484015250505050565b5f612d6982612d1d565b612d738185612d27565b9350612d83818560208601612d37565b612d8c81612b30565b840191505092915050565b5f6020820190508181035f830152612daf8184612d5f565b905092915050565b5f819050919050565b612dc981612db7565b8114612dd3575f80fd5b50565b5f81359050612de481612dc0565b92915050565b5f8060408385031215612e0057612dff612b24565b5b5f612e0d85828601612c2d565b9250506020612e1e85828601612dd6565b9150509250929050565b5f8115159050919050565b612e3c81612e28565b82525050565b5f602082019050612e555f830184612e33565b92915050565b5f819050919050565b5f612e7e612e79612e7484612be7565b612e5b565b612be7565b9050919050565b5f612e8f82612e64565b9050919050565b5f612ea082612e85565b9050919050565b612eb081612e96565b82525050565b5f602082019050612ec95f830184612ea7565b92915050565b612ed881612db7565b82525050565b5f602082019050612ef15f830184612ecf565b92915050565b5f60208284031215612f0c57612f0b612b24565b5b5f612f1984828501612c2d565b91505092915050565b5f805f60608486031215612f3957612f38612b24565b5b5f612f4686828701612c2d565b9350506020612f5786828701612c2d565b9250506040612f6886828701612dd6565b9150509250925092565b5f60ff82169050919050565b612f8781612f72565b82525050565b5f602082019050612fa05f830184612f7e565b92915050565b612faf81612c06565b82525050565b5f602082019050612fc85f830184612fa6565b92915050565b612fd781612e28565b8114612fe1575f80fd5b50565b5f81359050612ff281612fce565b92915050565b5f6020828403121561300d5761300c612b24565b5b5f61301a84828501612fe4565b91505092915050565b5f6020828403121561303857613037612b24565b5b5f61304584828501612dd6565b91505092915050565b5f805f806080858703121561306657613065612b24565b5b5f61307387828801612dd6565b945050602061308487828801612dd6565b935050604061309587828801612dd6565b92505060606130a687828801612dd6565b91505092959194509250565b5f80fd5b5f8083601f8401126130cb576130ca612b2c565b5b8235905067ffffffffffffffff8111156130e8576130e76130b2565b5b60208301915083602082028301111561310457613103612be3565b5b9250929050565b5f805f6040848603121561312257613121612b24565b5b5f84013567ffffffffffffffff81111561313f5761313e612b28565b5b61314b868287016130b6565b9350935050602061315e86828701612fe4565b9150509250925092565b5f806040838503121561317e5761317d612b24565b5b5f61318b85828601612c2d565b925050602061319c85828601612c2d565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6131da602083612d27565b91506131e5826131a6565b602082019050919050565b5f6020820190508181035f830152613207816131ce565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61327282612db7565b915061327d83612db7565b925082820261328b81612db7565b915082820484148315176132a2576132a161323b565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6132e082612db7565b91506132eb83612db7565b9250826132fb576132fa6132a9565b5b828204905092915050565b5f61331082612db7565b915061331b83612db7565b92508282019050808211156133335761333261323b565b5b92915050565b7f546f74616c20466565732063616e6e6f74206265206d6f7265207468616e20325f8201527f3525000000000000000000000000000000000000000000000000000000000000602082015250565b5f613393602283612d27565b915061339e82613339565b604082019050919050565b5f6020820190508181035f8301526133c081613387565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613421602683612d27565b915061342c826133c7565b604082019050919050565b5f6020820190508181035f83015261344e81613415565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6134af602483612d27565b91506134ba82613455565b604082019050919050565b5f6020820190508181035f8301526134dc816134a3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61353d602283612d27565b9150613548826134e3565b604082019050919050565b5f6020820190508181035f83015261356a81613531565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6135cb602583612d27565b91506135d682613571565b604082019050919050565b5f6020820190508181035f8301526135f8816135bf565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613659602383612d27565b9150613664826135ff565b604082019050919050565b5f6020820190508181035f8301526136868161364d565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6136e7602983612d27565b91506136f28261368d565b604082019050919050565b5f6020820190508181035f830152613714816136db565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f613775603f83612d27565b91506137808261371b565b604082019050919050565b5f6020820190508181035f8301526137a281613769565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f6137dd601c83612d27565b91506137e8826137a9565b602082019050919050565b5f6020820190508181035f83015261380a816137d1565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f61386b602383612d27565b915061387682613811565b604082019050919050565b5f6020820190508181035f8301526138988161385f565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f6138f9602383612d27565b91506139048261389f565b604082019050919050565b5f6020820190508181035f830152613926816138ed565b9050919050565b5f61393782612db7565b915061394283612db7565b925082820390508181111561395a5761395961323b565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f6139ba602a83612d27565b91506139c582613960565b604082019050919050565b5f6020820190508181035f8301526139e7816139ae565b9050919050565b5f815190506139fc81612c17565b92915050565b5f60208284031215613a1757613a16612b24565b5b5f613a24848285016139ee565b91505092915050565b5f819050919050565b5f613a50613a4b613a4684613a2d565b612e5b565b612db7565b9050919050565b613a6081613a36565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613a9881612c06565b82525050565b5f613aa98383613a8f565b60208301905092915050565b5f602082019050919050565b5f613acb82613a66565b613ad58185613a70565b9350613ae083613a80565b805f5b83811015613b10578151613af78882613a9e565b9750613b0283613ab5565b925050600181019050613ae3565b5085935050505092915050565b5f60a082019050613b305f830188612ecf565b613b3d6020830187613a57565b8181036040830152613b4f8186613ac1565b9050613b5e6060830185612fa6565b613b6b6080830184612ecf565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613ba9601b83612d27565b9150613bb482613b75565b602082019050919050565b5f6020820190508181035f830152613bd681613b9d565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613c37602183612d27565b9150613c4282613bdd565b604082019050919050565b5f6020820190508181035f830152613c6481613c2b565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212204a4302017d021e9d2c2178c291ce9ae7841c7bcf0c995615c7e9cd849dfbeefa64736f6c63430008160033

Deployed Bytecode

0x6080604052600436106101cf575f3560e01c806374010ece116100f6578063a2a957bb11610094578063c492f04611610063578063c492f04614610640578063dd62ed3e14610668578063ea1644d5146106a4578063f2fde38b146106cc576101d6565b8063a2a957bb1461058a578063a9059cbb146105b2578063bfd79284146105ee578063c3c8cd801461062a576101d6565b80638da5cb5b116100d05780638da5cb5b146104e45780638f9a55c01461050e57806395d89b411461053857806398a5c31514610562576101d6565b806374010ece146104565780637d1db4a51461047e5780637f2feddc146104a8576101d6565b80632fd689e31161016e5780636d8aa8f81161013d5780636d8aa8f8146103c65780636fc3eaec146103ee57806370a0823114610404578063715018a614610440576101d6565b80632fd689e314610320578063313ce5671461034a57806349bd5a5e146103745780636b9990531461039e576101d6565b80631694505e116101aa5780631694505e1461026857806318160ddd146102925780632369bf83146102bc57806323b872dd146102e4576101d6565b8062b8cf2a146101da57806306fdde0314610202578063095ea7b31461022c576101d6565b366101d657005b5f80fd5b3480156101e5575f80fd5b5061020060048036038101906101fb9190612cd6565b6106f4565b005b34801561020d575f80fd5b50610216610813565b6040516102239190612d97565b60405180910390f35b348015610237575f80fd5b50610252600480360381019061024d9190612dea565b610850565b60405161025f9190612e42565b60405180910390f35b348015610273575f80fd5b5061027c61086d565b6040516102899190612eb6565b60405180910390f35b34801561029d575f80fd5b506102a6610892565b6040516102b39190612ede565b60405180910390f35b3480156102c7575f80fd5b506102e260048036038101906102dd9190612ef7565b6108a0565b005b3480156102ef575f80fd5b5061030a60048036038101906103059190612f22565b610977565b6040516103179190612e42565b60405180910390f35b34801561032b575f80fd5b50610334610a4b565b6040516103419190612ede565b60405180910390f35b348015610355575f80fd5b5061035e610a51565b60405161036b9190612f8d565b60405180910390f35b34801561037f575f80fd5b50610388610a59565b6040516103959190612fb5565b60405180910390f35b3480156103a9575f80fd5b506103c460048036038101906103bf9190612ef7565b610a7e565b005b3480156103d1575f80fd5b506103ec60048036038101906103e79190612ff8565b610b69565b005b3480156103f9575f80fd5b50610402610c1a565b005b34801561040f575f80fd5b5061042a60048036038101906104259190612ef7565b610c2a565b6040516104379190612ede565b60405180910390f35b34801561044b575f80fd5b50610454610c78565b005b348015610461575f80fd5b5061047c60048036038101906104779190613023565b610dc6565b005b348015610489575f80fd5b50610492610ea3565b60405161049f9190612ede565b60405180910390f35b3480156104b3575f80fd5b506104ce60048036038101906104c99190612ef7565b610ea9565b6040516104db9190612ede565b60405180910390f35b3480156104ef575f80fd5b506104f8610ebe565b6040516105059190612fb5565b60405180910390f35b348015610519575f80fd5b50610522610ee5565b60405161052f9190612ede565b60405180910390f35b348015610543575f80fd5b5061054c610eeb565b6040516105599190612d97565b60405180910390f35b34801561056d575f80fd5b5061058860048036038101906105839190613023565b610f28565b005b348015610595575f80fd5b506105b060048036038101906105ab919061304e565b610fc6565b005b3480156105bd575f80fd5b506105d860048036038101906105d39190612dea565b6110ee565b6040516105e59190612e42565b60405180910390f35b3480156105f9575f80fd5b50610614600480360381019061060f9190612ef7565b61110b565b6040516106219190612e42565b60405180910390f35b348015610635575f80fd5b5061063e611128565b005b34801561064b575f80fd5b506106666004803603810190610661919061310b565b6111fd565b005b348015610673575f80fd5b5061068e60048036038101906106899190613168565b61132c565b60405161069b9190612ede565b60405180910390f35b3480156106af575f80fd5b506106ca60048036038101906106c59190613023565b6113ae565b005b3480156106d7575f80fd5b506106f260048036038101906106ed9190612ef7565b61148b565b005b6106fc611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077f906131f0565b60405180910390fd5b5f5b815181101561080f57600160105f8484815181106107ab576107aa61320e565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061078a565b5050565b60606040518060400160405280600781526020017f4275646479414900000000000000000000000000000000000000000000000000815250905090565b5f61086361085c611648565b848461164f565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f66038d7ea4c68000905090565b6108a8611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610934576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092b906131f0565b60405180910390fd5b8060135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f610983848484611812565b610a408461098f611648565b610a3b85604051806060016040528060288152602001613c6c6028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6109f2611648565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120929092919063ffffffff16565b61164f565b600190509392505050565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a86611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b09906131f0565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610b71611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf4906131f0565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b5f479050610c27816120f4565b50565b5f610c7160025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461215c565b9050919050565b610c80611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d03906131f0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610dce611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e51906131f0565b60405180910390fd5b60648166038d7ea4c68000610e6f9190613268565b610e7991906132d6565b601681905550606466038d7ea4c68000610e9391906132d6565b6016541015610ea0575f80fd5b50565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600581526020017f4275646479000000000000000000000000000000000000000000000000000000815250905090565b610f30611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb3906131f0565b60405180910390fd5b8060188190555050565b610fce611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461105a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611051906131f0565b60405180910390fd5b8360088190555082600a819055508160098190555080600b819055505f600b54600954600a5460085461108d9190613306565b6110979190613306565b6110a19190613306565b905060198111156110e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110de906133a9565b60405180910390fd5b5050505050565b5f6111016110fa611648565b8484611812565b6001905092915050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611168611648565b73ffffffffffffffffffffffffffffffffffffffff1614806111dd575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111c5611648565b73ffffffffffffffffffffffffffffffffffffffff16145b6111e5575f80fd5b5f6111ef30610c2a565b90506111fa816121c8565b50565b611205611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611291576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611288906131f0565b60405180910390fd5b5f5b83839050811015611326578160055f8686858181106112b5576112b461320e565b5b90506020020160208101906112ca9190612ef7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611293565b50505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6113b6611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611442576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611439906131f0565b60405180910390fd5b60648166038d7ea4c680006114579190613268565b61146191906132d6565b601781905550606466038d7ea4c6800061147b91906132d6565b6017541015611488575f80fd5b50565b611493611648565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461151f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611516906131f0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361158d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158490613437565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b4906134c5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361172b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172290613553565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118059190612ede565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611880576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611877906135e1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e59061366f565b60405180910390fd5b5f8111611930576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611927906136fd565b60405180910390fd5b611938610ebe565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119a65750611976610ebe565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d9f57601560149054906101000a900460ff16611a35576119c7610ebe565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2b9061378b565b60405180910390fd5b5b601654811115611a7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a71906137f3565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611b18575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611b57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4e90613881565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611c035760175481611bb884610c2a565b611bc29190613306565b10611c02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf99061390f565b60405180910390fd5b5b5f611c0d30610c2a565b90505f60185482101590506008601854611c279190613268565b8210611c3f576008601854611c3c9190613268565b91505b808015611c57575060158054906101000a900460ff16155b8015611cb0575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611cc85750601560169054906101000a900460ff165b8015611d1b575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611d6e575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d9c57611d7c826121c8565b5f47905067011c37937e080000811115611d9a57611d99476120f4565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611e3f575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611ef0575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611eef575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611efd575f9050612080565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611fa6575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611fbe57600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612067575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561207f57600a54600c81905550600b54600d819055505b5b61208c84848484612431565b50505050565b5f8383111582906120d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d09190612d97565b60405180910390fd5b505f83856120e7919061392d565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612158573d5f803e3d5ffd5b5050565b5f6006548211156121a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612199906139d0565b60405180910390fd5b5f6121ab61245e565b90506121c0818461248790919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156121fe576121fd612b40565b5b60405190808252806020026020018201604052801561222c5781602001602082028036833780820191505090505b50905030815f815181106122435761224261320e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122e7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061230b9190613a02565b8160018151811061231f5761231e61320e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123853060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461164f565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016123e7959493929190613b1d565b5f604051808303815f87803b1580156123fe575f80fd5b505af1158015612410573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b8061243f5761243e6124d0565b5b61244a848484612509565b80612458576124576126c9565b5b50505050565b5f805f6124696126dd565b91509150612480818361248790919063ffffffff16565b9250505090565b5f6124c883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612736565b905092915050565b5f600c541480156124e257505f600d54145b61250757600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f8061251887612797565b9550955095509550955095506125748660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127f790919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506126058560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461284090919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061264f8161289d565b6126598483612954565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126b69190612ede565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f66038d7ea4c68000905061270c66038d7ea4c6800060065461248790919063ffffffff16565b8210156127295760065466038d7ea4c68000935093505050612732565b81819350935050505b9091565b5f808311829061277c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127739190612d97565b60405180910390fd5b505f838561278a91906132d6565b9050809150509392505050565b5f805f805f805f805f6127af8a600c54600d5461298e565b9250925092505f6127be61245e565b90505f805f6127cf8e878787612a20565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61283883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612092565b905092915050565b5f80828461284e9190613306565b905083811015612893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288a90613bbf565b60405180910390fd5b8091505092915050565b5f6128a661245e565b90505f6128bc8284612aa490919063ffffffff16565b905061290e8160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461284090919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612969826006546127f790919063ffffffff16565b6006819055506129848160075461284090919063ffffffff16565b6007819055505050565b5f805f806129b860646129aa888a612aa490919063ffffffff16565b61248790919063ffffffff16565b90505f6129e160646129d3888b612aa490919063ffffffff16565b61248790919063ffffffff16565b90505f612a09826129fb858c6127f790919063ffffffff16565b6127f790919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612a378589612aa490919063ffffffff16565b90505f612a4d8689612aa490919063ffffffff16565b90505f612a638789612aa490919063ffffffff16565b90505f612a8b82612a7d85876127f790919063ffffffff16565b6127f790919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612ab4575f9050612b15565b5f8284612ac19190613268565b9050828482612ad091906132d6565b14612b10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0790613c4d565b60405180910390fd5b809150505b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612b7682612b30565b810181811067ffffffffffffffff82111715612b9557612b94612b40565b5b80604052505050565b5f612ba7612b1b565b9050612bb38282612b6d565b919050565b5f67ffffffffffffffff821115612bd257612bd1612b40565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612c1082612be7565b9050919050565b612c2081612c06565b8114612c2a575f80fd5b50565b5f81359050612c3b81612c17565b92915050565b5f612c53612c4e84612bb8565b612b9e565b90508083825260208201905060208402830185811115612c7657612c75612be3565b5b835b81811015612c9f5780612c8b8882612c2d565b845260208401935050602081019050612c78565b5050509392505050565b5f82601f830112612cbd57612cbc612b2c565b5b8135612ccd848260208601612c41565b91505092915050565b5f60208284031215612ceb57612cea612b24565b5b5f82013567ffffffffffffffff811115612d0857612d07612b28565b5b612d1484828501612ca9565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612d54578082015181840152602081019050612d39565b5f8484015250505050565b5f612d6982612d1d565b612d738185612d27565b9350612d83818560208601612d37565b612d8c81612b30565b840191505092915050565b5f6020820190508181035f830152612daf8184612d5f565b905092915050565b5f819050919050565b612dc981612db7565b8114612dd3575f80fd5b50565b5f81359050612de481612dc0565b92915050565b5f8060408385031215612e0057612dff612b24565b5b5f612e0d85828601612c2d565b9250506020612e1e85828601612dd6565b9150509250929050565b5f8115159050919050565b612e3c81612e28565b82525050565b5f602082019050612e555f830184612e33565b92915050565b5f819050919050565b5f612e7e612e79612e7484612be7565b612e5b565b612be7565b9050919050565b5f612e8f82612e64565b9050919050565b5f612ea082612e85565b9050919050565b612eb081612e96565b82525050565b5f602082019050612ec95f830184612ea7565b92915050565b612ed881612db7565b82525050565b5f602082019050612ef15f830184612ecf565b92915050565b5f60208284031215612f0c57612f0b612b24565b5b5f612f1984828501612c2d565b91505092915050565b5f805f60608486031215612f3957612f38612b24565b5b5f612f4686828701612c2d565b9350506020612f5786828701612c2d565b9250506040612f6886828701612dd6565b9150509250925092565b5f60ff82169050919050565b612f8781612f72565b82525050565b5f602082019050612fa05f830184612f7e565b92915050565b612faf81612c06565b82525050565b5f602082019050612fc85f830184612fa6565b92915050565b612fd781612e28565b8114612fe1575f80fd5b50565b5f81359050612ff281612fce565b92915050565b5f6020828403121561300d5761300c612b24565b5b5f61301a84828501612fe4565b91505092915050565b5f6020828403121561303857613037612b24565b5b5f61304584828501612dd6565b91505092915050565b5f805f806080858703121561306657613065612b24565b5b5f61307387828801612dd6565b945050602061308487828801612dd6565b935050604061309587828801612dd6565b92505060606130a687828801612dd6565b91505092959194509250565b5f80fd5b5f8083601f8401126130cb576130ca612b2c565b5b8235905067ffffffffffffffff8111156130e8576130e76130b2565b5b60208301915083602082028301111561310457613103612be3565b5b9250929050565b5f805f6040848603121561312257613121612b24565b5b5f84013567ffffffffffffffff81111561313f5761313e612b28565b5b61314b868287016130b6565b9350935050602061315e86828701612fe4565b9150509250925092565b5f806040838503121561317e5761317d612b24565b5b5f61318b85828601612c2d565b925050602061319c85828601612c2d565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6131da602083612d27565b91506131e5826131a6565b602082019050919050565b5f6020820190508181035f830152613207816131ce565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61327282612db7565b915061327d83612db7565b925082820261328b81612db7565b915082820484148315176132a2576132a161323b565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6132e082612db7565b91506132eb83612db7565b9250826132fb576132fa6132a9565b5b828204905092915050565b5f61331082612db7565b915061331b83612db7565b92508282019050808211156133335761333261323b565b5b92915050565b7f546f74616c20466565732063616e6e6f74206265206d6f7265207468616e20325f8201527f3525000000000000000000000000000000000000000000000000000000000000602082015250565b5f613393602283612d27565b915061339e82613339565b604082019050919050565b5f6020820190508181035f8301526133c081613387565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613421602683612d27565b915061342c826133c7565b604082019050919050565b5f6020820190508181035f83015261344e81613415565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6134af602483612d27565b91506134ba82613455565b604082019050919050565b5f6020820190508181035f8301526134dc816134a3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61353d602283612d27565b9150613548826134e3565b604082019050919050565b5f6020820190508181035f83015261356a81613531565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6135cb602583612d27565b91506135d682613571565b604082019050919050565b5f6020820190508181035f8301526135f8816135bf565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613659602383612d27565b9150613664826135ff565b604082019050919050565b5f6020820190508181035f8301526136868161364d565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6136e7602983612d27565b91506136f28261368d565b604082019050919050565b5f6020820190508181035f830152613714816136db565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f613775603f83612d27565b91506137808261371b565b604082019050919050565b5f6020820190508181035f8301526137a281613769565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f6137dd601c83612d27565b91506137e8826137a9565b602082019050919050565b5f6020820190508181035f83015261380a816137d1565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f61386b602383612d27565b915061387682613811565b604082019050919050565b5f6020820190508181035f8301526138988161385f565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f6138f9602383612d27565b91506139048261389f565b604082019050919050565b5f6020820190508181035f830152613926816138ed565b9050919050565b5f61393782612db7565b915061394283612db7565b925082820390508181111561395a5761395961323b565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f6139ba602a83612d27565b91506139c582613960565b604082019050919050565b5f6020820190508181035f8301526139e7816139ae565b9050919050565b5f815190506139fc81612c17565b92915050565b5f60208284031215613a1757613a16612b24565b5b5f613a24848285016139ee565b91505092915050565b5f819050919050565b5f613a50613a4b613a4684613a2d565b612e5b565b612db7565b9050919050565b613a6081613a36565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613a9881612c06565b82525050565b5f613aa98383613a8f565b60208301905092915050565b5f602082019050919050565b5f613acb82613a66565b613ad58185613a70565b9350613ae083613a80565b805f5b83811015613b10578151613af78882613a9e565b9750613b0283613ab5565b925050600181019050613ae3565b5085935050505092915050565b5f60a082019050613b305f830188612ecf565b613b3d6020830187613a57565b8181036040830152613b4f8186613ac1565b9050613b5e6060830185612fa6565b613b6b6080830184612ecf565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613ba9601b83612d27565b9150613bb482613b75565b602082019050919050565b5f6020820190508181035f830152613bd681613b9d565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613c37602183612d27565b9150613c4282613bdd565b604082019050919050565b5f6020820190508181035f830152613c6481613c2b565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212204a4302017d021e9d2c2178c291ce9ae7841c7bcf0c995615c7e9cd849dfbeefa64736f6c63430008160033

Deployed Bytecode Sourcemap

4781:13650:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13211:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7246:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8171:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6096:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7523:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18277:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8372:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6393:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7432:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6144:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13388:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17535:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13060:143;;;;;;;;;;;;;:::i;:::-;;7626:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2268:148;;;;;;;;;;;;;:::i;:::-;;17675:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6293:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5838:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2054:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6337:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7337:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17344:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16874:418;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7772:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5800:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12816:236;;;;;;;;;;;;;:::i;:::-;;18034:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7979:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17850:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2424:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13211:169;2191:12;:10;:12::i;:::-;2181:22;;:6;;;;;;;;;;:22;;;2173:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13287:9:::1;13282:91;13306:5;:12;13302:1;:16;13282:91;;;13357:4;13340;:14;13345:5;13351:1;13345:8;;;;;;;;:::i;:::-;;;;;;;;13340:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13320:3;;;;;;;13282:91;;;;13211:169:::0;:::o;7246:83::-;7283:13;7316:5;;;;;;;;;;;;;;;;;7309:12;;7246:83;:::o;8171:193::-;8273:4;8295:39;8304:12;:10;:12::i;:::-;8318:7;8327:6;8295:8;:39::i;:::-;8352:4;8345:11;;8171:193;;;;:::o;6096:41::-;;;;;;;;;;;;;:::o;7523:95::-;7576:7;5327:15;7596:14;;7523:95;:::o;18277:147::-;2191:12;:10;:12::i;:::-;2181:22;;:6;;;;;;;;;;:22;;;2173:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18395:20:::1;18367:17;;:49;;;;;;;;;;;;;;;;;;18277:147:::0;:::o;8372:446::-;8504:4;8521:36;8531:6;8539:9;8550:6;8521:9;:36::i;:::-;8568:220;8591:6;8612:12;:10;:12::i;:::-;8639:138;8695:6;8639:138;;;;;;;;;;;;;;;;;:11;:19;8651:6;8639:19;;;;;;;;;;;;;;;:33;8659:12;:10;:12::i;:::-;8639:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8568:8;:220::i;:::-;8806:4;8799:11;;8372:446;;;;;:::o;6393:51::-;;;;:::o;7432:83::-;7473:5;5001:1;7491:16;;7432:83;:::o;6144:28::-;;;;;;;;;;;;;:::o;13388:92::-;2191:12;:10;:12::i;:::-;2181:22;;:6;;;;;;;;;;:22;;;2173:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13467:5:::1;13452:4;:12;13457:6;13452:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13388:92:::0;:::o;17535:101::-;2191:12;:10;:12::i;:::-;2181:22;;:6;;;;;;;;;;:22;;;2173:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17616:12:::1;17602:11;;:26;;;;;;;;;;;;;;;;;;17535:101:::0;:::o;13060:143::-;13102:26;13131:21;13102:50;;13163:32;13176:18;13163:12;:32::i;:::-;13091:112;13060:143::o;7626:138::-;7692:7;7719:37;7739:7;:16;7747:7;7739:16;;;;;;;;;;;;;;;;7719:19;:37::i;:::-;7712:44;;7626:138;;;:::o;2268:148::-;2191:12;:10;:12::i;:::-;2181:22;;:6;;;;;;;;;;:22;;;2173:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2375:1:::1;2338:40;;2359:6;::::0;::::1;;;;;;;;2338:40;;;;;;;;;;;;2406:1;2389:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2268:148::o:0;17675:167::-;2191:12;:10;:12::i;:::-;2181:22;;:6;;;;;;;;;;:22;;;2173:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17784:3:::1;17772:11;5327:15;17764:19;;;;:::i;:::-;:23;;;;:::i;:::-;17749:12;:38;;;;17830:3;5327:15;17822:11;;;;:::i;:::-;17807:12;;:26;;17798:36;;;::::0;::::1;;17675:167:::0;:::o;6293:37::-;;;;:::o;5838:43::-;;;;;;;;;;;;;;;;;:::o;2054:79::-;2092:7;2119:6;;;;;;;;;;;2112:13;;2054:79;:::o;6337:49::-;;;;:::o;7337:87::-;7376:13;7409:7;;;;;;;;;;;;;;;;;7402:14;;7337:87;:::o;17344:139::-;2191:12;:10;:12::i;:::-;2181:22;;:6;;;;;;;;;;:22;;;2173:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17457:18:::1;17435:19;:40;;;;17344:139:::0;:::o;16874:418::-;2191:12;:10;:12::i;:::-;2181:22;;:6;;;;;;;;;;:22;;;2173:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17013:9:::1;17000:10;:22;;;;17047:10;17033:11;:24;;;;17083:11;17068:12;:26;;;;17121:12;17105:13;:28;;;;17144:16;17199:13;;17186:12;;17174:11;;17163:10;;:22;;;;:::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;:::-;17144:68;;17244:2;17232:8;:14;;17223:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;16989:303;16874:418:::0;;;;:::o;7772:199::-;7877:4;7899:42;7909:12;:10;:12::i;:::-;7923:9;7934:6;7899:9;:42::i;:::-;7959:4;7952:11;;7772:199;;;;:::o;5800:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12816:236::-;12882:19;;;;;;;;;;;12866:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12921:17;;;;;;;;;;;12905:33;;:12;:10;:12::i;:::-;:33;;;12866:72;12858:81;;;;;;12950:23;12976:24;12994:4;12976:9;:24::i;:::-;12950:50;;13011:33;13028:15;13011:16;:33::i;:::-;12847:205;12816:236::o;18034:234::-;2191:12;:10;:12::i;:::-;2181:22;;:6;;;;;;;;;;:22;;;2173:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18151:9:::1;18147:114;18170:8;;:15;;18166:1;:19;18147:114;;;18241:8;18207:18;:31;18226:8;;18235:1;18226:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18207:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;18187:3;;;;;;;18147:114;;;;18034:234:::0;;;:::o;7979:184::-;8096:7;8128:11;:18;8140:5;8128:18;;;;;;;;;;;;;;;:27;8147:7;8128:27;;;;;;;;;;;;;;;;8121:34;;7979:184;;;;:::o;17850:176::-;2191:12;:10;:12::i;:::-;2181:22;;:6;;;;;;;;;;:22;;;2173:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17966:3:::1;17952:13;5327:15;17944:21;;;;:::i;:::-;:25;;;;:::i;:::-;17927:14;:42;;;;18014:3;5327:15;18006:11;;;;:::i;:::-;17989:14;;:28;;17980:38;;;::::0;::::1;;17850:176:::0;:::o;2424:244::-;2191:12;:10;:12::i;:::-;2181:22;;:6;;;;;;;;;;:22;;;2173:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2533:1:::1;2513:22;;:8;:22;;::::0;2505:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2623:8;2594:38;;2615:6;::::0;::::1;;;;;;;;2594:38;;;;;;;;;;;;2652:8;2643:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2424:244:::0;:::o;813:98::-;866:7;893:10;886:17;;813:98;:::o;9485:369::-;9629:1;9612:19;;:5;:19;;;9604:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9710:1;9691:21;;:7;:21;;;9683:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9792:6;9762:11;:18;9774:5;9762:18;;;;;;;;;;;;;;;:27;9781:7;9762:27;;;;;;;;;;;;;;;:36;;;;9830:7;9814:32;;9823:5;9814:32;;;9839:6;9814:32;;;;;;:::i;:::-;;;;;;;;9485:369;;;:::o;9862:2348::-;10000:1;9984:18;;:4;:18;;;9976:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10077:1;10063:16;;:2;:16;;;10055:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10147:1;10138:6;:10;10130:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10219:7;:5;:7::i;:::-;10211:15;;:4;:15;;;;:32;;;;;10236:7;:5;:7::i;:::-;10230:13;;:2;:13;;;;10211:32;10207:1293;;;10300:11;;;;;;;;;;;10295:144;;10348:7;:5;:7::i;:::-;10340:15;;:4;:15;;;10332:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;10295:144;10473:12;;10463:6;:22;;10455:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10542:4;:10;10547:4;10542:10;;;;;;;;;;;;;;;;;;;;;;;;;10541:11;:24;;;;;10557:4;:8;10562:2;10557:8;;;;;;;;;;;;;;;;;;;;;;;;;10556:9;10541:24;10533:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10631:13;;;;;;;;;;;10625:19;;:2;:19;;;10622:146;;10698:14;;10689:6;10673:13;10683:2;10673:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10665:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10622:146;10784:28;10815:24;10833:4;10815:9;:24::i;:::-;10784:55;;10854:12;10893:19;;10869:20;:43;;10854:58;;10976:1;10956:19;;:21;;;;:::i;:::-;10932:20;:45;10929:142;;11054:1;11034:19;;:21;;;;:::i;:::-;11011:44;;10929:142;11091:7;:18;;;;;11103:6;;;;;;;;;;11102:7;11091:18;:43;;;;;11121:13;;;;;;;;;;;11113:21;;:4;:21;;;;11091:43;:58;;;;;11138:11;;;;;;;;;;;11091:58;:87;;;;;11154:18;:24;11173:4;11154:24;;;;;;;;;;;;;;;;;;;;;;;;;11153:25;11091:87;:114;;;;;11183:18;:22;11202:2;11183:22;;;;;;;;;;;;;;;;;;;;;;;;;11182:23;11091:114;11087:402;;;11226:38;11243:20;11226:16;:38::i;:::-;11283:26;11312:21;11283:50;;11377:17;11356:18;:38;11352:122;;;11419:35;11432:21;11419:12;:35::i;:::-;11352:122;11207:282;11087:402;10245:1255;;10207:1293;11512:12;11527:4;11512:19;;11576:18;:24;11595:4;11576:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11604:18;:22;11623:2;11604:22;;;;;;;;;;;;;;;;;;;;;;;;;11576:50;11575:102;;;;11640:13;;;;;;;;;;;11632:21;;:4;:21;;;;:44;;;;;11663:13;;;;;;;;;;;11657:19;;:2;:19;;;;11632:44;11575:102;11571:578;;;11704:5;11694:15;;11571:578;;;11787:13;;;;;;;;;;;11779:21;;:4;:21;;;:55;;;;;11818:15;;;;;;;;;;;11804:30;;:2;:30;;;;11779:55;11776:154;;;11863:10;;11855:5;:18;;;;11902:12;;11892:7;:22;;;;11776:154;11989:13;;;;;;;;;;;11983:19;;:2;:19;;;:55;;;;;12022:15;;;;;;;;;;;12006:32;;:4;:32;;;;11983:55;11979:157;;;12067:11;;12059:5;:19;;;;12107:13;;12097:7;:23;;;;11979:157;11571:578;12161:41;12176:4;12182:2;12186:6;12194:7;12161:14;:41::i;:::-;9965:2245;9862:2348;;;:::o;3032:224::-;3152:7;3185:1;3180;:6;;3188:12;3172:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3212:9;3228:1;3224;:5;;;;:::i;:::-;3212:17;;3247:1;3240:8;;;3032:224;;;;;:::o;12709:99::-;12766:17;;;;;;;;;;;:26;;:34;12793:6;12766:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12709:99;:::o;8826:323::-;8921:7;8979;;8968;:18;;8946:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;9067:19;9089:10;:8;:10::i;:::-;9067:32;;9117:24;9129:11;9117:7;:11;;:24;;;;:::i;:::-;9110:31;;;8826:323;;;:::o;12218:483::-;6547:4;6538:6;;:13;;;;;;;;;;;;;;;;;;12296:21:::1;12334:1;12320:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12296:40;;12365:4;12347;12352:1;12347:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12391:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12381:4;12386:1;12381:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12424:62;12441:4;12456:15;;;;;;;;;;;12474:11;12424:8;:62::i;:::-;12497:15;;;;;;;;;;;:66;;;12578:11;12604:1;12620:4;12647;12667:15;12497:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12285:416;6583:5:::0;6574:6;;:14;;;;;;;;;;;;;;;;;;12218:483;:::o;13488:282::-;13644:7;13639:28;;13653:14;:12;:14::i;:::-;13639:28;13678:44;13696:6;13704:9;13715:6;13678:17;:44::i;:::-;13738:7;13733:29;;13747:15;:13;:15::i;:::-;13733:29;13488:282;;;;:::o;16437:164::-;16479:7;16500:15;16517;16536:19;:17;:19::i;:::-;16499:56;;;;16573:20;16585:7;16573;:11;;:20;;;;:::i;:::-;16566:27;;;;16437:164;:::o;3518:132::-;3576:7;3603:39;3607:1;3610;3603:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3596:46;;3518:132;;;;:::o;9157:203::-;9213:1;9204:5;;:10;:26;;;;;9229:1;9218:7;;:12;9204:26;9232:7;9200:39;9267:5;;9251:13;:21;;;;9301:7;;9283:15;:25;;;;9329:1;9321:5;:9;;;;9351:1;9341:7;:11;;;;9157:203;:::o;13778:610::-;13925:15;13955:23;13993:12;14020:23;14058:12;14085:13;14112:19;14123:7;14112:10;:19::i;:::-;13910:221;;;;;;;;;;;;14160:28;14180:7;14160;:15;14168:6;14160:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14142:7;:15;14150:6;14142:15;;;;;;;;;;;;;;;:46;;;;14220:39;14243:15;14220:7;:18;14228:9;14220:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14199:7;:18;14207:9;14199:18;;;;;;;;;;;;;;;:60;;;;14270:16;14280:5;14270:9;:16::i;:::-;14297:23;14309:4;14315;14297:11;:23::i;:::-;14353:9;14336:44;;14345:6;14336:44;;;14364:15;14336:44;;;;;;:::i;:::-;;;;;;;;13899:489;;;;;;13778:610;;;:::o;9368:109::-;9420:13;;9412:5;:21;;;;9454:15;;9444:7;:25;;;;9368:109::o;16609:257::-;16660:7;16669;16689:15;16707:7;;16689:25;;16725:15;5327;16725:25;;16775:20;5327:15;16775:7;;:11;;:20;;;;:::i;:::-;16765:7;:30;16761:61;;;16805:7;;5327:15;16797:25;;;;;;;;16761:61;16841:7;16850;16833:25;;;;;;16609:257;;;:::o;3658:223::-;3778:7;3810:1;3806;:5;3813:12;3798:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3837:9;3853:1;3849;:5;;;;:::i;:::-;3837:17;;3872:1;3865:8;;;3658:223;;;;;:::o;14807:611::-;14907:7;14929;14951;14973;14995;15017;15053:23;15078:12;15092:13;15122:36;15134:7;15143:5;;15150:7;;15122:11;:36::i;:::-;15052:106;;;;;;15169:19;15191:10;:8;:10::i;:::-;15169:32;;15213:15;15230:23;15255:12;15284:46;15296:7;15305:4;15311:5;15318:11;15284;:46::i;:::-;15212:118;;;;;;15349:7;15358:15;15375:4;15381:15;15398:4;15404:5;15341:69;;;;;;;;;;;;;;;;;;;14807:611;;;;;;;:::o;2888:136::-;2946:7;2973:43;2977:1;2980;2973:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2966:50;;2888:136;;;;:::o;2701:179::-;2759:7;2779:9;2795:1;2791;:5;;;;:::i;:::-;2779:17;;2820:1;2815;:6;;2807:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2871:1;2864:8;;;2701:179;;;;:::o;14396:211::-;14449:19;14471:10;:8;:10::i;:::-;14449:32;;14492:13;14508:22;14518:11;14508:5;:9;;:22;;;;:::i;:::-;14492:38;;14566:33;14593:5;14566:7;:22;14582:4;14566:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14541:7;:22;14557:4;14541:22;;;;;;;;;;;;;;;:58;;;;14438:169;;14396:211;:::o;14615:147::-;14693:17;14705:4;14693:7;;:11;;:17;;;;:::i;:::-;14683:7;:27;;;;14734:20;14749:4;14734:10;;:14;;:20;;;;:::i;:::-;14721:10;:33;;;;14615:147;;:::o;15426:461::-;15591:7;15613;15635;15670:12;15685:26;15707:3;15685:17;15697:4;15685:7;:11;;:17;;;;:::i;:::-;:21;;:26;;;;:::i;:::-;15670:41;;15722:13;15738:28;15762:3;15738:19;15750:6;15738:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15722:44;;15777:23;15803:28;15825:5;15803:17;15815:4;15803:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15777:54;;15850:15;15867:4;15873:5;15842:37;;;;;;;;;15426:461;;;;;;;:::o;15895:534::-;16089:7;16111;16133;16168:15;16186:24;16198:11;16186:7;:11;;:24;;;;:::i;:::-;16168:42;;16221:12;16236:21;16245:11;16236:4;:8;;:21;;;;:::i;:::-;16221:36;;16268:13;16284:22;16294:11;16284:5;:9;;:22;;;;:::i;:::-;16268:38;;16317:23;16343:28;16365:5;16343:17;16355:4;16343:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16317:54;;16390:7;16399:15;16416:4;16382:39;;;;;;;;;;15895:534;;;;;;;;:::o;3264:246::-;3322:7;3351:1;3346;:6;3342:47;;3376:1;3369:8;;;;3342:47;3399:9;3415:1;3411;:5;;;;:::i;:::-;3399:17;;3444:1;3439;3435;:5;;;;:::i;:::-;:10;3427:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3501:1;3494:8;;;3264: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:329::-;7672:6;7721:2;7709:9;7700:7;7696:23;7692:32;7689:119;;;7727:79;;:::i;:::-;7689:119;7847:1;7872:53;7917:7;7908:6;7897:9;7893:22;7872:53;:::i;:::-;7862:63;;7818:117;7613:329;;;;:::o;7948:619::-;8025:6;8033;8041;8090:2;8078:9;8069:7;8065:23;8061:32;8058:119;;;8096:79;;:::i;:::-;8058:119;8216:1;8241:53;8286:7;8277:6;8266:9;8262:22;8241:53;:::i;:::-;8231:63;;8187:117;8343:2;8369:53;8414:7;8405:6;8394:9;8390:22;8369:53;:::i;:::-;8359:63;;8314:118;8471:2;8497:53;8542:7;8533:6;8522:9;8518:22;8497:53;:::i;:::-;8487:63;;8442:118;7948:619;;;;;:::o;8573:86::-;8608:7;8648:4;8641:5;8637:16;8626:27;;8573:86;;;:::o;8665:112::-;8748:22;8764:5;8748:22;:::i;:::-;8743:3;8736:35;8665:112;;:::o;8783:214::-;8872:4;8910:2;8899:9;8895:18;8887:26;;8923:67;8987:1;8976:9;8972:17;8963:6;8923:67;:::i;:::-;8783:214;;;;:::o;9003:118::-;9090:24;9108:5;9090:24;:::i;:::-;9085:3;9078:37;9003:118;;:::o;9127:222::-;9220:4;9258:2;9247:9;9243:18;9235:26;;9271:71;9339:1;9328:9;9324:17;9315:6;9271:71;:::i;:::-;9127:222;;;;:::o;9355:116::-;9425:21;9440:5;9425:21;:::i;:::-;9418:5;9415:32;9405:60;;9461:1;9458;9451:12;9405:60;9355:116;:::o;9477:133::-;9520:5;9558:6;9545:20;9536:29;;9574:30;9598:5;9574:30;:::i;:::-;9477:133;;;;:::o;9616:323::-;9672:6;9721:2;9709:9;9700:7;9696:23;9692:32;9689:119;;;9727:79;;:::i;:::-;9689:119;9847:1;9872:50;9914:7;9905:6;9894:9;9890:22;9872:50;:::i;:::-;9862:60;;9818:114;9616:323;;;;:::o;9945:329::-;10004:6;10053:2;10041:9;10032:7;10028:23;10024:32;10021:119;;;10059:79;;:::i;:::-;10021:119;10179:1;10204:53;10249:7;10240:6;10229:9;10225:22;10204:53;:::i;:::-;10194:63;;10150:117;9945:329;;;;:::o;10280:765::-;10366:6;10374;10382;10390;10439:3;10427:9;10418:7;10414:23;10410:33;10407:120;;;10446:79;;:::i;:::-;10407:120;10566:1;10591:53;10636:7;10627:6;10616:9;10612:22;10591:53;:::i;:::-;10581:63;;10537:117;10693:2;10719:53;10764:7;10755:6;10744:9;10740:22;10719:53;:::i;:::-;10709:63;;10664:118;10821:2;10847:53;10892:7;10883:6;10872:9;10868:22;10847:53;:::i;:::-;10837:63;;10792:118;10949:2;10975:53;11020:7;11011:6;11000:9;10996:22;10975:53;:::i;:::-;10965:63;;10920:118;10280:765;;;;;;;:::o;11051:117::-;11160:1;11157;11150:12;11191:568;11264:8;11274:6;11324:3;11317:4;11309:6;11305:17;11301:27;11291:122;;11332:79;;:::i;:::-;11291:122;11445:6;11432:20;11422:30;;11475:18;11467:6;11464:30;11461:117;;;11497:79;;:::i;:::-;11461:117;11611:4;11603:6;11599:17;11587:29;;11665:3;11657:4;11649:6;11645:17;11635:8;11631:32;11628:41;11625:128;;;11672:79;;:::i;:::-;11625:128;11191:568;;;;;:::o;11765:698::-;11857:6;11865;11873;11922:2;11910:9;11901:7;11897:23;11893:32;11890:119;;;11928:79;;:::i;:::-;11890:119;12076:1;12065:9;12061:17;12048:31;12106:18;12098:6;12095:30;12092:117;;;12128:79;;:::i;:::-;12092:117;12241:80;12313:7;12304:6;12293:9;12289:22;12241:80;:::i;:::-;12223:98;;;;12019:312;12370:2;12396:50;12438:7;12429:6;12418:9;12414:22;12396:50;:::i;:::-;12386:60;;12341:115;11765:698;;;;;:::o;12469:474::-;12537:6;12545;12594:2;12582:9;12573:7;12569:23;12565:32;12562:119;;;12600:79;;:::i;:::-;12562:119;12720:1;12745:53;12790:7;12781:6;12770:9;12766:22;12745:53;:::i;:::-;12735:63;;12691:117;12847:2;12873:53;12918:7;12909:6;12898:9;12894:22;12873:53;:::i;:::-;12863:63;;12818:118;12469:474;;;;;:::o;12949:182::-;13089:34;13085:1;13077:6;13073:14;13066:58;12949:182;:::o;13137:366::-;13279:3;13300:67;13364:2;13359:3;13300:67;:::i;:::-;13293:74;;13376:93;13465:3;13376:93;:::i;:::-;13494:2;13489:3;13485:12;13478:19;;13137:366;;;:::o;13509:419::-;13675:4;13713:2;13702:9;13698:18;13690:26;;13762:9;13756:4;13752:20;13748:1;13737:9;13733:17;13726:47;13790:131;13916:4;13790:131;:::i;:::-;13782:139;;13509:419;;;:::o;13934:180::-;13982:77;13979:1;13972:88;14079:4;14076:1;14069:15;14103:4;14100:1;14093:15;14120:180;14168:77;14165:1;14158:88;14265:4;14262:1;14255:15;14289:4;14286:1;14279:15;14306:410;14346:7;14369:20;14387:1;14369:20;:::i;:::-;14364:25;;14403:20;14421:1;14403:20;:::i;:::-;14398:25;;14458:1;14455;14451:9;14480:30;14498:11;14480:30;:::i;:::-;14469:41;;14659:1;14650:7;14646:15;14643:1;14640:22;14620:1;14613:9;14593:83;14570:139;;14689:18;;:::i;:::-;14570:139;14354:362;14306:410;;;;:::o;14722:180::-;14770:77;14767:1;14760:88;14867:4;14864:1;14857:15;14891:4;14888:1;14881:15;14908:185;14948:1;14965:20;14983:1;14965:20;:::i;:::-;14960:25;;14999:20;15017:1;14999:20;:::i;:::-;14994:25;;15038:1;15028:35;;15043:18;;:::i;:::-;15028:35;15085:1;15082;15078:9;15073:14;;14908:185;;;;:::o;15099:191::-;15139:3;15158:20;15176:1;15158:20;:::i;:::-;15153:25;;15192:20;15210:1;15192:20;:::i;:::-;15187:25;;15235:1;15232;15228:9;15221:16;;15256:3;15253:1;15250:10;15247:36;;;15263:18;;:::i;:::-;15247:36;15099:191;;;;:::o;15296:221::-;15436:34;15432:1;15424:6;15420:14;15413:58;15505:4;15500:2;15492:6;15488:15;15481:29;15296:221;:::o;15523:366::-;15665:3;15686:67;15750:2;15745:3;15686:67;:::i;:::-;15679:74;;15762:93;15851:3;15762:93;:::i;:::-;15880:2;15875:3;15871:12;15864:19;;15523:366;;;:::o;15895:419::-;16061:4;16099:2;16088:9;16084:18;16076:26;;16148:9;16142:4;16138:20;16134:1;16123:9;16119:17;16112:47;16176:131;16302:4;16176:131;:::i;:::-;16168:139;;15895:419;;;:::o;16320:225::-;16460:34;16456:1;16448:6;16444:14;16437:58;16529:8;16524:2;16516:6;16512:15;16505:33;16320:225;:::o;16551:366::-;16693:3;16714:67;16778:2;16773:3;16714:67;:::i;:::-;16707:74;;16790:93;16879:3;16790:93;:::i;:::-;16908:2;16903:3;16899:12;16892:19;;16551:366;;;:::o;16923:419::-;17089:4;17127:2;17116:9;17112:18;17104:26;;17176:9;17170:4;17166:20;17162:1;17151:9;17147:17;17140:47;17204:131;17330:4;17204:131;:::i;:::-;17196:139;;16923:419;;;:::o;17348:223::-;17488:34;17484:1;17476:6;17472:14;17465:58;17557:6;17552:2;17544:6;17540:15;17533:31;17348:223;:::o;17577:366::-;17719:3;17740:67;17804:2;17799:3;17740:67;:::i;:::-;17733:74;;17816:93;17905:3;17816:93;:::i;:::-;17934:2;17929:3;17925:12;17918:19;;17577:366;;;:::o;17949:419::-;18115:4;18153:2;18142:9;18138:18;18130:26;;18202:9;18196:4;18192:20;18188:1;18177:9;18173:17;18166:47;18230:131;18356:4;18230:131;:::i;:::-;18222:139;;17949:419;;;:::o;18374:221::-;18514:34;18510:1;18502:6;18498:14;18491:58;18583:4;18578:2;18570:6;18566:15;18559:29;18374:221;:::o;18601:366::-;18743:3;18764:67;18828:2;18823:3;18764:67;:::i;:::-;18757:74;;18840:93;18929:3;18840:93;:::i;:::-;18958:2;18953:3;18949:12;18942:19;;18601:366;;;:::o;18973:419::-;19139:4;19177:2;19166:9;19162:18;19154:26;;19226:9;19220:4;19216:20;19212:1;19201:9;19197:17;19190:47;19254:131;19380:4;19254:131;:::i;:::-;19246:139;;18973:419;;;:::o;19398:224::-;19538:34;19534:1;19526:6;19522:14;19515:58;19607:7;19602:2;19594:6;19590:15;19583:32;19398:224;:::o;19628:366::-;19770:3;19791:67;19855:2;19850:3;19791:67;:::i;:::-;19784:74;;19867:93;19956:3;19867:93;:::i;:::-;19985:2;19980:3;19976:12;19969:19;;19628:366;;;:::o;20000:419::-;20166:4;20204:2;20193:9;20189:18;20181:26;;20253:9;20247:4;20243:20;20239:1;20228:9;20224:17;20217:47;20281:131;20407:4;20281:131;:::i;:::-;20273:139;;20000:419;;;:::o;20425:222::-;20565:34;20561:1;20553:6;20549:14;20542:58;20634:5;20629:2;20621:6;20617:15;20610:30;20425:222;:::o;20653:366::-;20795:3;20816:67;20880:2;20875:3;20816:67;:::i;:::-;20809:74;;20892:93;20981:3;20892:93;:::i;:::-;21010:2;21005:3;21001:12;20994:19;;20653:366;;;:::o;21025:419::-;21191:4;21229:2;21218:9;21214:18;21206:26;;21278:9;21272:4;21268:20;21264:1;21253:9;21249:17;21242:47;21306:131;21432:4;21306:131;:::i;:::-;21298:139;;21025:419;;;:::o;21450:228::-;21590:34;21586:1;21578:6;21574:14;21567:58;21659:11;21654:2;21646:6;21642:15;21635:36;21450:228;:::o;21684:366::-;21826:3;21847:67;21911:2;21906:3;21847:67;:::i;:::-;21840:74;;21923:93;22012:3;21923:93;:::i;:::-;22041:2;22036:3;22032:12;22025:19;;21684:366;;;:::o;22056:419::-;22222:4;22260:2;22249:9;22245:18;22237:26;;22309:9;22303:4;22299:20;22295:1;22284:9;22280:17;22273:47;22337:131;22463:4;22337:131;:::i;:::-;22329:139;;22056:419;;;:::o;22481:250::-;22621:34;22617:1;22609:6;22605:14;22598:58;22690:33;22685:2;22677:6;22673:15;22666:58;22481:250;:::o;22737:366::-;22879:3;22900:67;22964:2;22959:3;22900:67;:::i;:::-;22893:74;;22976:93;23065:3;22976:93;:::i;:::-;23094:2;23089:3;23085:12;23078:19;;22737:366;;;:::o;23109:419::-;23275:4;23313:2;23302:9;23298:18;23290:26;;23362:9;23356:4;23352:20;23348:1;23337:9;23333:17;23326:47;23390:131;23516:4;23390:131;:::i;:::-;23382:139;;23109:419;;;:::o;23534:178::-;23674:30;23670:1;23662:6;23658:14;23651:54;23534:178;:::o;23718:366::-;23860:3;23881:67;23945:2;23940:3;23881:67;:::i;:::-;23874:74;;23957:93;24046:3;23957:93;:::i;:::-;24075:2;24070:3;24066:12;24059:19;;23718:366;;;:::o;24090:419::-;24256:4;24294:2;24283:9;24279:18;24271:26;;24343:9;24337:4;24333:20;24329:1;24318:9;24314:17;24307:47;24371:131;24497:4;24371:131;:::i;:::-;24363:139;;24090:419;;;:::o;24515:222::-;24655:34;24651:1;24643:6;24639:14;24632:58;24724:5;24719:2;24711:6;24707:15;24700:30;24515:222;:::o;24743:366::-;24885:3;24906:67;24970:2;24965:3;24906:67;:::i;:::-;24899:74;;24982:93;25071:3;24982:93;:::i;:::-;25100:2;25095:3;25091:12;25084:19;;24743:366;;;:::o;25115:419::-;25281:4;25319:2;25308:9;25304:18;25296:26;;25368:9;25362:4;25358:20;25354:1;25343:9;25339:17;25332:47;25396:131;25522:4;25396:131;:::i;:::-;25388:139;;25115:419;;;:::o;25540:222::-;25680:34;25676:1;25668:6;25664:14;25657:58;25749:5;25744:2;25736:6;25732:15;25725:30;25540:222;:::o;25768:366::-;25910:3;25931:67;25995:2;25990:3;25931:67;:::i;:::-;25924:74;;26007:93;26096:3;26007:93;:::i;:::-;26125:2;26120:3;26116:12;26109:19;;25768:366;;;:::o;26140:419::-;26306:4;26344:2;26333:9;26329:18;26321:26;;26393:9;26387:4;26383:20;26379:1;26368:9;26364:17;26357:47;26421:131;26547:4;26421:131;:::i;:::-;26413:139;;26140:419;;;:::o;26565:194::-;26605:4;26625:20;26643:1;26625:20;:::i;:::-;26620:25;;26659:20;26677:1;26659:20;:::i;:::-;26654:25;;26703:1;26700;26696:9;26688:17;;26727:1;26721:4;26718:11;26715:37;;;26732:18;;:::i;:::-;26715:37;26565:194;;;;:::o;26765:229::-;26905:34;26901:1;26893:6;26889:14;26882:58;26974:12;26969:2;26961:6;26957:15;26950:37;26765:229;:::o;27000:366::-;27142:3;27163:67;27227:2;27222:3;27163:67;:::i;:::-;27156:74;;27239:93;27328:3;27239:93;:::i;:::-;27357:2;27352:3;27348:12;27341:19;;27000:366;;;:::o;27372:419::-;27538:4;27576:2;27565:9;27561:18;27553:26;;27625:9;27619:4;27615:20;27611:1;27600:9;27596:17;27589:47;27653:131;27779:4;27653:131;:::i;:::-;27645:139;;27372:419;;;:::o;27797:143::-;27854:5;27885:6;27879:13;27870:22;;27901:33;27928:5;27901:33;:::i;:::-;27797:143;;;;:::o;27946:351::-;28016:6;28065:2;28053:9;28044:7;28040:23;28036:32;28033:119;;;28071:79;;:::i;:::-;28033:119;28191:1;28216:64;28272:7;28263:6;28252:9;28248:22;28216:64;:::i;:::-;28206:74;;28162:128;27946:351;;;;:::o;28303:85::-;28348:7;28377:5;28366:16;;28303:85;;;:::o;28394:158::-;28452:9;28485:61;28503:42;28512:32;28538:5;28512:32;:::i;:::-;28503:42;:::i;:::-;28485:61;:::i;:::-;28472:74;;28394:158;;;:::o;28558:147::-;28653:45;28692:5;28653:45;:::i;:::-;28648:3;28641:58;28558:147;;:::o;28711:114::-;28778:6;28812:5;28806:12;28796:22;;28711:114;;;:::o;28831:184::-;28930:11;28964:6;28959:3;28952:19;29004:4;28999:3;28995:14;28980:29;;28831:184;;;;:::o;29021:132::-;29088:4;29111:3;29103:11;;29141:4;29136:3;29132:14;29124:22;;29021:132;;;:::o;29159:108::-;29236:24;29254:5;29236:24;:::i;:::-;29231:3;29224:37;29159:108;;:::o;29273:179::-;29342:10;29363:46;29405:3;29397:6;29363:46;:::i;:::-;29441:4;29436:3;29432:14;29418:28;;29273:179;;;;:::o;29458:113::-;29528:4;29560;29555:3;29551:14;29543:22;;29458:113;;;:::o;29607:732::-;29726:3;29755:54;29803:5;29755:54;:::i;:::-;29825:86;29904:6;29899:3;29825:86;:::i;:::-;29818:93;;29935:56;29985:5;29935:56;:::i;:::-;30014:7;30045:1;30030:284;30055:6;30052:1;30049:13;30030:284;;;30131:6;30125:13;30158:63;30217:3;30202:13;30158:63;:::i;:::-;30151:70;;30244:60;30297:6;30244:60;:::i;:::-;30234:70;;30090:224;30077:1;30074;30070:9;30065:14;;30030:284;;;30034:14;30330:3;30323:10;;29731:608;;;29607:732;;;;:::o;30345:831::-;30608:4;30646:3;30635:9;30631:19;30623:27;;30660:71;30728:1;30717:9;30713:17;30704:6;30660:71;:::i;:::-;30741:80;30817:2;30806:9;30802:18;30793:6;30741:80;:::i;:::-;30868:9;30862:4;30858:20;30853:2;30842:9;30838:18;30831:48;30896:108;30999:4;30990:6;30896:108;:::i;:::-;30888:116;;31014:72;31082:2;31071:9;31067:18;31058:6;31014:72;:::i;:::-;31096:73;31164:3;31153:9;31149:19;31140:6;31096:73;:::i;:::-;30345:831;;;;;;;;:::o;31182:177::-;31322:29;31318:1;31310:6;31306:14;31299:53;31182:177;:::o;31365:366::-;31507:3;31528:67;31592:2;31587:3;31528:67;:::i;:::-;31521:74;;31604:93;31693:3;31604:93;:::i;:::-;31722:2;31717:3;31713:12;31706:19;;31365:366;;;:::o;31737:419::-;31903:4;31941:2;31930:9;31926:18;31918:26;;31990:9;31984:4;31980:20;31976:1;31965:9;31961:17;31954:47;32018:131;32144:4;32018:131;:::i;:::-;32010:139;;31737:419;;;:::o;32162:220::-;32302:34;32298:1;32290:6;32286:14;32279:58;32371:3;32366:2;32358:6;32354:15;32347:28;32162:220;:::o;32388:366::-;32530:3;32551:67;32615:2;32610:3;32551:67;:::i;:::-;32544:74;;32627:93;32716:3;32627:93;:::i;:::-;32745:2;32740:3;32736:12;32729:19;;32388:366;;;:::o;32760:419::-;32926:4;32964:2;32953:9;32949:18;32941:26;;33013:9;33007:4;33003:20;32999:1;32988:9;32984:17;32977:47;33041:131;33167:4;33041:131;:::i;:::-;33033:139;;32760:419;;;:::o

Swarm Source

ipfs://4a4302017d021e9d2c2178c291ce9ae7841c7bcf0c995615c7e9cd849dfbeefa

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.