ETH Price: $3,425.58 (+2.38%)

Contract

0xeF7Cd5Af46446A093E0399A664E98Ee0E96d8edf
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve211310482024-11-06 20:38:1117 days ago1730925491IN
0xeF7Cd5Af...0E96d8edf
0 ETH0.0009424520.08168781
Approve211247062024-11-05 23:23:3518 days ago1730849015IN
0xeF7Cd5Af...0E96d8edf
0 ETH0.000256675.46919108
Approve211246222024-11-05 23:06:4718 days ago1730848007IN
0xeF7Cd5Af...0E96d8edf
0 ETH0.000346117.37501372
Approve203622372024-07-22 13:01:47124 days ago1721653307IN
0xeF7Cd5Af...0E96d8edf
0 ETH0.0002501410.04159862
Approve197527002024-04-28 8:43:35209 days ago1714293815IN
0xeF7Cd5Af...0E96d8edf
0 ETH0.000314376.65280027
Approve196721392024-04-17 2:14:35220 days ago1713320075IN
0xeF7Cd5Af...0E96d8edf
0 ETH0.000315356.68185769
Approve196680872024-04-16 12:37:23221 days ago1713271043IN
0xeF7Cd5Af...0E96d8edf
0 ETH0.0005349511.33506262
Approve192466612024-02-17 9:21:47280 days ago1708161707IN
0xeF7Cd5Af...0E96d8edf
0 ETH0.0004262217.0686855
Approve192466612024-02-17 9:21:47280 days ago1708161707IN
0xeF7Cd5Af...0E96d8edf
0 ETH0.0004262217.0686855
Manualswap192318942024-02-15 7:38:59282 days ago1707982739IN
0xeF7Cd5Af...0E96d8edf
0 ETH0.0034880619.70069304
Approve191572612024-02-04 20:16:35293 days ago1707077795IN
0xeF7Cd5Af...0E96d8edf
0 ETH0.0008029417.01341088
Approve190416512024-01-19 14:57:35309 days ago1705676255IN
0xeF7Cd5Af...0E96d8edf
0 ETH0.0019581341.49035351
Approve190089082024-01-15 1:08:59313 days ago1705280939IN
0xeF7Cd5Af...0E96d8edf
0 ETH0.0008089917.11980006
Approve187948492023-12-15 23:41:47344 days ago1702683707IN
0xeF7Cd5Af...0E96d8edf
0 ETH0.002188746.31687093
Approve187933272023-12-15 18:33:47344 days ago1702665227IN
0xeF7Cd5Af...0E96d8edf
0 ETH0.0024102651.0703473
Transfer187785222023-12-13 16:45:23346 days ago1702485923IN
0xeF7Cd5Af...0E96d8edf
0 ETH0.0056138757.33940252
Manualsend187784732023-12-13 16:35:23346 days ago1702485323IN
0xeF7Cd5Af...0E96d8edf
0 ETH0.0022062567.76184215
Manualswap187784662023-12-13 16:33:59346 days ago1702485239IN
0xeF7Cd5Af...0E96d8edf
0 ETH0.011609265.56911989
Approve187784572023-12-13 16:32:11346 days ago1702485131IN
0xeF7Cd5Af...0E96d8edf
0 ETH0.0028520960.43216594
Transfer187780322023-12-13 15:06:35346 days ago1702479995IN
0xeF7Cd5Af...0E96d8edf
0 ETH0.0038861248.90547545
Transfer187779032023-12-13 14:39:59346 days ago1702478399IN
0xeF7Cd5Af...0E96d8edf
0 ETH0.0037852847.63638579
Transfer187778952023-12-13 14:38:23346 days ago1702478303IN
0xeF7Cd5Af...0E96d8edf
0 ETH0.0041340952.01823637
Transfer187778932023-12-13 14:37:59346 days ago1702478279IN
0xeF7Cd5Af...0E96d8edf
0 ETH0.0042658553.67606971
Transfer187778702023-12-13 14:33:23346 days ago1702478003IN
0xeF7Cd5Af...0E96d8edf
0 ETH0.0036394645.79442949
Transfer187777692023-12-13 14:12:59346 days ago1702476779IN
0xeF7Cd5Af...0E96d8edf
0 ETH0.0041017451.61117485
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
211247272024-11-05 23:27:4718 days ago1730849267
0xeF7Cd5Af...0E96d8edf
0.00364721 ETH
211247272024-11-05 23:27:4718 days ago1730849267
0xeF7Cd5Af...0E96d8edf
0.00364721 ETH
211246772024-11-05 23:17:4718 days ago1730848667
0xeF7Cd5Af...0E96d8edf
0.00018073 ETH
211246772024-11-05 23:17:4718 days ago1730848667
0xeF7Cd5Af...0E96d8edf
0.00018073 ETH
197527032024-04-28 8:44:11209 days ago1714293851
0xeF7Cd5Af...0E96d8edf
0.00177231 ETH
197527032024-04-28 8:44:11209 days ago1714293851
0xeF7Cd5Af...0E96d8edf
0.00177231 ETH
196721492024-04-17 2:16:35220 days ago1713320195
0xeF7Cd5Af...0E96d8edf
0.0017871 ETH
196721492024-04-17 2:16:35220 days ago1713320195
0xeF7Cd5Af...0E96d8edf
0.0017871 ETH
196681182024-04-16 12:43:35221 days ago1713271415
0xeF7Cd5Af...0E96d8edf
0.00191345 ETH
196681182024-04-16 12:43:35221 days ago1713271415
0xeF7Cd5Af...0E96d8edf
0.00143481 ETH
192318942024-02-15 7:38:59282 days ago1707982739
0xeF7Cd5Af...0E96d8edf
0.00047863 ETH
191572622024-02-04 20:16:59293 days ago1707077819
0xeF7Cd5Af...0E96d8edf
0.00079744 ETH
191572622024-02-04 20:16:59293 days ago1707077819
0xeF7Cd5Af...0E96d8edf
0.00079744 ETH
190416552024-01-19 14:58:23309 days ago1705676303
0xeF7Cd5Af...0E96d8edf
0.00040578 ETH
190416552024-01-19 14:58:23309 days ago1705676303
0xeF7Cd5Af...0E96d8edf
0.00040578 ETH
190089232024-01-15 1:11:59313 days ago1705281119
0xeF7Cd5Af...0E96d8edf
0.00096027 ETH
190089232024-01-15 1:11:59313 days ago1705281119
0xeF7Cd5Af...0E96d8edf
0.00096027 ETH
188710172023-12-26 16:19:23333 days ago1703607563
0xeF7Cd5Af...0E96d8edf
0.00468087 ETH
188710172023-12-26 16:19:23333 days ago1703607563
0xeF7Cd5Af...0E96d8edf
0.00468087 ETH
188593662023-12-25 1:03:59334 days ago1703466239
0xeF7Cd5Af...0E96d8edf
0.00230251 ETH
188593662023-12-25 1:03:59334 days ago1703466239
0xeF7Cd5Af...0E96d8edf
0.00230251 ETH
188348422023-12-21 14:29:35338 days ago1703168975
0xeF7Cd5Af...0E96d8edf
0.0018275 ETH
188348422023-12-21 14:29:35338 days ago1703168975
0xeF7Cd5Af...0E96d8edf
0.0018275 ETH
187948502023-12-15 23:41:59344 days ago1702683719
0xeF7Cd5Af...0E96d8edf
0.00010009 ETH
187948502023-12-15 23:41:59344 days ago1702683719
0xeF7Cd5Af...0E96d8edf
0.00010009 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BeepTokenAI

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: Unlicensed

/**
https://t.me/BeepTokenAI
**/

pragma solidity ^0.8.18;
 
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 BeepTokenAI is Context, IERC20, Ownable {
 
    using SafeMath for uint256;
 
    string private constant _name = "Beep Token AI";
    string private constant _symbol = "BEEPAI";
    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 = 100000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;  
    uint256 private _taxFeeOnBuy = 10;  
    uint256 private _redisFeeOnSell = 0;  
    uint256 private _taxFeeOnSell = 50;
 
    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
 
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;
 
    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap; 
    address payable private _developmentAddress = payable(0x18bEBa5BDba1b4f48dDA0713524a74076Db8F259); 
    address payable private _marketingAddress = payable(0x18bEBa5BDba1b4f48dDA0713524a74076Db8F259);
 
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
 
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;
 
    uint256 public _maxTxAmount = 2000000 * 10**9; 
    uint256 public _maxWalletSize = 2000000 * 10**9; 
    uint256 public _swapTokensAtAmount = 1000 * 10**9;

    bool private _maxTxn = false;
    bool private _maxWallet = false;
    bool private _maxTxnCan = false;
    bool private _maxWalletCan = false;

    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,
                "the transfer amount exceeds allowance"
            )
        );
        return true;
    }
 
    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount has to be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }
 
    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;
 
        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;
 
        _redisFee = 0;
        _taxFee = 0;
    }
 
    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }
 
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "Can't approve from zero address");
        require(spender != address(0), "Can't approve to zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
 
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "Cant transfer from address zero");
        require(to != address(0), "Cant transfer to address zero");
        require(amount > 0, "Amount should be above zero");
 
        if (from != owner() && to != owner()) {
 
            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "Only owner can trade before trading activation");
            }
 
            require(amount <= _maxTxAmount, "Exceeded max transaction limit");
            require(!bots[from] && !bots[to], "This account is on the blacklist");
 
            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "Exceeds max wallet balance");
            }
 
            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;
 
            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }
 
            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
 
        bool takeFee = true;
 
        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {
 
            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }
 
            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }
 
        }
 
        _tokenTransfer(from, to, amount, takeFee);
    }
 
    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
 
    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }
 
    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }
 
    function manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
 
    function manualsend() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
 
    function blockBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }
 
    function unblockBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }
 
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }
 
    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
 
    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }
 
    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }
 
    receive() external payable {}
 
    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }
 
    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }
 
    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }
 
    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }
 
    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
 
    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        require(redisFeeOnBuy >= 0 && redisFeeOnBuy <= 4, "Buy rewards must be between 0% and 4%");
        require(taxFeeOnBuy >= 0 && taxFeeOnBuy <= 95, "Buy tax must be between 0% and 95%");
        require(redisFeeOnSell >= 0 && redisFeeOnSell <= 4, "Sell rewards must be between 0% and 4%");
        require(taxFeeOnSell >= 0 && taxFeeOnSell <= 95, "Sell tax must be between 0% and 95%");

        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;

    }
 
    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }
 
    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }
 
    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount, bool maxTxn, bool maxTxnCan) public onlyOwner {
           _maxTxAmount = maxTxAmount;
           _maxTxn = maxTxn;
           _maxTxnCan = maxTxnCan;
        
    }
 
    function setMaxWalletSize(uint256 maxWalletSize, bool maxWallet, bool maxWalletCan) public onlyOwner {
        _maxWalletSize = maxWalletSize;
        _maxWallet = maxWallet;
        _maxWalletCan = maxWalletCan;
    }
 
    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_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":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"},{"internalType":"bool","name":"maxTxn","type":"bool"},{"internalType":"bool","name":"maxTxnCan","type":"bool"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"},{"internalType":"bool","name":"maxWallet","type":"bool"},{"internalType":"bool","name":"maxWalletCan","type":"bool"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405267016345785d8a00006000196200001c919062000779565b6000196200002b9190620007e0565b6006556000600855600a6009556000600a556032600b55600a54600c55600b54600d55600c54600e55600d54600f557318beba5bdba1b4f48dda0713524a74076db8f259601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507318beba5bdba1b4f48dda0713524a74076db8f259601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555066071afd498d000060165566071afd498d000060175564e8d4a510006018556000601960006101000a81548160ff0219169083151502179055506000601960016101000a81548160ff0219169083151502179055506000601960026101000a81548160ff0219169083151502179055506000601960036101000a81548160ff021916908315150217905550348015620001d157600080fd5b506000620001e46200070f60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460026000620002996200070f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200037d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a3919062000885565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200040b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000431919062000885565b6040518363ffffffff1660e01b815260040162000450929190620008c8565b6020604051808303816000875af115801562000470573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000496919062000885565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004ec6200071760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006996200070f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef67016345785d8a000060405162000700919062000906565b60405180910390a35062000923565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620007868262000740565b9150620007938362000740565b925082620007a657620007a56200074a565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007ed8262000740565b9150620007fa8362000740565b9250828203905081811115620008155762000814620007b1565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200084d8262000820565b9050919050565b6200085f8162000840565b81146200086b57600080fd5b50565b6000815190506200087f8162000854565b92915050565b6000602082840312156200089e576200089d6200081b565b5b6000620008ae848285016200086e565b91505092915050565b620008c28162000840565b82525050565b6000604082019050620008df6000830185620008b7565b620008ee6020830184620008b7565b9392505050565b620009008162000740565b82525050565b60006020820190506200091d6000830184620008f5565b92915050565b6140bf80620009336000396000f3fe6080604052600436106101d05760003560e01c80637f2feddc116100f7578063a9059cbb11610095578063c492f04611610064578063c492f0461461065c578063dd62ed3e14610685578063f2fde38b146106c2578063fc7d9469146106eb576101d7565b8063a9059cbb146105a2578063bd6bba91146105df578063bfd7928414610608578063c3c8cd8014610645576101d7565b80638f9a55c0116100d15780638f9a55c0146104fa57806395d89b411461052557806398a5c31514610550578063a2a957bb14610579576101d7565b80637f2feddc146104695780638da5cb5b146104a65780638f70ccf7146104d1576101d7565b8063313ce5671161016f5780636fc3eaec1161013e5780636fc3eaec146103d357806370a08231146103ea578063715018a6146104275780637d1db4a51461043e576101d7565b8063313ce5671461032b57806349bd5a5e146103565780636b999053146103815780636d8aa8f8146103aa576101d7565b80631694505e116101ab5780631694505e1461026d57806318160ddd1461029857806323b872dd146102c35780632fd689e314610300576101d7565b8062b8cf2a146101dc57806306fdde0314610205578063095ea7b314610230576101d7565b366101d757005b600080fd5b3480156101e857600080fd5b5061020360048036038101906101fe9190612f01565b610714565b005b34801561021157600080fd5b5061021a61083e565b6040516102279190612fc9565b60405180910390f35b34801561023c57600080fd5b5061025760048036038101906102529190613021565b61087b565b604051610264919061307c565b60405180910390f35b34801561027957600080fd5b50610282610899565b60405161028f91906130f6565b60405180910390f35b3480156102a457600080fd5b506102ad6108bf565b6040516102ba9190613120565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e5919061313b565b6108cf565b6040516102f7919061307c565b60405180910390f35b34801561030c57600080fd5b506103156109a8565b6040516103229190613120565b60405180910390f35b34801561033757600080fd5b506103406109ae565b60405161034d91906131aa565b60405180910390f35b34801561036257600080fd5b5061036b6109b7565b60405161037891906131d4565b60405180910390f35b34801561038d57600080fd5b506103a860048036038101906103a391906131ef565b6109dd565b005b3480156103b657600080fd5b506103d160048036038101906103cc9190613248565b610acd565b005b3480156103df57600080fd5b506103e8610b7f565b005b3480156103f657600080fd5b50610411600480360381019061040c91906131ef565b610c50565b60405161041e9190613120565b60405180910390f35b34801561043357600080fd5b5061043c610ca1565b005b34801561044a57600080fd5b50610453610df4565b6040516104609190613120565b60405180910390f35b34801561047557600080fd5b50610490600480360381019061048b91906131ef565b610dfa565b60405161049d9190613120565b60405180910390f35b3480156104b257600080fd5b506104bb610e12565b6040516104c891906131d4565b60405180910390f35b3480156104dd57600080fd5b506104f860048036038101906104f39190613248565b610e3b565b005b34801561050657600080fd5b5061050f610eed565b60405161051c9190613120565b60405180910390f35b34801561053157600080fd5b5061053a610ef3565b6040516105479190612fc9565b60405180910390f35b34801561055c57600080fd5b5061057760048036038101906105729190613275565b610f30565b005b34801561058557600080fd5b506105a0600480360381019061059b91906132a2565b610fcf565b005b3480156105ae57600080fd5b506105c960048036038101906105c49190613021565b6111ca565b6040516105d6919061307c565b60405180910390f35b3480156105eb57600080fd5b5061060660048036038101906106019190613309565b6111e8565b005b34801561061457600080fd5b5061062f600480360381019061062a91906131ef565b6112bd565b60405161063c919061307c565b60405180910390f35b34801561065157600080fd5b5061065a6112dd565b005b34801561066857600080fd5b50610683600480360381019061067e91906133b7565b6113b6565b005b34801561069157600080fd5b506106ac60048036038101906106a79190613417565b6114f0565b6040516106b99190613120565b60405180910390f35b3480156106ce57600080fd5b506106e960048036038101906106e491906131ef565b611577565b005b3480156106f757600080fd5b50610712600480360381019061070d9190613309565b611738565b005b61071c61180d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a0906134a3565b60405180910390fd5b60005b815181101561083a576001601060008484815181106107ce576107cd6134c3565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061083290613521565b9150506107ac565b5050565b60606040518060400160405280600d81526020017f4265657020546f6b656e20414900000000000000000000000000000000000000815250905090565b600061088f61088861180d565b8484611815565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600067016345785d8a0000905090565b60006108dc8484846119de565b61099d846108e861180d565b6109988560405180606001604052806025815260200161406560259139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061094e61180d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122619092919063ffffffff16565b611815565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109e561180d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a69906134a3565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610ad561180d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b59906134a3565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bc061180d565b73ffffffffffffffffffffffffffffffffffffffff161480610c365750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c1e61180d565b73ffffffffffffffffffffffffffffffffffffffff16145b610c3f57600080fd5b6000479050610c4d816122c5565b50565b6000610c9a600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612331565b9050919050565b610ca961180d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2d906134a3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610e4361180d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ed0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec7906134a3565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600681526020017f4245455041490000000000000000000000000000000000000000000000000000815250905090565b610f3861180d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbc906134a3565b60405180910390fd5b8060188190555050565b610fd761180d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611064576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105b906134a3565b60405180910390fd5b60008410158015611076575060048411155b6110b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ac906135db565b60405180910390fd5b600082101580156110c75750605f8211155b611106576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fd9061366d565b60405180910390fd5b60008310158015611118575060048311155b611157576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114e906136ff565b60405180910390fd5b600081101580156111695750605f8111155b6111a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119f90613791565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b60006111de6111d761180d565b84846119de565b6001905092915050565b6111f061180d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461127d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611274906134a3565b60405180910390fd5b8260168190555081601960006101000a81548160ff02191690831515021790555080601960026101000a81548160ff021916908315150217905550505050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661131e61180d565b73ffffffffffffffffffffffffffffffffffffffff1614806113945750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661137c61180d565b73ffffffffffffffffffffffffffffffffffffffff16145b61139d57600080fd5b60006113a830610c50565b90506113b38161239f565b50565b6113be61180d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461144b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611442906134a3565b60405180910390fd5b60005b838390508110156114ea578160056000868685818110611471576114706134c3565b5b905060200201602081019061148691906131ef565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806114e290613521565b91505061144e565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61157f61180d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461160c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611603906134a3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361167b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167290613823565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61174061180d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c4906134a3565b60405180910390fd5b8260178190555081601960016101000a81548160ff02191690831515021790555080601960036101000a81548160ff021916908315150217905550505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611884576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187b9061388f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ea906138fb565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119d19190613120565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4490613967565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab3906139d3565b60405180910390fd5b60008111611aff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af690613a3f565b60405180910390fd5b611b07610e12565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b755750611b45610e12565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611f6057601560149054906101000a900460ff16611c0457611b96610e12565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611c03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfa90613ad1565b60405180910390fd5b5b601654811115611c49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4090613b3d565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ced5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611d2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2390613ba9565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611dd95760175481611d8e84610c50565b611d989190613bc9565b10611dd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcf90613c49565b60405180910390fd5b5b6000611de430610c50565b9050600060185482101590506016548210611dff5760165491505b808015611e17575060158054906101000a900460ff16155b8015611e715750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611e895750601560169054906101000a900460ff165b8015611edf5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611f355750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f5d57611f438261239f565b60004790506000811115611f5b57611f5a476122c5565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120075750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806120ba5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156120b95750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156120c8576000905061224f565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156121735750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561218b57600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156122365750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561224e57600a54600c81905550600b54600d819055505b5b61225b84848484612616565b50505050565b60008383111582906122a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a09190612fc9565b60405180910390fd5b50600083856122b89190613c69565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561232d573d6000803e3d6000fd5b5050565b6000600654821115612378576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236f90613d0f565b60405180910390fd5b6000612382612643565b9050612397818461266e90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156123d6576123d5612d60565b5b6040519080825280602002602001820160405280156124045781602001602082028036833780820191505090505b509050308160008151811061241c5761241b6134c3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e79190613d44565b816001815181106124fb576124fa6134c3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061256230601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611815565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016125c6959493929190613e6a565b600060405180830381600087803b1580156125e057600080fd5b505af11580156125f4573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b80612624576126236126b8565b5b61262f8484846126f5565b8061263d5761263c6128c0565b5b50505050565b60008060006126506128d4565b91509150612667818361266e90919063ffffffff16565b9250505090565b60006126b083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612933565b905092915050565b6000600c541480156126cc57506000600d54145b6126f357600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061270787612996565b95509550955095509550955061276586600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129fe90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127fa85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a4890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061284681612aa6565b6128508483612b63565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516128ad9190613120565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006006549050600067016345785d8a0000905061290867016345785d8a000060065461266e90919063ffffffff16565b8210156129265760065467016345785d8a000093509350505061292f565b81819350935050505b9091565b6000808311829061297a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129719190612fc9565b60405180910390fd5b50600083856129899190613ef3565b9050809150509392505050565b60008060008060008060008060006129b38a600c54600d54612b9d565b92509250925060006129c3612643565b905060008060006129d68e878787612c33565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612a4083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612261565b905092915050565b6000808284612a579190613bc9565b905083811015612a9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9390613f70565b60405180910390fd5b8091505092915050565b6000612ab0612643565b90506000612ac78284612cbc90919063ffffffff16565b9050612b1b81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a4890919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612b78826006546129fe90919063ffffffff16565b600681905550612b9381600754612a4890919063ffffffff16565b6007819055505050565b600080600080612bc96064612bbb888a612cbc90919063ffffffff16565b61266e90919063ffffffff16565b90506000612bf36064612be5888b612cbc90919063ffffffff16565b61266e90919063ffffffff16565b90506000612c1c82612c0e858c6129fe90919063ffffffff16565b6129fe90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612c4c8589612cbc90919063ffffffff16565b90506000612c638689612cbc90919063ffffffff16565b90506000612c7a8789612cbc90919063ffffffff16565b90506000612ca382612c9585876129fe90919063ffffffff16565b6129fe90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612cce5760009050612d30565b60008284612cdc9190613f90565b9050828482612ceb9190613ef3565b14612d2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2290614044565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612d9882612d4f565b810181811067ffffffffffffffff82111715612db757612db6612d60565b5b80604052505050565b6000612dca612d36565b9050612dd68282612d8f565b919050565b600067ffffffffffffffff821115612df657612df5612d60565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e3782612e0c565b9050919050565b612e4781612e2c565b8114612e5257600080fd5b50565b600081359050612e6481612e3e565b92915050565b6000612e7d612e7884612ddb565b612dc0565b90508083825260208201905060208402830185811115612ea057612e9f612e07565b5b835b81811015612ec95780612eb58882612e55565b845260208401935050602081019050612ea2565b5050509392505050565b600082601f830112612ee857612ee7612d4a565b5b8135612ef8848260208601612e6a565b91505092915050565b600060208284031215612f1757612f16612d40565b5b600082013567ffffffffffffffff811115612f3557612f34612d45565b5b612f4184828501612ed3565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f84578082015181840152602081019050612f69565b60008484015250505050565b6000612f9b82612f4a565b612fa58185612f55565b9350612fb5818560208601612f66565b612fbe81612d4f565b840191505092915050565b60006020820190508181036000830152612fe38184612f90565b905092915050565b6000819050919050565b612ffe81612feb565b811461300957600080fd5b50565b60008135905061301b81612ff5565b92915050565b6000806040838503121561303857613037612d40565b5b600061304685828601612e55565b92505060206130578582860161300c565b9150509250929050565b60008115159050919050565b61307681613061565b82525050565b6000602082019050613091600083018461306d565b92915050565b6000819050919050565b60006130bc6130b76130b284612e0c565b613097565b612e0c565b9050919050565b60006130ce826130a1565b9050919050565b60006130e0826130c3565b9050919050565b6130f0816130d5565b82525050565b600060208201905061310b60008301846130e7565b92915050565b61311a81612feb565b82525050565b60006020820190506131356000830184613111565b92915050565b60008060006060848603121561315457613153612d40565b5b600061316286828701612e55565b935050602061317386828701612e55565b92505060406131848682870161300c565b9150509250925092565b600060ff82169050919050565b6131a48161318e565b82525050565b60006020820190506131bf600083018461319b565b92915050565b6131ce81612e2c565b82525050565b60006020820190506131e960008301846131c5565b92915050565b60006020828403121561320557613204612d40565b5b600061321384828501612e55565b91505092915050565b61322581613061565b811461323057600080fd5b50565b6000813590506132428161321c565b92915050565b60006020828403121561325e5761325d612d40565b5b600061326c84828501613233565b91505092915050565b60006020828403121561328b5761328a612d40565b5b60006132998482850161300c565b91505092915050565b600080600080608085870312156132bc576132bb612d40565b5b60006132ca8782880161300c565b94505060206132db8782880161300c565b93505060406132ec8782880161300c565b92505060606132fd8782880161300c565b91505092959194509250565b60008060006060848603121561332257613321612d40565b5b60006133308682870161300c565b935050602061334186828701613233565b925050604061335286828701613233565b9150509250925092565b600080fd5b60008083601f84011261337757613376612d4a565b5b8235905067ffffffffffffffff8111156133945761339361335c565b5b6020830191508360208202830111156133b0576133af612e07565b5b9250929050565b6000806000604084860312156133d0576133cf612d40565b5b600084013567ffffffffffffffff8111156133ee576133ed612d45565b5b6133fa86828701613361565b9350935050602061340d86828701613233565b9150509250925092565b6000806040838503121561342e5761342d612d40565b5b600061343c85828601612e55565b925050602061344d85828601612e55565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061348d602083612f55565b915061349882613457565b602082019050919050565b600060208201905081810360008301526134bc81613480565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061352c82612feb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361355e5761355d6134f2565b5b600182019050919050565b7f4275792072657761726473206d757374206265206265747765656e203025206160008201527f6e64203425000000000000000000000000000000000000000000000000000000602082015250565b60006135c5602583612f55565b91506135d082613569565b604082019050919050565b600060208201905081810360008301526135f4816135b8565b9050919050565b7f42757920746178206d757374206265206265747765656e20302520616e64203960008201527f3525000000000000000000000000000000000000000000000000000000000000602082015250565b6000613657602283612f55565b9150613662826135fb565b604082019050919050565b600060208201905081810360008301526136868161364a565b9050919050565b7f53656c6c2072657761726473206d757374206265206265747765656e2030252060008201527f616e642034250000000000000000000000000000000000000000000000000000602082015250565b60006136e9602683612f55565b91506136f48261368d565b604082019050919050565b60006020820190508181036000830152613718816136dc565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e642060008201527f3935250000000000000000000000000000000000000000000000000000000000602082015250565b600061377b602383612f55565b91506137868261371f565b604082019050919050565b600060208201905081810360008301526137aa8161376e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061380d602683612f55565b9150613818826137b1565b604082019050919050565b6000602082019050818103600083015261383c81613800565b9050919050565b7f43616e277420617070726f76652066726f6d207a65726f206164647265737300600082015250565b6000613879601f83612f55565b915061388482613843565b602082019050919050565b600060208201905081810360008301526138a88161386c565b9050919050565b7f43616e277420617070726f766520746f207a65726f2061646472657373000000600082015250565b60006138e5601d83612f55565b91506138f0826138af565b602082019050919050565b60006020820190508181036000830152613914816138d8565b9050919050565b7f43616e74207472616e736665722066726f6d2061646472657373207a65726f00600082015250565b6000613951601f83612f55565b915061395c8261391b565b602082019050919050565b6000602082019050818103600083015261398081613944565b9050919050565b7f43616e74207472616e7366657220746f2061646472657373207a65726f000000600082015250565b60006139bd601d83612f55565b91506139c882613987565b602082019050919050565b600060208201905081810360008301526139ec816139b0565b9050919050565b7f416d6f756e742073686f756c642062652061626f7665207a65726f0000000000600082015250565b6000613a29601b83612f55565b9150613a34826139f3565b602082019050919050565b60006020820190508181036000830152613a5881613a1c565b9050919050565b7f4f6e6c79206f776e65722063616e207472616465206265666f7265207472616460008201527f696e672061637469766174696f6e000000000000000000000000000000000000602082015250565b6000613abb602e83612f55565b9150613ac682613a5f565b604082019050919050565b60006020820190508181036000830152613aea81613aae565b9050919050565b7f4578636565646564206d6178207472616e73616374696f6e206c696d69740000600082015250565b6000613b27601e83612f55565b9150613b3282613af1565b602082019050919050565b60006020820190508181036000830152613b5681613b1a565b9050919050565b7f54686973206163636f756e74206973206f6e2074686520626c61636b6c697374600082015250565b6000613b93602083612f55565b9150613b9e82613b5d565b602082019050919050565b60006020820190508181036000830152613bc281613b86565b9050919050565b6000613bd482612feb565b9150613bdf83612feb565b9250828201905080821115613bf757613bf66134f2565b5b92915050565b7f45786365656473206d61782077616c6c65742062616c616e6365000000000000600082015250565b6000613c33601a83612f55565b9150613c3e82613bfd565b602082019050919050565b60006020820190508181036000830152613c6281613c26565b9050919050565b6000613c7482612feb565b9150613c7f83612feb565b9250828203905081811115613c9757613c966134f2565b5b92915050565b7f416d6f756e742068617320746f206265206c657373207468616e20746f74616c60008201527f207265666c656374696f6e730000000000000000000000000000000000000000602082015250565b6000613cf9602c83612f55565b9150613d0482613c9d565b604082019050919050565b60006020820190508181036000830152613d2881613cec565b9050919050565b600081519050613d3e81612e3e565b92915050565b600060208284031215613d5a57613d59612d40565b5b6000613d6884828501613d2f565b91505092915050565b6000819050919050565b6000613d96613d91613d8c84613d71565b613097565b612feb565b9050919050565b613da681613d7b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613de181612e2c565b82525050565b6000613df38383613dd8565b60208301905092915050565b6000602082019050919050565b6000613e1782613dac565b613e218185613db7565b9350613e2c83613dc8565b8060005b83811015613e5d578151613e448882613de7565b9750613e4f83613dff565b925050600181019050613e30565b5085935050505092915050565b600060a082019050613e7f6000830188613111565b613e8c6020830187613d9d565b8181036040830152613e9e8186613e0c565b9050613ead60608301856131c5565b613eba6080830184613111565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613efe82612feb565b9150613f0983612feb565b925082613f1957613f18613ec4565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613f5a601b83612f55565b9150613f6582613f24565b602082019050919050565b60006020820190508181036000830152613f8981613f4d565b9050919050565b6000613f9b82612feb565b9150613fa683612feb565b9250828202613fb481612feb565b91508282048414831517613fcb57613fca6134f2565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061402e602183612f55565b915061403982613fd2565b604082019050919050565b6000602082019050818103600083015261405d81614021565b905091905056fe746865207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c24e213a844b0c005e1454763ce8f4b73fa38e7a8f8165ef97eb9a66c93fc8b564736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101d05760003560e01c80637f2feddc116100f7578063a9059cbb11610095578063c492f04611610064578063c492f0461461065c578063dd62ed3e14610685578063f2fde38b146106c2578063fc7d9469146106eb576101d7565b8063a9059cbb146105a2578063bd6bba91146105df578063bfd7928414610608578063c3c8cd8014610645576101d7565b80638f9a55c0116100d15780638f9a55c0146104fa57806395d89b411461052557806398a5c31514610550578063a2a957bb14610579576101d7565b80637f2feddc146104695780638da5cb5b146104a65780638f70ccf7146104d1576101d7565b8063313ce5671161016f5780636fc3eaec1161013e5780636fc3eaec146103d357806370a08231146103ea578063715018a6146104275780637d1db4a51461043e576101d7565b8063313ce5671461032b57806349bd5a5e146103565780636b999053146103815780636d8aa8f8146103aa576101d7565b80631694505e116101ab5780631694505e1461026d57806318160ddd1461029857806323b872dd146102c35780632fd689e314610300576101d7565b8062b8cf2a146101dc57806306fdde0314610205578063095ea7b314610230576101d7565b366101d757005b600080fd5b3480156101e857600080fd5b5061020360048036038101906101fe9190612f01565b610714565b005b34801561021157600080fd5b5061021a61083e565b6040516102279190612fc9565b60405180910390f35b34801561023c57600080fd5b5061025760048036038101906102529190613021565b61087b565b604051610264919061307c565b60405180910390f35b34801561027957600080fd5b50610282610899565b60405161028f91906130f6565b60405180910390f35b3480156102a457600080fd5b506102ad6108bf565b6040516102ba9190613120565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e5919061313b565b6108cf565b6040516102f7919061307c565b60405180910390f35b34801561030c57600080fd5b506103156109a8565b6040516103229190613120565b60405180910390f35b34801561033757600080fd5b506103406109ae565b60405161034d91906131aa565b60405180910390f35b34801561036257600080fd5b5061036b6109b7565b60405161037891906131d4565b60405180910390f35b34801561038d57600080fd5b506103a860048036038101906103a391906131ef565b6109dd565b005b3480156103b657600080fd5b506103d160048036038101906103cc9190613248565b610acd565b005b3480156103df57600080fd5b506103e8610b7f565b005b3480156103f657600080fd5b50610411600480360381019061040c91906131ef565b610c50565b60405161041e9190613120565b60405180910390f35b34801561043357600080fd5b5061043c610ca1565b005b34801561044a57600080fd5b50610453610df4565b6040516104609190613120565b60405180910390f35b34801561047557600080fd5b50610490600480360381019061048b91906131ef565b610dfa565b60405161049d9190613120565b60405180910390f35b3480156104b257600080fd5b506104bb610e12565b6040516104c891906131d4565b60405180910390f35b3480156104dd57600080fd5b506104f860048036038101906104f39190613248565b610e3b565b005b34801561050657600080fd5b5061050f610eed565b60405161051c9190613120565b60405180910390f35b34801561053157600080fd5b5061053a610ef3565b6040516105479190612fc9565b60405180910390f35b34801561055c57600080fd5b5061057760048036038101906105729190613275565b610f30565b005b34801561058557600080fd5b506105a0600480360381019061059b91906132a2565b610fcf565b005b3480156105ae57600080fd5b506105c960048036038101906105c49190613021565b6111ca565b6040516105d6919061307c565b60405180910390f35b3480156105eb57600080fd5b5061060660048036038101906106019190613309565b6111e8565b005b34801561061457600080fd5b5061062f600480360381019061062a91906131ef565b6112bd565b60405161063c919061307c565b60405180910390f35b34801561065157600080fd5b5061065a6112dd565b005b34801561066857600080fd5b50610683600480360381019061067e91906133b7565b6113b6565b005b34801561069157600080fd5b506106ac60048036038101906106a79190613417565b6114f0565b6040516106b99190613120565b60405180910390f35b3480156106ce57600080fd5b506106e960048036038101906106e491906131ef565b611577565b005b3480156106f757600080fd5b50610712600480360381019061070d9190613309565b611738565b005b61071c61180d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a0906134a3565b60405180910390fd5b60005b815181101561083a576001601060008484815181106107ce576107cd6134c3565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061083290613521565b9150506107ac565b5050565b60606040518060400160405280600d81526020017f4265657020546f6b656e20414900000000000000000000000000000000000000815250905090565b600061088f61088861180d565b8484611815565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600067016345785d8a0000905090565b60006108dc8484846119de565b61099d846108e861180d565b6109988560405180606001604052806025815260200161406560259139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061094e61180d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122619092919063ffffffff16565b611815565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109e561180d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a69906134a3565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610ad561180d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b59906134a3565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bc061180d565b73ffffffffffffffffffffffffffffffffffffffff161480610c365750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c1e61180d565b73ffffffffffffffffffffffffffffffffffffffff16145b610c3f57600080fd5b6000479050610c4d816122c5565b50565b6000610c9a600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612331565b9050919050565b610ca961180d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2d906134a3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610e4361180d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ed0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec7906134a3565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600681526020017f4245455041490000000000000000000000000000000000000000000000000000815250905090565b610f3861180d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbc906134a3565b60405180910390fd5b8060188190555050565b610fd761180d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611064576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105b906134a3565b60405180910390fd5b60008410158015611076575060048411155b6110b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ac906135db565b60405180910390fd5b600082101580156110c75750605f8211155b611106576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fd9061366d565b60405180910390fd5b60008310158015611118575060048311155b611157576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114e906136ff565b60405180910390fd5b600081101580156111695750605f8111155b6111a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119f90613791565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b60006111de6111d761180d565b84846119de565b6001905092915050565b6111f061180d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461127d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611274906134a3565b60405180910390fd5b8260168190555081601960006101000a81548160ff02191690831515021790555080601960026101000a81548160ff021916908315150217905550505050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661131e61180d565b73ffffffffffffffffffffffffffffffffffffffff1614806113945750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661137c61180d565b73ffffffffffffffffffffffffffffffffffffffff16145b61139d57600080fd5b60006113a830610c50565b90506113b38161239f565b50565b6113be61180d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461144b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611442906134a3565b60405180910390fd5b60005b838390508110156114ea578160056000868685818110611471576114706134c3565b5b905060200201602081019061148691906131ef565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806114e290613521565b91505061144e565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61157f61180d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461160c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611603906134a3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361167b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167290613823565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61174061180d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c4906134a3565b60405180910390fd5b8260178190555081601960016101000a81548160ff02191690831515021790555080601960036101000a81548160ff021916908315150217905550505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611884576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187b9061388f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ea906138fb565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119d19190613120565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4490613967565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab3906139d3565b60405180910390fd5b60008111611aff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af690613a3f565b60405180910390fd5b611b07610e12565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b755750611b45610e12565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611f6057601560149054906101000a900460ff16611c0457611b96610e12565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611c03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfa90613ad1565b60405180910390fd5b5b601654811115611c49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4090613b3d565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ced5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611d2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2390613ba9565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611dd95760175481611d8e84610c50565b611d989190613bc9565b10611dd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcf90613c49565b60405180910390fd5b5b6000611de430610c50565b9050600060185482101590506016548210611dff5760165491505b808015611e17575060158054906101000a900460ff16155b8015611e715750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611e895750601560169054906101000a900460ff165b8015611edf5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611f355750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f5d57611f438261239f565b60004790506000811115611f5b57611f5a476122c5565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120075750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806120ba5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156120b95750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156120c8576000905061224f565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156121735750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561218b57600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156122365750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561224e57600a54600c81905550600b54600d819055505b5b61225b84848484612616565b50505050565b60008383111582906122a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a09190612fc9565b60405180910390fd5b50600083856122b89190613c69565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561232d573d6000803e3d6000fd5b5050565b6000600654821115612378576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236f90613d0f565b60405180910390fd5b6000612382612643565b9050612397818461266e90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156123d6576123d5612d60565b5b6040519080825280602002602001820160405280156124045781602001602082028036833780820191505090505b509050308160008151811061241c5761241b6134c3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e79190613d44565b816001815181106124fb576124fa6134c3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061256230601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611815565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016125c6959493929190613e6a565b600060405180830381600087803b1580156125e057600080fd5b505af11580156125f4573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b80612624576126236126b8565b5b61262f8484846126f5565b8061263d5761263c6128c0565b5b50505050565b60008060006126506128d4565b91509150612667818361266e90919063ffffffff16565b9250505090565b60006126b083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612933565b905092915050565b6000600c541480156126cc57506000600d54145b6126f357600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061270787612996565b95509550955095509550955061276586600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129fe90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127fa85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a4890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061284681612aa6565b6128508483612b63565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516128ad9190613120565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006006549050600067016345785d8a0000905061290867016345785d8a000060065461266e90919063ffffffff16565b8210156129265760065467016345785d8a000093509350505061292f565b81819350935050505b9091565b6000808311829061297a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129719190612fc9565b60405180910390fd5b50600083856129899190613ef3565b9050809150509392505050565b60008060008060008060008060006129b38a600c54600d54612b9d565b92509250925060006129c3612643565b905060008060006129d68e878787612c33565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612a4083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612261565b905092915050565b6000808284612a579190613bc9565b905083811015612a9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9390613f70565b60405180910390fd5b8091505092915050565b6000612ab0612643565b90506000612ac78284612cbc90919063ffffffff16565b9050612b1b81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a4890919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612b78826006546129fe90919063ffffffff16565b600681905550612b9381600754612a4890919063ffffffff16565b6007819055505050565b600080600080612bc96064612bbb888a612cbc90919063ffffffff16565b61266e90919063ffffffff16565b90506000612bf36064612be5888b612cbc90919063ffffffff16565b61266e90919063ffffffff16565b90506000612c1c82612c0e858c6129fe90919063ffffffff16565b6129fe90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612c4c8589612cbc90919063ffffffff16565b90506000612c638689612cbc90919063ffffffff16565b90506000612c7a8789612cbc90919063ffffffff16565b90506000612ca382612c9585876129fe90919063ffffffff16565b6129fe90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612cce5760009050612d30565b60008284612cdc9190613f90565b9050828482612ceb9190613ef3565b14612d2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2290614044565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612d9882612d4f565b810181811067ffffffffffffffff82111715612db757612db6612d60565b5b80604052505050565b6000612dca612d36565b9050612dd68282612d8f565b919050565b600067ffffffffffffffff821115612df657612df5612d60565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e3782612e0c565b9050919050565b612e4781612e2c565b8114612e5257600080fd5b50565b600081359050612e6481612e3e565b92915050565b6000612e7d612e7884612ddb565b612dc0565b90508083825260208201905060208402830185811115612ea057612e9f612e07565b5b835b81811015612ec95780612eb58882612e55565b845260208401935050602081019050612ea2565b5050509392505050565b600082601f830112612ee857612ee7612d4a565b5b8135612ef8848260208601612e6a565b91505092915050565b600060208284031215612f1757612f16612d40565b5b600082013567ffffffffffffffff811115612f3557612f34612d45565b5b612f4184828501612ed3565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f84578082015181840152602081019050612f69565b60008484015250505050565b6000612f9b82612f4a565b612fa58185612f55565b9350612fb5818560208601612f66565b612fbe81612d4f565b840191505092915050565b60006020820190508181036000830152612fe38184612f90565b905092915050565b6000819050919050565b612ffe81612feb565b811461300957600080fd5b50565b60008135905061301b81612ff5565b92915050565b6000806040838503121561303857613037612d40565b5b600061304685828601612e55565b92505060206130578582860161300c565b9150509250929050565b60008115159050919050565b61307681613061565b82525050565b6000602082019050613091600083018461306d565b92915050565b6000819050919050565b60006130bc6130b76130b284612e0c565b613097565b612e0c565b9050919050565b60006130ce826130a1565b9050919050565b60006130e0826130c3565b9050919050565b6130f0816130d5565b82525050565b600060208201905061310b60008301846130e7565b92915050565b61311a81612feb565b82525050565b60006020820190506131356000830184613111565b92915050565b60008060006060848603121561315457613153612d40565b5b600061316286828701612e55565b935050602061317386828701612e55565b92505060406131848682870161300c565b9150509250925092565b600060ff82169050919050565b6131a48161318e565b82525050565b60006020820190506131bf600083018461319b565b92915050565b6131ce81612e2c565b82525050565b60006020820190506131e960008301846131c5565b92915050565b60006020828403121561320557613204612d40565b5b600061321384828501612e55565b91505092915050565b61322581613061565b811461323057600080fd5b50565b6000813590506132428161321c565b92915050565b60006020828403121561325e5761325d612d40565b5b600061326c84828501613233565b91505092915050565b60006020828403121561328b5761328a612d40565b5b60006132998482850161300c565b91505092915050565b600080600080608085870312156132bc576132bb612d40565b5b60006132ca8782880161300c565b94505060206132db8782880161300c565b93505060406132ec8782880161300c565b92505060606132fd8782880161300c565b91505092959194509250565b60008060006060848603121561332257613321612d40565b5b60006133308682870161300c565b935050602061334186828701613233565b925050604061335286828701613233565b9150509250925092565b600080fd5b60008083601f84011261337757613376612d4a565b5b8235905067ffffffffffffffff8111156133945761339361335c565b5b6020830191508360208202830111156133b0576133af612e07565b5b9250929050565b6000806000604084860312156133d0576133cf612d40565b5b600084013567ffffffffffffffff8111156133ee576133ed612d45565b5b6133fa86828701613361565b9350935050602061340d86828701613233565b9150509250925092565b6000806040838503121561342e5761342d612d40565b5b600061343c85828601612e55565b925050602061344d85828601612e55565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061348d602083612f55565b915061349882613457565b602082019050919050565b600060208201905081810360008301526134bc81613480565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061352c82612feb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361355e5761355d6134f2565b5b600182019050919050565b7f4275792072657761726473206d757374206265206265747765656e203025206160008201527f6e64203425000000000000000000000000000000000000000000000000000000602082015250565b60006135c5602583612f55565b91506135d082613569565b604082019050919050565b600060208201905081810360008301526135f4816135b8565b9050919050565b7f42757920746178206d757374206265206265747765656e20302520616e64203960008201527f3525000000000000000000000000000000000000000000000000000000000000602082015250565b6000613657602283612f55565b9150613662826135fb565b604082019050919050565b600060208201905081810360008301526136868161364a565b9050919050565b7f53656c6c2072657761726473206d757374206265206265747765656e2030252060008201527f616e642034250000000000000000000000000000000000000000000000000000602082015250565b60006136e9602683612f55565b91506136f48261368d565b604082019050919050565b60006020820190508181036000830152613718816136dc565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e642060008201527f3935250000000000000000000000000000000000000000000000000000000000602082015250565b600061377b602383612f55565b91506137868261371f565b604082019050919050565b600060208201905081810360008301526137aa8161376e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061380d602683612f55565b9150613818826137b1565b604082019050919050565b6000602082019050818103600083015261383c81613800565b9050919050565b7f43616e277420617070726f76652066726f6d207a65726f206164647265737300600082015250565b6000613879601f83612f55565b915061388482613843565b602082019050919050565b600060208201905081810360008301526138a88161386c565b9050919050565b7f43616e277420617070726f766520746f207a65726f2061646472657373000000600082015250565b60006138e5601d83612f55565b91506138f0826138af565b602082019050919050565b60006020820190508181036000830152613914816138d8565b9050919050565b7f43616e74207472616e736665722066726f6d2061646472657373207a65726f00600082015250565b6000613951601f83612f55565b915061395c8261391b565b602082019050919050565b6000602082019050818103600083015261398081613944565b9050919050565b7f43616e74207472616e7366657220746f2061646472657373207a65726f000000600082015250565b60006139bd601d83612f55565b91506139c882613987565b602082019050919050565b600060208201905081810360008301526139ec816139b0565b9050919050565b7f416d6f756e742073686f756c642062652061626f7665207a65726f0000000000600082015250565b6000613a29601b83612f55565b9150613a34826139f3565b602082019050919050565b60006020820190508181036000830152613a5881613a1c565b9050919050565b7f4f6e6c79206f776e65722063616e207472616465206265666f7265207472616460008201527f696e672061637469766174696f6e000000000000000000000000000000000000602082015250565b6000613abb602e83612f55565b9150613ac682613a5f565b604082019050919050565b60006020820190508181036000830152613aea81613aae565b9050919050565b7f4578636565646564206d6178207472616e73616374696f6e206c696d69740000600082015250565b6000613b27601e83612f55565b9150613b3282613af1565b602082019050919050565b60006020820190508181036000830152613b5681613b1a565b9050919050565b7f54686973206163636f756e74206973206f6e2074686520626c61636b6c697374600082015250565b6000613b93602083612f55565b9150613b9e82613b5d565b602082019050919050565b60006020820190508181036000830152613bc281613b86565b9050919050565b6000613bd482612feb565b9150613bdf83612feb565b9250828201905080821115613bf757613bf66134f2565b5b92915050565b7f45786365656473206d61782077616c6c65742062616c616e6365000000000000600082015250565b6000613c33601a83612f55565b9150613c3e82613bfd565b602082019050919050565b60006020820190508181036000830152613c6281613c26565b9050919050565b6000613c7482612feb565b9150613c7f83612feb565b9250828203905081811115613c9757613c966134f2565b5b92915050565b7f416d6f756e742068617320746f206265206c657373207468616e20746f74616c60008201527f207265666c656374696f6e730000000000000000000000000000000000000000602082015250565b6000613cf9602c83612f55565b9150613d0482613c9d565b604082019050919050565b60006020820190508181036000830152613d2881613cec565b9050919050565b600081519050613d3e81612e3e565b92915050565b600060208284031215613d5a57613d59612d40565b5b6000613d6884828501613d2f565b91505092915050565b6000819050919050565b6000613d96613d91613d8c84613d71565b613097565b612feb565b9050919050565b613da681613d7b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613de181612e2c565b82525050565b6000613df38383613dd8565b60208301905092915050565b6000602082019050919050565b6000613e1782613dac565b613e218185613db7565b9350613e2c83613dc8565b8060005b83811015613e5d578151613e448882613de7565b9750613e4f83613dff565b925050600181019050613e30565b5085935050505092915050565b600060a082019050613e7f6000830188613111565b613e8c6020830187613d9d565b8181036040830152613e9e8186613e0c565b9050613ead60608301856131c5565b613eba6080830184613111565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613efe82612feb565b9150613f0983612feb565b925082613f1957613f18613ec4565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613f5a601b83612f55565b9150613f6582613f24565b602082019050919050565b60006020820190508181036000830152613f8981613f4d565b9050919050565b6000613f9b82612feb565b9150613fa683612feb565b9250828202613fb481612feb565b91508282048414831517613fcb57613fca6134f2565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061402e602183612f55565b915061403982613fd2565b604082019050919050565b6000602082019050818103600083015261405d81614021565b905091905056fe746865207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c24e213a844b0c005e1454763ce8f4b73fa38e7a8f8165ef97eb9a66c93fc8b564736f6c63430008120033

Deployed Bytecode Sourcemap

4136:14281:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12956:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6812:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7744:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5503:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7092:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7946:443;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5803:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7000:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5551:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13134:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17581:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12712:235;;;;;;;;;;;;;:::i;:::-;;7196:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1609:148;;;;;;;;;;;;;:::i;:::-;;5695:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5242:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1393:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12357:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5748:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6904:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17389:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16643:693;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7343:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17722:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5204:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12467:236;;;;;;;;;;;;;:::i;:::-;;18178:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7551:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1766:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17947:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12956:169;1531:12;:10;:12::i;:::-;1521:22;;:6;;;;;;;;;;:22;;;1513:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13032:9:::1;13027:91;13051:5;:12;13047:1;:16;13027:91;;;13102:4;13085;:14;13090:5;13096:1;13090:8;;;;;;;;:::i;:::-;;;;;;;;13085:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13065:3;;;;;:::i;:::-;;;;13027:91;;;;12956:169:::0;:::o;6812:83::-;6849:13;6882:5;;;;;;;;;;;;;;;;;6875:12;;6812:83;:::o;7744:193::-;7846:4;7868:39;7877:12;:10;:12::i;:::-;7891:7;7900:6;7868:8;:39::i;:::-;7925:4;7918:11;;7744:193;;;;:::o;5503:41::-;;;;;;;;;;;;;:::o;7092:95::-;7145:7;4696:17;7165:14;;7092:95;:::o;7946:443::-;8078:4;8095:36;8105:6;8113:9;8124:6;8095:9;:36::i;:::-;8142:217;8165:6;8186:12;:10;:12::i;:::-;8213:135;8269:6;8213:135;;;;;;;;;;;;;;;;;:11;:19;8225:6;8213:19;;;;;;;;;;;;;;;:33;8233:12;:10;:12::i;:::-;8213:33;;;;;;;;;;;;;;;;:37;;:135;;;;;:::i;:::-;8142:8;:217::i;:::-;8377:4;8370:11;;7946:443;;;;;:::o;5803:49::-;;;;:::o;7000:83::-;7041:5;4369:1;7059:16;;7000:83;:::o;5551:28::-;;;;;;;;;;;;;:::o;13134:92::-;1531:12;:10;:12::i;:::-;1521:22;;:6;;;;;;;;;;:22;;;1513:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13213:5:::1;13198:4;:12;13203:6;13198:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13134:92:::0;:::o;17581:101::-;1531:12;:10;:12::i;:::-;1521:22;;:6;;;;;;;;;;:22;;;1513:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17662:12:::1;17648:11;;:26;;;;;;;;;;;;;;;;;;17581:101:::0;:::o;12712:235::-;12778:19;;;;;;;;;;;12762:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12817:17;;;;;;;;;;;12801:33;;:12;:10;:12::i;:::-;:33;;;12762:72;12754:81;;;;;;12846:26;12875:21;12846:50;;12907:32;12920:18;12907:12;:32::i;:::-;12743:204;12712:235::o;7196:138::-;7262:7;7289:37;7309:7;:16;7317:7;7309:16;;;;;;;;;;;;;;;;7289:19;:37::i;:::-;7282:44;;7196:138;;;:::o;1609:148::-;1531:12;:10;:12::i;:::-;1521:22;;:6;;;;;;;;;;:22;;;1513:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1716:1:::1;1679:40;;1700:6;::::0;::::1;;;;;;;;1679:40;;;;;;;;;;;;1747:1;1730:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1609:148::o:0;5695:45::-;;;;:::o;5242:43::-;;;;;;;;;;;;;;;;;:::o;1393:79::-;1431:7;1458:6;;;;;;;;;;;1451:13;;1393:79;:::o;12357:101::-;1531:12;:10;:12::i;:::-;1521:22;;:6;;;;;;;;;;:22;;;1513:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12438:12:::1;12424:11;;:26;;;;;;;;;;;;;;;;;;12357:101:::0;:::o;5748:47::-;;;;:::o;6904:87::-;6943:13;6976:7;;;;;;;;;;;;;;;;;6969:14;;6904:87;:::o;17389:139::-;1531:12;:10;:12::i;:::-;1521:22;;:6;;;;;;;;;;:22;;;1513:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17502:18:::1;17480:19;:40;;;;17389:139:::0;:::o;16643:693::-;1531:12;:10;:12::i;:::-;1521:22;;:6;;;;;;;;;;:22;;;1513:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16802:1:::1;16785:13;:18;;:40;;;;;16824:1;16807:13;:18;;16785:40;16777:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;16901:1;16886:11;:16;;:37;;;;;16921:2;16906:11;:17;;16886:37;16878:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;16999:1;16981:14;:19;;:42;;;;;17022:1;17004:14;:19;;16981:42;16973:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;17101:1;17085:12;:17;;:39;;;;;17122:2;17106:12;:18;;17085:39;17077:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;17194:13;17177:14;:30;;;;17236:14;17218:15;:32;;;;17276:11;17261:12;:26;;;;17314:12;17298:13;:28;;;;16643:693:::0;;;;:::o;7343:199::-;7448:4;7470:42;7480:12;:10;:12::i;:::-;7494:9;7505:6;7470:9;:42::i;:::-;7530:4;7523:11;;7343:199;;;;:::o;17722:216::-;1531:12;:10;:12::i;:::-;1521:22;;:6;;;;;;;;;;:22;;;1513:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17843:11:::1;17828:12;:26;;;;17878:6;17868:7;;:16;;;;;;;;;;;;;;;;;;17911:9;17898:10;;:22;;;;;;;;;;;;;;;;;;17722:216:::0;;;:::o;5204:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12467:236::-;12533:19;;;;;;;;;;;12517:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12572:17;;;;;;;;;;;12556:33;;:12;:10;:12::i;:::-;:33;;;12517:72;12509:81;;;;;;12601:23;12627:24;12645:4;12627:9;:24::i;:::-;12601:50;;12662:33;12679:15;12662:16;:33::i;:::-;12498:205;12467:236::o;18178:234::-;1531:12;:10;:12::i;:::-;1521:22;;:6;;;;;;;;;;:22;;;1513:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18295:9:::1;18291:114;18314:8;;:15;;18310:1;:19;18291:114;;;18385:8;18351:18;:31;18370:8;;18379:1;18370:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18351:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;18331:3;;;;;:::i;:::-;;;;18291:114;;;;18178:234:::0;;;:::o;7551:184::-;7668:7;7700:11;:18;7712:5;7700:18;;;;;;;;;;;;;;;:27;7719:7;7700:27;;;;;;;;;;;;;;;;7693:34;;7551:184;;;;:::o;1766:244::-;1531:12;:10;:12::i;:::-;1521:22;;:6;;;;;;;;;;:22;;;1513:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1875:1:::1;1855:22;;:8;:22;;::::0;1847:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1965:8;1936:38;;1957:6;::::0;::::1;;;;;;;;1936:38;;;;;;;;;;;;1994:8;1985:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1766:244:::0;:::o;17947:222::-;1531:12;:10;:12::i;:::-;1521:22;;:6;;;;;;;;;;:22;;;1513:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18076:13:::1;18059:14;:30;;;;18113:9;18100:10;;:22;;;;;;;;;;;;;;;;;;18149:12;18133:13;;:28;;;;;;;;;;;;;;;;;;17947:222:::0;;;:::o;142:98::-;195:7;222:10;215:17;;142:98;:::o;9088:361::-;9232:1;9215:19;;:5;:19;;;9207:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9308:1;9289:21;;:7;:21;;;9281:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9387:6;9357:11;:18;9369:5;9357:18;;;;;;;;;;;;;;;:27;9376:7;9357:27;;;;;;;;;;;;;;;:36;;;;9425:7;9409:32;;9418:5;9409:32;;;9434:6;9409:32;;;;;;:::i;:::-;;;;;;;;9088:361;;;:::o;9458:2290::-;9596:1;9580:18;;:4;:18;;;9572:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;9667:1;9653:16;;:2;:16;;;9645:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;9731:1;9722:6;:10;9714:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;9790:7;:5;:7::i;:::-;9782:15;;:4;:15;;;;:32;;;;;9807:7;:5;:7::i;:::-;9801:13;;:2;:13;;;;9782:32;9778:1238;;;9872:11;;;;;;;;;;;9867:127;;9920:7;:5;:7::i;:::-;9912:15;;:4;:15;;;9904:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;9867:127;10029:12;;10019:6;:22;;10011:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;10100:4;:10;10105:4;10100:10;;;;;;;;;;;;;;;;;;;;;;;;;10099:11;:24;;;;;10115:4;:8;10120:2;10115:8;;;;;;;;;;;;;;;;;;;;;;;;;10114:9;10099:24;10091:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;10187:13;;;;;;;;;;;10181:19;;:2;:19;;;10178:137;;10254:14;;10245:6;10229:13;10239:2;10229:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10221:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;10178:137;10332:28;10363:24;10381:4;10363:9;:24::i;:::-;10332:55;;10402:12;10441:19;;10417:20;:43;;10402:58;;10505:12;;10481:20;:36;10478:124;;10574:12;;10551:35;;10478:124;10623:7;:18;;;;;10635:6;;;;;;;;;;10634:7;10623:18;:43;;;;;10653:13;;;;;;;;;;;10645:21;;:4;:21;;;;10623:43;:58;;;;;10670:11;;;;;;;;;;;10623:58;:87;;;;;10686:18;:24;10705:4;10686:24;;;;;;;;;;;;;;;;;;;;;;;;;10685:25;10623:87;:114;;;;;10715:18;:22;10734:2;10715:22;;;;;;;;;;;;;;;;;;;;;;;;;10714:23;10623:114;10619:386;;;10758:38;10775:20;10758:16;:38::i;:::-;10815:26;10844:21;10815:50;;10909:1;10888:18;:22;10884:106;;;10935:35;10948:21;10935:12;:35::i;:::-;10884:106;10739:266;10619:386;9816:1200;;9778:1238;11029:12;11044:4;11029:19;;11094:18;:24;11113:4;11094:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11122:18;:22;11141:2;11122:22;;;;;;;;;;;;;;;;;;;;;;;;;11094:50;11093:102;;;;11158:13;;;;;;;;;;;11150:21;;:4;:21;;;;:44;;;;;11181:13;;;;;;;;;;;11175:19;;:2;:19;;;;11150:44;11093:102;11089:597;;;11222:5;11212:15;;11089:597;;;11306:13;;;;;;;;;;;11298:21;;:4;:21;;;:55;;;;;11337:15;;;;;;;;;;;11323:30;;:2;:30;;;;11298:55;11295:162;;;11386:14;;11374:9;:26;;;;11429:12;;11419:7;:22;;;;11295:162;11517:13;;;;;;;;;;;11511:19;;:2;:19;;;:55;;;;;11550:15;;;;;;;;;;;11534:32;;:4;:32;;;;11511:55;11507:165;;;11599:15;;11587:9;:27;;;;11643:13;;11633:7;:23;;;;11507:165;11089:597;11699:41;11714:4;11720:2;11724:6;11732:7;11699:14;:41::i;:::-;9561:2187;9458:2290;;;:::o;2378:224::-;2498:7;2531:1;2526;:6;;2534:12;2518:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2558:9;2574:1;2570;:5;;;;:::i;:::-;2558:17;;2593:1;2586:8;;;2378:224;;;;;:::o;12249:99::-;12306:17;;;;;;;;;;;:26;;:34;12333:6;12306:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12249:99;:::o;8398:325::-;8493:7;8551;;8540;:18;;8518:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;8641:19;8663:10;:8;:10::i;:::-;8641:32;;8691:24;8703:11;8691:7;:11;;:24;;;;:::i;:::-;8684:31;;;8398:325;;;:::o;11757:483::-;6109:4;6100:6;;:13;;;;;;;;;;;;;;;;;;11835:21:::1;11873:1;11859:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11835:40;;11904:4;11886;11891:1;11886:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11930:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11920:4;11925:1;11920:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11963:62;11980:4;11995:15;;;;;;;;;;;12013:11;11963:8;:62::i;:::-;12036:15;;;;;;;;;;;:66;;;12117:11;12143:1;12159:4;12186;12206:15;12036:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11824:416;6145:5:::0;6136:6;;:14;;;;;;;;;;;;;;;;;;11757:483;:::o;13235:282::-;13391:7;13386:28;;13400:14;:12;:14::i;:::-;13386:28;13425:44;13443:6;13451:9;13462:6;13425:17;:44::i;:::-;13485:7;13480:29;;13494:15;:13;:15::i;:::-;13480:29;13235:282;;;;:::o;16204:164::-;16246:7;16267:15;16284;16303:19;:17;:19::i;:::-;16266:56;;;;16340:20;16352:7;16340;:11;;:20;;;;:::i;:::-;16333:27;;;;16204:164;:::o;2866:132::-;2924:7;2951:39;2955:1;2958;2951:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2944:46;;2866:132;;;;:::o;8732:221::-;8792:1;8779:9;;:14;:30;;;;;8808:1;8797:7;;:12;8779:30;8811:7;8775:43;8851:9;;8831:17;:29;;;;8889:7;;8871:15;:25;;;;8922:1;8910:9;:13;;;;8944:1;8934:7;:11;;;;8732:221;:::o;13526:610::-;13673:15;13703:23;13741:12;13768:23;13806:12;13833:13;13860:19;13871:7;13860:10;:19::i;:::-;13658:221;;;;;;;;;;;;13908:28;13928:7;13908;:15;13916:6;13908:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13890:7;:15;13898:6;13890:15;;;;;;;;;;;;;;;:46;;;;13968:39;13991:15;13968:7;:18;13976:9;13968:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13947:7;:18;13955:9;13947:18;;;;;;;;;;;;;;;:60;;;;14018:16;14028:5;14018:9;:16::i;:::-;14045:23;14057:4;14063;14045:11;:23::i;:::-;14101:9;14084:44;;14093:6;14084:44;;;14112:15;14084:44;;;;;;:::i;:::-;;;;;;;;13647:489;;;;;;13526:610;;;:::o;8962:117::-;9018:17;;9006:9;:29;;;;9056:15;;9046:7;:25;;;;8962:117::o;16377:257::-;16428:7;16437;16457:15;16475:7;;16457:25;;16493:15;4696:17;16493:25;;16543:20;4696:17;16543:7;;:11;;:20;;;;:::i;:::-;16533:7;:30;16529:61;;;16573:7;;4696:17;16565:25;;;;;;;;16529:61;16609:7;16618;16601:25;;;;;;16377:257;;;:::o;3007:223::-;3127:7;3159:1;3155;:5;3162:12;3147:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3186:9;3202:1;3198;:5;;;;:::i;:::-;3186:17;;3221:1;3214:8;;;3007:223;;;;;:::o;14559:615::-;14659:7;14681;14703;14725;14747;14769;14805:23;14830:12;14844:13;14874:40;14886:7;14895:9;;14906:7;;14874:11;:40::i;:::-;14804:110;;;;;;14925:19;14947:10;:8;:10::i;:::-;14925:32;;14969:15;14986:23;15011:12;15040:46;15052:7;15061:4;15067:5;15074:11;15040;:46::i;:::-;14968:118;;;;;;15105:7;15114:15;15131:4;15137:15;15154:4;15160:5;15097:69;;;;;;;;;;;;;;;;;;;14559:615;;;;;;;:::o;2233:136::-;2291:7;2318:43;2322:1;2325;2318:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2311:50;;2233:136;;;;:::o;2045:179::-;2103:7;2123:9;2139:1;2135;:5;;;;:::i;:::-;2123:17;;2164:1;2159;:6;;2151:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2215:1;2208:8;;;2045:179;;;;:::o;14145:211::-;14198:19;14220:10;:8;:10::i;:::-;14198:32;;14241:13;14257:22;14267:11;14257:5;:9;;:22;;;;:::i;:::-;14241:38;;14315:33;14342:5;14315:7;:22;14331:4;14315:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14290:7;:22;14306:4;14290:22;;;;;;;;;;;;;;;:58;;;;14187:169;;14145:211;:::o;14365:147::-;14443:17;14455:4;14443:7;;:11;;:17;;;;:::i;:::-;14433:7;:27;;;;14484:20;14499:4;14484:10;;:14;;:20;;;;:::i;:::-;14471:10;:33;;;;14365:147;;:::o;15183:469::-;15352:7;15374;15396;15431:12;15446:30;15472:3;15446:21;15458:8;15446:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15431:45;;15487:13;15503:28;15527:3;15503:19;15515:6;15503:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15487:44;;15542:23;15568:28;15590:5;15568:17;15580:4;15568:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15542:54;;15615:15;15632:4;15638:5;15607:37;;;;;;;;;15183:469;;;;;;;:::o;15661:534::-;15855:7;15877;15899;15934:15;15952:24;15964:11;15952:7;:11;;:24;;;;:::i;:::-;15934:42;;15987:12;16002:21;16011:11;16002:4;:8;;:21;;;;:::i;:::-;15987:36;;16034:13;16050:22;16060:11;16050:5;:9;;:22;;;;:::i;:::-;16034:38;;16083:23;16109:28;16131:5;16109:17;16121:4;16109:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16083:54;;16156:7;16165:15;16182:4;16148:39;;;;;;;;;;15661:534;;;;;;;;:::o;2611:246::-;2669:7;2698:1;2693;:6;2689:47;;2723:1;2716:8;;;;2689:47;2746:9;2762:1;2758;:5;;;;:::i;:::-;2746:17;;2791:1;2786;2782;:5;;;;:::i;:::-;:10;2774:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2848:1;2841:8;;;2611:246;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:246::-;4152:1;4162:113;4176:6;4173:1;4170:13;4162:113;;;4261:1;4256:3;4252:11;4246:18;4242:1;4237:3;4233:11;4226:39;4198:2;4195:1;4191:10;4186:15;;4162:113;;;4309:1;4300:6;4295:3;4291:16;4284:27;4133:184;4071:246;;;:::o;4323:377::-;4411:3;4439:39;4472:5;4439:39;:::i;:::-;4494:71;4558:6;4553:3;4494:71;:::i;:::-;4487:78;;4574:65;4632:6;4627:3;4620:4;4613:5;4609:16;4574:65;:::i;:::-;4664:29;4686:6;4664:29;:::i;:::-;4659:3;4655:39;4648:46;;4415:285;4323:377;;;;:::o;4706:313::-;4819:4;4857:2;4846:9;4842:18;4834:26;;4906:9;4900:4;4896:20;4892:1;4881:9;4877:17;4870:47;4934:78;5007:4;4998:6;4934:78;:::i;:::-;4926:86;;4706:313;;;;:::o;5025:77::-;5062:7;5091:5;5080:16;;5025:77;;;:::o;5108:122::-;5181:24;5199:5;5181:24;:::i;:::-;5174:5;5171:35;5161:63;;5220:1;5217;5210:12;5161:63;5108:122;:::o;5236:139::-;5282:5;5320:6;5307:20;5298:29;;5336:33;5363:5;5336:33;:::i;:::-;5236:139;;;;:::o;5381:474::-;5449:6;5457;5506:2;5494:9;5485:7;5481:23;5477:32;5474:119;;;5512:79;;:::i;:::-;5474:119;5632:1;5657:53;5702:7;5693:6;5682:9;5678:22;5657:53;:::i;:::-;5647:63;;5603:117;5759:2;5785:53;5830:7;5821:6;5810:9;5806:22;5785:53;:::i;:::-;5775:63;;5730:118;5381:474;;;;;:::o;5861:90::-;5895:7;5938:5;5931:13;5924:21;5913:32;;5861:90;;;:::o;5957:109::-;6038:21;6053:5;6038:21;:::i;:::-;6033:3;6026:34;5957:109;;:::o;6072:210::-;6159:4;6197:2;6186:9;6182:18;6174:26;;6210:65;6272:1;6261:9;6257:17;6248:6;6210:65;:::i;:::-;6072:210;;;;:::o;6288:60::-;6316:3;6337:5;6330:12;;6288:60;;;:::o;6354:142::-;6404:9;6437:53;6455:34;6464:24;6482:5;6464:24;:::i;:::-;6455:34;:::i;:::-;6437:53;:::i;:::-;6424:66;;6354:142;;;:::o;6502:126::-;6552:9;6585:37;6616:5;6585:37;:::i;:::-;6572:50;;6502:126;;;:::o;6634:152::-;6710:9;6743:37;6774:5;6743:37;:::i;:::-;6730:50;;6634:152;;;:::o;6792:183::-;6905:63;6962:5;6905:63;:::i;:::-;6900:3;6893:76;6792:183;;:::o;6981:274::-;7100:4;7138:2;7127:9;7123:18;7115:26;;7151:97;7245:1;7234:9;7230:17;7221:6;7151:97;:::i;:::-;6981:274;;;;:::o;7261:118::-;7348:24;7366:5;7348:24;:::i;:::-;7343:3;7336:37;7261:118;;:::o;7385:222::-;7478:4;7516:2;7505:9;7501:18;7493:26;;7529:71;7597:1;7586:9;7582:17;7573:6;7529:71;:::i;:::-;7385:222;;;;:::o;7613:619::-;7690:6;7698;7706;7755:2;7743:9;7734:7;7730:23;7726:32;7723:119;;;7761:79;;:::i;:::-;7723:119;7881:1;7906:53;7951:7;7942:6;7931:9;7927:22;7906:53;:::i;:::-;7896:63;;7852:117;8008:2;8034:53;8079:7;8070:6;8059:9;8055:22;8034:53;:::i;:::-;8024:63;;7979:118;8136:2;8162:53;8207:7;8198:6;8187:9;8183:22;8162:53;:::i;:::-;8152:63;;8107:118;7613:619;;;;;:::o;8238:86::-;8273:7;8313:4;8306:5;8302:16;8291:27;;8238:86;;;:::o;8330:112::-;8413:22;8429:5;8413:22;:::i;:::-;8408:3;8401:35;8330:112;;:::o;8448:214::-;8537:4;8575:2;8564:9;8560:18;8552:26;;8588:67;8652:1;8641:9;8637:17;8628:6;8588:67;:::i;:::-;8448:214;;;;:::o;8668:118::-;8755:24;8773:5;8755:24;:::i;:::-;8750:3;8743:37;8668:118;;:::o;8792:222::-;8885:4;8923:2;8912:9;8908:18;8900:26;;8936:71;9004:1;8993:9;8989:17;8980:6;8936:71;:::i;:::-;8792:222;;;;:::o;9020:329::-;9079:6;9128:2;9116:9;9107:7;9103:23;9099:32;9096:119;;;9134:79;;:::i;:::-;9096:119;9254:1;9279:53;9324:7;9315:6;9304:9;9300:22;9279:53;:::i;:::-;9269:63;;9225:117;9020:329;;;;:::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:607::-;11122:6;11130;11138;11187:2;11175:9;11166:7;11162:23;11158:32;11155:119;;;11193:79;;:::i;:::-;11155:119;11313:1;11338:53;11383:7;11374:6;11363:9;11359:22;11338:53;:::i;:::-;11328:63;;11284:117;11440:2;11466:50;11508:7;11499:6;11488:9;11484:22;11466:50;:::i;:::-;11456:60;;11411:115;11565:2;11591:50;11633:7;11624:6;11613:9;11609:22;11591:50;:::i;:::-;11581:60;;11536:115;11051:607;;;;;:::o;11664:117::-;11773:1;11770;11763:12;11804:568;11877:8;11887:6;11937:3;11930:4;11922:6;11918:17;11914:27;11904:122;;11945:79;;:::i;:::-;11904:122;12058:6;12045:20;12035:30;;12088:18;12080:6;12077:30;12074:117;;;12110:79;;:::i;:::-;12074:117;12224:4;12216:6;12212:17;12200:29;;12278:3;12270:4;12262:6;12258:17;12248:8;12244:32;12241:41;12238:128;;;12285:79;;:::i;:::-;12238:128;11804:568;;;;;:::o;12378:698::-;12470:6;12478;12486;12535:2;12523:9;12514:7;12510:23;12506:32;12503:119;;;12541:79;;:::i;:::-;12503:119;12689:1;12678:9;12674:17;12661:31;12719:18;12711:6;12708:30;12705:117;;;12741:79;;:::i;:::-;12705:117;12854:80;12926:7;12917:6;12906:9;12902:22;12854:80;:::i;:::-;12836:98;;;;12632:312;12983:2;13009:50;13051:7;13042:6;13031:9;13027:22;13009:50;:::i;:::-;12999:60;;12954:115;12378:698;;;;;:::o;13082:474::-;13150:6;13158;13207:2;13195:9;13186:7;13182:23;13178:32;13175:119;;;13213:79;;:::i;:::-;13175:119;13333:1;13358:53;13403:7;13394:6;13383:9;13379:22;13358:53;:::i;:::-;13348:63;;13304:117;13460:2;13486:53;13531:7;13522:6;13511:9;13507:22;13486:53;:::i;:::-;13476:63;;13431:118;13082:474;;;;;:::o;13562:182::-;13702:34;13698:1;13690:6;13686:14;13679:58;13562:182;:::o;13750:366::-;13892:3;13913:67;13977:2;13972:3;13913:67;:::i;:::-;13906:74;;13989:93;14078:3;13989:93;:::i;:::-;14107:2;14102:3;14098:12;14091:19;;13750:366;;;:::o;14122:419::-;14288:4;14326:2;14315:9;14311:18;14303:26;;14375:9;14369:4;14365:20;14361:1;14350:9;14346:17;14339:47;14403:131;14529:4;14403:131;:::i;:::-;14395:139;;14122:419;;;:::o;14547:180::-;14595:77;14592:1;14585:88;14692:4;14689:1;14682:15;14716:4;14713:1;14706:15;14733:180;14781:77;14778:1;14771:88;14878:4;14875:1;14868:15;14902:4;14899:1;14892:15;14919:233;14958:3;14981:24;14999:5;14981:24;:::i;:::-;14972:33;;15027:66;15020:5;15017:77;15014:103;;15097:18;;:::i;:::-;15014:103;15144:1;15137:5;15133:13;15126:20;;14919:233;;;:::o;15158:224::-;15298:34;15294:1;15286:6;15282:14;15275:58;15367:7;15362:2;15354:6;15350:15;15343:32;15158:224;:::o;15388:366::-;15530:3;15551:67;15615:2;15610:3;15551:67;:::i;:::-;15544:74;;15627:93;15716:3;15627:93;:::i;:::-;15745:2;15740:3;15736:12;15729:19;;15388:366;;;:::o;15760:419::-;15926:4;15964:2;15953:9;15949:18;15941:26;;16013:9;16007:4;16003:20;15999:1;15988:9;15984:17;15977:47;16041:131;16167:4;16041:131;:::i;:::-;16033:139;;15760:419;;;:::o;16185:221::-;16325:34;16321:1;16313:6;16309:14;16302:58;16394:4;16389:2;16381:6;16377:15;16370:29;16185:221;:::o;16412:366::-;16554:3;16575:67;16639:2;16634:3;16575:67;:::i;:::-;16568:74;;16651:93;16740:3;16651:93;:::i;:::-;16769:2;16764:3;16760:12;16753:19;;16412:366;;;:::o;16784:419::-;16950:4;16988:2;16977:9;16973:18;16965:26;;17037:9;17031:4;17027:20;17023:1;17012:9;17008:17;17001:47;17065:131;17191:4;17065:131;:::i;:::-;17057:139;;16784:419;;;:::o;17209:225::-;17349:34;17345:1;17337:6;17333:14;17326:58;17418:8;17413:2;17405:6;17401:15;17394:33;17209:225;:::o;17440:366::-;17582:3;17603:67;17667:2;17662:3;17603:67;:::i;:::-;17596:74;;17679:93;17768:3;17679:93;:::i;:::-;17797:2;17792:3;17788:12;17781:19;;17440:366;;;:::o;17812:419::-;17978:4;18016:2;18005:9;18001:18;17993:26;;18065:9;18059:4;18055:20;18051:1;18040:9;18036:17;18029:47;18093:131;18219:4;18093:131;:::i;:::-;18085:139;;17812:419;;;:::o;18237:222::-;18377:34;18373:1;18365:6;18361:14;18354:58;18446:5;18441:2;18433:6;18429:15;18422:30;18237:222;:::o;18465:366::-;18607:3;18628:67;18692:2;18687:3;18628:67;:::i;:::-;18621:74;;18704:93;18793:3;18704:93;:::i;:::-;18822:2;18817:3;18813:12;18806:19;;18465:366;;;:::o;18837:419::-;19003:4;19041:2;19030:9;19026:18;19018:26;;19090:9;19084:4;19080:20;19076:1;19065:9;19061:17;19054:47;19118:131;19244:4;19118:131;:::i;:::-;19110:139;;18837:419;;;:::o;19262:225::-;19402:34;19398:1;19390:6;19386:14;19379:58;19471:8;19466:2;19458:6;19454:15;19447:33;19262:225;:::o;19493:366::-;19635:3;19656:67;19720:2;19715:3;19656:67;:::i;:::-;19649:74;;19732:93;19821:3;19732:93;:::i;:::-;19850:2;19845:3;19841:12;19834:19;;19493:366;;;:::o;19865:419::-;20031:4;20069:2;20058:9;20054:18;20046:26;;20118:9;20112:4;20108:20;20104:1;20093:9;20089:17;20082:47;20146:131;20272:4;20146:131;:::i;:::-;20138:139;;19865:419;;;:::o;20290:181::-;20430:33;20426:1;20418:6;20414:14;20407:57;20290:181;:::o;20477:366::-;20619:3;20640:67;20704:2;20699:3;20640:67;:::i;:::-;20633:74;;20716:93;20805:3;20716:93;:::i;:::-;20834:2;20829:3;20825:12;20818:19;;20477:366;;;:::o;20849:419::-;21015:4;21053:2;21042:9;21038:18;21030:26;;21102:9;21096:4;21092:20;21088:1;21077:9;21073:17;21066:47;21130:131;21256:4;21130:131;:::i;:::-;21122:139;;20849:419;;;:::o;21274:179::-;21414:31;21410:1;21402:6;21398:14;21391:55;21274:179;:::o;21459:366::-;21601:3;21622:67;21686:2;21681:3;21622:67;:::i;:::-;21615:74;;21698:93;21787:3;21698:93;:::i;:::-;21816:2;21811:3;21807:12;21800:19;;21459:366;;;:::o;21831:419::-;21997:4;22035:2;22024:9;22020:18;22012:26;;22084:9;22078:4;22074:20;22070:1;22059:9;22055:17;22048:47;22112:131;22238:4;22112:131;:::i;:::-;22104:139;;21831:419;;;:::o;22256:181::-;22396:33;22392:1;22384:6;22380:14;22373:57;22256:181;:::o;22443:366::-;22585:3;22606:67;22670:2;22665:3;22606:67;:::i;:::-;22599:74;;22682:93;22771:3;22682:93;:::i;:::-;22800:2;22795:3;22791:12;22784:19;;22443:366;;;:::o;22815:419::-;22981:4;23019:2;23008:9;23004:18;22996:26;;23068:9;23062:4;23058:20;23054:1;23043:9;23039:17;23032:47;23096:131;23222:4;23096:131;:::i;:::-;23088:139;;22815:419;;;:::o;23240:179::-;23380:31;23376:1;23368:6;23364:14;23357:55;23240:179;:::o;23425:366::-;23567:3;23588:67;23652:2;23647:3;23588:67;:::i;:::-;23581:74;;23664:93;23753:3;23664:93;:::i;:::-;23782:2;23777:3;23773:12;23766:19;;23425:366;;;:::o;23797:419::-;23963:4;24001:2;23990:9;23986:18;23978:26;;24050:9;24044:4;24040:20;24036:1;24025:9;24021:17;24014:47;24078:131;24204:4;24078:131;:::i;:::-;24070:139;;23797:419;;;:::o;24222:177::-;24362:29;24358:1;24350:6;24346:14;24339:53;24222:177;:::o;24405:366::-;24547:3;24568:67;24632:2;24627:3;24568:67;:::i;:::-;24561:74;;24644:93;24733:3;24644:93;:::i;:::-;24762:2;24757:3;24753:12;24746:19;;24405:366;;;:::o;24777:419::-;24943:4;24981:2;24970:9;24966:18;24958:26;;25030:9;25024:4;25020:20;25016:1;25005:9;25001:17;24994:47;25058:131;25184:4;25058:131;:::i;:::-;25050:139;;24777:419;;;:::o;25202:233::-;25342:34;25338:1;25330:6;25326:14;25319:58;25411:16;25406:2;25398:6;25394:15;25387:41;25202:233;:::o;25441:366::-;25583:3;25604:67;25668:2;25663:3;25604:67;:::i;:::-;25597:74;;25680:93;25769:3;25680:93;:::i;:::-;25798:2;25793:3;25789:12;25782:19;;25441:366;;;:::o;25813:419::-;25979:4;26017:2;26006:9;26002:18;25994:26;;26066:9;26060:4;26056:20;26052:1;26041:9;26037:17;26030:47;26094:131;26220:4;26094:131;:::i;:::-;26086:139;;25813:419;;;:::o;26238:180::-;26378:32;26374:1;26366:6;26362:14;26355:56;26238:180;:::o;26424:366::-;26566:3;26587:67;26651:2;26646:3;26587:67;:::i;:::-;26580:74;;26663:93;26752:3;26663:93;:::i;:::-;26781:2;26776:3;26772:12;26765:19;;26424:366;;;:::o;26796:419::-;26962:4;27000:2;26989:9;26985:18;26977:26;;27049:9;27043:4;27039:20;27035:1;27024:9;27020:17;27013:47;27077:131;27203:4;27077:131;:::i;:::-;27069:139;;26796:419;;;:::o;27221:182::-;27361:34;27357:1;27349:6;27345:14;27338:58;27221:182;:::o;27409:366::-;27551:3;27572:67;27636:2;27631:3;27572:67;:::i;:::-;27565:74;;27648:93;27737:3;27648:93;:::i;:::-;27766:2;27761:3;27757:12;27750:19;;27409:366;;;:::o;27781:419::-;27947:4;27985:2;27974:9;27970:18;27962:26;;28034:9;28028:4;28024:20;28020:1;28009:9;28005:17;27998:47;28062:131;28188:4;28062:131;:::i;:::-;28054:139;;27781:419;;;:::o;28206:191::-;28246:3;28265:20;28283:1;28265:20;:::i;:::-;28260:25;;28299:20;28317:1;28299:20;:::i;:::-;28294:25;;28342:1;28339;28335:9;28328:16;;28363:3;28360:1;28357:10;28354:36;;;28370:18;;:::i;:::-;28354:36;28206:191;;;;:::o;28403:176::-;28543:28;28539:1;28531:6;28527:14;28520:52;28403:176;:::o;28585:366::-;28727:3;28748:67;28812:2;28807:3;28748:67;:::i;:::-;28741:74;;28824:93;28913:3;28824:93;:::i;:::-;28942:2;28937:3;28933:12;28926:19;;28585:366;;;:::o;28957:419::-;29123:4;29161:2;29150:9;29146:18;29138:26;;29210:9;29204:4;29200:20;29196:1;29185:9;29181:17;29174:47;29238:131;29364:4;29238:131;:::i;:::-;29230:139;;28957:419;;;:::o;29382:194::-;29422:4;29442:20;29460:1;29442:20;:::i;:::-;29437:25;;29476:20;29494:1;29476:20;:::i;:::-;29471:25;;29520:1;29517;29513:9;29505:17;;29544:1;29538:4;29535:11;29532:37;;;29549:18;;:::i;:::-;29532:37;29382:194;;;;:::o;29582:231::-;29722:34;29718:1;29710:6;29706:14;29699:58;29791:14;29786:2;29778:6;29774:15;29767:39;29582:231;:::o;29819:366::-;29961:3;29982:67;30046:2;30041:3;29982:67;:::i;:::-;29975:74;;30058:93;30147:3;30058:93;:::i;:::-;30176:2;30171:3;30167:12;30160:19;;29819:366;;;:::o;30191:419::-;30357:4;30395:2;30384:9;30380:18;30372:26;;30444:9;30438:4;30434:20;30430:1;30419:9;30415:17;30408:47;30472:131;30598:4;30472:131;:::i;:::-;30464:139;;30191:419;;;:::o;30616:143::-;30673:5;30704:6;30698:13;30689:22;;30720:33;30747:5;30720:33;:::i;:::-;30616:143;;;;:::o;30765:351::-;30835:6;30884:2;30872:9;30863:7;30859:23;30855:32;30852:119;;;30890:79;;:::i;:::-;30852:119;31010:1;31035:64;31091:7;31082:6;31071:9;31067:22;31035:64;:::i;:::-;31025:74;;30981:128;30765:351;;;;:::o;31122:85::-;31167:7;31196:5;31185:16;;31122:85;;;:::o;31213:158::-;31271:9;31304:61;31322:42;31331:32;31357:5;31331:32;:::i;:::-;31322:42;:::i;:::-;31304:61;:::i;:::-;31291:74;;31213:158;;;:::o;31377:147::-;31472:45;31511:5;31472:45;:::i;:::-;31467:3;31460:58;31377:147;;:::o;31530:114::-;31597:6;31631:5;31625:12;31615:22;;31530:114;;;:::o;31650:184::-;31749:11;31783:6;31778:3;31771:19;31823:4;31818:3;31814:14;31799:29;;31650:184;;;;:::o;31840:132::-;31907:4;31930:3;31922:11;;31960:4;31955:3;31951:14;31943:22;;31840:132;;;:::o;31978:108::-;32055:24;32073:5;32055:24;:::i;:::-;32050:3;32043:37;31978:108;;:::o;32092:179::-;32161:10;32182:46;32224:3;32216:6;32182:46;:::i;:::-;32260:4;32255:3;32251:14;32237:28;;32092:179;;;;:::o;32277:113::-;32347:4;32379;32374:3;32370:14;32362:22;;32277:113;;;:::o;32426:732::-;32545:3;32574:54;32622:5;32574:54;:::i;:::-;32644:86;32723:6;32718:3;32644:86;:::i;:::-;32637:93;;32754:56;32804:5;32754:56;:::i;:::-;32833:7;32864:1;32849:284;32874:6;32871:1;32868:13;32849:284;;;32950:6;32944:13;32977:63;33036:3;33021:13;32977:63;:::i;:::-;32970:70;;33063:60;33116:6;33063:60;:::i;:::-;33053:70;;32909:224;32896:1;32893;32889:9;32884:14;;32849:284;;;32853:14;33149:3;33142:10;;32550:608;;;32426:732;;;;:::o;33164:831::-;33427:4;33465:3;33454:9;33450:19;33442:27;;33479:71;33547:1;33536:9;33532:17;33523:6;33479:71;:::i;:::-;33560:80;33636:2;33625:9;33621:18;33612:6;33560:80;:::i;:::-;33687:9;33681:4;33677:20;33672:2;33661:9;33657:18;33650:48;33715:108;33818:4;33809:6;33715:108;:::i;:::-;33707:116;;33833:72;33901:2;33890:9;33886:18;33877:6;33833:72;:::i;:::-;33915:73;33983:3;33972:9;33968:19;33959:6;33915:73;:::i;:::-;33164:831;;;;;;;;:::o;34001:180::-;34049:77;34046:1;34039:88;34146:4;34143:1;34136:15;34170:4;34167:1;34160:15;34187:185;34227:1;34244:20;34262:1;34244:20;:::i;:::-;34239:25;;34278:20;34296:1;34278:20;:::i;:::-;34273:25;;34317:1;34307:35;;34322:18;;:::i;:::-;34307:35;34364:1;34361;34357:9;34352:14;;34187:185;;;;:::o;34378:177::-;34518:29;34514:1;34506:6;34502:14;34495:53;34378:177;:::o;34561:366::-;34703:3;34724:67;34788:2;34783:3;34724:67;:::i;:::-;34717:74;;34800:93;34889:3;34800:93;:::i;:::-;34918:2;34913:3;34909:12;34902:19;;34561:366;;;:::o;34933:419::-;35099:4;35137:2;35126:9;35122:18;35114:26;;35186:9;35180:4;35176:20;35172:1;35161:9;35157:17;35150:47;35214:131;35340:4;35214:131;:::i;:::-;35206:139;;34933:419;;;:::o;35358:410::-;35398:7;35421:20;35439:1;35421:20;:::i;:::-;35416:25;;35455:20;35473:1;35455:20;:::i;:::-;35450:25;;35510:1;35507;35503:9;35532:30;35550:11;35532:30;:::i;:::-;35521:41;;35711:1;35702:7;35698:15;35695:1;35692:22;35672:1;35665:9;35645:83;35622:139;;35741:18;;:::i;:::-;35622:139;35406:362;35358:410;;;;:::o;35774:220::-;35914:34;35910:1;35902:6;35898:14;35891:58;35983:3;35978:2;35970:6;35966:15;35959:28;35774:220;:::o;36000:366::-;36142:3;36163:67;36227:2;36222:3;36163:67;:::i;:::-;36156:74;;36239:93;36328:3;36239:93;:::i;:::-;36357:2;36352:3;36348:12;36341:19;;36000:366;;;:::o;36372:419::-;36538:4;36576:2;36565:9;36561:18;36553:26;;36625:9;36619:4;36615:20;36611:1;36600:9;36596:17;36589:47;36653:131;36779:4;36653:131;:::i;:::-;36645:139;;36372:419;;;:::o

Swarm Source

ipfs://c24e213a844b0c005e1454763ce8f4b73fa38e7a8f8165ef97eb9a66c93fc8b5

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.