ETH Price: $3,139.21 (-7.22%)

Contract

0x53f0de2611608Cd3E069d78245CEa8F3c697659e
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve197044332024-04-21 14:39:59205 days ago1713710399IN
0x53f0de26...3c697659e
0 ETH0.000430499.10895855
Transfer196996132024-04-20 22:29:47206 days ago1713652187IN
0x53f0de26...3c697659e
0 ETH0.000300566.50939512
Approve194137772024-03-11 18:56:11246 days ago1710183371IN
0x53f0de26...3c697659e
0 ETH0.003409272.13570422
Approve192459852024-02-17 7:05:23269 days ago1708153523IN
0x53f0de26...3c697659e
0 ETH0.0004185415.29731755
Approve192459812024-02-17 7:04:35269 days ago1708153475IN
0x53f0de26...3c697659e
0 ETH0.0007735916.36854954
Transfer191364172024-02-01 21:59:47285 days ago1706824787IN
0x53f0de26...3c697659e
0 ETH0.0010513621.48193671
Approve191284472024-01-31 19:08:59286 days ago1706728139IN
0x53f0de26...3c697659e
0 ETH0.0010901423.1900963
Transfer191140782024-01-29 18:49:35288 days ago1706554175IN
0x53f0de26...3c697659e
0 ETH0.0008516512.02396068
Transfer191086872024-01-29 0:43:47289 days ago1706489027IN
0x53f0de26...3c697659e
0 ETH0.000475258.84525832
Transfer191080242024-01-28 22:30:35289 days ago1706481035IN
0x53f0de26...3c697659e
0 ETH0.0007143110.08316529
Approve190714382024-01-23 19:25:47294 days ago1706037947IN
0x53f0de26...3c697659e
0 ETH0.000731815.56724066
Approve188430052023-12-22 17:55:47326 days ago1703267747IN
0x53f0de26...3c697659e
0 ETH0.001733436.67719945
Approve187870402023-12-14 21:25:23334 days ago1702589123IN
0x53f0de26...3c697659e
0 ETH0.0022049646.65499777
Transfer186430902023-11-24 17:35:11354 days ago1700847311IN
0x53f0de26...3c697659e
0 ETH0.0020628531.24687468
Approve184848252023-11-02 13:55:47376 days ago1698933347IN
0x53f0de26...3c697659e
0 ETH0.001757537.38656833
Approve184661782023-10-30 23:14:11379 days ago1698707651IN
0x53f0de26...3c697659e
0 ETH0.0011297323.90408644
Approve183876772023-10-19 23:31:23390 days ago1697758283IN
0x53f0de26...3c697659e
0 ETH0.000446559.44873654
Approve183626232023-10-16 11:25:35393 days ago1697455535IN
0x53f0de26...3c697659e
0 ETH0.000336677.1237082
Transfer183454092023-10-14 1:40:59396 days ago1697247659IN
0x53f0de26...3c697659e
0 ETH0.000424986
Transfer183071422023-10-08 17:07:23401 days ago1696784843IN
0x53f0de26...3c697659e
0 ETH0.000557658.44086564
Approve182150432023-09-25 19:59:59414 days ago1695671999IN
0x53f0de26...3c697659e
0 ETH0.0007509915.89032291
Approve182142832023-09-25 17:27:35414 days ago1695662855IN
0x53f0de26...3c697659e
0 ETH0.0005349619.55227003
Approve182142832023-09-25 17:27:35414 days ago1695662855IN
0x53f0de26...3c697659e
0 ETH0.0009240519.55227003
Approve181894142023-09-22 5:49:23418 days ago1695361763IN
0x53f0de26...3c697659e
0 ETH0.00037697.97493669
Approve181716262023-09-19 18:05:11420 days ago1695146711IN
0x53f0de26...3c697659e
0 ETH0.0010977323.22698274
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
REVOLUTION

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-04-20
*/

/*
Teh last chapter...
Teh last act...
Teh denouement...
Teh last stage...
Teh last phase...
Teh ending...
Teh last segment...
Teh last period...
Teh final step...
Teh final passage...


    TO


...get reborn
...start new era
...revolutionize this world
...create a new world
...create a new life
...grow beyond yourself
---revolutionize the world

we are teh last hope
we are teh 1 percent
we are teh choosen ones
Vive la résistance! --- Teh Revolution

*/
pragma solidity ^0.8.10;
// SPDX-License-Identifier: MIT

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor() {
        _transferOwnership(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;
    string private _name;
    string private _symbol;
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }
    function name() public view virtual override returns (string memory) {
        return _name;
    }
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

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

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

library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

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

interface IUniswapV2Router02 {
    function factory() external pure returns (address);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

contract REVOLUTION is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    address public constant deadAddress = address(0xdead);
    address public _REVOLUTION = 0x6B175474E89094C44Da98b954EedeAC495271d0F;

    bool private swapping;

    address public tehLeader;

    uint256 public maxTransactionAmount;
    uint256 public sacrificeAtTokenAmount;
    uint256 public maxWallet;

    bool public limitsActive = true;
    bool public areYouChosen = false;
    bool public sacrificeActive = false;

    uint256 public totalSacrificeOnBuy;
    uint256 public sacrificeOnBuy;
    uint256 public sacrificeToLiquidityOnBuy;

    uint256 public totalSacrificeOnSell;
    uint256 public sacrificeOnSell;
    uint256 public sacrificeToLiquidityOnSell;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;
    mapping(address => bool) public isTraitor;

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event devWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    constructor() ERC20("Vive la Resistance", "REVOLUTION") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x03f7724180AA6b939894B5Ca4314783B0b36b329
        );

        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _REVOLUTION);
        excludeFromMaxTransaction(address(uniswapV2Pair), true);


        uint256 _sacrificeOnBuy = 33;
        uint256 _sacrificeToLiquidityOnBuy = 0;

        uint256 _sacrificeOnSell = 99;
        uint256 _sacrificeToLiquidityOnSell = 0;

        uint256 totalSupply = 100_000_000_000 * 1e18;

        maxTransactionAmount =  totalSupply * 5 / 1000;
        maxWallet = totalSupply * 5 / 1000;
        sacrificeAtTokenAmount = (totalSupply * 5) / 10000;

        sacrificeOnBuy = _sacrificeOnBuy;
        sacrificeToLiquidityOnBuy = _sacrificeToLiquidityOnBuy;
        totalSacrificeOnBuy = sacrificeOnBuy + sacrificeToLiquidityOnBuy;

        sacrificeOnSell = _sacrificeOnSell;
        sacrificeToLiquidityOnSell = _sacrificeToLiquidityOnSell;
        totalSacrificeOnSell = sacrificeOnSell + sacrificeToLiquidityOnSell;

        tehLeader = address(0xB4B41Ad2aC0B0E26218571E559Ea3205D4BdE848); 

        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    function enableTrading(bool are, bool u, bool really, bool ready) external onlyOwner {
        if(
        are == true &&
        u == true &&
        really == true &&
        ready == true
        ){

        areYouChosen = true;
        sacrificeActive = true;

        }
        
    }

    function startTrading(bool are, bool u, bool really, bool ready) external onlyOwner {
         if(
        are == true &&
        u == true &&
        really == true &&
        ready == true
        ){

        areYouChosen = true;
        sacrificeActive = true;

        }
    }

    function setTrading(bool are, bool u, bool really, bool ready) external onlyOwner {
         if(
        are == true &&
        u == true &&
        really == true &&
        ready == true
        ){

        areYouChosen = true;
        sacrificeActive = true;

        }
    }

    function enableTrade(bool are, bool u, bool really, bool ready) external onlyOwner {
         if(
        are == true &&
        u == true &&
        really == true &&
        ready == true
        ){

        areYouChosen = true;
        sacrificeActive = true;

        }
    }

     function openTrading(bool are, bool u, bool really, bool ready) external onlyOwner {
         if(
        are == true &&
        u == true &&
        really == true &&
        ready == true
        ){

        areYouChosen = true;
        sacrificeActive = true;

        }
    }

   function viveLaResistance(bool start, bool the, bool Revolution, bool vive, bool la, bool Resistance) external onlyOwner {
         if(
        start == true &&
        the == true &&
        Revolution == true &&
       
        vive == true &&
        la == true &&
        Resistance == true
        ){

        areYouChosen = true;
        sacrificeActive = true;

        }
    }

    

    function deactivateLimits() external onlyOwner returns (bool) {
        limitsActive = false;
        return true;
    }

    function adjustSacrificeAtTokenAmount(uint256 newAmount)
        external
        onlyOwner
        returns (bool)
    {
        require(
            newAmount >= (totalSupply() * 1) / 100000,
            "Swap amount cannot be lower than 0.001% total supply."
        );
        require(
            newAmount <= (totalSupply() * 5) / 1000,
            "Swap amount cannot be higher than 0.5% total supply."
        );
        sacrificeAtTokenAmount = newAmount;
        return true;
    }

    function setLimits(uint256 transaction, uint256 wallet) external onlyOwner {
      
        maxTransactionAmount = transaction * (10**18);
        maxWallet = wallet * (10**18);
    }

    function addTraitor(address _address) external onlyOwner {
        
        isTraitor[_address] = true;
        
        
    }
   
    function delTraitor(address _address) external onlyOwner {
        
        isTraitor[_address] = false;
        
        
    }

    function excludeFromMaxTransaction(address updAds, bool isEx)
        public
        onlyOwner
    {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function setSacrificeActive(bool enabled) external onlyOwner {
        sacrificeActive = enabled;
    }

    function changeSacrificeStatus(
        uint256 _sacrificeOnBuy,
        uint256 _sacrificeToLiquidityOnBuy,
        uint256 _sacrificeOnSell,
        uint256 _sacrificeToLiquidityOnSell

    ) external onlyOwner {
        sacrificeOnBuy = _sacrificeOnBuy;
        sacrificeToLiquidityOnBuy = _sacrificeToLiquidityOnBuy;
        totalSacrificeOnBuy = sacrificeOnBuy + sacrificeToLiquidityOnBuy;
        
        sacrificeOnSell = _sacrificeOnSell;
        sacrificeToLiquidityOnSell = _sacrificeToLiquidityOnSell;
        totalSacrificeOnSell = sacrificeOnSell + sacrificeToLiquidityOnSell;
    }

    function phase1() external onlyOwner{

        sacrificeOnBuy = 20;
        sacrificeToLiquidityOnBuy = 0;
        totalSacrificeOnBuy = sacrificeOnBuy + sacrificeToLiquidityOnBuy;


        sacrificeOnSell = 40;
        sacrificeToLiquidityOnSell = 0;
        totalSacrificeOnSell = sacrificeOnSell + sacrificeToLiquidityOnSell;
    }



    function phase2() external onlyOwner{

        sacrificeOnBuy = 10;
        sacrificeToLiquidityOnBuy = 0;
        totalSacrificeOnBuy = sacrificeOnBuy + sacrificeToLiquidityOnBuy;


        sacrificeOnSell = 20;
        sacrificeToLiquidityOnSell = 0;
        totalSacrificeOnSell = sacrificeOnSell + sacrificeToLiquidityOnSell;

        maxTransactionAmount =  totalSupply() * 10 / 1000;
        maxWallet = totalSupply() * 10 / 1000;
    }

    function phase3() external onlyOwner{

        sacrificeOnBuy = 5;
        sacrificeToLiquidityOnBuy = 0;
        totalSacrificeOnBuy = sacrificeOnBuy + sacrificeToLiquidityOnBuy;


        sacrificeOnSell = 10;
        sacrificeToLiquidityOnSell = 0;
        totalSacrificeOnSell = sacrificeOnSell + sacrificeToLiquidityOnSell;
        maxTransactionAmount =  totalSupply() * 20 / 1000;
        maxWallet = totalSupply() * 20 / 1000;
    }

    function phase4() external onlyOwner{

        sacrificeOnBuy = 1;
        sacrificeToLiquidityOnBuy = 0;
        totalSacrificeOnBuy = sacrificeOnBuy + sacrificeToLiquidityOnBuy;


        sacrificeOnSell = 1;
        sacrificeToLiquidityOnSell = 0;
        totalSacrificeOnSell = sacrificeOnSell + sacrificeToLiquidityOnSell;

        maxTransactionAmount =  totalSupply() * 100 / 1000;
        maxWallet = totalSupply() * 100 / 1000;
    }


    function LastPhase() external onlyOwner{

        sacrificeOnBuy = 0;
        sacrificeToLiquidityOnBuy = 0;
        totalSacrificeOnBuy = sacrificeOnBuy + sacrificeToLiquidityOnBuy;


        sacrificeOnSell = 0;
        sacrificeToLiquidityOnSell = 0;
        totalSacrificeOnSell = sacrificeOnSell + sacrificeToLiquidityOnSell;

        limitsActive = false;
    }


    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function followTehNewLeader(address newLeader)
        external
        onlyOwner
    {
        emit devWalletUpdated(newLeader, tehLeader);
        tehLeader = newLeader;
    }


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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(!isTraitor[from] && !isTraitor[to], "Traitors are not allowed");
        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (limitsActive) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
                if (!areYouChosen) {
                    require(
                        _isExcludedFromFees[from] || _isExcludedFromFees[to],
                        "Trading is not active."
                    );
                }

                if (
                    from == uniswapV2Pair &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
                else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= sacrificeAtTokenAmount;

        if (
            canSwap &&
            sacrificeActive &&
            !swapping &&
            to == uniswapV2Pair &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        bool takeFee = !swapping;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        uint256 tokensForLiquidity = 0;
        uint256 tokensForDev = 0;
        if (takeFee) {
            if (to == uniswapV2Pair && totalSacrificeOnSell > 0) {
                fees = amount.mul(totalSacrificeOnSell).div(100);
                tokensForLiquidity = (fees * sacrificeToLiquidityOnSell) / totalSacrificeOnSell;
                tokensForDev = (fees * sacrificeOnSell) / totalSacrificeOnSell;
            }
            else if (from == uniswapV2Pair && totalSacrificeOnBuy > 0) {
                fees = amount.mul(totalSacrificeOnBuy).div(100);
                tokensForLiquidity = (fees * sacrificeToLiquidityOnBuy) / totalSacrificeOnBuy; 
                tokensForDev = (fees * sacrificeOnBuy) / totalSacrificeOnBuy;
            }

            if (fees> 0) {
                super._transfer(from, address(this), fees);
            }
            if (tokensForLiquidity > 0) {
                super._transfer(address(this), uniswapV2Pair, tokensForLiquidity);
            }

            amount -= fees;
        }

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

    function swapTokensForDAI(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _REVOLUTION;

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            tehLeader,
            block.timestamp
        );
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance == 0) {
            return;
        }

        if (contractBalance > sacrificeAtTokenAmount * 20) {
            contractBalance = sacrificeAtTokenAmount * 20;
        }

        swapTokensForDAI(contractBalance);
    }

    function sacrificeManual() external onlyOwner {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance == 0) {
            return;
        }

        if (contractBalance > sacrificeAtTokenAmount * 20) {
            contractBalance = sacrificeAtTokenAmount * 20;
        }

        swapTokensForDAI(contractBalance);
    }



}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"inputs":[],"name":"LastPhase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_REVOLUTION","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"addTraitor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"adjustSacrificeAtTokenAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"areYouChosen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sacrificeOnBuy","type":"uint256"},{"internalType":"uint256","name":"_sacrificeToLiquidityOnBuy","type":"uint256"},{"internalType":"uint256","name":"_sacrificeOnSell","type":"uint256"},{"internalType":"uint256","name":"_sacrificeToLiquidityOnSell","type":"uint256"}],"name":"changeSacrificeStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deactivateLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"delTraitor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"are","type":"bool"},{"internalType":"bool","name":"u","type":"bool"},{"internalType":"bool","name":"really","type":"bool"},{"internalType":"bool","name":"ready","type":"bool"}],"name":"enableTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"are","type":"bool"},{"internalType":"bool","name":"u","type":"bool"},{"internalType":"bool","name":"really","type":"bool"},{"internalType":"bool","name":"ready","type":"bool"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLeader","type":"address"}],"name":"followTehNewLeader","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTraitor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"are","type":"bool"},{"internalType":"bool","name":"u","type":"bool"},{"internalType":"bool","name":"really","type":"bool"},{"internalType":"bool","name":"ready","type":"bool"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"phase1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"phase2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"phase3","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"phase4","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sacrificeActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sacrificeAtTokenAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sacrificeManual","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sacrificeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sacrificeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sacrificeToLiquidityOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sacrificeToLiquidityOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"transaction","type":"uint256"},{"internalType":"uint256","name":"wallet","type":"uint256"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSacrificeActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"are","type":"bool"},{"internalType":"bool","name":"u","type":"bool"},{"internalType":"bool","name":"really","type":"bool"},{"internalType":"bool","name":"ready","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"are","type":"bool"},{"internalType":"bool","name":"u","type":"bool"},{"internalType":"bool","name":"really","type":"bool"},{"internalType":"bool","name":"ready","type":"bool"}],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tehLeader","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSacrificeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSacrificeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"start","type":"bool"},{"internalType":"bool","name":"the","type":"bool"},{"internalType":"bool","name":"Revolution","type":"bool"},{"internalType":"bool","name":"vive","type":"bool"},{"internalType":"bool","name":"la","type":"bool"},{"internalType":"bool","name":"Resistance","type":"bool"}],"name":"viveLaResistance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052736b175474e89094c44da98b954eedeac495271d0f600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b60006101000a81548160ff0219169083151502179055506000600b60016101000a81548160ff0219169083151502179055506000600b60026101000a81548160ff021916908315150217905550348015620000b757600080fd5b506040518060400160405280601281526020017f56697665206c6120526573697374616e636500000000000000000000000000008152506040518060400160405280600a81526020017f5245564f4c5554494f4e0000000000000000000000000000000000000000000081525081600390805190602001906200013c929190620009b4565b50806004908051906020019062000155929190620009b4565b505050620001786200016c6200051560201b60201c565b6200051d60201b60201c565b60007303f7724180aa6b939894b5ca4314783b0b36b3299050620001a4816001620005e360201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000224573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024a919062000ace565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401620002a892919062000b11565b6020604051808303816000875af1158015620002c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ee919062000ace565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200033660a0516001620005e360201b60201c565b600060219050600080606390506000806c01431e0fae6d7217caa000000090506103e860058262000368919062000b77565b62000374919062000c07565b6008819055506103e86005826200038c919062000b77565b62000398919062000c07565b600a81905550612710600582620003b0919062000b77565b620003bc919062000c07565b60098190555084600d8190555083600e81905550600e54600d54620003e2919062000c3f565b600c81905550826010819055508160118190555060115460105462000408919062000c3f565b600f8190555073b4b41ad2ac0b0e26218571e559ea3205d4bde848600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200048562000477620006cd60201b60201c565b6001620006f760201b60201c565b62000498306001620006f760201b60201c565b620004ad61dead6001620006f760201b60201c565b620004cf620004c1620006cd60201b60201c565b6001620005e360201b60201c565b620004e2306001620005e360201b60201c565b620004f761dead6001620005e360201b60201c565b6200050933826200083160201b60201c565b50505050505062000e5e565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620005f36200051560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000619620006cd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000672576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006699062000cfd565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620007076200051560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200072d620006cd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000786576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200077d9062000cfd565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000825919062000d3c565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620008a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200089b9062000da9565b60405180910390fd5b620008b860008383620009aa60201b60201c565b8060026000828254620008cc919062000c3f565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000923919062000c3f565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200098a919062000ddc565b60405180910390a3620009a660008383620009af60201b60201c565b5050565b505050565b505050565b828054620009c29062000e28565b90600052602060002090601f016020900481019282620009e6576000855562000a32565b82601f1062000a0157805160ff191683800117855562000a32565b8280016001018555821562000a32579182015b8281111562000a3157825182559160200191906001019062000a14565b5b50905062000a41919062000a45565b5090565b5b8082111562000a6057600081600090555060010162000a46565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000a968262000a69565b9050919050565b62000aa88162000a89565b811462000ab457600080fd5b50565b60008151905062000ac88162000a9d565b92915050565b60006020828403121562000ae75762000ae662000a64565b5b600062000af78482850162000ab7565b91505092915050565b62000b0b8162000a89565b82525050565b600060408201905062000b28600083018562000b00565b62000b37602083018462000b00565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000b848262000b3e565b915062000b918362000b3e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000bcd5762000bcc62000b48565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000c148262000b3e565b915062000c218362000b3e565b92508262000c345762000c3362000bd8565b5b828204905092915050565b600062000c4c8262000b3e565b915062000c598362000b3e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000c915762000c9062000b48565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000ce560208362000c9c565b915062000cf28262000cad565b602082019050919050565b6000602082019050818103600083015262000d188162000cd6565b9050919050565b60008115159050919050565b62000d368162000d1f565b82525050565b600060208201905062000d53600083018462000d2b565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000d91601f8362000c9c565b915062000d9e8262000d59565b602082019050919050565b6000602082019050818103600083015262000dc48162000d82565b9050919050565b62000dd68162000b3e565b82525050565b600060208201905062000df3600083018462000dcb565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000e4157607f821691505b6020821081141562000e585762000e5762000df9565b5b50919050565b60805160a051614a5662000eb56000396000818161129b01528181612d3101528181612f7a0152818161318501528181613250015261333a015260008181610e230152818161356001526135870152614a566000f3fe6080604052600436106103395760003560e01c806373459455116101ab578063c0246668116100f7578063e6a9788611610095578063f044b4101161006f578063f044b41014610ba7578063f2fde38b14610bd2578063f3292bec14610bfb578063f8b45b0514610c2457610340565b8063e6a9788614610b3c578063e7c5622914610b65578063ee77a48e14610b7c57610340565b8063c8c8ebe4116100d1578063c8c8ebe414610a92578063cbc5e6e314610abd578063d4deb3b614610ae8578063dd62ed3e14610aff57610340565b8063c024666814610a29578063c3b0157b14610a52578063c4590d3f14610a6957610340565b80638de75685116101645780639554b9c01161013e5780639554b9c01461096f57806395d89b41146109985780639f7a797d146109c3578063a9059cbb146109ec57610340565b80638de75685146109025780638f2254911461092d57806392a737811461094457610340565b806373459455146107f05780637494f2491461081b5780637571336a146108465780637dcc12101461086f578063821ad4b61461089a5780638da5cb5b146108d757610340565b806331765e9b116102855780634fbee1931161022357806361a0e122116101fd57806361a0e1221461075a5780636be997381461078557806370a082311461079c578063715018a6146107d957610340565b80634fbee193146106b757806352a02337146106f45780636091d69c1461073157610340565b806349bd5a5e1161025f57806349bd5a5e146106215780634b9a19f01461064c5780634e0a54ce146106755780634e94c7701461068c57610340565b806331765e9b146105a657806331f0d293146105cf578063352233eb146105f857610340565b80631694505e116102f257806323b872dd116102cc57806323b872dd146104ea578063270d3e491461052757806327c8f83514610550578063313ce5671461057b57610340565b80631694505e1461046957806318160ddd146104945780631cce34ee146104bf57610340565b80630493a5281461034557806306fdde031461036e578063095ea7b3146103995780630cb0bfd8146103d65780630d2fca281461040157806310d5de531461042c57610340565b3661034057005b600080fd5b34801561035157600080fd5b5061036c60048036038101906103679190613984565b610c4f565b005b34801561037a57600080fd5b50610383610d45565b6040516103909190613a84565b60405180910390f35b3480156103a557600080fd5b506103c060048036038101906103bb9190613b3a565b610dd7565b6040516103cd9190613b89565b60405180910390f35b3480156103e257600080fd5b506103eb610df5565b6040516103f89190613bb3565b60405180910390f35b34801561040d57600080fd5b50610416610dfb565b6040516104239190613bb3565b60405180910390f35b34801561043857600080fd5b50610453600480360381019061044e9190613bce565b610e01565b6040516104609190613b89565b60405180910390f35b34801561047557600080fd5b5061047e610e21565b60405161048b9190613c5a565b60405180910390f35b3480156104a057600080fd5b506104a9610e45565b6040516104b69190613bb3565b60405180910390f35b3480156104cb57600080fd5b506104d4610e4f565b6040516104e19190613b89565b60405180910390f35b3480156104f657600080fd5b50610511600480360381019061050c9190613c75565b610e62565b60405161051e9190613b89565b60405180910390f35b34801561053357600080fd5b5061054e60048036038101906105499190613cc8565b610f5a565b005b34801561055c57600080fd5b50610565611024565b6040516105729190613d3e565b60405180910390f35b34801561058757600080fd5b5061059061102a565b60405161059d9190613d75565b60405180910390f35b3480156105b257600080fd5b506105cd60048036038101906105c89190613bce565b611033565b005b3480156105db57600080fd5b506105f660048036038101906105f19190613984565b61110a565b005b34801561060457600080fd5b5061061f600480360381019061061a9190613d90565b611200565b005b34801561062d57600080fd5b50610636611299565b6040516106439190613d3e565b60405180910390f35b34801561065857600080fd5b50610673600480360381019061066e9190613bce565b6112bd565b005b34801561068157600080fd5b5061068a611394565b005b34801561069857600080fd5b506106a1611479565b6040516106ae9190613bb3565b60405180910390f35b3480156106c357600080fd5b506106de60048036038101906106d99190613bce565b61147f565b6040516106eb9190613b89565b60405180910390f35b34801561070057600080fd5b5061071b60048036038101906107169190613bce565b6114d5565b6040516107289190613b89565b60405180910390f35b34801561073d57600080fd5b5061075860048036038101906107539190613dbd565b6114f5565b005b34801561076657600080fd5b5061076f61160d565b60405161077c9190613bb3565b60405180910390f35b34801561079157600080fd5b5061079a611613565b005b3480156107a857600080fd5b506107c360048036038101906107be9190613bce565b61172b565b6040516107d09190613bb3565b60405180910390f35b3480156107e557600080fd5b506107ee611773565b005b3480156107fc57600080fd5b506108056117fb565b6040516108129190613bb3565b60405180910390f35b34801561082757600080fd5b50610830611801565b60405161083d9190613b89565b60405180910390f35b34801561085257600080fd5b5061086d60048036038101906108689190613e4a565b611814565b005b34801561087b57600080fd5b506108846118eb565b6040516108919190613d3e565b60405180910390f35b3480156108a657600080fd5b506108c160048036038101906108bc9190613e8a565b611911565b6040516108ce9190613b89565b60405180910390f35b3480156108e357600080fd5b506108ec611a66565b6040516108f99190613d3e565b60405180910390f35b34801561090e57600080fd5b50610917611a90565b6040516109249190613b89565b60405180910390f35b34801561093957600080fd5b50610942611aa3565b005b34801561095057600080fd5b50610959611b70565b6040516109669190613d3e565b60405180910390f35b34801561097b57600080fd5b5061099660048036038101906109919190613984565b611b96565b005b3480156109a457600080fd5b506109ad611c8c565b6040516109ba9190613a84565b60405180910390f35b3480156109cf57600080fd5b506109ea60048036038101906109e59190613984565b611d1e565b005b3480156109f857600080fd5b50610a136004803603810190610a0e9190613b3a565b611e14565b604051610a209190613b89565b60405180910390f35b348015610a3557600080fd5b50610a506004803603810190610a4b9190613e4a565b611e32565b005b348015610a5e57600080fd5b50610a67611f57565b005b348015610a7557600080fd5b50610a906004803603810190610a8b9190613eb7565b61206f565b005b348015610a9e57600080fd5b50610aa7612123565b604051610ab49190613bb3565b60405180910390f35b348015610ac957600080fd5b50610ad2612129565b604051610adf9190613bb3565b60405180910390f35b348015610af457600080fd5b50610afd61212f565b005b348015610b0b57600080fd5b50610b266004803603810190610b219190613ef7565b612247565b604051610b339190613bb3565b60405180910390f35b348015610b4857600080fd5b50610b636004803603810190610b5e9190613984565b6122ce565b005b348015610b7157600080fd5b50610b7a6123c4565b005b348015610b8857600080fd5b50610b9161248e565b604051610b9e9190613bb3565b60405180910390f35b348015610bb357600080fd5b50610bbc612494565b604051610bc99190613b89565b60405180910390f35b348015610bde57600080fd5b50610bf96004803603810190610bf49190613bce565b612534565b005b348015610c0757600080fd5b50610c226004803603810190610c1d9190613bce565b61262c565b005b348015610c3057600080fd5b50610c39612768565b604051610c469190613bb3565b60405180910390f35b610c5761276e565b73ffffffffffffffffffffffffffffffffffffffff16610c75611a66565b73ffffffffffffffffffffffffffffffffffffffff1614610ccb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc290613f83565b60405180910390fd5b60011515841515148015610ce3575060011515831515145b8015610cf3575060011515821515145b8015610d03575060011515811515145b15610d3f576001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff0219169083151502179055505b50505050565b606060038054610d5490613fd2565b80601f0160208091040260200160405190810160405280929190818152602001828054610d8090613fd2565b8015610dcd5780601f10610da257610100808354040283529160200191610dcd565b820191906000526020600020905b815481529060010190602001808311610db057829003601f168201915b5050505050905090565b6000610deb610de461276e565b8484612776565b6001905092915050565b600c5481565b600d5481565b60136020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b600b60009054906101000a900460ff1681565b6000610e6f848484612941565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610eba61276e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3190614076565b60405180910390fd5b610f4e85610f4661276e565b858403612776565b60019150509392505050565b610f6261276e565b73ffffffffffffffffffffffffffffffffffffffff16610f80611a66565b73ffffffffffffffffffffffffffffffffffffffff1614610fd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcd90613f83565b60405180910390fd5b83600d8190555082600e81905550600e54600d54610ff491906140c5565b600c81905550816010819055508060118190555060115460105461101891906140c5565b600f8190555050505050565b61dead81565b60006012905090565b61103b61276e565b73ffffffffffffffffffffffffffffffffffffffff16611059611a66565b73ffffffffffffffffffffffffffffffffffffffff16146110af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a690613f83565b60405180910390fd5b6001601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61111261276e565b73ffffffffffffffffffffffffffffffffffffffff16611130611a66565b73ffffffffffffffffffffffffffffffffffffffff1614611186576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117d90613f83565b60405180910390fd5b6001151584151514801561119e575060011515831515145b80156111ae575060011515821515145b80156111be575060011515811515145b156111fa576001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff0219169083151502179055505b50505050565b61120861276e565b73ffffffffffffffffffffffffffffffffffffffff16611226611a66565b73ffffffffffffffffffffffffffffffffffffffff161461127c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127390613f83565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6112c561276e565b73ffffffffffffffffffffffffffffffffffffffff166112e3611a66565b73ffffffffffffffffffffffffffffffffffffffff1614611339576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133090613f83565b60405180910390fd5b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61139c61276e565b73ffffffffffffffffffffffffffffffffffffffff166113ba611a66565b73ffffffffffffffffffffffffffffffffffffffff1614611410576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140790613f83565b60405180910390fd5b6000600d819055506000600e81905550600e54600d5461143091906140c5565b600c819055506000601081905550600060118190555060115460105461145691906140c5565b600f819055506000600b60006101000a81548160ff021916908315150217905550565b60095481565b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60146020528060005260406000206000915054906101000a900460ff1681565b6114fd61276e565b73ffffffffffffffffffffffffffffffffffffffff1661151b611a66565b73ffffffffffffffffffffffffffffffffffffffff1614611571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156890613f83565b60405180910390fd5b60011515861515148015611589575060011515851515145b8015611599575060011515841515145b80156115a9575060011515831515145b80156115b9575060011515821515145b80156115c9575060011515811515145b15611605576001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff0219169083151502179055505b505050505050565b600f5481565b61161b61276e565b73ffffffffffffffffffffffffffffffffffffffff16611639611a66565b73ffffffffffffffffffffffffffffffffffffffff161461168f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168690613f83565b60405180910390fd5b6001600d819055506000600e81905550600e54600d546116af91906140c5565b600c81905550600160108190555060006011819055506011546010546116d591906140c5565b600f819055506103e860646116e8610e45565b6116f2919061411b565b6116fc91906141a4565b6008819055506103e8606461170f610e45565b611719919061411b565b61172391906141a4565b600a81905550565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61177b61276e565b73ffffffffffffffffffffffffffffffffffffffff16611799611a66565b73ffffffffffffffffffffffffffffffffffffffff16146117ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e690613f83565b60405180910390fd5b6117f96000613386565b565b60105481565b600b60029054906101000a900460ff1681565b61181c61276e565b73ffffffffffffffffffffffffffffffffffffffff1661183a611a66565b73ffffffffffffffffffffffffffffffffffffffff1614611890576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188790613f83565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061191b61276e565b73ffffffffffffffffffffffffffffffffffffffff16611939611a66565b73ffffffffffffffffffffffffffffffffffffffff161461198f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198690613f83565b60405180910390fd5b620186a0600161199d610e45565b6119a7919061411b565b6119b191906141a4565b8210156119f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ea90614247565b60405180910390fd5b6103e86005611a00610e45565b611a0a919061411b565b611a1491906141a4565b821115611a56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4d906142d9565b60405180910390fd5b8160098190555060019050919050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b60019054906101000a900460ff1681565b611aab61276e565b73ffffffffffffffffffffffffffffffffffffffff16611ac9611a66565b73ffffffffffffffffffffffffffffffffffffffff1614611b1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1690613f83565b60405180910390fd5b6000611b2a3061172b565b90506000811415611b3b5750611b6e565b6014600954611b4a919061411b565b811115611b63576014600954611b60919061411b565b90505b611b6c8161344c565b505b565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611b9e61276e565b73ffffffffffffffffffffffffffffffffffffffff16611bbc611a66565b73ffffffffffffffffffffffffffffffffffffffff1614611c12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0990613f83565b60405180910390fd5b60011515841515148015611c2a575060011515831515145b8015611c3a575060011515821515145b8015611c4a575060011515811515145b15611c86576001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff0219169083151502179055505b50505050565b606060048054611c9b90613fd2565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613fd2565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b5050505050905090565b611d2661276e565b73ffffffffffffffffffffffffffffffffffffffff16611d44611a66565b73ffffffffffffffffffffffffffffffffffffffff1614611d9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9190613f83565b60405180910390fd5b60011515841515148015611db2575060011515831515145b8015611dc2575060011515821515145b8015611dd2575060011515811515145b15611e0e576001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff0219169083151502179055505b50505050565b6000611e28611e2161276e565b8484612941565b6001905092915050565b611e3a61276e565b73ffffffffffffffffffffffffffffffffffffffff16611e58611a66565b73ffffffffffffffffffffffffffffffffffffffff1614611eae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea590613f83565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611f4b9190613b89565b60405180910390a25050565b611f5f61276e565b73ffffffffffffffffffffffffffffffffffffffff16611f7d611a66565b73ffffffffffffffffffffffffffffffffffffffff1614611fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fca90613f83565b60405180910390fd5b6005600d819055506000600e81905550600e54600d54611ff391906140c5565b600c81905550600a601081905550600060118190555060115460105461201991906140c5565b600f819055506103e8601461202c610e45565b612036919061411b565b61204091906141a4565b6008819055506103e86014612053610e45565b61205d919061411b565b61206791906141a4565b600a81905550565b61207761276e565b73ffffffffffffffffffffffffffffffffffffffff16612095611a66565b73ffffffffffffffffffffffffffffffffffffffff16146120eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e290613f83565b60405180910390fd5b670de0b6b3a7640000826120ff919061411b565b600881905550670de0b6b3a764000081612119919061411b565b600a819055505050565b60085481565b600e5481565b61213761276e565b73ffffffffffffffffffffffffffffffffffffffff16612155611a66565b73ffffffffffffffffffffffffffffffffffffffff16146121ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a290613f83565b60405180910390fd5b600a600d819055506000600e81905550600e54600d546121cb91906140c5565b600c81905550601460108190555060006011819055506011546010546121f191906140c5565b600f819055506103e8600a612204610e45565b61220e919061411b565b61221891906141a4565b6008819055506103e8600a61222b610e45565b612235919061411b565b61223f91906141a4565b600a81905550565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6122d661276e565b73ffffffffffffffffffffffffffffffffffffffff166122f4611a66565b73ffffffffffffffffffffffffffffffffffffffff161461234a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234190613f83565b60405180910390fd5b60011515841515148015612362575060011515831515145b8015612372575060011515821515145b8015612382575060011515811515145b156123be576001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff0219169083151502179055505b50505050565b6123cc61276e565b73ffffffffffffffffffffffffffffffffffffffff166123ea611a66565b73ffffffffffffffffffffffffffffffffffffffff1614612440576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243790613f83565b60405180910390fd5b6014600d819055506000600e81905550600e54600d5461246091906140c5565b600c819055506028601081905550600060118190555060115460105461248691906140c5565b600f81905550565b60115481565b600061249e61276e565b73ffffffffffffffffffffffffffffffffffffffff166124bc611a66565b73ffffffffffffffffffffffffffffffffffffffff1614612512576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250990613f83565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b61253c61276e565b73ffffffffffffffffffffffffffffffffffffffff1661255a611a66565b73ffffffffffffffffffffffffffffffffffffffff16146125b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a790613f83565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612620576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126179061436b565b60405180910390fd5b61262981613386565b50565b61263461276e565b73ffffffffffffffffffffffffffffffffffffffff16612652611a66565b73ffffffffffffffffffffffffffffffffffffffff16146126a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269f90613f83565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156127e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127dd906143fd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612856576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284d9061448f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129349190613bb3565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156129b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a890614521565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a18906145b3565b60405180910390fd5b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612ac55750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612b04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612afb9061461f565b60405180910390fd5b6000811415612b1e57612b198383600061363f565b613381565b600b60009054906101000a900460ff1615612f2857612b3b611a66565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612ba95750612b79611a66565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612be25750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c1c575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c355750600660149054906101000a900460ff16155b15612f2757600b60019054906101000a900460ff16612d2f57601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612cef5750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612d2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d259061468b565b60405180910390fd5b5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612dd45750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e7b57600854811115612e1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e159061471d565b60405180910390fd5b600a54612e2a8361172b565b82612e3591906140c5565b1115612e76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6d90614789565b60405180910390fd5b612f26565b601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612f2557600a54612ed88361172b565b82612ee391906140c5565b1115612f24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1b90614789565b60405180910390fd5b5b5b5b5b6000612f333061172b565b905060006009548210159050808015612f585750600b60029054906101000a900460ff165b8015612f715750600660149054906101000a900460ff16155b8015612fc857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561301e5750601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130745750601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156130b8576001600660146101000a81548160ff02191690831515021790555061309c6138c0565b6000600660146101000a81548160ff0219169083151502179055505b6000600660149054906101000a900460ff16159050601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061316e5750601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561317857600090505b6000806000831561336f577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161480156131e057506000600f54115b1561324e5761320d60646131ff600f548a61391190919063ffffffff16565b61392790919063ffffffff16565b9250600f5460115484613220919061411b565b61322a91906141a4565b9150600f546010548461323d919061411b565b61324791906141a4565b9050613316565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff161480156132ab57506000600c54115b15613315576132d860646132ca600c548a61391190919063ffffffff16565b61392790919063ffffffff16565b9250600c54600e54846132eb919061411b565b6132f591906141a4565b9150600c54600d5484613308919061411b565b61331291906141a4565b90505b5b600083111561332b5761332a89308561363f565b5b60008211156133605761335f307f00000000000000000000000000000000000000000000000000000000000000008461363f565b5b828761336c91906147a9565b96505b61337a89898961363f565b5050505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600267ffffffffffffffff811115613469576134686147dd565b5b6040519080825280602002602001820160405280156134975781602001602082028036833780820191505090505b50905030816000815181106134af576134ae61480c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106135205761351f61480c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613585307f000000000000000000000000000000000000000000000000000000000000000084612776565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635c11d79583600084600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401613609959493929190614934565b600060405180830381600087803b15801561362357600080fd5b505af1158015613637573d6000803e3d6000fd5b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156136af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136a690614521565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561371f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613716906145b3565b60405180910390fd5b61372a83838361393d565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156137b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137a790614a00565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461384391906140c5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516138a79190613bb3565b60405180910390a36138ba848484613942565b50505050565b60006138cb3061172b565b905060008114156138dc575061390f565b60146009546138eb919061411b565b811115613904576014600954613901919061411b565b90505b61390d8161344c565b505b565b6000818361391f919061411b565b905092915050565b6000818361393591906141a4565b905092915050565b505050565b505050565b600080fd5b60008115159050919050565b6139618161394c565b811461396c57600080fd5b50565b60008135905061397e81613958565b92915050565b6000806000806080858703121561399e5761399d613947565b5b60006139ac8782880161396f565b94505060206139bd8782880161396f565b93505060406139ce8782880161396f565b92505060606139df8782880161396f565b91505092959194509250565b600081519050919050565b600082825260208201905092915050565b60005b83811015613a25578082015181840152602081019050613a0a565b83811115613a34576000848401525b50505050565b6000601f19601f8301169050919050565b6000613a56826139eb565b613a6081856139f6565b9350613a70818560208601613a07565b613a7981613a3a565b840191505092915050565b60006020820190508181036000830152613a9e8184613a4b565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613ad182613aa6565b9050919050565b613ae181613ac6565b8114613aec57600080fd5b50565b600081359050613afe81613ad8565b92915050565b6000819050919050565b613b1781613b04565b8114613b2257600080fd5b50565b600081359050613b3481613b0e565b92915050565b60008060408385031215613b5157613b50613947565b5b6000613b5f85828601613aef565b9250506020613b7085828601613b25565b9150509250929050565b613b838161394c565b82525050565b6000602082019050613b9e6000830184613b7a565b92915050565b613bad81613b04565b82525050565b6000602082019050613bc86000830184613ba4565b92915050565b600060208284031215613be457613be3613947565b5b6000613bf284828501613aef565b91505092915050565b6000819050919050565b6000613c20613c1b613c1684613aa6565b613bfb565b613aa6565b9050919050565b6000613c3282613c05565b9050919050565b6000613c4482613c27565b9050919050565b613c5481613c39565b82525050565b6000602082019050613c6f6000830184613c4b565b92915050565b600080600060608486031215613c8e57613c8d613947565b5b6000613c9c86828701613aef565b9350506020613cad86828701613aef565b9250506040613cbe86828701613b25565b9150509250925092565b60008060008060808587031215613ce257613ce1613947565b5b6000613cf087828801613b25565b9450506020613d0187828801613b25565b9350506040613d1287828801613b25565b9250506060613d2387828801613b25565b91505092959194509250565b613d3881613ac6565b82525050565b6000602082019050613d536000830184613d2f565b92915050565b600060ff82169050919050565b613d6f81613d59565b82525050565b6000602082019050613d8a6000830184613d66565b92915050565b600060208284031215613da657613da5613947565b5b6000613db48482850161396f565b91505092915050565b60008060008060008060c08789031215613dda57613dd9613947565b5b6000613de889828a0161396f565b9650506020613df989828a0161396f565b9550506040613e0a89828a0161396f565b9450506060613e1b89828a0161396f565b9350506080613e2c89828a0161396f565b92505060a0613e3d89828a0161396f565b9150509295509295509295565b60008060408385031215613e6157613e60613947565b5b6000613e6f85828601613aef565b9250506020613e808582860161396f565b9150509250929050565b600060208284031215613ea057613e9f613947565b5b6000613eae84828501613b25565b91505092915050565b60008060408385031215613ece57613ecd613947565b5b6000613edc85828601613b25565b9250506020613eed85828601613b25565b9150509250929050565b60008060408385031215613f0e57613f0d613947565b5b6000613f1c85828601613aef565b9250506020613f2d85828601613aef565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613f6d6020836139f6565b9150613f7882613f37565b602082019050919050565b60006020820190508181036000830152613f9c81613f60565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613fea57607f821691505b60208210811415613ffe57613ffd613fa3565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006140606028836139f6565b915061406b82614004565b604082019050919050565b6000602082019050818103600083015261408f81614053565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006140d082613b04565b91506140db83613b04565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156141105761410f614096565b5b828201905092915050565b600061412682613b04565b915061413183613b04565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561416a57614169614096565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006141af82613b04565b91506141ba83613b04565b9250826141ca576141c9614175565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006142316035836139f6565b915061423c826141d5565b604082019050919050565b6000602082019050818103600083015261426081614224565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006142c36034836139f6565b91506142ce82614267565b604082019050919050565b600060208201905081810360008301526142f2816142b6565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006143556026836139f6565b9150614360826142f9565b604082019050919050565b6000602082019050818103600083015261438481614348565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006143e76024836139f6565b91506143f28261438b565b604082019050919050565b60006020820190508181036000830152614416816143da565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006144796022836139f6565b91506144848261441d565b604082019050919050565b600060208201905081810360008301526144a88161446c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061450b6025836139f6565b9150614516826144af565b604082019050919050565b6000602082019050818103600083015261453a816144fe565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061459d6023836139f6565b91506145a882614541565b604082019050919050565b600060208201905081810360008301526145cc81614590565b9050919050565b7f54726169746f727320617265206e6f7420616c6c6f7765640000000000000000600082015250565b60006146096018836139f6565b9150614614826145d3565b602082019050919050565b60006020820190508181036000830152614638816145fc565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006146756016836139f6565b91506146808261463f565b602082019050919050565b600060208201905081810360008301526146a481614668565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006147076035836139f6565b9150614712826146ab565b604082019050919050565b60006020820190508181036000830152614736816146fa565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006147736013836139f6565b915061477e8261473d565b602082019050919050565b600060208201905081810360008301526147a281614766565b9050919050565b60006147b482613b04565b91506147bf83613b04565b9250828210156147d2576147d1614096565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b600061486061485b6148568461483b565b613bfb565b613b04565b9050919050565b61487081614845565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6148ab81613ac6565b82525050565b60006148bd83836148a2565b60208301905092915050565b6000602082019050919050565b60006148e182614876565b6148eb8185614881565b93506148f683614892565b8060005b8381101561492757815161490e88826148b1565b9750614919836148c9565b9250506001810190506148fa565b5085935050505092915050565b600060a0820190506149496000830188613ba4565b6149566020830187614867565b818103604083015261496881866148d6565b90506149776060830185613d2f565b6149846080830184613ba4565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006149ea6026836139f6565b91506149f58261498e565b604082019050919050565b60006020820190508181036000830152614a19816149dd565b905091905056fea26469706673582212203d68909cd910fd060c36b411b0f196d5276049669082a9d60711191e53b7263b64736f6c634300080a0033

Deployed Bytecode

0x6080604052600436106103395760003560e01c806373459455116101ab578063c0246668116100f7578063e6a9788611610095578063f044b4101161006f578063f044b41014610ba7578063f2fde38b14610bd2578063f3292bec14610bfb578063f8b45b0514610c2457610340565b8063e6a9788614610b3c578063e7c5622914610b65578063ee77a48e14610b7c57610340565b8063c8c8ebe4116100d1578063c8c8ebe414610a92578063cbc5e6e314610abd578063d4deb3b614610ae8578063dd62ed3e14610aff57610340565b8063c024666814610a29578063c3b0157b14610a52578063c4590d3f14610a6957610340565b80638de75685116101645780639554b9c01161013e5780639554b9c01461096f57806395d89b41146109985780639f7a797d146109c3578063a9059cbb146109ec57610340565b80638de75685146109025780638f2254911461092d57806392a737811461094457610340565b806373459455146107f05780637494f2491461081b5780637571336a146108465780637dcc12101461086f578063821ad4b61461089a5780638da5cb5b146108d757610340565b806331765e9b116102855780634fbee1931161022357806361a0e122116101fd57806361a0e1221461075a5780636be997381461078557806370a082311461079c578063715018a6146107d957610340565b80634fbee193146106b757806352a02337146106f45780636091d69c1461073157610340565b806349bd5a5e1161025f57806349bd5a5e146106215780634b9a19f01461064c5780634e0a54ce146106755780634e94c7701461068c57610340565b806331765e9b146105a657806331f0d293146105cf578063352233eb146105f857610340565b80631694505e116102f257806323b872dd116102cc57806323b872dd146104ea578063270d3e491461052757806327c8f83514610550578063313ce5671461057b57610340565b80631694505e1461046957806318160ddd146104945780631cce34ee146104bf57610340565b80630493a5281461034557806306fdde031461036e578063095ea7b3146103995780630cb0bfd8146103d65780630d2fca281461040157806310d5de531461042c57610340565b3661034057005b600080fd5b34801561035157600080fd5b5061036c60048036038101906103679190613984565b610c4f565b005b34801561037a57600080fd5b50610383610d45565b6040516103909190613a84565b60405180910390f35b3480156103a557600080fd5b506103c060048036038101906103bb9190613b3a565b610dd7565b6040516103cd9190613b89565b60405180910390f35b3480156103e257600080fd5b506103eb610df5565b6040516103f89190613bb3565b60405180910390f35b34801561040d57600080fd5b50610416610dfb565b6040516104239190613bb3565b60405180910390f35b34801561043857600080fd5b50610453600480360381019061044e9190613bce565b610e01565b6040516104609190613b89565b60405180910390f35b34801561047557600080fd5b5061047e610e21565b60405161048b9190613c5a565b60405180910390f35b3480156104a057600080fd5b506104a9610e45565b6040516104b69190613bb3565b60405180910390f35b3480156104cb57600080fd5b506104d4610e4f565b6040516104e19190613b89565b60405180910390f35b3480156104f657600080fd5b50610511600480360381019061050c9190613c75565b610e62565b60405161051e9190613b89565b60405180910390f35b34801561053357600080fd5b5061054e60048036038101906105499190613cc8565b610f5a565b005b34801561055c57600080fd5b50610565611024565b6040516105729190613d3e565b60405180910390f35b34801561058757600080fd5b5061059061102a565b60405161059d9190613d75565b60405180910390f35b3480156105b257600080fd5b506105cd60048036038101906105c89190613bce565b611033565b005b3480156105db57600080fd5b506105f660048036038101906105f19190613984565b61110a565b005b34801561060457600080fd5b5061061f600480360381019061061a9190613d90565b611200565b005b34801561062d57600080fd5b50610636611299565b6040516106439190613d3e565b60405180910390f35b34801561065857600080fd5b50610673600480360381019061066e9190613bce565b6112bd565b005b34801561068157600080fd5b5061068a611394565b005b34801561069857600080fd5b506106a1611479565b6040516106ae9190613bb3565b60405180910390f35b3480156106c357600080fd5b506106de60048036038101906106d99190613bce565b61147f565b6040516106eb9190613b89565b60405180910390f35b34801561070057600080fd5b5061071b60048036038101906107169190613bce565b6114d5565b6040516107289190613b89565b60405180910390f35b34801561073d57600080fd5b5061075860048036038101906107539190613dbd565b6114f5565b005b34801561076657600080fd5b5061076f61160d565b60405161077c9190613bb3565b60405180910390f35b34801561079157600080fd5b5061079a611613565b005b3480156107a857600080fd5b506107c360048036038101906107be9190613bce565b61172b565b6040516107d09190613bb3565b60405180910390f35b3480156107e557600080fd5b506107ee611773565b005b3480156107fc57600080fd5b506108056117fb565b6040516108129190613bb3565b60405180910390f35b34801561082757600080fd5b50610830611801565b60405161083d9190613b89565b60405180910390f35b34801561085257600080fd5b5061086d60048036038101906108689190613e4a565b611814565b005b34801561087b57600080fd5b506108846118eb565b6040516108919190613d3e565b60405180910390f35b3480156108a657600080fd5b506108c160048036038101906108bc9190613e8a565b611911565b6040516108ce9190613b89565b60405180910390f35b3480156108e357600080fd5b506108ec611a66565b6040516108f99190613d3e565b60405180910390f35b34801561090e57600080fd5b50610917611a90565b6040516109249190613b89565b60405180910390f35b34801561093957600080fd5b50610942611aa3565b005b34801561095057600080fd5b50610959611b70565b6040516109669190613d3e565b60405180910390f35b34801561097b57600080fd5b5061099660048036038101906109919190613984565b611b96565b005b3480156109a457600080fd5b506109ad611c8c565b6040516109ba9190613a84565b60405180910390f35b3480156109cf57600080fd5b506109ea60048036038101906109e59190613984565b611d1e565b005b3480156109f857600080fd5b50610a136004803603810190610a0e9190613b3a565b611e14565b604051610a209190613b89565b60405180910390f35b348015610a3557600080fd5b50610a506004803603810190610a4b9190613e4a565b611e32565b005b348015610a5e57600080fd5b50610a67611f57565b005b348015610a7557600080fd5b50610a906004803603810190610a8b9190613eb7565b61206f565b005b348015610a9e57600080fd5b50610aa7612123565b604051610ab49190613bb3565b60405180910390f35b348015610ac957600080fd5b50610ad2612129565b604051610adf9190613bb3565b60405180910390f35b348015610af457600080fd5b50610afd61212f565b005b348015610b0b57600080fd5b50610b266004803603810190610b219190613ef7565b612247565b604051610b339190613bb3565b60405180910390f35b348015610b4857600080fd5b50610b636004803603810190610b5e9190613984565b6122ce565b005b348015610b7157600080fd5b50610b7a6123c4565b005b348015610b8857600080fd5b50610b9161248e565b604051610b9e9190613bb3565b60405180910390f35b348015610bb357600080fd5b50610bbc612494565b604051610bc99190613b89565b60405180910390f35b348015610bde57600080fd5b50610bf96004803603810190610bf49190613bce565b612534565b005b348015610c0757600080fd5b50610c226004803603810190610c1d9190613bce565b61262c565b005b348015610c3057600080fd5b50610c39612768565b604051610c469190613bb3565b60405180910390f35b610c5761276e565b73ffffffffffffffffffffffffffffffffffffffff16610c75611a66565b73ffffffffffffffffffffffffffffffffffffffff1614610ccb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc290613f83565b60405180910390fd5b60011515841515148015610ce3575060011515831515145b8015610cf3575060011515821515145b8015610d03575060011515811515145b15610d3f576001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff0219169083151502179055505b50505050565b606060038054610d5490613fd2565b80601f0160208091040260200160405190810160405280929190818152602001828054610d8090613fd2565b8015610dcd5780601f10610da257610100808354040283529160200191610dcd565b820191906000526020600020905b815481529060010190602001808311610db057829003601f168201915b5050505050905090565b6000610deb610de461276e565b8484612776565b6001905092915050565b600c5481565b600d5481565b60136020528060005260406000206000915054906101000a900460ff1681565b7f00000000000000000000000003f7724180aa6b939894b5ca4314783b0b36b32981565b6000600254905090565b600b60009054906101000a900460ff1681565b6000610e6f848484612941565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610eba61276e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3190614076565b60405180910390fd5b610f4e85610f4661276e565b858403612776565b60019150509392505050565b610f6261276e565b73ffffffffffffffffffffffffffffffffffffffff16610f80611a66565b73ffffffffffffffffffffffffffffffffffffffff1614610fd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcd90613f83565b60405180910390fd5b83600d8190555082600e81905550600e54600d54610ff491906140c5565b600c81905550816010819055508060118190555060115460105461101891906140c5565b600f8190555050505050565b61dead81565b60006012905090565b61103b61276e565b73ffffffffffffffffffffffffffffffffffffffff16611059611a66565b73ffffffffffffffffffffffffffffffffffffffff16146110af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a690613f83565b60405180910390fd5b6001601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61111261276e565b73ffffffffffffffffffffffffffffffffffffffff16611130611a66565b73ffffffffffffffffffffffffffffffffffffffff1614611186576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117d90613f83565b60405180910390fd5b6001151584151514801561119e575060011515831515145b80156111ae575060011515821515145b80156111be575060011515811515145b156111fa576001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff0219169083151502179055505b50505050565b61120861276e565b73ffffffffffffffffffffffffffffffffffffffff16611226611a66565b73ffffffffffffffffffffffffffffffffffffffff161461127c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127390613f83565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b7f000000000000000000000000ce30ec18592d13ade3dd78a026262c368a8fe6f381565b6112c561276e565b73ffffffffffffffffffffffffffffffffffffffff166112e3611a66565b73ffffffffffffffffffffffffffffffffffffffff1614611339576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133090613f83565b60405180910390fd5b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61139c61276e565b73ffffffffffffffffffffffffffffffffffffffff166113ba611a66565b73ffffffffffffffffffffffffffffffffffffffff1614611410576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140790613f83565b60405180910390fd5b6000600d819055506000600e81905550600e54600d5461143091906140c5565b600c819055506000601081905550600060118190555060115460105461145691906140c5565b600f819055506000600b60006101000a81548160ff021916908315150217905550565b60095481565b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60146020528060005260406000206000915054906101000a900460ff1681565b6114fd61276e565b73ffffffffffffffffffffffffffffffffffffffff1661151b611a66565b73ffffffffffffffffffffffffffffffffffffffff1614611571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156890613f83565b60405180910390fd5b60011515861515148015611589575060011515851515145b8015611599575060011515841515145b80156115a9575060011515831515145b80156115b9575060011515821515145b80156115c9575060011515811515145b15611605576001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff0219169083151502179055505b505050505050565b600f5481565b61161b61276e565b73ffffffffffffffffffffffffffffffffffffffff16611639611a66565b73ffffffffffffffffffffffffffffffffffffffff161461168f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168690613f83565b60405180910390fd5b6001600d819055506000600e81905550600e54600d546116af91906140c5565b600c81905550600160108190555060006011819055506011546010546116d591906140c5565b600f819055506103e860646116e8610e45565b6116f2919061411b565b6116fc91906141a4565b6008819055506103e8606461170f610e45565b611719919061411b565b61172391906141a4565b600a81905550565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61177b61276e565b73ffffffffffffffffffffffffffffffffffffffff16611799611a66565b73ffffffffffffffffffffffffffffffffffffffff16146117ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e690613f83565b60405180910390fd5b6117f96000613386565b565b60105481565b600b60029054906101000a900460ff1681565b61181c61276e565b73ffffffffffffffffffffffffffffffffffffffff1661183a611a66565b73ffffffffffffffffffffffffffffffffffffffff1614611890576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188790613f83565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061191b61276e565b73ffffffffffffffffffffffffffffffffffffffff16611939611a66565b73ffffffffffffffffffffffffffffffffffffffff161461198f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198690613f83565b60405180910390fd5b620186a0600161199d610e45565b6119a7919061411b565b6119b191906141a4565b8210156119f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ea90614247565b60405180910390fd5b6103e86005611a00610e45565b611a0a919061411b565b611a1491906141a4565b821115611a56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4d906142d9565b60405180910390fd5b8160098190555060019050919050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b60019054906101000a900460ff1681565b611aab61276e565b73ffffffffffffffffffffffffffffffffffffffff16611ac9611a66565b73ffffffffffffffffffffffffffffffffffffffff1614611b1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1690613f83565b60405180910390fd5b6000611b2a3061172b565b90506000811415611b3b5750611b6e565b6014600954611b4a919061411b565b811115611b63576014600954611b60919061411b565b90505b611b6c8161344c565b505b565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611b9e61276e565b73ffffffffffffffffffffffffffffffffffffffff16611bbc611a66565b73ffffffffffffffffffffffffffffffffffffffff1614611c12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0990613f83565b60405180910390fd5b60011515841515148015611c2a575060011515831515145b8015611c3a575060011515821515145b8015611c4a575060011515811515145b15611c86576001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff0219169083151502179055505b50505050565b606060048054611c9b90613fd2565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613fd2565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b5050505050905090565b611d2661276e565b73ffffffffffffffffffffffffffffffffffffffff16611d44611a66565b73ffffffffffffffffffffffffffffffffffffffff1614611d9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9190613f83565b60405180910390fd5b60011515841515148015611db2575060011515831515145b8015611dc2575060011515821515145b8015611dd2575060011515811515145b15611e0e576001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff0219169083151502179055505b50505050565b6000611e28611e2161276e565b8484612941565b6001905092915050565b611e3a61276e565b73ffffffffffffffffffffffffffffffffffffffff16611e58611a66565b73ffffffffffffffffffffffffffffffffffffffff1614611eae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea590613f83565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611f4b9190613b89565b60405180910390a25050565b611f5f61276e565b73ffffffffffffffffffffffffffffffffffffffff16611f7d611a66565b73ffffffffffffffffffffffffffffffffffffffff1614611fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fca90613f83565b60405180910390fd5b6005600d819055506000600e81905550600e54600d54611ff391906140c5565b600c81905550600a601081905550600060118190555060115460105461201991906140c5565b600f819055506103e8601461202c610e45565b612036919061411b565b61204091906141a4565b6008819055506103e86014612053610e45565b61205d919061411b565b61206791906141a4565b600a81905550565b61207761276e565b73ffffffffffffffffffffffffffffffffffffffff16612095611a66565b73ffffffffffffffffffffffffffffffffffffffff16146120eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e290613f83565b60405180910390fd5b670de0b6b3a7640000826120ff919061411b565b600881905550670de0b6b3a764000081612119919061411b565b600a819055505050565b60085481565b600e5481565b61213761276e565b73ffffffffffffffffffffffffffffffffffffffff16612155611a66565b73ffffffffffffffffffffffffffffffffffffffff16146121ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a290613f83565b60405180910390fd5b600a600d819055506000600e81905550600e54600d546121cb91906140c5565b600c81905550601460108190555060006011819055506011546010546121f191906140c5565b600f819055506103e8600a612204610e45565b61220e919061411b565b61221891906141a4565b6008819055506103e8600a61222b610e45565b612235919061411b565b61223f91906141a4565b600a81905550565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6122d661276e565b73ffffffffffffffffffffffffffffffffffffffff166122f4611a66565b73ffffffffffffffffffffffffffffffffffffffff161461234a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234190613f83565b60405180910390fd5b60011515841515148015612362575060011515831515145b8015612372575060011515821515145b8015612382575060011515811515145b156123be576001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff0219169083151502179055505b50505050565b6123cc61276e565b73ffffffffffffffffffffffffffffffffffffffff166123ea611a66565b73ffffffffffffffffffffffffffffffffffffffff1614612440576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243790613f83565b60405180910390fd5b6014600d819055506000600e81905550600e54600d5461246091906140c5565b600c819055506028601081905550600060118190555060115460105461248691906140c5565b600f81905550565b60115481565b600061249e61276e565b73ffffffffffffffffffffffffffffffffffffffff166124bc611a66565b73ffffffffffffffffffffffffffffffffffffffff1614612512576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250990613f83565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b61253c61276e565b73ffffffffffffffffffffffffffffffffffffffff1661255a611a66565b73ffffffffffffffffffffffffffffffffffffffff16146125b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a790613f83565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612620576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126179061436b565b60405180910390fd5b61262981613386565b50565b61263461276e565b73ffffffffffffffffffffffffffffffffffffffff16612652611a66565b73ffffffffffffffffffffffffffffffffffffffff16146126a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269f90613f83565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156127e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127dd906143fd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612856576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284d9061448f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129349190613bb3565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156129b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a890614521565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a18906145b3565b60405180910390fd5b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612ac55750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612b04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612afb9061461f565b60405180910390fd5b6000811415612b1e57612b198383600061363f565b613381565b600b60009054906101000a900460ff1615612f2857612b3b611a66565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612ba95750612b79611a66565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612be25750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c1c575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c355750600660149054906101000a900460ff16155b15612f2757600b60019054906101000a900460ff16612d2f57601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612cef5750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612d2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d259061468b565b60405180910390fd5b5b7f000000000000000000000000ce30ec18592d13ade3dd78a026262c368a8fe6f373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612dd45750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e7b57600854811115612e1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e159061471d565b60405180910390fd5b600a54612e2a8361172b565b82612e3591906140c5565b1115612e76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6d90614789565b60405180910390fd5b612f26565b601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612f2557600a54612ed88361172b565b82612ee391906140c5565b1115612f24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1b90614789565b60405180910390fd5b5b5b5b5b6000612f333061172b565b905060006009548210159050808015612f585750600b60029054906101000a900460ff165b8015612f715750600660149054906101000a900460ff16155b8015612fc857507f000000000000000000000000ce30ec18592d13ade3dd78a026262c368a8fe6f373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561301e5750601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130745750601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156130b8576001600660146101000a81548160ff02191690831515021790555061309c6138c0565b6000600660146101000a81548160ff0219169083151502179055505b6000600660149054906101000a900460ff16159050601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061316e5750601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561317857600090505b6000806000831561336f577f000000000000000000000000ce30ec18592d13ade3dd78a026262c368a8fe6f373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161480156131e057506000600f54115b1561324e5761320d60646131ff600f548a61391190919063ffffffff16565b61392790919063ffffffff16565b9250600f5460115484613220919061411b565b61322a91906141a4565b9150600f546010548461323d919061411b565b61324791906141a4565b9050613316565b7f000000000000000000000000ce30ec18592d13ade3dd78a026262c368a8fe6f373ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff161480156132ab57506000600c54115b15613315576132d860646132ca600c548a61391190919063ffffffff16565b61392790919063ffffffff16565b9250600c54600e54846132eb919061411b565b6132f591906141a4565b9150600c54600d5484613308919061411b565b61331291906141a4565b90505b5b600083111561332b5761332a89308561363f565b5b60008211156133605761335f307f000000000000000000000000ce30ec18592d13ade3dd78a026262c368a8fe6f38461363f565b5b828761336c91906147a9565b96505b61337a89898961363f565b5050505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600267ffffffffffffffff811115613469576134686147dd565b5b6040519080825280602002602001820160405280156134975781602001602082028036833780820191505090505b50905030816000815181106134af576134ae61480c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106135205761351f61480c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613585307f00000000000000000000000003f7724180aa6b939894b5ca4314783b0b36b32984612776565b7f00000000000000000000000003f7724180aa6b939894b5ca4314783b0b36b32973ffffffffffffffffffffffffffffffffffffffff16635c11d79583600084600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401613609959493929190614934565b600060405180830381600087803b15801561362357600080fd5b505af1158015613637573d6000803e3d6000fd5b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156136af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136a690614521565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561371f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613716906145b3565b60405180910390fd5b61372a83838361393d565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156137b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137a790614a00565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461384391906140c5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516138a79190613bb3565b60405180910390a36138ba848484613942565b50505050565b60006138cb3061172b565b905060008114156138dc575061390f565b60146009546138eb919061411b565b811115613904576014600954613901919061411b565b90505b61390d8161344c565b505b565b6000818361391f919061411b565b905092915050565b6000818361393591906141a4565b905092915050565b505050565b505050565b600080fd5b60008115159050919050565b6139618161394c565b811461396c57600080fd5b50565b60008135905061397e81613958565b92915050565b6000806000806080858703121561399e5761399d613947565b5b60006139ac8782880161396f565b94505060206139bd8782880161396f565b93505060406139ce8782880161396f565b92505060606139df8782880161396f565b91505092959194509250565b600081519050919050565b600082825260208201905092915050565b60005b83811015613a25578082015181840152602081019050613a0a565b83811115613a34576000848401525b50505050565b6000601f19601f8301169050919050565b6000613a56826139eb565b613a6081856139f6565b9350613a70818560208601613a07565b613a7981613a3a565b840191505092915050565b60006020820190508181036000830152613a9e8184613a4b565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613ad182613aa6565b9050919050565b613ae181613ac6565b8114613aec57600080fd5b50565b600081359050613afe81613ad8565b92915050565b6000819050919050565b613b1781613b04565b8114613b2257600080fd5b50565b600081359050613b3481613b0e565b92915050565b60008060408385031215613b5157613b50613947565b5b6000613b5f85828601613aef565b9250506020613b7085828601613b25565b9150509250929050565b613b838161394c565b82525050565b6000602082019050613b9e6000830184613b7a565b92915050565b613bad81613b04565b82525050565b6000602082019050613bc86000830184613ba4565b92915050565b600060208284031215613be457613be3613947565b5b6000613bf284828501613aef565b91505092915050565b6000819050919050565b6000613c20613c1b613c1684613aa6565b613bfb565b613aa6565b9050919050565b6000613c3282613c05565b9050919050565b6000613c4482613c27565b9050919050565b613c5481613c39565b82525050565b6000602082019050613c6f6000830184613c4b565b92915050565b600080600060608486031215613c8e57613c8d613947565b5b6000613c9c86828701613aef565b9350506020613cad86828701613aef565b9250506040613cbe86828701613b25565b9150509250925092565b60008060008060808587031215613ce257613ce1613947565b5b6000613cf087828801613b25565b9450506020613d0187828801613b25565b9350506040613d1287828801613b25565b9250506060613d2387828801613b25565b91505092959194509250565b613d3881613ac6565b82525050565b6000602082019050613d536000830184613d2f565b92915050565b600060ff82169050919050565b613d6f81613d59565b82525050565b6000602082019050613d8a6000830184613d66565b92915050565b600060208284031215613da657613da5613947565b5b6000613db48482850161396f565b91505092915050565b60008060008060008060c08789031215613dda57613dd9613947565b5b6000613de889828a0161396f565b9650506020613df989828a0161396f565b9550506040613e0a89828a0161396f565b9450506060613e1b89828a0161396f565b9350506080613e2c89828a0161396f565b92505060a0613e3d89828a0161396f565b9150509295509295509295565b60008060408385031215613e6157613e60613947565b5b6000613e6f85828601613aef565b9250506020613e808582860161396f565b9150509250929050565b600060208284031215613ea057613e9f613947565b5b6000613eae84828501613b25565b91505092915050565b60008060408385031215613ece57613ecd613947565b5b6000613edc85828601613b25565b9250506020613eed85828601613b25565b9150509250929050565b60008060408385031215613f0e57613f0d613947565b5b6000613f1c85828601613aef565b9250506020613f2d85828601613aef565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613f6d6020836139f6565b9150613f7882613f37565b602082019050919050565b60006020820190508181036000830152613f9c81613f60565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613fea57607f821691505b60208210811415613ffe57613ffd613fa3565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006140606028836139f6565b915061406b82614004565b604082019050919050565b6000602082019050818103600083015261408f81614053565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006140d082613b04565b91506140db83613b04565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156141105761410f614096565b5b828201905092915050565b600061412682613b04565b915061413183613b04565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561416a57614169614096565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006141af82613b04565b91506141ba83613b04565b9250826141ca576141c9614175565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006142316035836139f6565b915061423c826141d5565b604082019050919050565b6000602082019050818103600083015261426081614224565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006142c36034836139f6565b91506142ce82614267565b604082019050919050565b600060208201905081810360008301526142f2816142b6565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006143556026836139f6565b9150614360826142f9565b604082019050919050565b6000602082019050818103600083015261438481614348565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006143e76024836139f6565b91506143f28261438b565b604082019050919050565b60006020820190508181036000830152614416816143da565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006144796022836139f6565b91506144848261441d565b604082019050919050565b600060208201905081810360008301526144a88161446c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061450b6025836139f6565b9150614516826144af565b604082019050919050565b6000602082019050818103600083015261453a816144fe565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061459d6023836139f6565b91506145a882614541565b604082019050919050565b600060208201905081810360008301526145cc81614590565b9050919050565b7f54726169746f727320617265206e6f7420616c6c6f7765640000000000000000600082015250565b60006146096018836139f6565b9150614614826145d3565b602082019050919050565b60006020820190508181036000830152614638816145fc565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006146756016836139f6565b91506146808261463f565b602082019050919050565b600060208201905081810360008301526146a481614668565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006147076035836139f6565b9150614712826146ab565b604082019050919050565b60006020820190508181036000830152614736816146fa565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006147736013836139f6565b915061477e8261473d565b602082019050919050565b600060208201905081810360008301526147a281614766565b9050919050565b60006147b482613b04565b91506147bf83613b04565b9250828210156147d2576147d1614096565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b600061486061485b6148568461483b565b613bfb565b613b04565b9050919050565b61487081614845565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6148ab81613ac6565b82525050565b60006148bd83836148a2565b60208301905092915050565b6000602082019050919050565b60006148e182614876565b6148eb8185614881565b93506148f683614892565b8060005b8381101561492757815161490e88826148b1565b9750614919836148c9565b9250506001810190506148fa565b5085935050505092915050565b600060a0820190506149496000830188613ba4565b6149566020830187614867565b818103604083015261496881866148d6565b90506149776060830185613d2f565b6149846080830184613ba4565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006149ea6026836139f6565b91506149f58261498e565b604082019050919050565b60006020820190508181036000830152614a19816149dd565b905091905056fea26469706673582212203d68909cd910fd060c36b411b0f196d5276049669082a9d60711191e53b7263b64736f6c634300080a0033

Deployed Bytecode Sourcemap

9515:14295:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13427:291;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3136:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4040:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10141:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10182:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10455:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9595:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3453:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10020:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4217:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15851:610;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9698:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3352:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15279:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13129:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15738:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9653:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15422:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18214:379;;;;;;;;;;;;;:::i;:::-;;9943:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18986:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10525:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14025:399;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10267:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17749:455;;;;;;;;;;;;;:::i;:::-;;3567:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1290:103;;;;;;;;;;;;;:::i;:::-;;10309:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10097:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15563:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9758:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14571:505;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1071:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10058:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23436:365;;;;;;;;;;;;;:::i;:::-;;9868:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13727:291;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3242:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12519:302;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3702:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18603:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17289:452;;;;;;;;;;;;;:::i;:::-;;15084:187;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9901:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10218:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16826:455;;;;;;;;;;;;;:::i;:::-;;3883:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12829:292;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16469:345;;;;;;;;;;;;;:::i;:::-;;10346:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14440:123;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1399:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18793:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9987:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13427:291;1215:12;:10;:12::i;:::-;1204:23;;:7;:5;:7::i;:::-;:23;;;1196:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13542:4:::1;13535:11;;:3;:11;;;:33;;;;;13564:4;13559:9;;:1;:9;;;13535:33;:60;;;;;13591:4;13581:14;;:6;:14;;;13535:60;:86;;;;;13617:4;13608:13;;:5;:13;;;13535:86;13522:189;;;13660:4;13645:12;;:19;;;;;;;;;;;;;;;;;;13693:4;13675:15;;:22;;;;;;;;;;;;;;;;;;13522:189;13427:291:::0;;;;:::o;3136:100::-;3190:13;3223:5;3216:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3136:100;:::o;4040:169::-;4123:4;4140:39;4149:12;:10;:12::i;:::-;4163:7;4172:6;4140:8;:39::i;:::-;4197:4;4190:11;;4040:169;;;;:::o;10141:34::-;;;;:::o;10182:29::-;;;;:::o;10455:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;9595:51::-;;;:::o;3453:108::-;3514:7;3541:12;;3534:19;;3453:108;:::o;10020:31::-;;;;;;;;;;;;;:::o;4217:492::-;4357:4;4374:36;4384:6;4392:9;4403:6;4374:9;:36::i;:::-;4423:24;4450:11;:19;4462:6;4450:19;;;;;;;;;;;;;;;:33;4470:12;:10;:12::i;:::-;4450:33;;;;;;;;;;;;;;;;4423:60;;4522:6;4502:16;:26;;4494:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4609:57;4618:6;4626:12;:10;:12::i;:::-;4659:6;4640:16;:25;4609:8;:57::i;:::-;4697:4;4690:11;;;4217:492;;;;;:::o;15851:610::-;1215:12;:10;:12::i;:::-;1204:23;;:7;:5;:7::i;:::-;:23;;;1196:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16098:15:::1;16081:14;:32;;;;16152:26;16124:25;:54;;;;16228:25;;16211:14;;:42;;;;:::i;:::-;16189:19;:64;;;;16292:16;16274:15;:34;;;;16348:27;16319:26;:56;;;;16427:26;;16409:15;;:44;;;;:::i;:::-;16386:20;:67;;;;15851:610:::0;;;;:::o;9698:53::-;9744:6;9698:53;:::o;3352:93::-;3410:5;3435:2;3428:9;;3352:93;:::o;15279:132::-;1215:12;:10;:12::i;:::-;1204:23;;:7;:5;:7::i;:::-;:23;;;1196:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15379:4:::1;15357:9;:19;15367:8;15357:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;15279:132:::0;:::o;13129:290::-;1215:12;:10;:12::i;:::-;1204:23;;:7;:5;:7::i;:::-;:23;;;1196:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13243:4:::1;13236:11;;:3;:11;;;:33;;;;;13265:4;13260:9;;:1;:9;;;13236:33;:60;;;;;13292:4;13282:14;;:6;:14;;;13236:60;:86;;;;;13318:4;13309:13;;:5;:13;;;13236:86;13223:189;;;13361:4;13346:12;;:19;;;;;;;;;;;;;;;;;;13394:4;13376:15;;:22;;;;;;;;;;;;;;;;;;13223:189;13129:290:::0;;;;:::o;15738:105::-;1215:12;:10;:12::i;:::-;1204:23;;:7;:5;:7::i;:::-;:23;;;1196:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15828:7:::1;15810:15;;:25;;;;;;;;;;;;;;;;;;15738:105:::0;:::o;9653:38::-;;;:::o;15422:133::-;1215:12;:10;:12::i;:::-;1204:23;;:7;:5;:7::i;:::-;:23;;;1196:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15522:5:::1;15500:9;:19;15510:8;15500:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;15422:133:::0;:::o;18214:379::-;1215:12;:10;:12::i;:::-;1204:23;;:7;:5;:7::i;:::-;:23;;;1196:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18283:1:::1;18266:14;:18;;;;18323:1;18295:25;:29;;;;18374:25;;18357:14;;:42;;;;:::i;:::-;18335:19;:64;;;;18432:1;18414:15;:19;;;;18473:1;18444:26;:30;;;;18526:26;;18508:15;;:44;;;;:::i;:::-;18485:20;:67;;;;18580:5;18565:12;;:20;;;;;;;;;;;;;;;;;;18214:379::o:0;9943:37::-;;;;:::o;18986:126::-;19052:4;19076:19;:28;19096:7;19076:28;;;;;;;;;;;;;;;;;;;;;;;;;19069:35;;18986:126;;;:::o;10525:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;14025:399::-;1215:12;:10;:12::i;:::-;1204:23;;:7;:5;:7::i;:::-;:23;;;1196:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14180:4:::1;14171:13;;:5;:13;;;:37;;;;;14204:4;14197:11;;:3;:11;;;14171:37;:68;;;;;14235:4;14221:18;;:10;:18;;;14171:68;:102;;;;;14269:4;14261:12;;:4;:12;;;14171:102;:125;;;;;14292:4;14286:10;;:2;:10;;;14171:125;:156;;;;;14323:4;14309:18;;:10;:18;;;14171:156;14158:259;;;14366:4;14351:12;;:19;;;;;;;;;;;;;;;;;;14399:4;14381:15;;:22;;;;;;;;;;;;;;;;;;14158:259;14025:399:::0;;;;;;:::o;10267:35::-;;;;:::o;17749:455::-;1215:12;:10;:12::i;:::-;1204:23;;:7;:5;:7::i;:::-;:23;;;1196:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17815:1:::1;17798:14;:18;;;;17855:1;17827:25;:29;;;;17906:25;;17889:14;;:42;;;;:::i;:::-;17867:19;:64;;;;17964:1;17946:15;:19;;;;18005:1;17976:26;:30;;;;18058:26;;18040:15;;:44;;;;:::i;:::-;18017:20;:67;;;;18143:4;18137:3;18121:13;:11;:13::i;:::-;:19;;;;:::i;:::-;:26;;;;:::i;:::-;18097:20;:50;;;;18192:4;18186:3;18170:13;:11;:13::i;:::-;:19;;;;:::i;:::-;:26;;;;:::i;:::-;18158:9;:38;;;;17749:455::o:0;3567:127::-;3641:7;3668:9;:18;3678:7;3668:18;;;;;;;;;;;;;;;;3661:25;;3567:127;;;:::o;1290:103::-;1215:12;:10;:12::i;:::-;1204:23;;:7;:5;:7::i;:::-;:23;;;1196:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1355:30:::1;1382:1;1355:18;:30::i;:::-;1290:103::o:0;10309:30::-;;;;:::o;10097:35::-;;;;;;;;;;;;;:::o;15563:167::-;1215:12;:10;:12::i;:::-;1204:23;;:7;:5;:7::i;:::-;:23;;;1196:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15718:4:::1;15676:31;:39;15708:6;15676:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;15563:167:::0;;:::o;9758:71::-;;;;;;;;;;;;;:::o;14571:505::-;14683:4;1215:12;:10;:12::i;:::-;1204:23;;:7;:5;:7::i;:::-;:23;;;1196:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14762:6:::1;14757:1;14741:13;:11;:13::i;:::-;:17;;;;:::i;:::-;14740:28;;;;:::i;:::-;14727:9;:41;;14705:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;14917:4;14912:1;14896:13;:11;:13::i;:::-;:17;;;;:::i;:::-;14895:26;;;;:::i;:::-;14882:9;:39;;14860:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;15037:9;15012:22;:34;;;;15064:4;15057:11;;14571:505:::0;;;:::o;1071:87::-;1117:7;1144:6;;;;;;;;;;;1137:13;;1071:87;:::o;10058:32::-;;;;;;;;;;;;;:::o;23436:365::-;1215:12;:10;:12::i;:::-;1204:23;;:7;:5;:7::i;:::-;:23;;;1196:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23493:23:::1;23519:24;23537:4;23519:9;:24::i;:::-;23493:50;;23577:1;23558:15;:20;23554:59;;;23595:7;;;23554:59;23672:2;23647:22;;:27;;;;:::i;:::-;23629:15;:45;23625:123;;;23734:2;23709:22;;:27;;;;:::i;:::-;23691:45;;23625:123;23760:33;23777:15;23760:16;:33::i;:::-;23482:319;1275:1;23436:365::o:0;9868:24::-;;;;;;;;;;;;;:::o;13727:291::-;1215:12;:10;:12::i;:::-;1204:23;;:7;:5;:7::i;:::-;:23;;;1196:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13842:4:::1;13835:11;;:3;:11;;;:33;;;;;13864:4;13859:9;;:1;:9;;;13835:33;:60;;;;;13891:4;13881:14;;:6;:14;;;13835:60;:86;;;;;13917:4;13908:13;;:5;:13;;;13835:86;13822:189;;;13960:4;13945:12;;:19;;;;;;;;;;;;;;;;;;13993:4;13975:15;;:22;;;;;;;;;;;;;;;;;;13822:189;13727:291:::0;;;;:::o;3242:104::-;3298:13;3331:7;3324:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3242:104;:::o;12519:302::-;1215:12;:10;:12::i;:::-;1204:23;;:7;:5;:7::i;:::-;:23;;;1196:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12635:4:::1;12628:11;;:3;:11;;;:33;;;;;12657:4;12652:9;;:1;:9;;;12628:33;:60;;;;;12684:4;12674:14;;:6;:14;;;12628:60;:86;;;;;12710:4;12701:13;;:5;:13;;;12628:86;12615:189;;;12753:4;12738:12;;:19;;;;;;;;;;;;;;;;;;12786:4;12768:15;;:22;;;;;;;;;;;;;;;;;;12615:189;12519:302:::0;;;;:::o;3702:175::-;3788:4;3805:42;3815:12;:10;:12::i;:::-;3829:9;3840:6;3805:9;:42::i;:::-;3865:4;3858:11;;3702:175;;;;:::o;18603:182::-;1215:12;:10;:12::i;:::-;1204:23;;:7;:5;:7::i;:::-;:23;;;1196:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18719:8:::1;18688:19;:28;18708:7;18688:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;18759:7;18743:34;;;18768:8;18743:34;;;;;;:::i;:::-;;;;;;;;18603:182:::0;;:::o;17289:452::-;1215:12;:10;:12::i;:::-;1204:23;;:7;:5;:7::i;:::-;:23;;;1196:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17355:1:::1;17338:14;:18;;;;17395:1;17367:25;:29;;;;17446:25;;17429:14;;:42;;;;:::i;:::-;17407:19;:64;;;;17504:2;17486:15;:20;;;;17546:1;17517:26;:30;;;;17599:26;;17581:15;;:44;;;;:::i;:::-;17558:20;:67;;;;17681:4;17676:2;17660:13;:11;:13::i;:::-;:18;;;;:::i;:::-;:25;;;;:::i;:::-;17636:20;:49;;;;17729:4;17724:2;17708:13;:11;:13::i;:::-;:18;;;;:::i;:::-;:25;;;;:::i;:::-;17696:9;:37;;;;17289:452::o:0;15084:187::-;1215:12;:10;:12::i;:::-;1204:23;;:7;:5;:7::i;:::-;:23;;;1196:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15216:6:::1;15201:11;:22;;;;:::i;:::-;15178:20;:45;;;;15256:6;15246;:17;;;;:::i;:::-;15234:9;:29;;;;15084:187:::0;;:::o;9901:35::-;;;;:::o;10218:40::-;;;;:::o;16826:455::-;1215:12;:10;:12::i;:::-;1204:23;;:7;:5;:7::i;:::-;:23;;;1196:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16892:2:::1;16875:14;:19;;;;16933:1;16905:25;:29;;;;16984:25;;16967:14;;:42;;;;:::i;:::-;16945:19;:64;;;;17042:2;17024:15;:20;;;;17084:1;17055:26;:30;;;;17137:26;;17119:15;;:44;;;;:::i;:::-;17096:20;:67;;;;17221:4;17216:2;17200:13;:11;:13::i;:::-;:18;;;;:::i;:::-;:25;;;;:::i;:::-;17176:20;:49;;;;17269:4;17264:2;17248:13;:11;:13::i;:::-;:18;;;;:::i;:::-;:25;;;;:::i;:::-;17236:9;:37;;;;16826:455::o:0;3883:151::-;3972:7;3999:11;:18;4011:5;3999:18;;;;;;;;;;;;;;;:27;4018:7;3999:27;;;;;;;;;;;;;;;;3992:34;;3883:151;;;;:::o;12829:292::-;1215:12;:10;:12::i;:::-;1204:23;;:7;:5;:7::i;:::-;:23;;;1196:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12945:4:::1;12938:11;;:3;:11;;;:33;;;;;12967:4;12962:9;;:1;:9;;;12938:33;:60;;;;;12994:4;12984:14;;:6;:14;;;12938:60;:86;;;;;13020:4;13011:13;;:5;:13;;;12938:86;12925:189;;;13063:4;13048:12;;:19;;;;;;;;;;;;;;;;;;13096:4;13078:15;;:22;;;;;;;;;;;;;;;;;;12925:189;12829:292:::0;;;;:::o;16469:345::-;1215:12;:10;:12::i;:::-;1204:23;;:7;:5;:7::i;:::-;:23;;;1196:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16535:2:::1;16518:14;:19;;;;16576:1;16548:25;:29;;;;16627:25;;16610:14;;:42;;;;:::i;:::-;16588:19;:64;;;;16685:2;16667:15;:20;;;;16727:1;16698:26;:30;;;;16780:26;;16762:15;;:44;;;;:::i;:::-;16739:20;:67;;;;16469:345::o:0;10346:41::-;;;;:::o;14440:123::-;14496:4;1215:12;:10;:12::i;:::-;1204:23;;:7;:5;:7::i;:::-;:23;;;1196:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14528:5:::1;14513:12;;:20;;;;;;;;;;;;;;;;;;14551:4;14544:11;;14440:123:::0;:::o;1399:201::-;1215:12;:10;:12::i;:::-;1204:23;;:7;:5;:7::i;:::-;:23;;;1196:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1508:1:::1;1488:22;;:8;:22;;;;1480:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1564:28;1583:8;1564:18;:28::i;:::-;1399:201:::0;:::o;18793:183::-;1215:12;:10;:12::i;:::-;1204:23;;:7;:5;:7::i;:::-;:23;;;1196:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18926:9:::1;;;;;;;;;;;18898:38;;18915:9;18898:38;;;;;;;;;;;;18959:9;18947;;:21;;;;;;;;;;;;;;;;;;18793:183:::0;:::o;9987:24::-;;;;:::o;619:98::-;672:7;699:10;692:17;;619:98;:::o;5865:380::-;6018:1;6001:19;;:5;:19;;;;5993:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6099:1;6080:21;;:7;:21;;;;6072:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6183:6;6153:11;:18;6165:5;6153:18;;;;;;;;;;;;;;;:27;6172:7;6153:27;;;;;;;;;;;;;;;:36;;;;6221:7;6205:32;;6214:5;6205:32;;;6230:6;6205:32;;;;;;:::i;:::-;;;;;;;;5865:380;;;:::o;19120:3482::-;19268:1;19252:18;;:4;:18;;;;19244:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19345:1;19331:16;;:2;:16;;;;19323:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19407:9;:15;19417:4;19407:15;;;;;;;;;;;;;;;;;;;;;;;;;19406:16;:34;;;;;19427:9;:13;19437:2;19427:13;;;;;;;;;;;;;;;;;;;;;;;;;19426:14;19406:34;19398:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;19494:1;19484:6;:11;19480:93;;;19512:28;19528:4;19534:2;19538:1;19512:15;:28::i;:::-;19555:7;;19480:93;19589:12;;;;;;;;;;;19585:1267;;;19648:7;:5;:7::i;:::-;19640:15;;:4;:15;;;;:49;;;;;19682:7;:5;:7::i;:::-;19676:13;;:2;:13;;;;19640:49;:86;;;;;19724:1;19710:16;;:2;:16;;;;19640:86;:128;;;;;19761:6;19747:21;;:2;:21;;;;19640:128;:158;;;;;19790:8;;;;;;;;;;;19789:9;19640:158;19618:1223;;;19838:12;;;;;;;;;;;19833:222;;19909:19;:25;19929:4;19909:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;19938:19;:23;19958:2;19938:23;;;;;;;;;;;;;;;;;;;;;;;;;19909:52;19875:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;19833:222;20109:13;20101:21;;:4;:21;;;:82;;;;;20148:31;:35;20180:2;20148:35;;;;;;;;;;;;;;;;;;;;;;;;;20147:36;20101:82;20075:751;;;20270:20;;20260:6;:30;;20226:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;20478:9;;20461:13;20471:2;20461:9;:13::i;:::-;20452:6;:22;;;;:::i;:::-;:35;;20418:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;20075:751;;;20606:31;:35;20638:2;20606:35;;;;;;;;;;;;;;;;;;;;;;;;;20601:225;;20726:9;;20709:13;20719:2;20709:9;:13::i;:::-;20700:6;:22;;;;:::i;:::-;:35;;20666:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;20601:225;20075:751;19618:1223;19585:1267;20864:28;20895:24;20913:4;20895:9;:24::i;:::-;20864:55;;20932:12;20971:22;;20947:20;:46;;20932:61;;21024:7;:39;;;;;21048:15;;;;;;;;;;;21024:39;:65;;;;;21081:8;;;;;;;;;;;21080:9;21024:65;:101;;;;;21112:13;21106:19;;:2;:19;;;21024:101;:144;;;;;21143:19;:25;21163:4;21143:25;;;;;;;;;;;;;;;;;;;;;;;;;21142:26;21024:144;:185;;;;;21186:19;:23;21206:2;21186:23;;;;;;;;;;;;;;;;;;;;;;;;;21185:24;21024:185;21006:317;;;21247:4;21236:8;;:15;;;;;;;;;;;;;;;;;;21268:10;:8;:10::i;:::-;21306:5;21295:8;;:16;;;;;;;;;;;;;;;;;;21006:317;21335:12;21351:8;;;;;;;;;;;21350:9;21335:24;;21374:19;:25;21394:4;21374:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;21403:19;:23;21423:2;21403:23;;;;;;;;;;;;;;;;;;;;;;;;;21374:52;21370:100;;;21453:5;21443:15;;21370:100;21482:12;21509:26;21550:20;21589:7;21585:964;;;21623:13;21617:19;;:2;:19;;;:47;;;;;21663:1;21640:20;;:24;21617:47;21613:646;;;21692:41;21729:3;21692:32;21703:20;;21692:6;:10;;:32;;;;:::i;:::-;:36;;:41;;;;:::i;:::-;21685:48;;21811:20;;21781:26;;21774:4;:33;;;;:::i;:::-;21773:58;;;;:::i;:::-;21752:79;;21892:20;;21873:15;;21866:4;:22;;;;:::i;:::-;21865:47;;;;:::i;:::-;21850:62;;21613:646;;;21959:13;21951:21;;:4;:21;;;:48;;;;;21998:1;21976:19;;:23;21951:48;21947:312;;;22027:40;22063:3;22027:31;22038:19;;22027:6;:10;;:31;;;;:::i;:::-;:35;;:40;;;;:::i;:::-;22020:47;;22144:19;;22115:25;;22108:4;:32;;;;:::i;:::-;22107:56;;;;:::i;:::-;22086:77;;22224:19;;22206:14;;22199:4;:21;;;;:::i;:::-;22198:45;;;;:::i;:::-;22183:60;;21947:312;21613:646;22285:1;22279:4;:7;22275:90;;;22307:42;22323:4;22337;22344;22307:15;:42::i;:::-;22275:90;22404:1;22383:18;:22;22379:128;;;22426:65;22450:4;22457:13;22472:18;22426:15;:65::i;:::-;22379:128;22533:4;22523:14;;;;;:::i;:::-;;;21585:964;22561:33;22577:4;22583:2;22587:6;22561:15;:33::i;:::-;19233:3369;;;;;;19120:3482;;;;:::o;1608:191::-;1682:16;1701:6;;;;;;;;;;;1682:25;;1727:8;1718:6;;:17;;;;;;;;;;;;;;;;;;1782:8;1751:40;;1772:8;1751:40;;;;;;;;;;;;1671:128;1608:191;:::o;22610:463::-;22676:21;22714:1;22700:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22676:40;;22745:4;22727;22732:1;22727:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;22771:11;;;;;;;;;;;22761:4;22766:1;22761:7;;;;;;;;:::i;:::-;;;;;;;:21;;;;;;;;;;;22795:62;22812:4;22827:15;22845:11;22795:8;:62::i;:::-;22870:15;:69;;;22954:11;22980:1;22996:4;23015:9;;;;;;;;;;;23039:15;22870:195;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22665:408;22610:463;:::o;4717:733::-;4875:1;4857:20;;:6;:20;;;;4849:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;4959:1;4938:23;;:9;:23;;;;4930:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5014:47;5035:6;5043:9;5054:6;5014:20;:47::i;:::-;5074:21;5098:9;:17;5108:6;5098:17;;;;;;;;;;;;;;;;5074:41;;5151:6;5134:13;:23;;5126:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5272:6;5256:13;:22;5236:9;:17;5246:6;5236:17;;;;;;;;;;;;;;;:42;;;;5324:6;5300:9;:20;5310:9;5300:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5365:9;5348:35;;5357:6;5348:35;;;5376:6;5348:35;;;;;;:::i;:::-;;;;;;;;5396:46;5416:6;5424:9;5435:6;5396:19;:46::i;:::-;4838:612;4717:733;;;:::o;23081:347::-;23120:23;23146:24;23164:4;23146:9;:24::i;:::-;23120:50;;23204:1;23185:15;:20;23181:59;;;23222:7;;;23181:59;23299:2;23274:22;;:27;;;;:::i;:::-;23256:15;:45;23252:123;;;23361:2;23336:22;;:27;;;;:::i;:::-;23318:45;;23252:123;23387:33;23404:15;23387:16;:33::i;:::-;23109:319;23081:347;:::o;7859:98::-;7917:7;7948:1;7944;:5;;;;:::i;:::-;7937:12;;7859:98;;;;:::o;7963:::-;8021:7;8052:1;8048;:5;;;;:::i;:::-;8041:12;;7963:98;;;;:::o;6253:125::-;;;;:::o;6386:124::-;;;;:::o;88:117:1:-;197:1;194;187:12;334:90;368:7;411:5;404:13;397:21;386:32;;334:90;;;:::o;430:116::-;500:21;515:5;500:21;:::i;:::-;493:5;490:32;480:60;;536:1;533;526:12;480:60;430:116;:::o;552:133::-;595:5;633:6;620:20;611:29;;649:30;673:5;649:30;:::i;:::-;552:133;;;;:::o;691:741::-;765:6;773;781;789;838:3;826:9;817:7;813:23;809:33;806:120;;;845:79;;:::i;:::-;806:120;965:1;990:50;1032:7;1023:6;1012:9;1008:22;990:50;:::i;:::-;980:60;;936:114;1089:2;1115:50;1157:7;1148:6;1137:9;1133:22;1115:50;:::i;:::-;1105:60;;1060:115;1214:2;1240:50;1282:7;1273:6;1262:9;1258:22;1240:50;:::i;:::-;1230:60;;1185:115;1339:2;1365:50;1407:7;1398:6;1387:9;1383:22;1365:50;:::i;:::-;1355:60;;1310:115;691:741;;;;;;;:::o;1438:99::-;1490:6;1524:5;1518:12;1508:22;;1438:99;;;:::o;1543:169::-;1627:11;1661:6;1656:3;1649:19;1701:4;1696:3;1692:14;1677:29;;1543:169;;;;:::o;1718:307::-;1786:1;1796:113;1810:6;1807:1;1804:13;1796:113;;;1895:1;1890:3;1886:11;1880:18;1876:1;1871:3;1867:11;1860:39;1832:2;1829:1;1825:10;1820:15;;1796:113;;;1927:6;1924:1;1921:13;1918:101;;;2007:1;1998:6;1993:3;1989:16;1982:27;1918:101;1767:258;1718:307;;;:::o;2031:102::-;2072:6;2123:2;2119:7;2114:2;2107:5;2103:14;2099:28;2089:38;;2031:102;;;:::o;2139:364::-;2227:3;2255:39;2288:5;2255:39;:::i;:::-;2310:71;2374:6;2369:3;2310:71;:::i;:::-;2303:78;;2390:52;2435:6;2430:3;2423:4;2416:5;2412:16;2390:52;:::i;:::-;2467:29;2489:6;2467:29;:::i;:::-;2462:3;2458:39;2451:46;;2231:272;2139:364;;;;:::o;2509:313::-;2622:4;2660:2;2649:9;2645:18;2637:26;;2709:9;2703:4;2699:20;2695:1;2684:9;2680:17;2673:47;2737:78;2810:4;2801:6;2737:78;:::i;:::-;2729:86;;2509:313;;;;:::o;2828:126::-;2865:7;2905:42;2898:5;2894:54;2883:65;;2828:126;;;:::o;2960:96::-;2997:7;3026:24;3044:5;3026:24;:::i;:::-;3015:35;;2960:96;;;:::o;3062:122::-;3135:24;3153:5;3135:24;:::i;:::-;3128:5;3125:35;3115:63;;3174:1;3171;3164:12;3115:63;3062:122;:::o;3190:139::-;3236:5;3274:6;3261:20;3252:29;;3290:33;3317:5;3290:33;:::i;:::-;3190:139;;;;:::o;3335:77::-;3372:7;3401:5;3390:16;;3335:77;;;:::o;3418:122::-;3491:24;3509:5;3491:24;:::i;:::-;3484:5;3481:35;3471:63;;3530:1;3527;3520:12;3471:63;3418:122;:::o;3546:139::-;3592:5;3630:6;3617:20;3608:29;;3646:33;3673:5;3646:33;:::i;:::-;3546:139;;;;:::o;3691:474::-;3759:6;3767;3816:2;3804:9;3795:7;3791:23;3787:32;3784:119;;;3822:79;;:::i;:::-;3784:119;3942:1;3967:53;4012:7;4003:6;3992:9;3988:22;3967:53;:::i;:::-;3957:63;;3913:117;4069:2;4095:53;4140:7;4131:6;4120:9;4116:22;4095:53;:::i;:::-;4085:63;;4040:118;3691:474;;;;;:::o;4171:109::-;4252:21;4267:5;4252:21;:::i;:::-;4247:3;4240:34;4171:109;;:::o;4286:210::-;4373:4;4411:2;4400:9;4396:18;4388:26;;4424:65;4486:1;4475:9;4471:17;4462:6;4424:65;:::i;:::-;4286:210;;;;:::o;4502:118::-;4589:24;4607:5;4589:24;:::i;:::-;4584:3;4577:37;4502:118;;:::o;4626:222::-;4719:4;4757:2;4746:9;4742:18;4734:26;;4770:71;4838:1;4827:9;4823:17;4814:6;4770:71;:::i;:::-;4626:222;;;;:::o;4854:329::-;4913:6;4962:2;4950:9;4941:7;4937:23;4933:32;4930:119;;;4968:79;;:::i;:::-;4930:119;5088:1;5113:53;5158:7;5149:6;5138:9;5134:22;5113:53;:::i;:::-;5103:63;;5059:117;4854:329;;;;:::o;5189:60::-;5217:3;5238:5;5231:12;;5189:60;;;:::o;5255:142::-;5305:9;5338:53;5356:34;5365:24;5383:5;5365:24;:::i;:::-;5356:34;:::i;:::-;5338:53;:::i;:::-;5325:66;;5255:142;;;:::o;5403:126::-;5453:9;5486:37;5517:5;5486:37;:::i;:::-;5473:50;;5403:126;;;:::o;5535:152::-;5611:9;5644:37;5675:5;5644:37;:::i;:::-;5631:50;;5535:152;;;:::o;5693:183::-;5806:63;5863:5;5806:63;:::i;:::-;5801:3;5794:76;5693:183;;:::o;5882:274::-;6001:4;6039:2;6028:9;6024:18;6016:26;;6052:97;6146:1;6135:9;6131:17;6122:6;6052:97;:::i;:::-;5882:274;;;;:::o;6162:619::-;6239:6;6247;6255;6304:2;6292:9;6283:7;6279:23;6275:32;6272:119;;;6310:79;;:::i;:::-;6272:119;6430:1;6455:53;6500:7;6491:6;6480:9;6476:22;6455:53;:::i;:::-;6445:63;;6401:117;6557:2;6583:53;6628:7;6619:6;6608:9;6604:22;6583:53;:::i;:::-;6573:63;;6528:118;6685:2;6711:53;6756:7;6747:6;6736:9;6732:22;6711:53;:::i;:::-;6701:63;;6656:118;6162:619;;;;;:::o;6787:765::-;6873:6;6881;6889;6897;6946:3;6934:9;6925:7;6921:23;6917:33;6914:120;;;6953:79;;:::i;:::-;6914:120;7073:1;7098:53;7143:7;7134:6;7123:9;7119:22;7098:53;:::i;:::-;7088:63;;7044:117;7200:2;7226:53;7271:7;7262:6;7251:9;7247:22;7226:53;:::i;:::-;7216:63;;7171:118;7328:2;7354:53;7399:7;7390:6;7379:9;7375:22;7354:53;:::i;:::-;7344:63;;7299:118;7456:2;7482:53;7527:7;7518:6;7507:9;7503:22;7482:53;:::i;:::-;7472:63;;7427:118;6787:765;;;;;;;:::o;7558:118::-;7645:24;7663:5;7645:24;:::i;:::-;7640:3;7633:37;7558:118;;:::o;7682:222::-;7775:4;7813:2;7802:9;7798:18;7790:26;;7826:71;7894:1;7883:9;7879:17;7870:6;7826:71;:::i;:::-;7682:222;;;;:::o;7910:86::-;7945:7;7985:4;7978:5;7974:16;7963:27;;7910:86;;;:::o;8002:112::-;8085:22;8101:5;8085:22;:::i;:::-;8080:3;8073:35;8002:112;;:::o;8120:214::-;8209:4;8247:2;8236:9;8232:18;8224:26;;8260:67;8324:1;8313:9;8309:17;8300:6;8260:67;:::i;:::-;8120:214;;;;:::o;8340:323::-;8396:6;8445:2;8433:9;8424:7;8420:23;8416:32;8413:119;;;8451:79;;:::i;:::-;8413:119;8571:1;8596:50;8638:7;8629:6;8618:9;8614:22;8596:50;:::i;:::-;8586:60;;8542:114;8340:323;;;;:::o;8669:1021::-;8755:6;8763;8771;8779;8787;8795;8844:3;8832:9;8823:7;8819:23;8815:33;8812:120;;;8851:79;;:::i;:::-;8812:120;8971:1;8996:50;9038:7;9029:6;9018:9;9014:22;8996:50;:::i;:::-;8986:60;;8942:114;9095:2;9121:50;9163:7;9154:6;9143:9;9139:22;9121:50;:::i;:::-;9111:60;;9066:115;9220:2;9246:50;9288:7;9279:6;9268:9;9264:22;9246:50;:::i;:::-;9236:60;;9191:115;9345:2;9371:50;9413:7;9404:6;9393:9;9389:22;9371:50;:::i;:::-;9361:60;;9316:115;9470:3;9497:50;9539:7;9530:6;9519:9;9515:22;9497:50;:::i;:::-;9487:60;;9441:116;9596:3;9623:50;9665:7;9656:6;9645:9;9641:22;9623:50;:::i;:::-;9613:60;;9567:116;8669:1021;;;;;;;;:::o;9696:468::-;9761:6;9769;9818:2;9806:9;9797:7;9793:23;9789:32;9786:119;;;9824:79;;:::i;:::-;9786:119;9944:1;9969:53;10014:7;10005:6;9994:9;9990:22;9969:53;:::i;:::-;9959:63;;9915:117;10071:2;10097:50;10139:7;10130:6;10119:9;10115:22;10097:50;:::i;:::-;10087:60;;10042:115;9696:468;;;;;:::o;10170:329::-;10229:6;10278:2;10266:9;10257:7;10253:23;10249:32;10246:119;;;10284:79;;:::i;:::-;10246:119;10404:1;10429:53;10474:7;10465:6;10454:9;10450:22;10429:53;:::i;:::-;10419:63;;10375:117;10170:329;;;;:::o;10505:474::-;10573:6;10581;10630:2;10618:9;10609:7;10605:23;10601:32;10598:119;;;10636:79;;:::i;:::-;10598:119;10756:1;10781:53;10826:7;10817:6;10806:9;10802:22;10781:53;:::i;:::-;10771:63;;10727:117;10883:2;10909:53;10954:7;10945:6;10934:9;10930:22;10909:53;:::i;:::-;10899:63;;10854:118;10505:474;;;;;:::o;10985:::-;11053:6;11061;11110:2;11098:9;11089:7;11085:23;11081:32;11078:119;;;11116:79;;:::i;:::-;11078:119;11236:1;11261:53;11306:7;11297:6;11286:9;11282:22;11261:53;:::i;:::-;11251:63;;11207:117;11363:2;11389:53;11434:7;11425:6;11414:9;11410:22;11389:53;:::i;:::-;11379:63;;11334:118;10985:474;;;;;:::o;11465:182::-;11605:34;11601:1;11593:6;11589:14;11582:58;11465:182;:::o;11653:366::-;11795:3;11816:67;11880:2;11875:3;11816:67;:::i;:::-;11809:74;;11892:93;11981:3;11892:93;:::i;:::-;12010:2;12005:3;12001:12;11994:19;;11653:366;;;:::o;12025:419::-;12191:4;12229:2;12218:9;12214:18;12206:26;;12278:9;12272:4;12268:20;12264:1;12253:9;12249:17;12242:47;12306:131;12432:4;12306:131;:::i;:::-;12298:139;;12025:419;;;:::o;12450:180::-;12498:77;12495:1;12488:88;12595:4;12592:1;12585:15;12619:4;12616:1;12609:15;12636:320;12680:6;12717:1;12711:4;12707:12;12697:22;;12764:1;12758:4;12754:12;12785:18;12775:81;;12841:4;12833:6;12829:17;12819:27;;12775:81;12903:2;12895:6;12892:14;12872:18;12869:38;12866:84;;;12922:18;;:::i;:::-;12866:84;12687:269;12636:320;;;:::o;12962:227::-;13102:34;13098:1;13090:6;13086:14;13079:58;13171:10;13166:2;13158:6;13154:15;13147:35;12962:227;:::o;13195:366::-;13337:3;13358:67;13422:2;13417:3;13358:67;:::i;:::-;13351:74;;13434:93;13523:3;13434:93;:::i;:::-;13552:2;13547:3;13543:12;13536:19;;13195:366;;;:::o;13567:419::-;13733:4;13771:2;13760:9;13756:18;13748:26;;13820:9;13814:4;13810:20;13806:1;13795:9;13791:17;13784:47;13848:131;13974:4;13848:131;:::i;:::-;13840:139;;13567:419;;;:::o;13992:180::-;14040:77;14037:1;14030:88;14137:4;14134:1;14127:15;14161:4;14158:1;14151:15;14178:305;14218:3;14237:20;14255:1;14237:20;:::i;:::-;14232:25;;14271:20;14289:1;14271:20;:::i;:::-;14266:25;;14425:1;14357:66;14353:74;14350:1;14347:81;14344:107;;;14431:18;;:::i;:::-;14344:107;14475:1;14472;14468:9;14461:16;;14178:305;;;;:::o;14489:348::-;14529:7;14552:20;14570:1;14552:20;:::i;:::-;14547:25;;14586:20;14604:1;14586:20;:::i;:::-;14581:25;;14774:1;14706:66;14702:74;14699:1;14696:81;14691:1;14684:9;14677:17;14673:105;14670:131;;;14781:18;;:::i;:::-;14670:131;14829:1;14826;14822:9;14811:20;;14489:348;;;;:::o;14843:180::-;14891:77;14888:1;14881:88;14988:4;14985:1;14978:15;15012:4;15009:1;15002:15;15029:185;15069:1;15086:20;15104:1;15086:20;:::i;:::-;15081:25;;15120:20;15138:1;15120:20;:::i;:::-;15115:25;;15159:1;15149:35;;15164:18;;:::i;:::-;15149:35;15206:1;15203;15199:9;15194:14;;15029:185;;;;:::o;15220:240::-;15360:34;15356:1;15348:6;15344:14;15337:58;15429:23;15424:2;15416:6;15412:15;15405:48;15220:240;:::o;15466:366::-;15608:3;15629:67;15693:2;15688:3;15629:67;:::i;:::-;15622:74;;15705:93;15794:3;15705:93;:::i;:::-;15823:2;15818:3;15814:12;15807:19;;15466:366;;;:::o;15838:419::-;16004:4;16042:2;16031:9;16027:18;16019:26;;16091:9;16085:4;16081:20;16077:1;16066:9;16062:17;16055:47;16119:131;16245:4;16119:131;:::i;:::-;16111:139;;15838:419;;;:::o;16263:239::-;16403:34;16399:1;16391:6;16387:14;16380:58;16472:22;16467:2;16459:6;16455:15;16448:47;16263:239;:::o;16508:366::-;16650:3;16671:67;16735:2;16730:3;16671:67;:::i;:::-;16664:74;;16747:93;16836:3;16747:93;:::i;:::-;16865:2;16860:3;16856:12;16849:19;;16508:366;;;:::o;16880:419::-;17046:4;17084:2;17073:9;17069:18;17061:26;;17133:9;17127:4;17123:20;17119:1;17108:9;17104:17;17097:47;17161:131;17287:4;17161:131;:::i;:::-;17153:139;;16880:419;;;:::o;17305:225::-;17445:34;17441:1;17433:6;17429:14;17422:58;17514:8;17509:2;17501:6;17497:15;17490:33;17305:225;:::o;17536:366::-;17678:3;17699:67;17763:2;17758:3;17699:67;:::i;:::-;17692:74;;17775:93;17864:3;17775:93;:::i;:::-;17893:2;17888:3;17884:12;17877:19;;17536:366;;;:::o;17908:419::-;18074:4;18112:2;18101:9;18097:18;18089:26;;18161:9;18155:4;18151:20;18147:1;18136:9;18132:17;18125:47;18189:131;18315:4;18189:131;:::i;:::-;18181:139;;17908:419;;;:::o;18333:223::-;18473:34;18469:1;18461:6;18457:14;18450:58;18542:6;18537:2;18529:6;18525:15;18518:31;18333:223;:::o;18562:366::-;18704:3;18725:67;18789:2;18784:3;18725:67;:::i;:::-;18718:74;;18801:93;18890:3;18801:93;:::i;:::-;18919:2;18914:3;18910:12;18903:19;;18562:366;;;:::o;18934:419::-;19100:4;19138:2;19127:9;19123:18;19115:26;;19187:9;19181:4;19177:20;19173:1;19162:9;19158:17;19151:47;19215:131;19341:4;19215:131;:::i;:::-;19207:139;;18934:419;;;:::o;19359:221::-;19499:34;19495:1;19487:6;19483:14;19476:58;19568:4;19563:2;19555:6;19551:15;19544:29;19359:221;:::o;19586:366::-;19728:3;19749:67;19813:2;19808:3;19749:67;:::i;:::-;19742:74;;19825:93;19914:3;19825:93;:::i;:::-;19943:2;19938:3;19934:12;19927:19;;19586:366;;;:::o;19958:419::-;20124:4;20162:2;20151:9;20147:18;20139:26;;20211:9;20205:4;20201:20;20197:1;20186:9;20182:17;20175:47;20239:131;20365:4;20239:131;:::i;:::-;20231:139;;19958:419;;;:::o;20383:224::-;20523:34;20519:1;20511:6;20507:14;20500:58;20592:7;20587:2;20579:6;20575:15;20568:32;20383:224;:::o;20613:366::-;20755:3;20776:67;20840:2;20835:3;20776:67;:::i;:::-;20769:74;;20852:93;20941:3;20852:93;:::i;:::-;20970:2;20965:3;20961:12;20954:19;;20613:366;;;:::o;20985:419::-;21151:4;21189:2;21178:9;21174:18;21166:26;;21238:9;21232:4;21228:20;21224:1;21213:9;21209:17;21202:47;21266:131;21392:4;21266:131;:::i;:::-;21258:139;;20985:419;;;:::o;21410:222::-;21550:34;21546:1;21538:6;21534:14;21527:58;21619:5;21614:2;21606:6;21602:15;21595:30;21410:222;:::o;21638:366::-;21780:3;21801:67;21865:2;21860:3;21801:67;:::i;:::-;21794:74;;21877:93;21966:3;21877:93;:::i;:::-;21995:2;21990:3;21986:12;21979:19;;21638:366;;;:::o;22010:419::-;22176:4;22214:2;22203:9;22199:18;22191:26;;22263:9;22257:4;22253:20;22249:1;22238:9;22234:17;22227:47;22291:131;22417:4;22291:131;:::i;:::-;22283:139;;22010:419;;;:::o;22435:174::-;22575:26;22571:1;22563:6;22559:14;22552:50;22435:174;:::o;22615:366::-;22757:3;22778:67;22842:2;22837:3;22778:67;:::i;:::-;22771:74;;22854:93;22943:3;22854:93;:::i;:::-;22972:2;22967:3;22963:12;22956:19;;22615:366;;;:::o;22987:419::-;23153:4;23191:2;23180:9;23176:18;23168:26;;23240:9;23234:4;23230:20;23226:1;23215:9;23211:17;23204:47;23268:131;23394:4;23268:131;:::i;:::-;23260:139;;22987:419;;;:::o;23412:172::-;23552:24;23548:1;23540:6;23536:14;23529:48;23412:172;:::o;23590:366::-;23732:3;23753:67;23817:2;23812:3;23753:67;:::i;:::-;23746:74;;23829:93;23918:3;23829:93;:::i;:::-;23947:2;23942:3;23938:12;23931:19;;23590:366;;;:::o;23962:419::-;24128:4;24166:2;24155:9;24151:18;24143:26;;24215:9;24209:4;24205:20;24201:1;24190:9;24186:17;24179:47;24243:131;24369:4;24243:131;:::i;:::-;24235:139;;23962:419;;;:::o;24387:240::-;24527:34;24523:1;24515:6;24511:14;24504:58;24596:23;24591:2;24583:6;24579:15;24572:48;24387:240;:::o;24633:366::-;24775:3;24796:67;24860:2;24855:3;24796:67;:::i;:::-;24789:74;;24872:93;24961:3;24872:93;:::i;:::-;24990:2;24985:3;24981:12;24974:19;;24633:366;;;:::o;25005:419::-;25171:4;25209:2;25198:9;25194:18;25186:26;;25258:9;25252:4;25248:20;25244:1;25233:9;25229:17;25222:47;25286:131;25412:4;25286:131;:::i;:::-;25278:139;;25005:419;;;:::o;25430:169::-;25570:21;25566:1;25558:6;25554:14;25547:45;25430:169;:::o;25605:366::-;25747:3;25768:67;25832:2;25827:3;25768:67;:::i;:::-;25761:74;;25844:93;25933:3;25844:93;:::i;:::-;25962:2;25957:3;25953:12;25946:19;;25605:366;;;:::o;25977:419::-;26143:4;26181:2;26170:9;26166:18;26158:26;;26230:9;26224:4;26220:20;26216:1;26205:9;26201:17;26194:47;26258:131;26384:4;26258:131;:::i;:::-;26250:139;;25977:419;;;:::o;26402:191::-;26442:4;26462:20;26480:1;26462:20;:::i;:::-;26457:25;;26496:20;26514:1;26496:20;:::i;:::-;26491:25;;26535:1;26532;26529:8;26526:34;;;26540:18;;:::i;:::-;26526:34;26585:1;26582;26578:9;26570:17;;26402:191;;;;:::o;26599:180::-;26647:77;26644:1;26637:88;26744:4;26741:1;26734:15;26768:4;26765:1;26758:15;26785:180;26833:77;26830:1;26823:88;26930:4;26927:1;26920:15;26954:4;26951:1;26944:15;26971:85;27016:7;27045:5;27034:16;;26971:85;;;:::o;27062:158::-;27120:9;27153:61;27171:42;27180:32;27206:5;27180:32;:::i;:::-;27171:42;:::i;:::-;27153:61;:::i;:::-;27140:74;;27062:158;;;:::o;27226:147::-;27321:45;27360:5;27321:45;:::i;:::-;27316:3;27309:58;27226:147;;:::o;27379:114::-;27446:6;27480:5;27474:12;27464:22;;27379:114;;;:::o;27499:184::-;27598:11;27632:6;27627:3;27620:19;27672:4;27667:3;27663:14;27648:29;;27499:184;;;;:::o;27689:132::-;27756:4;27779:3;27771:11;;27809:4;27804:3;27800:14;27792:22;;27689:132;;;:::o;27827:108::-;27904:24;27922:5;27904:24;:::i;:::-;27899:3;27892:37;27827:108;;:::o;27941:179::-;28010:10;28031:46;28073:3;28065:6;28031:46;:::i;:::-;28109:4;28104:3;28100:14;28086:28;;27941:179;;;;:::o;28126:113::-;28196:4;28228;28223:3;28219:14;28211:22;;28126:113;;;:::o;28275:732::-;28394:3;28423:54;28471:5;28423:54;:::i;:::-;28493:86;28572:6;28567:3;28493:86;:::i;:::-;28486:93;;28603:56;28653:5;28603:56;:::i;:::-;28682:7;28713:1;28698:284;28723:6;28720:1;28717:13;28698:284;;;28799:6;28793:13;28826:63;28885:3;28870:13;28826:63;:::i;:::-;28819:70;;28912:60;28965:6;28912:60;:::i;:::-;28902:70;;28758:224;28745:1;28742;28738:9;28733:14;;28698:284;;;28702:14;28998:3;28991:10;;28399:608;;;28275:732;;;;:::o;29013:831::-;29276:4;29314:3;29303:9;29299:19;29291:27;;29328:71;29396:1;29385:9;29381:17;29372:6;29328:71;:::i;:::-;29409:80;29485:2;29474:9;29470:18;29461:6;29409:80;:::i;:::-;29536:9;29530:4;29526:20;29521:2;29510:9;29506:18;29499:48;29564:108;29667:4;29658:6;29564:108;:::i;:::-;29556:116;;29682:72;29750:2;29739:9;29735:18;29726:6;29682:72;:::i;:::-;29764:73;29832:3;29821:9;29817:19;29808:6;29764:73;:::i;:::-;29013:831;;;;;;;;:::o;29850:225::-;29990:34;29986:1;29978:6;29974:14;29967:58;30059:8;30054:2;30046:6;30042:15;30035:33;29850:225;:::o;30081:366::-;30223:3;30244:67;30308:2;30303:3;30244:67;:::i;:::-;30237:74;;30320:93;30409:3;30320:93;:::i;:::-;30438:2;30433:3;30429:12;30422:19;;30081:366;;;:::o;30453:419::-;30619:4;30657:2;30646:9;30642:18;30634:26;;30706:9;30700:4;30696:20;30692:1;30681:9;30677:17;30670:47;30734:131;30860:4;30734:131;:::i;:::-;30726:139;;30453:419;;;:::o

Swarm Source

ipfs://3d68909cd910fd060c36b411b0f196d5276049669082a9d60711191e53b7263b

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  ]

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.