ETH Price: $3,376.25 (-1.97%)
Gas: 2 Gwei

Token

RunesBot (RBot)
 

Overview

Max Total Supply

1,000,000 RBot

Holders

774

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
9.733543934665148468 RBot

Value
$0.00
0x820dfdc28a5d4dd681752190a6450c3f795a8116
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:
RunesBot

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**

BOT: https://t.me/the_runes_bot
Website: https://runesbot.app/
Twitter: https://x.com/RunesBotERC20
Telegram: https://t.me/RunesBotERC20


*/

// 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 RunesBot is Context, IERC20, Ownable {
    string private constant _name = "RunesBot";
    string private constant _symbol = "RBot";
    uint8 private constant _decimals = 18;

    address payable private _marketingAddress = payable(0xd35b8E4f5fcCb264a9b667c74025365279369288);

    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 = 1000000 * 10 ** _decimals;
    uint256 public _maxTxAmount = 10000 * 10 ** _decimals;
    uint256 public _maxWalletSize = 10000 * 10 ** _decimals;
    uint256 public _swapTokensAtAmount = 100 * 10 ** _decimals;

    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"}]

608060405273d35b8e4f5fccb264a9b667c74025365279369288600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460146101000a81548160ff0219169083151502179055506000600460156101000a81548160ff0219169083151502179055506001600460166101000a81548160ff0219169083151502179055506012600a620000ba91906200082f565b612710620000c9919062000880565b6005556012600a620000dc91906200082f565b612710620000eb919062000880565b6006556012600a620000fe91906200082f565b60646200010c919062000880565b6007556012600a6200011f91906200082f565b620f42406200012f919062000880565b6000196200013e9190620008fa565b6000196200014d919062000932565b600e5560006010556005601155600060125560056013556012546014556013546015556014546016556015546017553480156200018957600080fd5b5060006200019c6200066460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600e54600a6000620002516200066460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000335573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200035b9190620009d7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e99190620009d7565b6040518363ffffffff1660e01b81526004016200040892919062000a1a565b6020604051808303816000875af115801562000428573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044e9190620009d7565b600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d6000620004a46200066c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620005d76200066460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a6200063691906200082f565b620f424062000646919062000880565b60405162000655919062000a58565b60405180910390a35062000a75565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200072357808604811115620006fb57620006fa62000695565b5b60018516156200070b5780820291505b80810290506200071b85620006c4565b9450620006db565b94509492505050565b6000826200073e576001905062000811565b816200074e576000905062000811565b81600181146200076757600281146200077257620007a8565b600191505062000811565b60ff84111562000787576200078662000695565b5b8360020a915084821115620007a157620007a062000695565b5b5062000811565b5060208310610133831016604e8410600b8410161715620007e25782820a905083811115620007dc57620007db62000695565b5b62000811565b620007f18484846001620006d1565b925090508184048111156200080b576200080a62000695565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200083c8262000818565b9150620008498362000822565b9250620008787fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200072c565b905092915050565b60006200088d8262000818565b91506200089a8362000818565b9250828202620008aa8162000818565b91508282048414831517620008c457620008c362000695565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620009078262000818565b9150620009148362000818565b925082620009275762000926620008cb565b5b828206905092915050565b60006200093f8262000818565b91506200094c8362000818565b925082820390508181111562000967576200096662000695565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200099f8262000972565b9050919050565b620009b18162000992565b8114620009bd57600080fd5b50565b600081519050620009d181620009a6565b92915050565b600060208284031215620009f057620009ef6200096d565b5b600062000a0084828501620009c0565b91505092915050565b62000a148162000992565b82525050565b600060408201905062000a31600083018562000a09565b62000a40602083018462000a09565b9392505050565b62000a528162000818565b82525050565b600060208201905062000a6f600083018462000a47565b92915050565b613e928062000a856000396000f3fe6080604052600436106101d15760003560e01c80637d1db4a5116100f7578063a2a957bb11610095578063c492f04611610064578063c492f0461461065d578063dd62ed3e14610686578063ea1644d5146106c3578063f2fde38b146106ec576101d8565b8063a2a957bb146105a3578063a9059cbb146105cc578063bfd7928414610609578063c3c8cd8014610646576101d8565b80638f70ccf7116100d15780638f70ccf7146104fb5780638f9a55c01461052457806395d89b411461054f57806398a5c3151461057a576101d8565b80637d1db4a5146104685780637f2feddc146104935780638da5cb5b146104d0576101d8565b806349bd5a5e1161016f5780636fc3eaec1161013e5780636fc3eaec146103d457806370a08231146103eb578063715018a61461042857806374010ece1461043f576101d8565b806349bd5a5e1461032e578063537df3b6146103595780635fff252d146103825780636d8aa8f8146103ab576101d8565b806318160ddd116101ab57806318160ddd1461027057806323b872dd1461029b5780632fd689e3146102d8578063313ce56714610303576101d8565b806306fdde03146101dd578063095ea7b3146102085780631694505e14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610715565b6040516101ff9190612ba9565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190612c73565b610752565b60405161023c9190612cce565b60405180910390f35b34801561025157600080fd5b5061025a610770565b6040516102679190612d48565b60405180910390f35b34801561027c57600080fd5b50610285610796565b6040516102929190612d72565b60405180910390f35b3480156102a757600080fd5b506102c260048036038101906102bd9190612d8d565b6107b9565b6040516102cf9190612cce565b60405180910390f35b3480156102e457600080fd5b506102ed610892565b6040516102fa9190612d72565b60405180910390f35b34801561030f57600080fd5b50610318610898565b6040516103259190612dfc565b60405180910390f35b34801561033a57600080fd5b506103436108a1565b6040516103509190612e26565b60405180910390f35b34801561036557600080fd5b50610380600480360381019061037b9190612e41565b6108c7565b005b34801561038e57600080fd5b506103a960048036038101906103a49190612fb6565b6109b7565b005b3480156103b757600080fd5b506103d260048036038101906103cd919061302b565b610ae1565b005b3480156103e057600080fd5b506103e9610b93565b005b3480156103f757600080fd5b50610412600480360381019061040d9190612e41565b610c05565b60405161041f9190612d72565b60405180910390f35b34801561043457600080fd5b5061043d610c56565b005b34801561044b57600080fd5b5061046660048036038101906104619190613058565b610da9565b005b34801561047457600080fd5b5061047d610e48565b60405161048a9190612d72565b60405180910390f35b34801561049f57600080fd5b506104ba60048036038101906104b59190612e41565b610e4e565b6040516104c79190612d72565b60405180910390f35b3480156104dc57600080fd5b506104e5610e66565b6040516104f29190612e26565b60405180910390f35b34801561050757600080fd5b50610522600480360381019061051d919061302b565b610e8f565b005b34801561053057600080fd5b50610539610f41565b6040516105469190612d72565b60405180910390f35b34801561055b57600080fd5b50610564610f47565b6040516105719190612ba9565b60405180910390f35b34801561058657600080fd5b506105a1600480360381019061059c9190613058565b610f84565b005b3480156105af57600080fd5b506105ca60048036038101906105c59190613085565b611023565b005b3480156105d857600080fd5b506105f360048036038101906105ee9190612c73565b6110da565b6040516106009190612cce565b60405180910390f35b34801561061557600080fd5b50610630600480360381019061062b9190612e41565b6110f8565b60405161063d9190612cce565b60405180910390f35b34801561065257600080fd5b5061065b611118565b005b34801561066957600080fd5b50610684600480360381019061067f9190613147565b611192565b005b34801561069257600080fd5b506106ad60048036038101906106a891906131a7565b6112cc565b6040516106ba9190612d72565b60405180910390f35b3480156106cf57600080fd5b506106ea60048036038101906106e59190613058565b611353565b005b3480156106f857600080fd5b50610713600480360381019061070e9190612e41565b6113f2565b005b60606040518060400160405280600881526020017f52756e6573426f74000000000000000000000000000000000000000000000000815250905090565b600061076661075f6115b3565b84846115bb565b6001905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012600a6107a69190613349565b620f42406107b49190613394565b905090565b60006107c6848484611784565b610887846107d26115b3565b61088285604051806060016040528060288152602001613e3560289139600c60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108386115b3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120099092919063ffffffff16565b6115bb565b600190509392505050565b60075481565b60006012905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108cf6115b3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461095c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095390613422565b60405180910390fd5b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6109bf6115b3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4390613422565b60405180910390fd5b60005b8151811015610add57600160086000848481518110610a7157610a70613442565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610ad590613471565b915050610a4f565b5050565b610ae96115b3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6d90613422565b60405180910390fd5b80600460166101000a81548160ff02191690831515021790555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bd46115b3565b73ffffffffffffffffffffffffffffffffffffffff1614610bf457600080fd5b6000479050610c028161206d565b50565b6000610c4f600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120d9565b9050919050565b610c5e6115b3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ceb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce290613422565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610db16115b3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3590613422565b60405180910390fd5b8060058190555050565b60055481565b60096020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610e976115b3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1b90613422565b60405180910390fd5b80600460146101000a81548160ff02191690831515021790555050565b60065481565b60606040518060400160405280600481526020017f52426f7400000000000000000000000000000000000000000000000000000000815250905090565b610f8c6115b3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611019576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101090613422565b60405180910390fd5b8060078190555050565b61102b6115b3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110af90613422565b60405180910390fd5b8360108190555082601281905550816011819055508060138190555050505050565b60006110ee6110e76115b3565b8484611784565b6001905092915050565b60086020528060005260406000206000915054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111596115b3565b73ffffffffffffffffffffffffffffffffffffffff161461117957600080fd5b600061118430610c05565b905061118f81612147565b50565b61119a6115b3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611227576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121e90613422565b60405180910390fd5b60005b838390508110156112c65781600d600086868581811061124d5761124c613442565b5b90506020020160208101906112629190612e41565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806112be90613471565b91505061122a565b50505050565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61135b6115b3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113df90613422565b60405180910390fd5b8060068190555050565b6113fa6115b3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611487576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147e90613422565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ed9061352b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361162a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611621906135bd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611699576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116909061364f565b60405180910390fd5b80600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117779190612d72565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ea906136e1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611862576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185990613773565b60405180910390fd5b600081116118a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189c90613805565b60405180910390fd5b6118ad610e66565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561191b57506118eb610e66565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d0857600460149054906101000a900460ff166119aa5761193c610e66565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146119a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a090613897565b60405180910390fd5b5b6005548111156119ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e690613903565b60405180910390fd5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a935750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611ad2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac990613995565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611b7f5760065481611b3484610c05565b611b3e91906139b5565b10611b7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7590613a5b565b60405180910390fd5b5b6000611b8a30610c05565b9050600060075482101590506005548210611ba55760055491505b808015611bbf5750600460159054906101000a900460ff16155b8015611c195750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c315750600460169054906101000a900460ff165b8015611c875750600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611cdd5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d0557611ceb82612147565b60004790506000811115611d0357611d024761206d565b5b505b50505b600060019050600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611daf5750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611e625750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e615750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e705760009050611ff7565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f1b5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f33576010546014819055506011546015819055505b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611fde5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611ff6576012546014819055506013546015819055505b5b612003848484846123c0565b50505050565b6000838311158290612051576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120489190612ba9565b60405180910390fd5b50600083856120609190613a7b565b9050809150509392505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156120d5573d6000803e3d6000fd5b5050565b6000600e54821115612120576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211790613b21565b60405180910390fd5b600061212a6123ed565b905061213f818461241890919063ffffffff16565b915050919050565b6001600460156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561217f5761217e612e73565b5b6040519080825280602002602001820160405280156121ad5781602001602082028036833780820191505090505b50905030816000815181106121c5576121c4613442565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561226c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122909190613b56565b816001815181106122a4576122a3613442565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061230b30600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115bb565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161236f959493929190613c7c565b600060405180830381600087803b15801561238957600080fd5b505af115801561239d573d6000803e3d6000fd5b50505050506000600460156101000a81548160ff02191690831515021790555050565b806123ce576123cd612462565b5b6123d984848461249f565b806123e7576123e661266a565b5b50505050565b60008060006123fa61267e565b91509150612411818361241890919063ffffffff16565b9250505090565b600061245a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612716565b905092915050565b600060145414801561247657506000601554145b61249d57601454601681905550601554601781905550600060148190555060006015819055505b565b6000806000806000806124b187612779565b95509550955095509550955061250f86600a60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127e190919063ffffffff16565b600a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125a485600a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282b90919063ffffffff16565b600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125f081612889565b6125fa8483612946565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126579190612d72565b60405180910390a3505050505050505050565b601654601481905550601754601581905550565b6000806000600e54905060006012600a6126989190613349565b620f42406126a69190613394565b90506126d86012600a6126b99190613349565b620f42406126c79190613394565b600e5461241890919063ffffffff16565b82101561270957600e546012600a6126f09190613349565b620f42406126fe9190613394565b935093505050612712565b81819350935050505b9091565b6000808311829061275d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127549190612ba9565b60405180910390fd5b506000838561276c9190613d05565b9050809150509392505050565b60008060008060008060008060006127968a601454601554612980565b92509250925060006127a66123ed565b905060008060006127b98e878787612a16565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061282383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612009565b905092915050565b600080828461283a91906139b5565b90508381101561287f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287690613d82565b60405180910390fd5b8091505092915050565b60006128936123ed565b905060006128aa8284612a9f90919063ffffffff16565b90506128fe81600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282b90919063ffffffff16565b600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61295b82600e546127e190919063ffffffff16565b600e8190555061297681600f5461282b90919063ffffffff16565b600f819055505050565b6000806000806129ac606461299e888a612a9f90919063ffffffff16565b61241890919063ffffffff16565b905060006129d660646129c8888b612a9f90919063ffffffff16565b61241890919063ffffffff16565b905060006129ff826129f1858c6127e190919063ffffffff16565b6127e190919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612a2f8589612a9f90919063ffffffff16565b90506000612a468689612a9f90919063ffffffff16565b90506000612a5d8789612a9f90919063ffffffff16565b90506000612a8682612a7885876127e190919063ffffffff16565b6127e190919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612ab15760009050612b13565b60008284612abf9190613394565b9050828482612ace9190613d05565b14612b0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0590613e14565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b53578082015181840152602081019050612b38565b60008484015250505050565b6000601f19601f8301169050919050565b6000612b7b82612b19565b612b858185612b24565b9350612b95818560208601612b35565b612b9e81612b5f565b840191505092915050565b60006020820190508181036000830152612bc38184612b70565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c0a82612bdf565b9050919050565b612c1a81612bff565b8114612c2557600080fd5b50565b600081359050612c3781612c11565b92915050565b6000819050919050565b612c5081612c3d565b8114612c5b57600080fd5b50565b600081359050612c6d81612c47565b92915050565b60008060408385031215612c8a57612c89612bd5565b5b6000612c9885828601612c28565b9250506020612ca985828601612c5e565b9150509250929050565b60008115159050919050565b612cc881612cb3565b82525050565b6000602082019050612ce36000830184612cbf565b92915050565b6000819050919050565b6000612d0e612d09612d0484612bdf565b612ce9565b612bdf565b9050919050565b6000612d2082612cf3565b9050919050565b6000612d3282612d15565b9050919050565b612d4281612d27565b82525050565b6000602082019050612d5d6000830184612d39565b92915050565b612d6c81612c3d565b82525050565b6000602082019050612d876000830184612d63565b92915050565b600080600060608486031215612da657612da5612bd5565b5b6000612db486828701612c28565b9350506020612dc586828701612c28565b9250506040612dd686828701612c5e565b9150509250925092565b600060ff82169050919050565b612df681612de0565b82525050565b6000602082019050612e116000830184612ded565b92915050565b612e2081612bff565b82525050565b6000602082019050612e3b6000830184612e17565b92915050565b600060208284031215612e5757612e56612bd5565b5b6000612e6584828501612c28565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612eab82612b5f565b810181811067ffffffffffffffff82111715612eca57612ec9612e73565b5b80604052505050565b6000612edd612bcb565b9050612ee98282612ea2565b919050565b600067ffffffffffffffff821115612f0957612f08612e73565b5b602082029050602081019050919050565b600080fd5b6000612f32612f2d84612eee565b612ed3565b90508083825260208201905060208402830185811115612f5557612f54612f1a565b5b835b81811015612f7e5780612f6a8882612c28565b845260208401935050602081019050612f57565b5050509392505050565b600082601f830112612f9d57612f9c612e6e565b5b8135612fad848260208601612f1f565b91505092915050565b600060208284031215612fcc57612fcb612bd5565b5b600082013567ffffffffffffffff811115612fea57612fe9612bda565b5b612ff684828501612f88565b91505092915050565b61300881612cb3565b811461301357600080fd5b50565b60008135905061302581612fff565b92915050565b60006020828403121561304157613040612bd5565b5b600061304f84828501613016565b91505092915050565b60006020828403121561306e5761306d612bd5565b5b600061307c84828501612c5e565b91505092915050565b6000806000806080858703121561309f5761309e612bd5565b5b60006130ad87828801612c5e565b94505060206130be87828801612c5e565b93505060406130cf87828801612c5e565b92505060606130e087828801612c5e565b91505092959194509250565b600080fd5b60008083601f84011261310757613106612e6e565b5b8235905067ffffffffffffffff811115613124576131236130ec565b5b6020830191508360208202830111156131405761313f612f1a565b5b9250929050565b6000806000604084860312156131605761315f612bd5565b5b600084013567ffffffffffffffff81111561317e5761317d612bda565b5b61318a868287016130f1565b9350935050602061319d86828701613016565b9150509250925092565b600080604083850312156131be576131bd612bd5565b5b60006131cc85828601612c28565b92505060206131dd85828601612c28565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561326d57808604811115613249576132486131e7565b5b60018516156132585780820291505b808102905061326685613216565b945061322d565b94509492505050565b6000826132865760019050613342565b816132945760009050613342565b81600181146132aa57600281146132b4576132e3565b6001915050613342565b60ff8411156132c6576132c56131e7565b5b8360020a9150848211156132dd576132dc6131e7565b5b50613342565b5060208310610133831016604e8410600b84101617156133185782820a905083811115613313576133126131e7565b5b613342565b6133258484846001613223565b9250905081840481111561333c5761333b6131e7565b5b81810290505b9392505050565b600061335482612c3d565b915061335f83612de0565b925061338c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613276565b905092915050565b600061339f82612c3d565b91506133aa83612c3d565b92508282026133b881612c3d565b915082820484148315176133cf576133ce6131e7565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061340c602083612b24565b9150613417826133d6565b602082019050919050565b6000602082019050818103600083015261343b816133ff565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061347c82612c3d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036134ae576134ad6131e7565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613515602683612b24565b9150613520826134b9565b604082019050919050565b6000602082019050818103600083015261354481613508565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006135a7602483612b24565b91506135b28261354b565b604082019050919050565b600060208201905081810360008301526135d68161359a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613639602283612b24565b9150613644826135dd565b604082019050919050565b600060208201905081810360008301526136688161362c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006136cb602583612b24565b91506136d68261366f565b604082019050919050565b600060208201905081810360008301526136fa816136be565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061375d602383612b24565b915061376882613701565b604082019050919050565b6000602082019050818103600083015261378c81613750565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006137ef602983612b24565b91506137fa82613793565b604082019050919050565b6000602082019050818103600083015261381e816137e2565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613881603f83612b24565b915061388c82613825565b604082019050919050565b600060208201905081810360008301526138b081613874565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006138ed601c83612b24565b91506138f8826138b7565b602082019050919050565b6000602082019050818103600083015261391c816138e0565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b600061397f602383612b24565b915061398a82613923565b604082019050919050565b600060208201905081810360008301526139ae81613972565b9050919050565b60006139c082612c3d565b91506139cb83612c3d565b92508282019050808211156139e3576139e26131e7565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613a45602383612b24565b9150613a50826139e9565b604082019050919050565b60006020820190508181036000830152613a7481613a38565b9050919050565b6000613a8682612c3d565b9150613a9183612c3d565b9250828203905081811115613aa957613aa86131e7565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613b0b602a83612b24565b9150613b1682613aaf565b604082019050919050565b60006020820190508181036000830152613b3a81613afe565b9050919050565b600081519050613b5081612c11565b92915050565b600060208284031215613b6c57613b6b612bd5565b5b6000613b7a84828501613b41565b91505092915050565b6000819050919050565b6000613ba8613ba3613b9e84613b83565b612ce9565b612c3d565b9050919050565b613bb881613b8d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613bf381612bff565b82525050565b6000613c058383613bea565b60208301905092915050565b6000602082019050919050565b6000613c2982613bbe565b613c338185613bc9565b9350613c3e83613bda565b8060005b83811015613c6f578151613c568882613bf9565b9750613c6183613c11565b925050600181019050613c42565b5085935050505092915050565b600060a082019050613c916000830188612d63565b613c9e6020830187613baf565b8181036040830152613cb08186613c1e565b9050613cbf6060830185612e17565b613ccc6080830184612d63565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d1082612c3d565b9150613d1b83612c3d565b925082613d2b57613d2a613cd6565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613d6c601b83612b24565b9150613d7782613d36565b602082019050919050565b60006020820190508181036000830152613d9b81613d5f565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613dfe602183612b24565b9150613e0982613da2565b604082019050919050565b60006020820190508181036000830152613e2d81613df1565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b26394e0d20e49cae8834c8f2db4c213236ea4eae1be1ed4088ca45391966f1e64736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101d15760003560e01c80637d1db4a5116100f7578063a2a957bb11610095578063c492f04611610064578063c492f0461461065d578063dd62ed3e14610686578063ea1644d5146106c3578063f2fde38b146106ec576101d8565b8063a2a957bb146105a3578063a9059cbb146105cc578063bfd7928414610609578063c3c8cd8014610646576101d8565b80638f70ccf7116100d15780638f70ccf7146104fb5780638f9a55c01461052457806395d89b411461054f57806398a5c3151461057a576101d8565b80637d1db4a5146104685780637f2feddc146104935780638da5cb5b146104d0576101d8565b806349bd5a5e1161016f5780636fc3eaec1161013e5780636fc3eaec146103d457806370a08231146103eb578063715018a61461042857806374010ece1461043f576101d8565b806349bd5a5e1461032e578063537df3b6146103595780635fff252d146103825780636d8aa8f8146103ab576101d8565b806318160ddd116101ab57806318160ddd1461027057806323b872dd1461029b5780632fd689e3146102d8578063313ce56714610303576101d8565b806306fdde03146101dd578063095ea7b3146102085780631694505e14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610715565b6040516101ff9190612ba9565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190612c73565b610752565b60405161023c9190612cce565b60405180910390f35b34801561025157600080fd5b5061025a610770565b6040516102679190612d48565b60405180910390f35b34801561027c57600080fd5b50610285610796565b6040516102929190612d72565b60405180910390f35b3480156102a757600080fd5b506102c260048036038101906102bd9190612d8d565b6107b9565b6040516102cf9190612cce565b60405180910390f35b3480156102e457600080fd5b506102ed610892565b6040516102fa9190612d72565b60405180910390f35b34801561030f57600080fd5b50610318610898565b6040516103259190612dfc565b60405180910390f35b34801561033a57600080fd5b506103436108a1565b6040516103509190612e26565b60405180910390f35b34801561036557600080fd5b50610380600480360381019061037b9190612e41565b6108c7565b005b34801561038e57600080fd5b506103a960048036038101906103a49190612fb6565b6109b7565b005b3480156103b757600080fd5b506103d260048036038101906103cd919061302b565b610ae1565b005b3480156103e057600080fd5b506103e9610b93565b005b3480156103f757600080fd5b50610412600480360381019061040d9190612e41565b610c05565b60405161041f9190612d72565b60405180910390f35b34801561043457600080fd5b5061043d610c56565b005b34801561044b57600080fd5b5061046660048036038101906104619190613058565b610da9565b005b34801561047457600080fd5b5061047d610e48565b60405161048a9190612d72565b60405180910390f35b34801561049f57600080fd5b506104ba60048036038101906104b59190612e41565b610e4e565b6040516104c79190612d72565b60405180910390f35b3480156104dc57600080fd5b506104e5610e66565b6040516104f29190612e26565b60405180910390f35b34801561050757600080fd5b50610522600480360381019061051d919061302b565b610e8f565b005b34801561053057600080fd5b50610539610f41565b6040516105469190612d72565b60405180910390f35b34801561055b57600080fd5b50610564610f47565b6040516105719190612ba9565b60405180910390f35b34801561058657600080fd5b506105a1600480360381019061059c9190613058565b610f84565b005b3480156105af57600080fd5b506105ca60048036038101906105c59190613085565b611023565b005b3480156105d857600080fd5b506105f360048036038101906105ee9190612c73565b6110da565b6040516106009190612cce565b60405180910390f35b34801561061557600080fd5b50610630600480360381019061062b9190612e41565b6110f8565b60405161063d9190612cce565b60405180910390f35b34801561065257600080fd5b5061065b611118565b005b34801561066957600080fd5b50610684600480360381019061067f9190613147565b611192565b005b34801561069257600080fd5b506106ad60048036038101906106a891906131a7565b6112cc565b6040516106ba9190612d72565b60405180910390f35b3480156106cf57600080fd5b506106ea60048036038101906106e59190613058565b611353565b005b3480156106f857600080fd5b50610713600480360381019061070e9190612e41565b6113f2565b005b60606040518060400160405280600881526020017f52756e6573426f74000000000000000000000000000000000000000000000000815250905090565b600061076661075f6115b3565b84846115bb565b6001905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012600a6107a69190613349565b620f42406107b49190613394565b905090565b60006107c6848484611784565b610887846107d26115b3565b61088285604051806060016040528060288152602001613e3560289139600c60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108386115b3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120099092919063ffffffff16565b6115bb565b600190509392505050565b60075481565b60006012905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108cf6115b3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461095c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095390613422565b60405180910390fd5b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6109bf6115b3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4390613422565b60405180910390fd5b60005b8151811015610add57600160086000848481518110610a7157610a70613442565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610ad590613471565b915050610a4f565b5050565b610ae96115b3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6d90613422565b60405180910390fd5b80600460166101000a81548160ff02191690831515021790555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bd46115b3565b73ffffffffffffffffffffffffffffffffffffffff1614610bf457600080fd5b6000479050610c028161206d565b50565b6000610c4f600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120d9565b9050919050565b610c5e6115b3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ceb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce290613422565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610db16115b3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3590613422565b60405180910390fd5b8060058190555050565b60055481565b60096020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610e976115b3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1b90613422565b60405180910390fd5b80600460146101000a81548160ff02191690831515021790555050565b60065481565b60606040518060400160405280600481526020017f52426f7400000000000000000000000000000000000000000000000000000000815250905090565b610f8c6115b3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611019576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101090613422565b60405180910390fd5b8060078190555050565b61102b6115b3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110af90613422565b60405180910390fd5b8360108190555082601281905550816011819055508060138190555050505050565b60006110ee6110e76115b3565b8484611784565b6001905092915050565b60086020528060005260406000206000915054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111596115b3565b73ffffffffffffffffffffffffffffffffffffffff161461117957600080fd5b600061118430610c05565b905061118f81612147565b50565b61119a6115b3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611227576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121e90613422565b60405180910390fd5b60005b838390508110156112c65781600d600086868581811061124d5761124c613442565b5b90506020020160208101906112629190612e41565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806112be90613471565b91505061122a565b50505050565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61135b6115b3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113df90613422565b60405180910390fd5b8060068190555050565b6113fa6115b3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611487576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147e90613422565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ed9061352b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361162a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611621906135bd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611699576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116909061364f565b60405180910390fd5b80600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117779190612d72565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ea906136e1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611862576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185990613773565b60405180910390fd5b600081116118a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189c90613805565b60405180910390fd5b6118ad610e66565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561191b57506118eb610e66565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d0857600460149054906101000a900460ff166119aa5761193c610e66565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146119a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a090613897565b60405180910390fd5b5b6005548111156119ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e690613903565b60405180910390fd5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a935750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611ad2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac990613995565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611b7f5760065481611b3484610c05565b611b3e91906139b5565b10611b7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7590613a5b565b60405180910390fd5b5b6000611b8a30610c05565b9050600060075482101590506005548210611ba55760055491505b808015611bbf5750600460159054906101000a900460ff16155b8015611c195750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c315750600460169054906101000a900460ff165b8015611c875750600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611cdd5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d0557611ceb82612147565b60004790506000811115611d0357611d024761206d565b5b505b50505b600060019050600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611daf5750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611e625750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e615750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e705760009050611ff7565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f1b5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f33576010546014819055506011546015819055505b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611fde5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611ff6576012546014819055506013546015819055505b5b612003848484846123c0565b50505050565b6000838311158290612051576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120489190612ba9565b60405180910390fd5b50600083856120609190613a7b565b9050809150509392505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156120d5573d6000803e3d6000fd5b5050565b6000600e54821115612120576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211790613b21565b60405180910390fd5b600061212a6123ed565b905061213f818461241890919063ffffffff16565b915050919050565b6001600460156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561217f5761217e612e73565b5b6040519080825280602002602001820160405280156121ad5781602001602082028036833780820191505090505b50905030816000815181106121c5576121c4613442565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561226c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122909190613b56565b816001815181106122a4576122a3613442565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061230b30600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115bb565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161236f959493929190613c7c565b600060405180830381600087803b15801561238957600080fd5b505af115801561239d573d6000803e3d6000fd5b50505050506000600460156101000a81548160ff02191690831515021790555050565b806123ce576123cd612462565b5b6123d984848461249f565b806123e7576123e661266a565b5b50505050565b60008060006123fa61267e565b91509150612411818361241890919063ffffffff16565b9250505090565b600061245a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612716565b905092915050565b600060145414801561247657506000601554145b61249d57601454601681905550601554601781905550600060148190555060006015819055505b565b6000806000806000806124b187612779565b95509550955095509550955061250f86600a60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127e190919063ffffffff16565b600a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125a485600a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282b90919063ffffffff16565b600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125f081612889565b6125fa8483612946565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126579190612d72565b60405180910390a3505050505050505050565b601654601481905550601754601581905550565b6000806000600e54905060006012600a6126989190613349565b620f42406126a69190613394565b90506126d86012600a6126b99190613349565b620f42406126c79190613394565b600e5461241890919063ffffffff16565b82101561270957600e546012600a6126f09190613349565b620f42406126fe9190613394565b935093505050612712565b81819350935050505b9091565b6000808311829061275d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127549190612ba9565b60405180910390fd5b506000838561276c9190613d05565b9050809150509392505050565b60008060008060008060008060006127968a601454601554612980565b92509250925060006127a66123ed565b905060008060006127b98e878787612a16565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061282383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612009565b905092915050565b600080828461283a91906139b5565b90508381101561287f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287690613d82565b60405180910390fd5b8091505092915050565b60006128936123ed565b905060006128aa8284612a9f90919063ffffffff16565b90506128fe81600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282b90919063ffffffff16565b600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61295b82600e546127e190919063ffffffff16565b600e8190555061297681600f5461282b90919063ffffffff16565b600f819055505050565b6000806000806129ac606461299e888a612a9f90919063ffffffff16565b61241890919063ffffffff16565b905060006129d660646129c8888b612a9f90919063ffffffff16565b61241890919063ffffffff16565b905060006129ff826129f1858c6127e190919063ffffffff16565b6127e190919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612a2f8589612a9f90919063ffffffff16565b90506000612a468689612a9f90919063ffffffff16565b90506000612a5d8789612a9f90919063ffffffff16565b90506000612a8682612a7885876127e190919063ffffffff16565b6127e190919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612ab15760009050612b13565b60008284612abf9190613394565b9050828482612ace9190613d05565b14612b0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0590613e14565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b53578082015181840152602081019050612b38565b60008484015250505050565b6000601f19601f8301169050919050565b6000612b7b82612b19565b612b858185612b24565b9350612b95818560208601612b35565b612b9e81612b5f565b840191505092915050565b60006020820190508181036000830152612bc38184612b70565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c0a82612bdf565b9050919050565b612c1a81612bff565b8114612c2557600080fd5b50565b600081359050612c3781612c11565b92915050565b6000819050919050565b612c5081612c3d565b8114612c5b57600080fd5b50565b600081359050612c6d81612c47565b92915050565b60008060408385031215612c8a57612c89612bd5565b5b6000612c9885828601612c28565b9250506020612ca985828601612c5e565b9150509250929050565b60008115159050919050565b612cc881612cb3565b82525050565b6000602082019050612ce36000830184612cbf565b92915050565b6000819050919050565b6000612d0e612d09612d0484612bdf565b612ce9565b612bdf565b9050919050565b6000612d2082612cf3565b9050919050565b6000612d3282612d15565b9050919050565b612d4281612d27565b82525050565b6000602082019050612d5d6000830184612d39565b92915050565b612d6c81612c3d565b82525050565b6000602082019050612d876000830184612d63565b92915050565b600080600060608486031215612da657612da5612bd5565b5b6000612db486828701612c28565b9350506020612dc586828701612c28565b9250506040612dd686828701612c5e565b9150509250925092565b600060ff82169050919050565b612df681612de0565b82525050565b6000602082019050612e116000830184612ded565b92915050565b612e2081612bff565b82525050565b6000602082019050612e3b6000830184612e17565b92915050565b600060208284031215612e5757612e56612bd5565b5b6000612e6584828501612c28565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612eab82612b5f565b810181811067ffffffffffffffff82111715612eca57612ec9612e73565b5b80604052505050565b6000612edd612bcb565b9050612ee98282612ea2565b919050565b600067ffffffffffffffff821115612f0957612f08612e73565b5b602082029050602081019050919050565b600080fd5b6000612f32612f2d84612eee565b612ed3565b90508083825260208201905060208402830185811115612f5557612f54612f1a565b5b835b81811015612f7e5780612f6a8882612c28565b845260208401935050602081019050612f57565b5050509392505050565b600082601f830112612f9d57612f9c612e6e565b5b8135612fad848260208601612f1f565b91505092915050565b600060208284031215612fcc57612fcb612bd5565b5b600082013567ffffffffffffffff811115612fea57612fe9612bda565b5b612ff684828501612f88565b91505092915050565b61300881612cb3565b811461301357600080fd5b50565b60008135905061302581612fff565b92915050565b60006020828403121561304157613040612bd5565b5b600061304f84828501613016565b91505092915050565b60006020828403121561306e5761306d612bd5565b5b600061307c84828501612c5e565b91505092915050565b6000806000806080858703121561309f5761309e612bd5565b5b60006130ad87828801612c5e565b94505060206130be87828801612c5e565b93505060406130cf87828801612c5e565b92505060606130e087828801612c5e565b91505092959194509250565b600080fd5b60008083601f84011261310757613106612e6e565b5b8235905067ffffffffffffffff811115613124576131236130ec565b5b6020830191508360208202830111156131405761313f612f1a565b5b9250929050565b6000806000604084860312156131605761315f612bd5565b5b600084013567ffffffffffffffff81111561317e5761317d612bda565b5b61318a868287016130f1565b9350935050602061319d86828701613016565b9150509250925092565b600080604083850312156131be576131bd612bd5565b5b60006131cc85828601612c28565b92505060206131dd85828601612c28565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561326d57808604811115613249576132486131e7565b5b60018516156132585780820291505b808102905061326685613216565b945061322d565b94509492505050565b6000826132865760019050613342565b816132945760009050613342565b81600181146132aa57600281146132b4576132e3565b6001915050613342565b60ff8411156132c6576132c56131e7565b5b8360020a9150848211156132dd576132dc6131e7565b5b50613342565b5060208310610133831016604e8410600b84101617156133185782820a905083811115613313576133126131e7565b5b613342565b6133258484846001613223565b9250905081840481111561333c5761333b6131e7565b5b81810290505b9392505050565b600061335482612c3d565b915061335f83612de0565b925061338c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613276565b905092915050565b600061339f82612c3d565b91506133aa83612c3d565b92508282026133b881612c3d565b915082820484148315176133cf576133ce6131e7565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061340c602083612b24565b9150613417826133d6565b602082019050919050565b6000602082019050818103600083015261343b816133ff565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061347c82612c3d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036134ae576134ad6131e7565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613515602683612b24565b9150613520826134b9565b604082019050919050565b6000602082019050818103600083015261354481613508565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006135a7602483612b24565b91506135b28261354b565b604082019050919050565b600060208201905081810360008301526135d68161359a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613639602283612b24565b9150613644826135dd565b604082019050919050565b600060208201905081810360008301526136688161362c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006136cb602583612b24565b91506136d68261366f565b604082019050919050565b600060208201905081810360008301526136fa816136be565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061375d602383612b24565b915061376882613701565b604082019050919050565b6000602082019050818103600083015261378c81613750565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006137ef602983612b24565b91506137fa82613793565b604082019050919050565b6000602082019050818103600083015261381e816137e2565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613881603f83612b24565b915061388c82613825565b604082019050919050565b600060208201905081810360008301526138b081613874565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006138ed601c83612b24565b91506138f8826138b7565b602082019050919050565b6000602082019050818103600083015261391c816138e0565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b600061397f602383612b24565b915061398a82613923565b604082019050919050565b600060208201905081810360008301526139ae81613972565b9050919050565b60006139c082612c3d565b91506139cb83612c3d565b92508282019050808211156139e3576139e26131e7565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613a45602383612b24565b9150613a50826139e9565b604082019050919050565b60006020820190508181036000830152613a7481613a38565b9050919050565b6000613a8682612c3d565b9150613a9183612c3d565b9250828203905081811115613aa957613aa86131e7565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613b0b602a83612b24565b9150613b1682613aaf565b604082019050919050565b60006020820190508181036000830152613b3a81613afe565b9050919050565b600081519050613b5081612c11565b92915050565b600060208284031215613b6c57613b6b612bd5565b5b6000613b7a84828501613b41565b91505092915050565b6000819050919050565b6000613ba8613ba3613b9e84613b83565b612ce9565b612c3d565b9050919050565b613bb881613b8d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613bf381612bff565b82525050565b6000613c058383613bea565b60208301905092915050565b6000602082019050919050565b6000613c2982613bbe565b613c338185613bc9565b9350613c3e83613bda565b8060005b83811015613c6f578151613c568882613bf9565b9750613c6183613c11565b925050600181019050613c42565b5085935050505092915050565b600060a082019050613c916000830188612d63565b613c9e6020830187613baf565b8181036040830152613cb08186613c1e565b9050613cbf6060830185612e17565b613ccc6080830184612d63565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d1082612c3d565b9150613d1b83612c3d565b925082613d2b57613d2a613cd6565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613d6c601b83612b24565b9150613d7782613d36565b602082019050919050565b60006020820190508181036000830152613d9b81613d5f565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613dfe602183612b24565b9150613e0982613da2565b604082019050919050565b60006020820190508181036000830152613e2d81613df1565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b26394e0d20e49cae8834c8f2db4c213236ea4eae1be1ed4088ca45391966f1e64736f6c63430008120033

Deployed Bytecode Sourcemap

4227:13289:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6581:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7506:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4526:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6858:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7707:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4948:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6767:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4574:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12857:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12675:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16898:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12471:196;;;;;;;;;;;;;:::i;:::-;;6961:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1714:148;;;;;;;;;;;;;:::i;:::-;;17038:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4826:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5059:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1500:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12157:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4886:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6672:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16707:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16364:291;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7107:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5015:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12266:197;;;;;;;;;;;;;:::i;:::-;;17277:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7314:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17154:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1870:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6581:83;6618:13;6651:5;;;;;;;;;;;;;;;;;6644:12;;6581:83;:::o;7506:193::-;7608:4;7630:39;7639:12;:10;:12::i;:::-;7653:7;7662:6;7630:8;:39::i;:::-;7687:4;7680:11;;7506:193;;;;:::o;4526:41::-;;;;;;;;;;;;;:::o;6858:95::-;6911:7;4411:2;4804;:15;;;;:::i;:::-;4794:7;:25;;;;:::i;:::-;6931:14;;6858:95;:::o;7707:446::-;7839:4;7856:36;7866:6;7874:9;7885:6;7856:9;:36::i;:::-;7903:220;7926:6;7947:12;:10;:12::i;:::-;7974:138;8030:6;7974:138;;;;;;;;;;;;;;;;;:11;:19;7986:6;7974:19;;;;;;;;;;;;;;;:33;7994:12;:10;:12::i;:::-;7974:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7903:8;:220::i;:::-;8141:4;8134:11;;7707:446;;;;;:::o;4948:58::-;;;;:::o;6767:83::-;6808:5;4411:2;6826:16;;6767:83;:::o;4574:28::-;;;;;;;;;;;;;:::o;12857:101::-;1637:12;:10;:12::i;:::-;1627:22;;:6;;;;;;;;;;:22;;;1619:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12945:5:::1;12930:4;:12;12935:6;12930:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;12857:101:::0;:::o;12675:174::-;1637:12;:10;:12::i;:::-;1627:22;;:6;;;;;;;;;;:22;;;1619:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12756:9:::1;12751:91;12775:5;:12;12771:1;:16;12751:91;;;12826:4;12809;:14;12814:5;12820:1;12814:8;;;;;;;;:::i;:::-;;;;;;;;12809:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12789:3;;;;;:::i;:::-;;;;12751:91;;;;12675:174:::0;:::o;16898:101::-;1637:12;:10;:12::i;:::-;1627:22;;:6;;;;;;;;;;:22;;;1619:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16979:12:::1;16965:11;;:26;;;;;;;;;;;;;;;;;;16898:101:::0;:::o;12471:196::-;12537:17;;;;;;;;;;;12521:33;;:12;:10;:12::i;:::-;:33;;;12513:42;;;;;;12566:26;12595:21;12566:50;;12627:32;12640:18;12627:12;:32::i;:::-;12502:165;12471:196::o;6961:138::-;7027:7;7054:37;7074:7;:16;7082:7;7074:16;;;;;;;;;;;;;;;;7054:19;:37::i;:::-;7047:44;;6961:138;;;:::o;1714:148::-;1637:12;:10;:12::i;:::-;1627:22;;:6;;;;;;;;;;:22;;;1619:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1821:1:::1;1784:40;;1805:6;::::0;::::1;;;;;;;;1784:40;;;;;;;;;;;;1852:1;1835:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1714:148::o:0;17038:108::-;1637:12;:10;:12::i;:::-;1627:22;;:6;;;;;;;;;;:22;;;1619:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17127:11:::1;17112:12;:26;;;;17038:108:::0;:::o;4826:53::-;;;;:::o;5059:43::-;;;;;;;;;;;;;;;;;:::o;1500:79::-;1538:7;1565:6;;;;;;;;;;;1558:13;;1500:79;:::o;12157:101::-;1637:12;:10;:12::i;:::-;1627:22;;:6;;;;;;;;;;:22;;;1619:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12238:12:::1;12224:11;;:26;;;;;;;;;;;;;;;;;;12157:101:::0;:::o;4886:55::-;;;;:::o;6672:87::-;6711:13;6744:7;;;;;;;;;;;;;;;;;6737:14;;6672:87;:::o;16707:139::-;1637:12;:10;:12::i;:::-;1627:22;;:6;;;;;;;;;;:22;;;1619:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16820:18:::1;16798:19;:40;;;;16707:139:::0;:::o;16364:291::-;1637:12;:10;:12::i;:::-;1627:22;;:6;;;;;;;;;;:22;;;1619:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16515:13:::1;16498:14;:30;;;;16557:14;16539:15;:32;;;;16597:11;16582:12;:26;;;;16635:12;16619:13;:28;;;;16364:291:::0;;;;:::o;7107:199::-;7212:4;7234:42;7244:12;:10;:12::i;:::-;7258:9;7269:6;7234:9;:42::i;:::-;7294:4;7287:11;;7107:199;;;;:::o;5015:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12266:197::-;12332:17;;;;;;;;;;;12316:33;;:12;:10;:12::i;:::-;:33;;;12308:42;;;;;;12361:23;12387:24;12405:4;12387:9;:24::i;:::-;12361:50;;12422:33;12439:15;12422:16;:33::i;:::-;12297:166;12266:197::o;17277:234::-;1637:12;:10;:12::i;:::-;1627:22;;:6;;;;;;;;;;:22;;;1619:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17394:9:::1;17390:114;17413:8;;:15;;17409:1;:19;17390:114;;;17484:8;17450:18;:31;17469:8;;17478:1;17469:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17450:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17430:3;;;;;:::i;:::-;;;;17390:114;;;;17277:234:::0;;;:::o;7314:184::-;7431:7;7463:11;:18;7475:5;7463:18;;;;;;;;;;;;;;;:27;7482:7;7463:27;;;;;;;;;;;;;;;;7456:34;;7314:184;;;;:::o;17154:115::-;1637:12;:10;:12::i;:::-;1627:22;;:6;;;;;;;;;;:22;;;1619:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17248:13:::1;17231:14;:30;;;;17154:115:::0;:::o;1870:244::-;1637:12;:10;:12::i;:::-;1627:22;;:6;;;;;;;;;;:22;;;1619:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1979:1:::1;1959:22;;:8;:22;;::::0;1951:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2069:8;2040:38;;2061:6;::::0;::::1;;;;;;;;2040:38;;;;;;;;;;;;2098:8;2089:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1870:244:::0;:::o;259:98::-;312:7;339:10;332:17;;259:98;:::o;8844:369::-;8988:1;8971:19;;:5;:19;;;8963:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9069:1;9050:21;;:7;:21;;;9042:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9151:6;9121:11;:18;9133:5;9121:18;;;;;;;;;;;;;;;:27;9140:7;9121:27;;;;;;;;;;;;;;;:36;;;;9189:7;9173:32;;9182:5;9173:32;;;9198:6;9173:32;;;;;;:::i;:::-;;;;;;;;8844:369;;;:::o;9221:2330::-;9359:1;9343:18;;:4;:18;;;9335:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9436:1;9422:16;;:2;:16;;;9414:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9506:1;9497:6;:10;9489:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9578:7;:5;:7::i;:::-;9570:15;;:4;:15;;;;:32;;;;;9595:7;:5;:7::i;:::-;9589:13;;:2;:13;;;;9570:32;9566:1259;;;9659:11;;;;;;;;;;;9654:144;;9707:7;:5;:7::i;:::-;9699:15;;:4;:15;;;9691:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9654:144;9832:12;;9822:6;:22;;9814:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9901:4;:10;9906:4;9901:10;;;;;;;;;;;;;;;;;;;;;;;;;9900:11;:24;;;;;9916:4;:8;9921:2;9916:8;;;;;;;;;;;;;;;;;;;;;;;;;9915:9;9900:24;9892:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;9990:13;;;;;;;;;;;9984:19;;:2;:19;;;9981:146;;10057:14;;10048:6;10032:13;10042:2;10032:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10024:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;9981:146;10143:28;10174:24;10192:4;10174:9;:24::i;:::-;10143:55;;10213:12;10252:19;;10228:20;:43;;10213:58;;10315:12;;10291:20;:36;10288:124;;10384:12;;10361:35;;10288:124;10432:7;:18;;;;;10444:6;;;;;;;;;;;10443:7;10432:18;:43;;;;;10462:13;;;;;;;;;;;10454:21;;:4;:21;;;;10432:43;:58;;;;;10479:11;;;;;;;;;;;10432:58;:87;;;;;10495:18;:24;10514:4;10495:24;;;;;;;;;;;;;;;;;;;;;;;;;10494:25;10432:87;:114;;;;;10524:18;:22;10543:2;10524:22;;;;;;;;;;;;;;;;;;;;;;;;;10523:23;10432:114;10428:386;;;10567:38;10584:20;10567:16;:38::i;:::-;10624:26;10653:21;10624:50;;10718:1;10697:18;:22;10693:106;;;10744:35;10757:21;10744:12;:35::i;:::-;10693:106;10548:266;10428:386;9604:1221;;9566:1259;10837:12;10852:4;10837:19;;10901:18;:24;10920:4;10901:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;10929:18;:22;10948:2;10929:22;;;;;;;;;;;;;;;;;;;;;;;;;10901:50;10900:102;;;;10965:13;;;;;;;;;;;10957:21;;:4;:21;;;;:44;;;;;10988:13;;;;;;;;;;;10982:19;;:2;:19;;;;10957:44;10900:102;10896:594;;;11029:5;11019:15;;10896:594;;;11112:13;;;;;;;;;;;11104:21;;:4;:21;;;:55;;;;;11143:15;;;;;;;;;;;11129:30;;:2;:30;;;;11104:55;11101:162;;;11192:14;;11180:9;:26;;;;11235:12;;11225:7;:22;;;;11101:162;11322:13;;;;;;;;;;;11316:19;;:2;:19;;;:55;;;;;11355:15;;;;;;;;;;;11339:32;;:4;:32;;;;11316:55;11312:165;;;11404:15;;11392:9;:27;;;;11448:13;;11438:7;:23;;;;11312:165;10896:594;11502:41;11517:4;11523:2;11527:6;11535:7;11502:14;:41::i;:::-;9324:2227;9221:2330;;;:::o;2478:224::-;2598:7;2631:1;2626;:6;;2634:12;2618:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2658:9;2674:1;2670;:5;;;;:::i;:::-;2658:17;;2693:1;2686:8;;;2478:224;;;;;:::o;12050:99::-;12107:17;;;;;;;;;;;:26;;:34;12134:6;12107:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12050:99;:::o;8161:323::-;8256:7;8314;;8303;:18;;8281:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8402:19;8424:10;:8;:10::i;:::-;8402:32;;8452:24;8464:11;8452:7;:11;;:24;;;;:::i;:::-;8445:31;;;8161:323;;;:::o;11559:483::-;5941:4;5932:6;;:13;;;;;;;;;;;;;;;;;;11637:21:::1;11675:1;11661:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11637:40;;11706:4;11688;11693:1;11688:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11732:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11722:4;11727:1;11722:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11765:62;11782:4;11797:15;;;;;;;;;;;11815:11;11765:8;:62::i;:::-;11838:15;;;;;;;;;;;:66;;;11919:11;11945:1;11961:4;11988;12008:15;11838:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11626:416;5977:5:::0;5968:6;;:14;;;;;;;;;;;;;;;;;;11559:483;:::o;12966:282::-;13122:7;13117:28;;13131:14;:12;:14::i;:::-;13117:28;13156:44;13174:6;13182:9;13193:6;13156:17;:44::i;:::-;13216:7;13211:29;;13225:15;:13;:15::i;:::-;13211:29;12966:282;;;;:::o;15927:164::-;15969:7;15990:15;16007;16026:19;:17;:19::i;:::-;15989:56;;;;16063:20;16075:7;16063;:11;;:20;;;;:::i;:::-;16056:27;;;;15927:164;:::o;2964:132::-;3022:7;3049:39;3053:1;3056;3049:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3042:46;;2964:132;;;;:::o;8492:219::-;8552:1;8539:9;;:14;:30;;;;;8568:1;8557:7;;:12;8539:30;8571:7;8535:43;8610:9;;8590:17;:29;;;;8648:7;;8630:15;:25;;;;8680:1;8668:9;:13;;;;8702:1;8692:7;:11;;;;8492:219;:::o;13256:610::-;13403:15;13433:23;13471:12;13498:23;13536:12;13563:13;13590:19;13601:7;13590:10;:19::i;:::-;13388:221;;;;;;;;;;;;13638:28;13658:7;13638;:15;13646:6;13638:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13620:7;:15;13628:6;13620:15;;;;;;;;;;;;;;;:46;;;;13698:39;13721:15;13698:7;:18;13706:9;13698:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13677:7;:18;13685:9;13677:18;;;;;;;;;;;;;;;:60;;;;13748:16;13758:5;13748:9;:16::i;:::-;13775:23;13787:4;13793;13775:11;:23::i;:::-;13831:9;13814:44;;13823:6;13814:44;;;13842:15;13814:44;;;;;;:::i;:::-;;;;;;;;13377:489;;;;;;13256:610;;;:::o;8719:117::-;8775:17;;8763:9;:29;;;;8813:15;;8803:7;:25;;;;8719:117::o;16099:257::-;16150:7;16159;16179:15;16197:7;;16179:25;;16215:15;4411:2;4804;:15;;;;:::i;:::-;4794:7;:25;;;;:::i;:::-;16215;;16265:20;4411:2;4804;:15;;;;:::i;:::-;4794:7;:25;;;;:::i;:::-;16265:7;;:11;;:20;;;;:::i;:::-;16255:7;:30;16251:61;;;16295:7;;4411:2;4804;:15;;;;:::i;:::-;4794:7;:25;;;;:::i;:::-;16287;;;;;;;;16251:61;16331:7;16340;16323:25;;;;;;16099:257;;;:::o;3104:223::-;3224:7;3256:1;3252;:5;3259:12;3244:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3283:9;3299:1;3295;:5;;;;:::i;:::-;3283:17;;3318:1;3311:8;;;3104:223;;;;;:::o;14285:615::-;14385:7;14407;14429;14451;14473;14495;14531:23;14556:12;14570:13;14600:40;14612:7;14621:9;;14632:7;;14600:11;:40::i;:::-;14530:110;;;;;;14651:19;14673:10;:8;:10::i;:::-;14651:32;;14695:15;14712:23;14737:12;14766:46;14778:7;14787:4;14793:5;14800:11;14766;:46::i;:::-;14694:118;;;;;;14831:7;14840:15;14857:4;14863:15;14880:4;14886:5;14823:69;;;;;;;;;;;;;;;;;;;14285:615;;;;;;;:::o;2334:136::-;2392:7;2419:43;2423:1;2426;2419:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2412:50;;2334:136;;;;:::o;2147:179::-;2205:7;2225:9;2241:1;2237;:5;;;;:::i;:::-;2225:17;;2266:1;2261;:6;;2253:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2317:1;2310:8;;;2147:179;;;;:::o;13874:211::-;13927:19;13949:10;:8;:10::i;:::-;13927:32;;13970:13;13986:22;13996:11;13986:5;:9;;:22;;;;:::i;:::-;13970:38;;14044:33;14071:5;14044:7;:22;14060:4;14044:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14019:7;:22;14035:4;14019:22;;;;;;;;;;;;;;;:58;;;;13916:169;;13874:211;:::o;14093:147::-;14171:17;14183:4;14171:7;;:11;;:17;;;;:::i;:::-;14161:7;:27;;;;14212:20;14227:4;14212:10;;:14;;:20;;;;:::i;:::-;14199:10;:33;;;;14093:147;;:::o;14908:469::-;15077:7;15099;15121;15156:12;15171:30;15197:3;15171:21;15183:8;15171:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15156:45;;15212:13;15228:28;15252:3;15228:19;15240:6;15228:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15212:44;;15267:23;15293:28;15315:5;15293:17;15305:4;15293:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15267:54;;15340:15;15357:4;15363:5;15332:37;;;;;;;;;14908:469;;;;;;;:::o;15385:534::-;15579:7;15601;15623;15658:15;15676:24;15688:11;15676:7;:11;;:24;;;;:::i;:::-;15658:42;;15711:12;15726:21;15735:11;15726:4;:8;;:21;;;;:::i;:::-;15711:36;;15758:13;15774:22;15784:11;15774:5;:9;;:22;;;;:::i;:::-;15758:38;;15807:23;15833:28;15855:5;15833:17;15845:4;15833:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15807:54;;15880:7;15889:15;15906:4;15872:39;;;;;;;;;;15385:534;;;;;;;;:::o;2710:246::-;2768:7;2797:1;2792;:6;2788:47;;2822:1;2815:8;;;;2788:47;2845:9;2861:1;2857;:5;;;;:::i;:::-;2845:17;;2890:1;2885;2881;:5;;;;:::i;:::-;:10;2873:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2947:1;2940:8;;;2710: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://b26394e0d20e49cae8834c8f2db4c213236ea4eae1be1ed4088ca45391966f1e
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.