ETH Price: $3,384.72 (-1.54%)
Gas: 1 Gwei

Token

Rehab (RB)
 

Overview

Max Total Supply

420,000,000,000 RB

Holders

149

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
7,743,098.481008742857146108 RB

Value
$0.00
0x2c9527A086e45B7f08a2F8f181304E70A6821C51
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:
Rehab

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**
Rehab / $RB
Join the Telegram: https://t.me/Rehab_ERC

Rehab extends the Addicted ecosystem.
https://t.me/AddictedERC
https://twitter.com/AddictedErc
*/


// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.18;

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

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

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

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

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

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

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

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

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

}

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

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

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

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

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

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

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract Rehab is Context, IERC20, Ownable {
    string private constant _name = "Rehab";
    string private constant _symbol = "RB";
    uint8 private constant _decimals = 18;

    address payable private _marketingAddress = payable(0x544795f5dA099C2FE61c11c19fB796ef93b4Aa97);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

    using SafeMath for uint256;


    uint256 private constant _tTotal = 420000000000 * 10**_decimals; // total supply
    uint256 public _maxTxAmount = 8400000000 * 10**_decimals; // 2% of total supply
    uint256 public _maxWalletSize = 8400000000 * 10**_decimals; // 2% of total supply
    uint256 public _swapTokensAtAmount = 42000000 * 10**_decimals; // 0.01% of total supply

    mapping(address => bool) public bots; 
    mapping (address => uint256) public _buyMap;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);

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

    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

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

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

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

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

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

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

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

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

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

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

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

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

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

        bool takeFee = true;

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

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

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

        }

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

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

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

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

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

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

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

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

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

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

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

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

    receive() external payable {}

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

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

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

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

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

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

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

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

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

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

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

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addOnBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"removeFromBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405273544795f5da099c2fe61c11c19fb796ef93b4aa97600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460146101000a81548160ff0219169083151502179055506000600460156101000a81548160ff0219169083151502179055506001600460166101000a81548160ff0219169083151502179055506012600a620000ba91906200083c565b6401f4add400620000cc91906200088d565b6005556012600a620000df91906200083c565b6401f4add400620000f191906200088d565b6006556012600a6200010491906200083c565b630280de806200011591906200088d565b6007556012600a6200012891906200083c565b6461c9f368006200013a91906200088d565b60001962000149919062000907565b6000196200015891906200093f565b600e5560006010556005601155600060125560056013556012546014556013546015556014546016556015546017553480156200019457600080fd5b506000620001a76200067160201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600e54600a60006200025c6200067160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000340573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003669190620009e4565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f49190620009e4565b6040518363ffffffff1660e01b81526004016200041392919062000a27565b6020604051808303816000875af115801562000433573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004599190620009e4565b600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d6000620004af6200067960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620005e26200067160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a6200064191906200083c565b6461c9f368006200065391906200088d565b60405162000662919062000a65565b60405180910390a35062000a82565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200073057808604811115620007085762000707620006a2565b5b6001851615620007185780820291505b80810290506200072885620006d1565b9450620006e8565b94509492505050565b6000826200074b57600190506200081e565b816200075b57600090506200081e565b81600181146200077457600281146200077f57620007b5565b60019150506200081e565b60ff841115620007945762000793620006a2565b5b8360020a915084821115620007ae57620007ad620006a2565b5b506200081e565b5060208310610133831016604e8410600b8410161715620007ef5782820a905083811115620007e957620007e8620006a2565b5b6200081e565b620007fe8484846001620006de565b92509050818404811115620008185762000817620006a2565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620008498262000825565b915062000856836200082f565b9250620008857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000739565b905092915050565b60006200089a8262000825565b9150620008a78362000825565b9250828202620008b78162000825565b91508282048414831517620008d157620008d0620006a2565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620009148262000825565b9150620009218362000825565b925082620009345762000933620008d8565b5b828206905092915050565b60006200094c8262000825565b9150620009598362000825565b9250828203905081811115620009745762000973620006a2565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009ac826200097f565b9050919050565b620009be816200099f565b8114620009ca57600080fd5b50565b600081519050620009de81620009b3565b92915050565b600060208284031215620009fd57620009fc6200097a565b5b600062000a0d84828501620009cd565b91505092915050565b62000a21816200099f565b82525050565b600060408201905062000a3e600083018562000a16565b62000a4d602083018462000a16565b9392505050565b62000a5f8162000825565b82525050565b600060208201905062000a7c600083018462000a54565b92915050565b613e9a8062000a926000396000f3fe6080604052600436106101d15760003560e01c80637d1db4a5116100f7578063a2a957bb11610095578063c492f04611610064578063c492f0461461065d578063dd62ed3e14610686578063ea1644d5146106c3578063f2fde38b146106ec576101d8565b8063a2a957bb146105a3578063a9059cbb146105cc578063bfd7928414610609578063c3c8cd8014610646576101d8565b80638f70ccf7116100d15780638f70ccf7146104fb5780638f9a55c01461052457806395d89b411461054f57806398a5c3151461057a576101d8565b80637d1db4a5146104685780637f2feddc146104935780638da5cb5b146104d0576101d8565b806349bd5a5e1161016f5780636fc3eaec1161013e5780636fc3eaec146103d457806370a08231146103eb578063715018a61461042857806374010ece1461043f576101d8565b806349bd5a5e1461032e578063537df3b6146103595780635fff252d146103825780636d8aa8f8146103ab576101d8565b806318160ddd116101ab57806318160ddd1461027057806323b872dd1461029b5780632fd689e3146102d8578063313ce56714610303576101d8565b806306fdde03146101dd578063095ea7b3146102085780631694505e14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610715565b6040516101ff9190612bb1565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190612c7b565b610752565b60405161023c9190612cd6565b60405180910390f35b34801561025157600080fd5b5061025a610770565b6040516102679190612d50565b60405180910390f35b34801561027c57600080fd5b50610285610796565b6040516102929190612d7a565b60405180910390f35b3480156102a757600080fd5b506102c260048036038101906102bd9190612d95565b6107bb565b6040516102cf9190612cd6565b60405180910390f35b3480156102e457600080fd5b506102ed610894565b6040516102fa9190612d7a565b60405180910390f35b34801561030f57600080fd5b5061031861089a565b6040516103259190612e04565b60405180910390f35b34801561033a57600080fd5b506103436108a3565b6040516103509190612e2e565b60405180910390f35b34801561036557600080fd5b50610380600480360381019061037b9190612e49565b6108c9565b005b34801561038e57600080fd5b506103a960048036038101906103a49190612fbe565b6109b9565b005b3480156103b757600080fd5b506103d260048036038101906103cd9190613033565b610ae3565b005b3480156103e057600080fd5b506103e9610b95565b005b3480156103f757600080fd5b50610412600480360381019061040d9190612e49565b610c07565b60405161041f9190612d7a565b60405180910390f35b34801561043457600080fd5b5061043d610c58565b005b34801561044b57600080fd5b5061046660048036038101906104619190613060565b610dab565b005b34801561047457600080fd5b5061047d610e4a565b60405161048a9190612d7a565b60405180910390f35b34801561049f57600080fd5b506104ba60048036038101906104b59190612e49565b610e50565b6040516104c79190612d7a565b60405180910390f35b3480156104dc57600080fd5b506104e5610e68565b6040516104f29190612e2e565b60405180910390f35b34801561050757600080fd5b50610522600480360381019061051d9190613033565b610e91565b005b34801561053057600080fd5b50610539610f43565b6040516105469190612d7a565b60405180910390f35b34801561055b57600080fd5b50610564610f49565b6040516105719190612bb1565b60405180910390f35b34801561058657600080fd5b506105a1600480360381019061059c9190613060565b610f86565b005b3480156105af57600080fd5b506105ca60048036038101906105c5919061308d565b611025565b005b3480156105d857600080fd5b506105f360048036038101906105ee9190612c7b565b6110dc565b6040516106009190612cd6565b60405180910390f35b34801561061557600080fd5b50610630600480360381019061062b9190612e49565b6110fa565b60405161063d9190612cd6565b60405180910390f35b34801561065257600080fd5b5061065b61111a565b005b34801561066957600080fd5b50610684600480360381019061067f919061314f565b611194565b005b34801561069257600080fd5b506106ad60048036038101906106a891906131af565b6112ce565b6040516106ba9190612d7a565b60405180910390f35b3480156106cf57600080fd5b506106ea60048036038101906106e59190613060565b611355565b005b3480156106f857600080fd5b50610713600480360381019061070e9190612e49565b6113f4565b005b60606040518060400160405280600581526020017f5265686162000000000000000000000000000000000000000000000000000000815250905090565b600061076661075f6115b5565b84846115bd565b6001905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012600a6107a69190613351565b6461c9f368006107b6919061339c565b905090565b60006107c8848484611786565b610889846107d46115b5565b61088485604051806060016040528060288152602001613e3d60289139600c60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061083a6115b5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461200b9092919063ffffffff16565b6115bd565b600190509392505050565b60075481565b60006012905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108d16115b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461095e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109559061342a565b60405180910390fd5b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6109c16115b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a459061342a565b60405180910390fd5b60005b8151811015610adf57600160086000848481518110610a7357610a7261344a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610ad790613479565b915050610a51565b5050565b610aeb6115b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6f9061342a565b60405180910390fd5b80600460166101000a81548160ff02191690831515021790555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bd66115b5565b73ffffffffffffffffffffffffffffffffffffffff1614610bf657600080fd5b6000479050610c048161206f565b50565b6000610c51600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120db565b9050919050565b610c606115b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ced576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce49061342a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610db36115b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e379061342a565b60405180910390fd5b8060058190555050565b60055481565b60096020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610e996115b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1d9061342a565b60405180910390fd5b80600460146101000a81548160ff02191690831515021790555050565b60065481565b60606040518060400160405280600281526020017f5242000000000000000000000000000000000000000000000000000000000000815250905090565b610f8e6115b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461101b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110129061342a565b60405180910390fd5b8060078190555050565b61102d6115b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b19061342a565b60405180910390fd5b8360108190555082601281905550816011819055508060138190555050505050565b60006110f06110e96115b5565b8484611786565b6001905092915050565b60086020528060005260406000206000915054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661115b6115b5565b73ffffffffffffffffffffffffffffffffffffffff161461117b57600080fd5b600061118630610c07565b905061119181612149565b50565b61119c6115b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611229576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112209061342a565b60405180910390fd5b60005b838390508110156112c85781600d600086868581811061124f5761124e61344a565b5b90506020020160208101906112649190612e49565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806112c090613479565b91505061122c565b50505050565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61135d6115b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e19061342a565b60405180910390fd5b8060068190555050565b6113fc6115b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611489576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114809061342a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ef90613533565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361162c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611623906135c5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361169b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169290613657565b60405180910390fd5b80600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117799190612d7a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ec906136e9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185b9061377b565b60405180910390fd5b600081116118a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189e9061380d565b60405180910390fd5b6118af610e68565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561191d57506118ed610e68565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d0a57600460149054906101000a900460ff166119ac5761193e610e68565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146119ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a29061389f565b60405180910390fd5b5b6005548111156119f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e89061390b565b60405180910390fd5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a955750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611ad4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acb9061399d565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611b815760065481611b3684610c07565b611b4091906139bd565b10611b80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7790613a63565b60405180910390fd5b5b6000611b8c30610c07565b9050600060075482101590506005548210611ba75760055491505b808015611bc15750600460159054906101000a900460ff16155b8015611c1b5750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c335750600460169054906101000a900460ff165b8015611c895750600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611cdf5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d0757611ced82612149565b60004790506000811115611d0557611d044761206f565b5b505b50505b600060019050600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611db15750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611e645750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e635750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e725760009050611ff9565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f1d5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f35576010546014819055506011546015819055505b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611fe05750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611ff8576012546014819055506013546015819055505b5b612005848484846123c2565b50505050565b6000838311158290612053576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204a9190612bb1565b60405180910390fd5b50600083856120629190613a83565b9050809150509392505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156120d7573d6000803e3d6000fd5b5050565b6000600e54821115612122576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211990613b29565b60405180910390fd5b600061212c6123ef565b9050612141818461241a90919063ffffffff16565b915050919050565b6001600460156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561218157612180612e7b565b5b6040519080825280602002602001820160405280156121af5781602001602082028036833780820191505090505b50905030816000815181106121c7576121c661344a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561226e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122929190613b5e565b816001815181106122a6576122a561344a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061230d30600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115bd565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612371959493929190613c84565b600060405180830381600087803b15801561238b57600080fd5b505af115801561239f573d6000803e3d6000fd5b50505050506000600460156101000a81548160ff02191690831515021790555050565b806123d0576123cf612464565b5b6123db8484846124a1565b806123e9576123e861266c565b5b50505050565b60008060006123fc612680565b91509150612413818361241a90919063ffffffff16565b9250505090565b600061245c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061271e565b905092915050565b600060145414801561247857506000601554145b61249f57601454601681905550601554601781905550600060148190555060006015819055505b565b6000806000806000806124b387612781565b95509550955095509550955061251186600a60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127e990919063ffffffff16565b600a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125a685600a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461283390919063ffffffff16565b600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125f281612891565b6125fc848361294e565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126599190612d7a565b60405180910390a3505050505050505050565b601654601481905550601754601581905550565b6000806000600e54905060006012600a61269a9190613351565b6461c9f368006126aa919061339c565b90506126de6012600a6126bd9190613351565b6461c9f368006126cd919061339c565b600e5461241a90919063ffffffff16565b82101561271157600e546012600a6126f69190613351565b6461c9f36800612706919061339c565b93509350505061271a565b81819350935050505b9091565b60008083118290612765576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275c9190612bb1565b60405180910390fd5b50600083856127749190613d0d565b9050809150509392505050565b600080600080600080600080600061279e8a601454601554612988565b92509250925060006127ae6123ef565b905060008060006127c18e878787612a1e565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061282b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061200b565b905092915050565b600080828461284291906139bd565b905083811015612887576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287e90613d8a565b60405180910390fd5b8091505092915050565b600061289b6123ef565b905060006128b28284612aa790919063ffffffff16565b905061290681600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461283390919063ffffffff16565b600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61296382600e546127e990919063ffffffff16565b600e8190555061297e81600f5461283390919063ffffffff16565b600f819055505050565b6000806000806129b460646129a6888a612aa790919063ffffffff16565b61241a90919063ffffffff16565b905060006129de60646129d0888b612aa790919063ffffffff16565b61241a90919063ffffffff16565b90506000612a07826129f9858c6127e990919063ffffffff16565b6127e990919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612a378589612aa790919063ffffffff16565b90506000612a4e8689612aa790919063ffffffff16565b90506000612a658789612aa790919063ffffffff16565b90506000612a8e82612a8085876127e990919063ffffffff16565b6127e990919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612ab95760009050612b1b565b60008284612ac7919061339c565b9050828482612ad69190613d0d565b14612b16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0d90613e1c565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b5b578082015181840152602081019050612b40565b60008484015250505050565b6000601f19601f8301169050919050565b6000612b8382612b21565b612b8d8185612b2c565b9350612b9d818560208601612b3d565b612ba681612b67565b840191505092915050565b60006020820190508181036000830152612bcb8184612b78565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c1282612be7565b9050919050565b612c2281612c07565b8114612c2d57600080fd5b50565b600081359050612c3f81612c19565b92915050565b6000819050919050565b612c5881612c45565b8114612c6357600080fd5b50565b600081359050612c7581612c4f565b92915050565b60008060408385031215612c9257612c91612bdd565b5b6000612ca085828601612c30565b9250506020612cb185828601612c66565b9150509250929050565b60008115159050919050565b612cd081612cbb565b82525050565b6000602082019050612ceb6000830184612cc7565b92915050565b6000819050919050565b6000612d16612d11612d0c84612be7565b612cf1565b612be7565b9050919050565b6000612d2882612cfb565b9050919050565b6000612d3a82612d1d565b9050919050565b612d4a81612d2f565b82525050565b6000602082019050612d656000830184612d41565b92915050565b612d7481612c45565b82525050565b6000602082019050612d8f6000830184612d6b565b92915050565b600080600060608486031215612dae57612dad612bdd565b5b6000612dbc86828701612c30565b9350506020612dcd86828701612c30565b9250506040612dde86828701612c66565b9150509250925092565b600060ff82169050919050565b612dfe81612de8565b82525050565b6000602082019050612e196000830184612df5565b92915050565b612e2881612c07565b82525050565b6000602082019050612e436000830184612e1f565b92915050565b600060208284031215612e5f57612e5e612bdd565b5b6000612e6d84828501612c30565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612eb382612b67565b810181811067ffffffffffffffff82111715612ed257612ed1612e7b565b5b80604052505050565b6000612ee5612bd3565b9050612ef18282612eaa565b919050565b600067ffffffffffffffff821115612f1157612f10612e7b565b5b602082029050602081019050919050565b600080fd5b6000612f3a612f3584612ef6565b612edb565b90508083825260208201905060208402830185811115612f5d57612f5c612f22565b5b835b81811015612f865780612f728882612c30565b845260208401935050602081019050612f5f565b5050509392505050565b600082601f830112612fa557612fa4612e76565b5b8135612fb5848260208601612f27565b91505092915050565b600060208284031215612fd457612fd3612bdd565b5b600082013567ffffffffffffffff811115612ff257612ff1612be2565b5b612ffe84828501612f90565b91505092915050565b61301081612cbb565b811461301b57600080fd5b50565b60008135905061302d81613007565b92915050565b60006020828403121561304957613048612bdd565b5b60006130578482850161301e565b91505092915050565b60006020828403121561307657613075612bdd565b5b600061308484828501612c66565b91505092915050565b600080600080608085870312156130a7576130a6612bdd565b5b60006130b587828801612c66565b94505060206130c687828801612c66565b93505060406130d787828801612c66565b92505060606130e887828801612c66565b91505092959194509250565b600080fd5b60008083601f84011261310f5761310e612e76565b5b8235905067ffffffffffffffff81111561312c5761312b6130f4565b5b60208301915083602082028301111561314857613147612f22565b5b9250929050565b60008060006040848603121561316857613167612bdd565b5b600084013567ffffffffffffffff81111561318657613185612be2565b5b613192868287016130f9565b935093505060206131a58682870161301e565b9150509250925092565b600080604083850312156131c6576131c5612bdd565b5b60006131d485828601612c30565b92505060206131e585828601612c30565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561327557808604811115613251576132506131ef565b5b60018516156132605780820291505b808102905061326e8561321e565b9450613235565b94509492505050565b60008261328e576001905061334a565b8161329c576000905061334a565b81600181146132b257600281146132bc576132eb565b600191505061334a565b60ff8411156132ce576132cd6131ef565b5b8360020a9150848211156132e5576132e46131ef565b5b5061334a565b5060208310610133831016604e8410600b84101617156133205782820a90508381111561331b5761331a6131ef565b5b61334a565b61332d848484600161322b565b92509050818404811115613344576133436131ef565b5b81810290505b9392505050565b600061335c82612c45565b915061336783612de8565b92506133947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461327e565b905092915050565b60006133a782612c45565b91506133b283612c45565b92508282026133c081612c45565b915082820484148315176133d7576133d66131ef565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613414602083612b2c565b915061341f826133de565b602082019050919050565b6000602082019050818103600083015261344381613407565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061348482612c45565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036134b6576134b56131ef565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061351d602683612b2c565b9150613528826134c1565b604082019050919050565b6000602082019050818103600083015261354c81613510565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006135af602483612b2c565b91506135ba82613553565b604082019050919050565b600060208201905081810360008301526135de816135a2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613641602283612b2c565b915061364c826135e5565b604082019050919050565b6000602082019050818103600083015261367081613634565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006136d3602583612b2c565b91506136de82613677565b604082019050919050565b60006020820190508181036000830152613702816136c6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613765602383612b2c565b915061377082613709565b604082019050919050565b6000602082019050818103600083015261379481613758565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006137f7602983612b2c565b91506138028261379b565b604082019050919050565b60006020820190508181036000830152613826816137ea565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613889603f83612b2c565b91506138948261382d565b604082019050919050565b600060208201905081810360008301526138b88161387c565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006138f5601c83612b2c565b9150613900826138bf565b602082019050919050565b60006020820190508181036000830152613924816138e8565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613987602383612b2c565b91506139928261392b565b604082019050919050565b600060208201905081810360008301526139b68161397a565b9050919050565b60006139c882612c45565b91506139d383612c45565b92508282019050808211156139eb576139ea6131ef565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613a4d602383612b2c565b9150613a58826139f1565b604082019050919050565b60006020820190508181036000830152613a7c81613a40565b9050919050565b6000613a8e82612c45565b9150613a9983612c45565b9250828203905081811115613ab157613ab06131ef565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613b13602a83612b2c565b9150613b1e82613ab7565b604082019050919050565b60006020820190508181036000830152613b4281613b06565b9050919050565b600081519050613b5881612c19565b92915050565b600060208284031215613b7457613b73612bdd565b5b6000613b8284828501613b49565b91505092915050565b6000819050919050565b6000613bb0613bab613ba684613b8b565b612cf1565b612c45565b9050919050565b613bc081613b95565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613bfb81612c07565b82525050565b6000613c0d8383613bf2565b60208301905092915050565b6000602082019050919050565b6000613c3182613bc6565b613c3b8185613bd1565b9350613c4683613be2565b8060005b83811015613c77578151613c5e8882613c01565b9750613c6983613c19565b925050600181019050613c4a565b5085935050505092915050565b600060a082019050613c996000830188612d6b565b613ca66020830187613bb7565b8181036040830152613cb88186613c26565b9050613cc76060830185612e1f565b613cd46080830184612d6b565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d1882612c45565b9150613d2383612c45565b925082613d3357613d32613cde565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613d74601b83612b2c565b9150613d7f82613d3e565b602082019050919050565b60006020820190508181036000830152613da381613d67565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e06602183612b2c565b9150613e1182613daa565b604082019050919050565b60006020820190508181036000830152613e3581613df9565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b319acf41c49874e539a90b3e59c1bda312de0b8ea7aeb24b5b82eea2b4b33f264736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101d15760003560e01c80637d1db4a5116100f7578063a2a957bb11610095578063c492f04611610064578063c492f0461461065d578063dd62ed3e14610686578063ea1644d5146106c3578063f2fde38b146106ec576101d8565b8063a2a957bb146105a3578063a9059cbb146105cc578063bfd7928414610609578063c3c8cd8014610646576101d8565b80638f70ccf7116100d15780638f70ccf7146104fb5780638f9a55c01461052457806395d89b411461054f57806398a5c3151461057a576101d8565b80637d1db4a5146104685780637f2feddc146104935780638da5cb5b146104d0576101d8565b806349bd5a5e1161016f5780636fc3eaec1161013e5780636fc3eaec146103d457806370a08231146103eb578063715018a61461042857806374010ece1461043f576101d8565b806349bd5a5e1461032e578063537df3b6146103595780635fff252d146103825780636d8aa8f8146103ab576101d8565b806318160ddd116101ab57806318160ddd1461027057806323b872dd1461029b5780632fd689e3146102d8578063313ce56714610303576101d8565b806306fdde03146101dd578063095ea7b3146102085780631694505e14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610715565b6040516101ff9190612bb1565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190612c7b565b610752565b60405161023c9190612cd6565b60405180910390f35b34801561025157600080fd5b5061025a610770565b6040516102679190612d50565b60405180910390f35b34801561027c57600080fd5b50610285610796565b6040516102929190612d7a565b60405180910390f35b3480156102a757600080fd5b506102c260048036038101906102bd9190612d95565b6107bb565b6040516102cf9190612cd6565b60405180910390f35b3480156102e457600080fd5b506102ed610894565b6040516102fa9190612d7a565b60405180910390f35b34801561030f57600080fd5b5061031861089a565b6040516103259190612e04565b60405180910390f35b34801561033a57600080fd5b506103436108a3565b6040516103509190612e2e565b60405180910390f35b34801561036557600080fd5b50610380600480360381019061037b9190612e49565b6108c9565b005b34801561038e57600080fd5b506103a960048036038101906103a49190612fbe565b6109b9565b005b3480156103b757600080fd5b506103d260048036038101906103cd9190613033565b610ae3565b005b3480156103e057600080fd5b506103e9610b95565b005b3480156103f757600080fd5b50610412600480360381019061040d9190612e49565b610c07565b60405161041f9190612d7a565b60405180910390f35b34801561043457600080fd5b5061043d610c58565b005b34801561044b57600080fd5b5061046660048036038101906104619190613060565b610dab565b005b34801561047457600080fd5b5061047d610e4a565b60405161048a9190612d7a565b60405180910390f35b34801561049f57600080fd5b506104ba60048036038101906104b59190612e49565b610e50565b6040516104c79190612d7a565b60405180910390f35b3480156104dc57600080fd5b506104e5610e68565b6040516104f29190612e2e565b60405180910390f35b34801561050757600080fd5b50610522600480360381019061051d9190613033565b610e91565b005b34801561053057600080fd5b50610539610f43565b6040516105469190612d7a565b60405180910390f35b34801561055b57600080fd5b50610564610f49565b6040516105719190612bb1565b60405180910390f35b34801561058657600080fd5b506105a1600480360381019061059c9190613060565b610f86565b005b3480156105af57600080fd5b506105ca60048036038101906105c5919061308d565b611025565b005b3480156105d857600080fd5b506105f360048036038101906105ee9190612c7b565b6110dc565b6040516106009190612cd6565b60405180910390f35b34801561061557600080fd5b50610630600480360381019061062b9190612e49565b6110fa565b60405161063d9190612cd6565b60405180910390f35b34801561065257600080fd5b5061065b61111a565b005b34801561066957600080fd5b50610684600480360381019061067f919061314f565b611194565b005b34801561069257600080fd5b506106ad60048036038101906106a891906131af565b6112ce565b6040516106ba9190612d7a565b60405180910390f35b3480156106cf57600080fd5b506106ea60048036038101906106e59190613060565b611355565b005b3480156106f857600080fd5b50610713600480360381019061070e9190612e49565b6113f4565b005b60606040518060400160405280600581526020017f5265686162000000000000000000000000000000000000000000000000000000815250905090565b600061076661075f6115b5565b84846115bd565b6001905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012600a6107a69190613351565b6461c9f368006107b6919061339c565b905090565b60006107c8848484611786565b610889846107d46115b5565b61088485604051806060016040528060288152602001613e3d60289139600c60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061083a6115b5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461200b9092919063ffffffff16565b6115bd565b600190509392505050565b60075481565b60006012905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108d16115b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461095e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109559061342a565b60405180910390fd5b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6109c16115b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a459061342a565b60405180910390fd5b60005b8151811015610adf57600160086000848481518110610a7357610a7261344a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610ad790613479565b915050610a51565b5050565b610aeb6115b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6f9061342a565b60405180910390fd5b80600460166101000a81548160ff02191690831515021790555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bd66115b5565b73ffffffffffffffffffffffffffffffffffffffff1614610bf657600080fd5b6000479050610c048161206f565b50565b6000610c51600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120db565b9050919050565b610c606115b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ced576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce49061342a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610db36115b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e379061342a565b60405180910390fd5b8060058190555050565b60055481565b60096020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610e996115b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1d9061342a565b60405180910390fd5b80600460146101000a81548160ff02191690831515021790555050565b60065481565b60606040518060400160405280600281526020017f5242000000000000000000000000000000000000000000000000000000000000815250905090565b610f8e6115b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461101b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110129061342a565b60405180910390fd5b8060078190555050565b61102d6115b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b19061342a565b60405180910390fd5b8360108190555082601281905550816011819055508060138190555050505050565b60006110f06110e96115b5565b8484611786565b6001905092915050565b60086020528060005260406000206000915054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661115b6115b5565b73ffffffffffffffffffffffffffffffffffffffff161461117b57600080fd5b600061118630610c07565b905061119181612149565b50565b61119c6115b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611229576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112209061342a565b60405180910390fd5b60005b838390508110156112c85781600d600086868581811061124f5761124e61344a565b5b90506020020160208101906112649190612e49565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806112c090613479565b91505061122c565b50505050565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61135d6115b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e19061342a565b60405180910390fd5b8060068190555050565b6113fc6115b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611489576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114809061342a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ef90613533565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361162c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611623906135c5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361169b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169290613657565b60405180910390fd5b80600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117799190612d7a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ec906136e9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185b9061377b565b60405180910390fd5b600081116118a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189e9061380d565b60405180910390fd5b6118af610e68565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561191d57506118ed610e68565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d0a57600460149054906101000a900460ff166119ac5761193e610e68565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146119ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a29061389f565b60405180910390fd5b5b6005548111156119f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e89061390b565b60405180910390fd5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a955750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611ad4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acb9061399d565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611b815760065481611b3684610c07565b611b4091906139bd565b10611b80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7790613a63565b60405180910390fd5b5b6000611b8c30610c07565b9050600060075482101590506005548210611ba75760055491505b808015611bc15750600460159054906101000a900460ff16155b8015611c1b5750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c335750600460169054906101000a900460ff165b8015611c895750600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611cdf5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d0757611ced82612149565b60004790506000811115611d0557611d044761206f565b5b505b50505b600060019050600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611db15750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611e645750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e635750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e725760009050611ff9565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f1d5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f35576010546014819055506011546015819055505b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611fe05750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611ff8576012546014819055506013546015819055505b5b612005848484846123c2565b50505050565b6000838311158290612053576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204a9190612bb1565b60405180910390fd5b50600083856120629190613a83565b9050809150509392505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156120d7573d6000803e3d6000fd5b5050565b6000600e54821115612122576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211990613b29565b60405180910390fd5b600061212c6123ef565b9050612141818461241a90919063ffffffff16565b915050919050565b6001600460156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561218157612180612e7b565b5b6040519080825280602002602001820160405280156121af5781602001602082028036833780820191505090505b50905030816000815181106121c7576121c661344a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561226e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122929190613b5e565b816001815181106122a6576122a561344a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061230d30600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115bd565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612371959493929190613c84565b600060405180830381600087803b15801561238b57600080fd5b505af115801561239f573d6000803e3d6000fd5b50505050506000600460156101000a81548160ff02191690831515021790555050565b806123d0576123cf612464565b5b6123db8484846124a1565b806123e9576123e861266c565b5b50505050565b60008060006123fc612680565b91509150612413818361241a90919063ffffffff16565b9250505090565b600061245c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061271e565b905092915050565b600060145414801561247857506000601554145b61249f57601454601681905550601554601781905550600060148190555060006015819055505b565b6000806000806000806124b387612781565b95509550955095509550955061251186600a60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127e990919063ffffffff16565b600a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125a685600a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461283390919063ffffffff16565b600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125f281612891565b6125fc848361294e565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126599190612d7a565b60405180910390a3505050505050505050565b601654601481905550601754601581905550565b6000806000600e54905060006012600a61269a9190613351565b6461c9f368006126aa919061339c565b90506126de6012600a6126bd9190613351565b6461c9f368006126cd919061339c565b600e5461241a90919063ffffffff16565b82101561271157600e546012600a6126f69190613351565b6461c9f36800612706919061339c565b93509350505061271a565b81819350935050505b9091565b60008083118290612765576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275c9190612bb1565b60405180910390fd5b50600083856127749190613d0d565b9050809150509392505050565b600080600080600080600080600061279e8a601454601554612988565b92509250925060006127ae6123ef565b905060008060006127c18e878787612a1e565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061282b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061200b565b905092915050565b600080828461284291906139bd565b905083811015612887576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287e90613d8a565b60405180910390fd5b8091505092915050565b600061289b6123ef565b905060006128b28284612aa790919063ffffffff16565b905061290681600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461283390919063ffffffff16565b600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61296382600e546127e990919063ffffffff16565b600e8190555061297e81600f5461283390919063ffffffff16565b600f819055505050565b6000806000806129b460646129a6888a612aa790919063ffffffff16565b61241a90919063ffffffff16565b905060006129de60646129d0888b612aa790919063ffffffff16565b61241a90919063ffffffff16565b90506000612a07826129f9858c6127e990919063ffffffff16565b6127e990919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612a378589612aa790919063ffffffff16565b90506000612a4e8689612aa790919063ffffffff16565b90506000612a658789612aa790919063ffffffff16565b90506000612a8e82612a8085876127e990919063ffffffff16565b6127e990919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612ab95760009050612b1b565b60008284612ac7919061339c565b9050828482612ad69190613d0d565b14612b16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0d90613e1c565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b5b578082015181840152602081019050612b40565b60008484015250505050565b6000601f19601f8301169050919050565b6000612b8382612b21565b612b8d8185612b2c565b9350612b9d818560208601612b3d565b612ba681612b67565b840191505092915050565b60006020820190508181036000830152612bcb8184612b78565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c1282612be7565b9050919050565b612c2281612c07565b8114612c2d57600080fd5b50565b600081359050612c3f81612c19565b92915050565b6000819050919050565b612c5881612c45565b8114612c6357600080fd5b50565b600081359050612c7581612c4f565b92915050565b60008060408385031215612c9257612c91612bdd565b5b6000612ca085828601612c30565b9250506020612cb185828601612c66565b9150509250929050565b60008115159050919050565b612cd081612cbb565b82525050565b6000602082019050612ceb6000830184612cc7565b92915050565b6000819050919050565b6000612d16612d11612d0c84612be7565b612cf1565b612be7565b9050919050565b6000612d2882612cfb565b9050919050565b6000612d3a82612d1d565b9050919050565b612d4a81612d2f565b82525050565b6000602082019050612d656000830184612d41565b92915050565b612d7481612c45565b82525050565b6000602082019050612d8f6000830184612d6b565b92915050565b600080600060608486031215612dae57612dad612bdd565b5b6000612dbc86828701612c30565b9350506020612dcd86828701612c30565b9250506040612dde86828701612c66565b9150509250925092565b600060ff82169050919050565b612dfe81612de8565b82525050565b6000602082019050612e196000830184612df5565b92915050565b612e2881612c07565b82525050565b6000602082019050612e436000830184612e1f565b92915050565b600060208284031215612e5f57612e5e612bdd565b5b6000612e6d84828501612c30565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612eb382612b67565b810181811067ffffffffffffffff82111715612ed257612ed1612e7b565b5b80604052505050565b6000612ee5612bd3565b9050612ef18282612eaa565b919050565b600067ffffffffffffffff821115612f1157612f10612e7b565b5b602082029050602081019050919050565b600080fd5b6000612f3a612f3584612ef6565b612edb565b90508083825260208201905060208402830185811115612f5d57612f5c612f22565b5b835b81811015612f865780612f728882612c30565b845260208401935050602081019050612f5f565b5050509392505050565b600082601f830112612fa557612fa4612e76565b5b8135612fb5848260208601612f27565b91505092915050565b600060208284031215612fd457612fd3612bdd565b5b600082013567ffffffffffffffff811115612ff257612ff1612be2565b5b612ffe84828501612f90565b91505092915050565b61301081612cbb565b811461301b57600080fd5b50565b60008135905061302d81613007565b92915050565b60006020828403121561304957613048612bdd565b5b60006130578482850161301e565b91505092915050565b60006020828403121561307657613075612bdd565b5b600061308484828501612c66565b91505092915050565b600080600080608085870312156130a7576130a6612bdd565b5b60006130b587828801612c66565b94505060206130c687828801612c66565b93505060406130d787828801612c66565b92505060606130e887828801612c66565b91505092959194509250565b600080fd5b60008083601f84011261310f5761310e612e76565b5b8235905067ffffffffffffffff81111561312c5761312b6130f4565b5b60208301915083602082028301111561314857613147612f22565b5b9250929050565b60008060006040848603121561316857613167612bdd565b5b600084013567ffffffffffffffff81111561318657613185612be2565b5b613192868287016130f9565b935093505060206131a58682870161301e565b9150509250925092565b600080604083850312156131c6576131c5612bdd565b5b60006131d485828601612c30565b92505060206131e585828601612c30565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561327557808604811115613251576132506131ef565b5b60018516156132605780820291505b808102905061326e8561321e565b9450613235565b94509492505050565b60008261328e576001905061334a565b8161329c576000905061334a565b81600181146132b257600281146132bc576132eb565b600191505061334a565b60ff8411156132ce576132cd6131ef565b5b8360020a9150848211156132e5576132e46131ef565b5b5061334a565b5060208310610133831016604e8410600b84101617156133205782820a90508381111561331b5761331a6131ef565b5b61334a565b61332d848484600161322b565b92509050818404811115613344576133436131ef565b5b81810290505b9392505050565b600061335c82612c45565b915061336783612de8565b92506133947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461327e565b905092915050565b60006133a782612c45565b91506133b283612c45565b92508282026133c081612c45565b915082820484148315176133d7576133d66131ef565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613414602083612b2c565b915061341f826133de565b602082019050919050565b6000602082019050818103600083015261344381613407565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061348482612c45565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036134b6576134b56131ef565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061351d602683612b2c565b9150613528826134c1565b604082019050919050565b6000602082019050818103600083015261354c81613510565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006135af602483612b2c565b91506135ba82613553565b604082019050919050565b600060208201905081810360008301526135de816135a2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613641602283612b2c565b915061364c826135e5565b604082019050919050565b6000602082019050818103600083015261367081613634565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006136d3602583612b2c565b91506136de82613677565b604082019050919050565b60006020820190508181036000830152613702816136c6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613765602383612b2c565b915061377082613709565b604082019050919050565b6000602082019050818103600083015261379481613758565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006137f7602983612b2c565b91506138028261379b565b604082019050919050565b60006020820190508181036000830152613826816137ea565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613889603f83612b2c565b91506138948261382d565b604082019050919050565b600060208201905081810360008301526138b88161387c565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006138f5601c83612b2c565b9150613900826138bf565b602082019050919050565b60006020820190508181036000830152613924816138e8565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613987602383612b2c565b91506139928261392b565b604082019050919050565b600060208201905081810360008301526139b68161397a565b9050919050565b60006139c882612c45565b91506139d383612c45565b92508282019050808211156139eb576139ea6131ef565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613a4d602383612b2c565b9150613a58826139f1565b604082019050919050565b60006020820190508181036000830152613a7c81613a40565b9050919050565b6000613a8e82612c45565b9150613a9983612c45565b9250828203905081811115613ab157613ab06131ef565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613b13602a83612b2c565b9150613b1e82613ab7565b604082019050919050565b60006020820190508181036000830152613b4281613b06565b9050919050565b600081519050613b5881612c19565b92915050565b600060208284031215613b7457613b73612bdd565b5b6000613b8284828501613b49565b91505092915050565b6000819050919050565b6000613bb0613bab613ba684613b8b565b612cf1565b612c45565b9050919050565b613bc081613b95565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613bfb81612c07565b82525050565b6000613c0d8383613bf2565b60208301905092915050565b6000602082019050919050565b6000613c3182613bc6565b613c3b8185613bd1565b9350613c4683613be2565b8060005b83811015613c77578151613c5e8882613c01565b9750613c6983613c19565b925050600181019050613c4a565b5085935050505092915050565b600060a082019050613c996000830188612d6b565b613ca66020830187613bb7565b8181036040830152613cb88186613c26565b9050613cc76060830185612e1f565b613cd46080830184612d6b565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d1882612c45565b9150613d2383612c45565b925082613d3357613d32613cde565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613d74601b83612b2c565b9150613d7f82613d3e565b602082019050919050565b60006020820190508181036000830152613da381613d67565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e06602183612b2c565b9150613e1182613daa565b604082019050919050565b60006020820190508181036000830152613e3581613df9565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b319acf41c49874e539a90b3e59c1bda312de0b8ea7aeb24b5b82eea2b4b33f264736f6c63430008120033

Deployed Bytecode Sourcemap

4238:13380:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6683:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7608:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4529:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6960:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7809:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5022:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6869:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4577:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12959:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12777:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17000:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12573:196;;;;;;;;;;;;;:::i;:::-;;7063:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1725:148;;;;;;;;;;;;;:::i;:::-;;17140:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4850:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5161:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1511:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12259:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4935:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6774:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16809:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16466:291;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7209:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5117:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12368:197;;;;;;;;;;;;;:::i;:::-;;17379:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7416:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17256:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1881:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6683:83;6720:13;6753:5;;;;;;;;;;;;;;;;;6746:12;;6683:83;:::o;7608:193::-;7710:4;7732:39;7741:12;:10;:12::i;:::-;7755:7;7764:6;7732:8;:39::i;:::-;7789:4;7782:11;;7608:193;;;;:::o;4529:41::-;;;;;;;;;;;;;:::o;6960:95::-;7013:7;4414:2;4814;:13;;;;:::i;:::-;4799:12;:28;;;;:::i;:::-;7033:14;;6960:95;:::o;7809:446::-;7941:4;7958:36;7968:6;7976:9;7987:6;7958:9;:36::i;:::-;8005:220;8028:6;8049:12;:10;:12::i;:::-;8076:138;8132:6;8076:138;;;;;;;;;;;;;;;;;:11;:19;8088:6;8076:19;;;;;;;;;;;;;;;:33;8096:12;:10;:12::i;:::-;8076:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8005:8;:220::i;:::-;8243:4;8236:11;;7809:446;;;;;:::o;5022:61::-;;;;:::o;6869:83::-;6910:5;4414:2;6928:16;;6869:83;:::o;4577:28::-;;;;;;;;;;;;;:::o;12959:101::-;1648:12;:10;:12::i;:::-;1638:22;;:6;;;;;;;;;;:22;;;1630:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13047:5:::1;13032:4;:12;13037:6;13032:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;12959:101:::0;:::o;12777:174::-;1648:12;:10;:12::i;:::-;1638:22;;:6;;;;;;;;;;:22;;;1630:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12858:9:::1;12853:91;12877:5;:12;12873:1;:16;12853:91;;;12928:4;12911;:14;12916:5;12922:1;12916:8;;;;;;;;:::i;:::-;;;;;;;;12911:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12891:3;;;;;:::i;:::-;;;;12853:91;;;;12777:174:::0;:::o;17000:101::-;1648:12;:10;:12::i;:::-;1638:22;;:6;;;;;;;;;;:22;;;1630:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17081:12:::1;17067:11;;:26;;;;;;;;;;;;;;;;;;17000:101:::0;:::o;12573:196::-;12639:17;;;;;;;;;;;12623:33;;:12;:10;:12::i;:::-;:33;;;12615:42;;;;;;12668:26;12697:21;12668:50;;12729:32;12742:18;12729:12;:32::i;:::-;12604:165;12573:196::o;7063:138::-;7129:7;7156:37;7176:7;:16;7184:7;7176:16;;;;;;;;;;;;;;;;7156:19;:37::i;:::-;7149:44;;7063:138;;;:::o;1725:148::-;1648:12;:10;:12::i;:::-;1638:22;;:6;;;;;;;;;;:22;;;1630:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1832:1:::1;1795:40;;1816:6;::::0;::::1;;;;;;;;1795:40;;;;;;;;;;;;1863:1;1846:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1725:148::o:0;17140:108::-;1648:12;:10;:12::i;:::-;1638:22;;:6;;;;;;;;;;:22;;;1630:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17229:11:::1;17214:12;:26;;;;17140:108:::0;:::o;4850:56::-;;;;:::o;5161:43::-;;;;;;;;;;;;;;;;;:::o;1511:79::-;1549:7;1576:6;;;;;;;;;;;1569:13;;1511:79;:::o;12259:101::-;1648:12;:10;:12::i;:::-;1638:22;;:6;;;;;;;;;;:22;;;1630:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12340:12:::1;12326:11;;:26;;;;;;;;;;;;;;;;;;12259:101:::0;:::o;4935:58::-;;;;:::o;6774:87::-;6813:13;6846:7;;;;;;;;;;;;;;;;;6839:14;;6774:87;:::o;16809:139::-;1648:12;:10;:12::i;:::-;1638:22;;:6;;;;;;;;;;:22;;;1630:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16922:18:::1;16900:19;:40;;;;16809:139:::0;:::o;16466:291::-;1648:12;:10;:12::i;:::-;1638:22;;:6;;;;;;;;;;:22;;;1630:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16617:13:::1;16600:14;:30;;;;16659:14;16641:15;:32;;;;16699:11;16684:12;:26;;;;16737:12;16721:13;:28;;;;16466:291:::0;;;;:::o;7209:199::-;7314:4;7336:42;7346:12;:10;:12::i;:::-;7360:9;7371:6;7336:9;:42::i;:::-;7396:4;7389:11;;7209:199;;;;:::o;5117:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12368:197::-;12434:17;;;;;;;;;;;12418:33;;:12;:10;:12::i;:::-;:33;;;12410:42;;;;;;12463:23;12489:24;12507:4;12489:9;:24::i;:::-;12463:50;;12524:33;12541:15;12524:16;:33::i;:::-;12399:166;12368:197::o;17379:234::-;1648:12;:10;:12::i;:::-;1638:22;;:6;;;;;;;;;;:22;;;1630:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17496:9:::1;17492:114;17515:8;;:15;;17511:1;:19;17492:114;;;17586:8;17552:18;:31;17571:8;;17580:1;17571:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17552:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17532:3;;;;;:::i;:::-;;;;17492:114;;;;17379:234:::0;;;:::o;7416:184::-;7533:7;7565:11;:18;7577:5;7565:18;;;;;;;;;;;;;;;:27;7584:7;7565:27;;;;;;;;;;;;;;;;7558:34;;7416:184;;;;:::o;17256:115::-;1648:12;:10;:12::i;:::-;1638:22;;:6;;;;;;;;;;:22;;;1630:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17350:13:::1;17333:14;:30;;;;17256:115:::0;:::o;1881:244::-;1648:12;:10;:12::i;:::-;1638:22;;:6;;;;;;;;;;:22;;;1630:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1990:1:::1;1970:22;;:8;:22;;::::0;1962:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2080:8;2051:38;;2072:6;::::0;::::1;;;;;;;;2051:38;;;;;;;;;;;;2109:8;2100:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1881:244:::0;:::o;270:98::-;323:7;350:10;343:17;;270:98;:::o;8946:369::-;9090:1;9073:19;;:5;:19;;;9065:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9171:1;9152:21;;:7;:21;;;9144:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9253:6;9223:11;:18;9235:5;9223:18;;;;;;;;;;;;;;;:27;9242:7;9223:27;;;;;;;;;;;;;;;:36;;;;9291:7;9275:32;;9284:5;9275:32;;;9300:6;9275:32;;;;;;:::i;:::-;;;;;;;;8946:369;;;:::o;9323:2330::-;9461:1;9445:18;;:4;:18;;;9437:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9538:1;9524:16;;:2;:16;;;9516:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9608:1;9599:6;:10;9591:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9680:7;:5;:7::i;:::-;9672:15;;:4;:15;;;;:32;;;;;9697:7;:5;:7::i;:::-;9691:13;;:2;:13;;;;9672:32;9668:1259;;;9761:11;;;;;;;;;;;9756:144;;9809:7;:5;:7::i;:::-;9801:15;;:4;:15;;;9793:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9756:144;9934:12;;9924:6;:22;;9916:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10003:4;:10;10008:4;10003:10;;;;;;;;;;;;;;;;;;;;;;;;;10002:11;:24;;;;;10018:4;:8;10023:2;10018:8;;;;;;;;;;;;;;;;;;;;;;;;;10017:9;10002:24;9994:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10092:13;;;;;;;;;;;10086:19;;:2;:19;;;10083:146;;10159:14;;10150:6;10134:13;10144:2;10134:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10126:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10083:146;10245:28;10276:24;10294:4;10276:9;:24::i;:::-;10245:55;;10315:12;10354:19;;10330:20;:43;;10315:58;;10417:12;;10393:20;:36;10390:124;;10486:12;;10463:35;;10390:124;10534:7;:18;;;;;10546:6;;;;;;;;;;;10545:7;10534:18;:43;;;;;10564:13;;;;;;;;;;;10556:21;;:4;:21;;;;10534:43;:58;;;;;10581:11;;;;;;;;;;;10534:58;:87;;;;;10597:18;:24;10616:4;10597:24;;;;;;;;;;;;;;;;;;;;;;;;;10596:25;10534:87;:114;;;;;10626:18;:22;10645:2;10626:22;;;;;;;;;;;;;;;;;;;;;;;;;10625:23;10534:114;10530:386;;;10669:38;10686:20;10669:16;:38::i;:::-;10726:26;10755:21;10726:50;;10820:1;10799:18;:22;10795:106;;;10846:35;10859:21;10846:12;:35::i;:::-;10795:106;10650:266;10530:386;9706:1221;;9668:1259;10939:12;10954:4;10939:19;;11003:18;:24;11022:4;11003:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11031:18;:22;11050:2;11031:22;;;;;;;;;;;;;;;;;;;;;;;;;11003:50;11002:102;;;;11067:13;;;;;;;;;;;11059:21;;:4;:21;;;;:44;;;;;11090:13;;;;;;;;;;;11084:19;;:2;:19;;;;11059:44;11002:102;10998:594;;;11131:5;11121:15;;10998:594;;;11214:13;;;;;;;;;;;11206:21;;:4;:21;;;:55;;;;;11245:15;;;;;;;;;;;11231:30;;:2;:30;;;;11206:55;11203:162;;;11294:14;;11282:9;:26;;;;11337:12;;11327:7;:22;;;;11203:162;11424:13;;;;;;;;;;;11418:19;;:2;:19;;;:55;;;;;11457:15;;;;;;;;;;;11441:32;;:4;:32;;;;11418:55;11414:165;;;11506:15;;11494:9;:27;;;;11550:13;;11540:7;:23;;;;11414:165;10998:594;11604:41;11619:4;11625:2;11629:6;11637:7;11604:14;:41::i;:::-;9426:2227;9323:2330;;;:::o;2489:224::-;2609:7;2642:1;2637;:6;;2645:12;2629:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2669:9;2685:1;2681;:5;;;;:::i;:::-;2669:17;;2704:1;2697:8;;;2489:224;;;;;:::o;12152:99::-;12209:17;;;;;;;;;;;:26;;:34;12236:6;12209:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12152:99;:::o;8263:323::-;8358:7;8416;;8405;:18;;8383:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8504:19;8526:10;:8;:10::i;:::-;8504:32;;8554:24;8566:11;8554:7;:11;;:24;;;;:::i;:::-;8547:31;;;8263:323;;;:::o;11661:483::-;6043:4;6034:6;;:13;;;;;;;;;;;;;;;;;;11739:21:::1;11777:1;11763:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11739:40;;11808:4;11790;11795:1;11790:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11834:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11824:4;11829:1;11824:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11867:62;11884:4;11899:15;;;;;;;;;;;11917:11;11867:8;:62::i;:::-;11940:15;;;;;;;;;;;:66;;;12021:11;12047:1;12063:4;12090;12110:15;11940:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11728:416;6079:5:::0;6070:6;;:14;;;;;;;;;;;;;;;;;;11661:483;:::o;13068:282::-;13224:7;13219:28;;13233:14;:12;:14::i;:::-;13219:28;13258:44;13276:6;13284:9;13295:6;13258:17;:44::i;:::-;13318:7;13313:29;;13327:15;:13;:15::i;:::-;13313:29;13068:282;;;;:::o;16029:164::-;16071:7;16092:15;16109;16128:19;:17;:19::i;:::-;16091:56;;;;16165:20;16177:7;16165;:11;;:20;;;;:::i;:::-;16158:27;;;;16029:164;:::o;2975:132::-;3033:7;3060:39;3064:1;3067;3060:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3053:46;;2975:132;;;;:::o;8594:219::-;8654:1;8641:9;;:14;:30;;;;;8670:1;8659:7;;:12;8641:30;8673:7;8637:43;8712:9;;8692:17;:29;;;;8750:7;;8732:15;:25;;;;8782:1;8770:9;:13;;;;8804:1;8794:7;:11;;;;8594:219;:::o;13358:610::-;13505:15;13535:23;13573:12;13600:23;13638:12;13665:13;13692:19;13703:7;13692:10;:19::i;:::-;13490:221;;;;;;;;;;;;13740:28;13760:7;13740;:15;13748:6;13740:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13722:7;:15;13730:6;13722:15;;;;;;;;;;;;;;;:46;;;;13800:39;13823:15;13800:7;:18;13808:9;13800:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13779:7;:18;13787:9;13779:18;;;;;;;;;;;;;;;:60;;;;13850:16;13860:5;13850:9;:16::i;:::-;13877:23;13889:4;13895;13877:11;:23::i;:::-;13933:9;13916:44;;13925:6;13916:44;;;13944:15;13916:44;;;;;;:::i;:::-;;;;;;;;13479:489;;;;;;13358:610;;;:::o;8821:117::-;8877:17;;8865:9;:29;;;;8915:15;;8905:7;:25;;;;8821:117::o;16201:257::-;16252:7;16261;16281:15;16299:7;;16281:25;;16317:15;4414:2;4814;:13;;;;:::i;:::-;4799:12;:28;;;;:::i;:::-;16317:25;;16367:20;4414:2;4814;:13;;;;:::i;:::-;4799:12;:28;;;;:::i;:::-;16367:7;;:11;;:20;;;;:::i;:::-;16357:7;:30;16353:61;;;16397:7;;4414:2;4814;:13;;;;:::i;:::-;4799:12;:28;;;;:::i;:::-;16389:25;;;;;;;;16353:61;16433:7;16442;16425:25;;;;;;16201:257;;;:::o;3115:223::-;3235:7;3267:1;3263;:5;3270:12;3255:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3294:9;3310:1;3306;:5;;;;:::i;:::-;3294:17;;3329:1;3322:8;;;3115:223;;;;;:::o;14387:615::-;14487:7;14509;14531;14553;14575;14597;14633:23;14658:12;14672:13;14702:40;14714:7;14723:9;;14734:7;;14702:11;:40::i;:::-;14632:110;;;;;;14753:19;14775:10;:8;:10::i;:::-;14753:32;;14797:15;14814:23;14839:12;14868:46;14880:7;14889:4;14895:5;14902:11;14868;:46::i;:::-;14796:118;;;;;;14933:7;14942:15;14959:4;14965:15;14982:4;14988:5;14925:69;;;;;;;;;;;;;;;;;;;14387:615;;;;;;;:::o;2345:136::-;2403:7;2430:43;2434:1;2437;2430:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2423:50;;2345:136;;;;:::o;2158:179::-;2216:7;2236:9;2252:1;2248;:5;;;;:::i;:::-;2236:17;;2277:1;2272;:6;;2264:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2328:1;2321:8;;;2158:179;;;;:::o;13976:211::-;14029:19;14051:10;:8;:10::i;:::-;14029:32;;14072:13;14088:22;14098:11;14088:5;:9;;:22;;;;:::i;:::-;14072:38;;14146:33;14173:5;14146:7;:22;14162:4;14146:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14121:7;:22;14137:4;14121:22;;;;;;;;;;;;;;;:58;;;;14018:169;;13976:211;:::o;14195:147::-;14273:17;14285:4;14273:7;;:11;;:17;;;;:::i;:::-;14263:7;:27;;;;14314:20;14329:4;14314:10;;:14;;:20;;;;:::i;:::-;14301:10;:33;;;;14195:147;;:::o;15010:469::-;15179:7;15201;15223;15258:12;15273:30;15299:3;15273:21;15285:8;15273:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15258:45;;15314:13;15330:28;15354:3;15330:19;15342:6;15330:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15314:44;;15369:23;15395:28;15417:5;15395:17;15407:4;15395:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15369:54;;15442:15;15459:4;15465:5;15434:37;;;;;;;;;15010:469;;;;;;;:::o;15487:534::-;15681:7;15703;15725;15760:15;15778:24;15790:11;15778:7;:11;;:24;;;;:::i;:::-;15760:42;;15813:12;15828:21;15837:11;15828:4;:8;;:21;;;;:::i;:::-;15813:36;;15860:13;15876:22;15886:11;15876:5;:9;;:22;;;;:::i;:::-;15860:38;;15909:23;15935:28;15957:5;15935:17;15947:4;15935:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15909:54;;15982:7;15991:15;16008:4;15974:39;;;;;;;;;;15487:534;;;;;;;;:::o;2721:246::-;2779:7;2808:1;2803;:6;2799:47;;2833:1;2826:8;;;;2799:47;2856:9;2872:1;2868;:5;;;;:::i;:::-;2856:17;;2901:1;2896;2892;:5;;;;:::i;:::-;:10;2884:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2958:1;2951:8;;;2721:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::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:118::-;5913:24;5931:5;5913:24;:::i;:::-;5908:3;5901:37;5826:118;;:::o;5950:222::-;6043:4;6081:2;6070:9;6066:18;6058:26;;6094:71;6162:1;6151:9;6147:17;6138:6;6094:71;:::i;:::-;5950:222;;;;:::o;6178:329::-;6237:6;6286:2;6274:9;6265:7;6261:23;6257:32;6254:119;;;6292:79;;:::i;:::-;6254:119;6412:1;6437:53;6482:7;6473:6;6462:9;6458:22;6437:53;:::i;:::-;6427:63;;6383:117;6178:329;;;;:::o;6513:117::-;6622:1;6619;6612:12;6636:180;6684:77;6681:1;6674:88;6781:4;6778:1;6771:15;6805:4;6802:1;6795:15;6822:281;6905:27;6927:4;6905:27;:::i;:::-;6897:6;6893:40;7035:6;7023:10;7020:22;6999:18;6987:10;6984:34;6981:62;6978:88;;;7046:18;;:::i;:::-;6978:88;7086:10;7082:2;7075:22;6865:238;6822:281;;:::o;7109:129::-;7143:6;7170:20;;:::i;:::-;7160:30;;7199:33;7227:4;7219:6;7199:33;:::i;:::-;7109:129;;;:::o;7244:311::-;7321:4;7411:18;7403:6;7400:30;7397:56;;;7433:18;;:::i;:::-;7397:56;7483:4;7475:6;7471:17;7463:25;;7543:4;7537;7533:15;7525:23;;7244:311;;;:::o;7561:117::-;7670:1;7667;7660:12;7701:710;7797:5;7822:81;7838:64;7895:6;7838:64;:::i;:::-;7822:81;:::i;:::-;7813:90;;7923:5;7952:6;7945:5;7938:21;7986:4;7979:5;7975:16;7968:23;;8039:4;8031:6;8027:17;8019:6;8015:30;8068:3;8060:6;8057:15;8054:122;;;8087:79;;:::i;:::-;8054:122;8202:6;8185:220;8219:6;8214:3;8211:15;8185:220;;;8294:3;8323:37;8356:3;8344:10;8323:37;:::i;:::-;8318:3;8311:50;8390:4;8385:3;8381:14;8374:21;;8261:144;8245:4;8240:3;8236:14;8229:21;;8185:220;;;8189:21;7803:608;;7701:710;;;;;:::o;8434:370::-;8505:5;8554:3;8547:4;8539:6;8535:17;8531:27;8521:122;;8562:79;;:::i;:::-;8521:122;8679:6;8666:20;8704:94;8794:3;8786:6;8779:4;8771:6;8767:17;8704:94;:::i;:::-;8695:103;;8511:293;8434:370;;;;:::o;8810:539::-;8894:6;8943:2;8931:9;8922:7;8918:23;8914:32;8911:119;;;8949:79;;:::i;:::-;8911:119;9097:1;9086:9;9082:17;9069:31;9127:18;9119:6;9116:30;9113:117;;;9149:79;;:::i;:::-;9113:117;9254:78;9324:7;9315:6;9304:9;9300:22;9254:78;:::i;:::-;9244:88;;9040:302;8810:539;;;;:::o;9355:116::-;9425:21;9440:5;9425:21;:::i;:::-;9418:5;9415:32;9405:60;;9461:1;9458;9451:12;9405:60;9355:116;:::o;9477:133::-;9520:5;9558:6;9545:20;9536:29;;9574:30;9598:5;9574:30;:::i;:::-;9477:133;;;;:::o;9616:323::-;9672:6;9721:2;9709:9;9700:7;9696:23;9692:32;9689:119;;;9727:79;;:::i;:::-;9689:119;9847:1;9872:50;9914:7;9905:6;9894:9;9890:22;9872:50;:::i;:::-;9862:60;;9818:114;9616:323;;;;:::o;9945:329::-;10004:6;10053:2;10041:9;10032:7;10028:23;10024:32;10021:119;;;10059:79;;:::i;:::-;10021:119;10179:1;10204:53;10249:7;10240:6;10229:9;10225:22;10204:53;:::i;:::-;10194:63;;10150:117;9945:329;;;;:::o;10280:765::-;10366:6;10374;10382;10390;10439:3;10427:9;10418:7;10414:23;10410:33;10407:120;;;10446:79;;:::i;:::-;10407:120;10566:1;10591:53;10636:7;10627:6;10616:9;10612:22;10591:53;:::i;:::-;10581:63;;10537:117;10693:2;10719:53;10764:7;10755:6;10744:9;10740:22;10719:53;:::i;:::-;10709:63;;10664:118;10821:2;10847:53;10892:7;10883:6;10872:9;10868:22;10847:53;:::i;:::-;10837:63;;10792:118;10949:2;10975:53;11020:7;11011:6;11000:9;10996:22;10975:53;:::i;:::-;10965:63;;10920:118;10280:765;;;;;;;:::o;11051:117::-;11160:1;11157;11150:12;11191:568;11264:8;11274:6;11324:3;11317:4;11309:6;11305:17;11301:27;11291:122;;11332:79;;:::i;:::-;11291:122;11445:6;11432:20;11422:30;;11475:18;11467:6;11464:30;11461:117;;;11497:79;;:::i;:::-;11461:117;11611:4;11603:6;11599:17;11587:29;;11665:3;11657:4;11649:6;11645:17;11635:8;11631:32;11628:41;11625:128;;;11672:79;;:::i;:::-;11625:128;11191:568;;;;;:::o;11765:698::-;11857:6;11865;11873;11922:2;11910:9;11901:7;11897:23;11893:32;11890:119;;;11928:79;;:::i;:::-;11890:119;12076:1;12065:9;12061:17;12048:31;12106:18;12098:6;12095:30;12092:117;;;12128:79;;:::i;:::-;12092:117;12241:80;12313:7;12304:6;12293:9;12289:22;12241:80;:::i;:::-;12223:98;;;;12019:312;12370:2;12396:50;12438:7;12429:6;12418:9;12414:22;12396:50;:::i;:::-;12386:60;;12341:115;11765:698;;;;;:::o;12469:474::-;12537:6;12545;12594:2;12582:9;12573:7;12569:23;12565:32;12562:119;;;12600:79;;:::i;:::-;12562:119;12720:1;12745:53;12790:7;12781:6;12770:9;12766:22;12745:53;:::i;:::-;12735:63;;12691:117;12847:2;12873:53;12918:7;12909:6;12898:9;12894:22;12873:53;:::i;:::-;12863:63;;12818:118;12469:474;;;;;:::o;12949:180::-;12997:77;12994:1;12987:88;13094:4;13091:1;13084:15;13118:4;13115:1;13108:15;13135:102;13177:8;13224:5;13221:1;13217:13;13196:34;;13135:102;;;:::o;13243:848::-;13304:5;13311:4;13335:6;13326:15;;13359:5;13350:14;;13373:712;13394:1;13384:8;13381:15;13373:712;;;13489:4;13484:3;13480:14;13474:4;13471:24;13468:50;;;13498:18;;:::i;:::-;13468:50;13548:1;13538:8;13534:16;13531:451;;;13963:4;13956:5;13952:16;13943:25;;13531:451;14013:4;14007;14003:15;13995:23;;14043:32;14066:8;14043:32;:::i;:::-;14031:44;;13373:712;;;13243:848;;;;;;;:::o;14097:1073::-;14151:5;14342:8;14332:40;;14363:1;14354:10;;14365:5;;14332:40;14391:4;14381:36;;14408:1;14399:10;;14410:5;;14381:36;14477:4;14525:1;14520:27;;;;14561:1;14556:191;;;;14470:277;;14520:27;14538:1;14529:10;;14540:5;;;14556:191;14601:3;14591:8;14588:17;14585:43;;;14608:18;;:::i;:::-;14585:43;14657:8;14654:1;14650:16;14641:25;;14692:3;14685:5;14682:14;14679:40;;;14699:18;;:::i;:::-;14679:40;14732:5;;;14470:277;;14856:2;14846:8;14843:16;14837:3;14831:4;14828:13;14824:36;14806:2;14796:8;14793:16;14788:2;14782:4;14779:12;14775:35;14759:111;14756:246;;;14912:8;14906:4;14902:19;14893:28;;14947:3;14940:5;14937:14;14934:40;;;14954:18;;:::i;:::-;14934:40;14987:5;;14756:246;15027:42;15065:3;15055:8;15049:4;15046:1;15027:42;:::i;:::-;15012:57;;;;15101:4;15096:3;15092:14;15085:5;15082:25;15079:51;;;15110:18;;:::i;:::-;15079:51;15159:4;15152:5;15148:16;15139:25;;14097:1073;;;;;;:::o;15176:281::-;15234:5;15258:23;15276:4;15258:23;:::i;:::-;15250:31;;15302:25;15318:8;15302:25;:::i;:::-;15290:37;;15346:104;15383:66;15373:8;15367:4;15346:104;:::i;:::-;15337:113;;15176:281;;;;:::o;15463:410::-;15503:7;15526:20;15544:1;15526:20;:::i;:::-;15521:25;;15560:20;15578:1;15560:20;:::i;:::-;15555:25;;15615:1;15612;15608:9;15637:30;15655:11;15637:30;:::i;:::-;15626:41;;15816:1;15807:7;15803:15;15800:1;15797:22;15777:1;15770:9;15750:83;15727:139;;15846:18;;:::i;:::-;15727:139;15511:362;15463:410;;;;:::o;15879:182::-;16019:34;16015:1;16007:6;16003:14;15996:58;15879:182;:::o;16067:366::-;16209:3;16230:67;16294:2;16289:3;16230:67;:::i;:::-;16223:74;;16306:93;16395:3;16306:93;:::i;:::-;16424:2;16419:3;16415:12;16408:19;;16067:366;;;:::o;16439:419::-;16605:4;16643:2;16632:9;16628:18;16620:26;;16692:9;16686:4;16682:20;16678:1;16667:9;16663:17;16656:47;16720:131;16846:4;16720:131;:::i;:::-;16712:139;;16439:419;;;:::o;16864:180::-;16912:77;16909:1;16902:88;17009:4;17006:1;16999:15;17033:4;17030:1;17023:15;17050:233;17089:3;17112:24;17130:5;17112:24;:::i;:::-;17103:33;;17158:66;17151:5;17148:77;17145:103;;17228:18;;:::i;:::-;17145:103;17275:1;17268:5;17264:13;17257:20;;17050:233;;;:::o;17289:225::-;17429:34;17425:1;17417:6;17413:14;17406:58;17498:8;17493:2;17485:6;17481:15;17474:33;17289:225;:::o;17520:366::-;17662:3;17683:67;17747:2;17742:3;17683:67;:::i;:::-;17676:74;;17759:93;17848:3;17759:93;:::i;:::-;17877:2;17872:3;17868:12;17861:19;;17520:366;;;:::o;17892:419::-;18058:4;18096:2;18085:9;18081:18;18073:26;;18145:9;18139:4;18135:20;18131:1;18120:9;18116:17;18109:47;18173:131;18299:4;18173:131;:::i;:::-;18165:139;;17892:419;;;:::o;18317:223::-;18457:34;18453:1;18445:6;18441:14;18434:58;18526:6;18521:2;18513:6;18509:15;18502:31;18317:223;:::o;18546:366::-;18688:3;18709:67;18773:2;18768:3;18709:67;:::i;:::-;18702:74;;18785:93;18874:3;18785:93;:::i;:::-;18903:2;18898:3;18894:12;18887:19;;18546:366;;;:::o;18918:419::-;19084:4;19122:2;19111:9;19107:18;19099:26;;19171:9;19165:4;19161:20;19157:1;19146:9;19142:17;19135:47;19199:131;19325:4;19199:131;:::i;:::-;19191:139;;18918:419;;;:::o;19343:221::-;19483:34;19479:1;19471:6;19467:14;19460:58;19552:4;19547:2;19539:6;19535:15;19528:29;19343:221;:::o;19570:366::-;19712:3;19733:67;19797:2;19792:3;19733:67;:::i;:::-;19726:74;;19809:93;19898:3;19809:93;:::i;:::-;19927:2;19922:3;19918:12;19911:19;;19570:366;;;:::o;19942:419::-;20108:4;20146:2;20135:9;20131:18;20123:26;;20195:9;20189:4;20185:20;20181:1;20170:9;20166:17;20159:47;20223:131;20349:4;20223:131;:::i;:::-;20215:139;;19942:419;;;:::o;20367:224::-;20507:34;20503:1;20495:6;20491:14;20484:58;20576:7;20571:2;20563:6;20559:15;20552:32;20367:224;:::o;20597:366::-;20739:3;20760:67;20824:2;20819:3;20760:67;:::i;:::-;20753:74;;20836:93;20925:3;20836:93;:::i;:::-;20954:2;20949:3;20945:12;20938:19;;20597:366;;;:::o;20969:419::-;21135:4;21173:2;21162:9;21158:18;21150:26;;21222:9;21216:4;21212:20;21208:1;21197:9;21193:17;21186:47;21250:131;21376:4;21250:131;:::i;:::-;21242:139;;20969:419;;;:::o;21394:222::-;21534:34;21530:1;21522:6;21518:14;21511:58;21603:5;21598:2;21590:6;21586:15;21579:30;21394:222;:::o;21622:366::-;21764:3;21785:67;21849:2;21844:3;21785:67;:::i;:::-;21778:74;;21861:93;21950:3;21861:93;:::i;:::-;21979:2;21974:3;21970:12;21963:19;;21622:366;;;:::o;21994:419::-;22160:4;22198:2;22187:9;22183:18;22175:26;;22247:9;22241:4;22237:20;22233:1;22222:9;22218:17;22211:47;22275:131;22401:4;22275:131;:::i;:::-;22267:139;;21994:419;;;:::o;22419:228::-;22559:34;22555:1;22547:6;22543:14;22536:58;22628:11;22623:2;22615:6;22611:15;22604:36;22419:228;:::o;22653:366::-;22795:3;22816:67;22880:2;22875:3;22816:67;:::i;:::-;22809:74;;22892:93;22981:3;22892:93;:::i;:::-;23010:2;23005:3;23001:12;22994:19;;22653:366;;;:::o;23025:419::-;23191:4;23229:2;23218:9;23214:18;23206:26;;23278:9;23272:4;23268:20;23264:1;23253:9;23249:17;23242:47;23306:131;23432:4;23306:131;:::i;:::-;23298:139;;23025:419;;;:::o;23450:250::-;23590:34;23586:1;23578:6;23574:14;23567:58;23659:33;23654:2;23646:6;23642:15;23635:58;23450:250;:::o;23706:366::-;23848:3;23869:67;23933:2;23928:3;23869:67;:::i;:::-;23862:74;;23945:93;24034:3;23945:93;:::i;:::-;24063:2;24058:3;24054:12;24047:19;;23706:366;;;:::o;24078:419::-;24244:4;24282:2;24271:9;24267:18;24259:26;;24331:9;24325:4;24321:20;24317:1;24306:9;24302:17;24295:47;24359:131;24485:4;24359:131;:::i;:::-;24351:139;;24078:419;;;:::o;24503:178::-;24643:30;24639:1;24631:6;24627:14;24620:54;24503:178;:::o;24687:366::-;24829:3;24850:67;24914:2;24909:3;24850:67;:::i;:::-;24843:74;;24926:93;25015:3;24926:93;:::i;:::-;25044:2;25039:3;25035:12;25028:19;;24687:366;;;:::o;25059:419::-;25225:4;25263:2;25252:9;25248:18;25240:26;;25312:9;25306:4;25302:20;25298:1;25287:9;25283:17;25276:47;25340:131;25466:4;25340:131;:::i;:::-;25332:139;;25059:419;;;:::o;25484:222::-;25624:34;25620:1;25612:6;25608:14;25601:58;25693:5;25688:2;25680:6;25676:15;25669:30;25484:222;:::o;25712:366::-;25854:3;25875:67;25939:2;25934:3;25875:67;:::i;:::-;25868:74;;25951:93;26040:3;25951:93;:::i;:::-;26069:2;26064:3;26060:12;26053:19;;25712:366;;;:::o;26084:419::-;26250:4;26288:2;26277:9;26273:18;26265:26;;26337:9;26331:4;26327:20;26323:1;26312:9;26308:17;26301:47;26365:131;26491:4;26365:131;:::i;:::-;26357:139;;26084:419;;;:::o;26509:191::-;26549:3;26568:20;26586:1;26568:20;:::i;:::-;26563:25;;26602:20;26620:1;26602:20;:::i;:::-;26597:25;;26645:1;26642;26638:9;26631:16;;26666:3;26663:1;26660:10;26657:36;;;26673:18;;:::i;:::-;26657:36;26509:191;;;;:::o;26706:222::-;26846:34;26842:1;26834:6;26830:14;26823:58;26915:5;26910:2;26902:6;26898:15;26891:30;26706:222;:::o;26934:366::-;27076:3;27097:67;27161:2;27156:3;27097:67;:::i;:::-;27090:74;;27173:93;27262:3;27173:93;:::i;:::-;27291:2;27286:3;27282:12;27275:19;;26934:366;;;:::o;27306:419::-;27472:4;27510:2;27499:9;27495:18;27487:26;;27559:9;27553:4;27549:20;27545:1;27534:9;27530:17;27523:47;27587:131;27713:4;27587:131;:::i;:::-;27579:139;;27306:419;;;:::o;27731:194::-;27771:4;27791:20;27809:1;27791:20;:::i;:::-;27786:25;;27825:20;27843:1;27825:20;:::i;:::-;27820:25;;27869:1;27866;27862:9;27854:17;;27893:1;27887:4;27884:11;27881:37;;;27898:18;;:::i;:::-;27881:37;27731:194;;;;:::o;27931:229::-;28071:34;28067:1;28059:6;28055:14;28048:58;28140:12;28135:2;28127:6;28123:15;28116:37;27931:229;:::o;28166:366::-;28308:3;28329:67;28393:2;28388:3;28329:67;:::i;:::-;28322:74;;28405:93;28494:3;28405:93;:::i;:::-;28523:2;28518:3;28514:12;28507:19;;28166:366;;;:::o;28538:419::-;28704:4;28742:2;28731:9;28727:18;28719:26;;28791:9;28785:4;28781:20;28777:1;28766:9;28762:17;28755:47;28819:131;28945:4;28819:131;:::i;:::-;28811:139;;28538:419;;;:::o;28963:143::-;29020:5;29051:6;29045:13;29036:22;;29067:33;29094:5;29067:33;:::i;:::-;28963:143;;;;:::o;29112:351::-;29182:6;29231:2;29219:9;29210:7;29206:23;29202:32;29199:119;;;29237:79;;:::i;:::-;29199:119;29357:1;29382:64;29438:7;29429:6;29418:9;29414:22;29382:64;:::i;:::-;29372:74;;29328:128;29112:351;;;;:::o;29469:85::-;29514:7;29543:5;29532:16;;29469:85;;;:::o;29560:158::-;29618:9;29651:61;29669:42;29678:32;29704:5;29678:32;:::i;:::-;29669:42;:::i;:::-;29651:61;:::i;:::-;29638:74;;29560:158;;;:::o;29724:147::-;29819:45;29858:5;29819:45;:::i;:::-;29814:3;29807:58;29724:147;;:::o;29877:114::-;29944:6;29978:5;29972:12;29962:22;;29877:114;;;:::o;29997:184::-;30096:11;30130:6;30125:3;30118:19;30170:4;30165:3;30161:14;30146:29;;29997:184;;;;:::o;30187:132::-;30254:4;30277:3;30269:11;;30307:4;30302:3;30298:14;30290:22;;30187:132;;;:::o;30325:108::-;30402:24;30420:5;30402:24;:::i;:::-;30397:3;30390:37;30325:108;;:::o;30439:179::-;30508:10;30529:46;30571:3;30563:6;30529:46;:::i;:::-;30607:4;30602:3;30598:14;30584:28;;30439:179;;;;:::o;30624:113::-;30694:4;30726;30721:3;30717:14;30709:22;;30624:113;;;:::o;30773:732::-;30892:3;30921:54;30969:5;30921:54;:::i;:::-;30991:86;31070:6;31065:3;30991:86;:::i;:::-;30984:93;;31101:56;31151:5;31101:56;:::i;:::-;31180:7;31211:1;31196:284;31221:6;31218:1;31215:13;31196:284;;;31297:6;31291:13;31324:63;31383:3;31368:13;31324:63;:::i;:::-;31317:70;;31410:60;31463:6;31410:60;:::i;:::-;31400:70;;31256:224;31243:1;31240;31236:9;31231:14;;31196:284;;;31200:14;31496:3;31489:10;;30897:608;;;30773:732;;;;:::o;31511:831::-;31774:4;31812:3;31801:9;31797:19;31789:27;;31826:71;31894:1;31883:9;31879:17;31870:6;31826:71;:::i;:::-;31907:80;31983:2;31972:9;31968:18;31959:6;31907:80;:::i;:::-;32034:9;32028:4;32024:20;32019:2;32008:9;32004:18;31997:48;32062:108;32165:4;32156:6;32062:108;:::i;:::-;32054:116;;32180:72;32248:2;32237:9;32233:18;32224:6;32180:72;:::i;:::-;32262:73;32330:3;32319:9;32315:19;32306:6;32262:73;:::i;:::-;31511:831;;;;;;;;:::o;32348:180::-;32396:77;32393:1;32386:88;32493:4;32490:1;32483:15;32517:4;32514:1;32507:15;32534:185;32574:1;32591:20;32609:1;32591:20;:::i;:::-;32586:25;;32625:20;32643:1;32625:20;:::i;:::-;32620:25;;32664:1;32654:35;;32669:18;;:::i;:::-;32654:35;32711:1;32708;32704:9;32699:14;;32534:185;;;;:::o;32725:177::-;32865:29;32861:1;32853:6;32849:14;32842:53;32725:177;:::o;32908:366::-;33050:3;33071:67;33135:2;33130:3;33071:67;:::i;:::-;33064:74;;33147:93;33236:3;33147:93;:::i;:::-;33265:2;33260:3;33256:12;33249:19;;32908:366;;;:::o;33280:419::-;33446:4;33484:2;33473:9;33469:18;33461:26;;33533:9;33527:4;33523:20;33519:1;33508:9;33504:17;33497:47;33561:131;33687:4;33561:131;:::i;:::-;33553:139;;33280:419;;;:::o;33705:220::-;33845:34;33841:1;33833:6;33829:14;33822:58;33914:3;33909:2;33901:6;33897:15;33890:28;33705:220;:::o;33931:366::-;34073:3;34094:67;34158:2;34153:3;34094:67;:::i;:::-;34087:74;;34170:93;34259:3;34170:93;:::i;:::-;34288:2;34283:3;34279:12;34272:19;;33931:366;;;:::o;34303:419::-;34469:4;34507:2;34496:9;34492:18;34484:26;;34556:9;34550:4;34546:20;34542:1;34531:9;34527:17;34520:47;34584:131;34710:4;34584:131;:::i;:::-;34576:139;;34303:419;;;:::o

Swarm Source

ipfs://b319acf41c49874e539a90b3e59c1bda312de0b8ea7aeb24b5b82eea2b4b33f2
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.