ETH Price: $3,270.57 (-0.34%)
Gas: 2 Gwei

Token

PEPEPUNKS (PEPEPUNKS)
 

Overview

Max Total Supply

100,000,000 PEPEPUNKS

Holders

26

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,692,828.247090959 PEPEPUNKS

Value
$0.00
0x3d875e2c5991a6f083d1c24d8e99291b84c9816c
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:
PEPEPUNKS

Compiler Version
v0.8.14+commit.80d49f37

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-27
*/

/**
 *Submitted for verification at Etherscan.io on 2023-05-27
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.14;
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 PEPEPUNKS is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "PEPEPUNKS";
    string private constant _symbol = "PEPEPUNKS";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 100000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 0;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 0;

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

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

    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap;
    mapping (address => bool) public preTrader;
    address payable private _developmentAddress = payable(0x8852e13684d18f282fBE62F6d36F8912ae035c20);
    address payable private _marketingAddress = payable(0x8852e13684d18f282fBE62F6d36F8912ae035c20);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

    uint256 public _maxTxAmount = 2000000 * 10**9;
    uint256 public _maxWalletSize = 2000000 * 10**9;
    uint256 public _swapTokensAtAmount = 100000 * 10**9;

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

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

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

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

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

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

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

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

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "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() && !preTrader[from] && !preTrader[to]) {

            //Trade start check
            if (!tradingOpen) {
                require(preTrader[from], "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() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

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

    function _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":"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":"","type":"address"}],"name":"preTrader","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"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"}]

608060405267016345785d8a00006000196200001c91906200070e565b6000196200002b919062000775565b600655600060085560006009556000600a556000600b55600a54600c55600b54600d55600c54600e55600d54600f55738852e13684d18f282fbe62f6d36f8912ae035c20601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550738852e13684d18f282fbe62f6d36f8912ae035c20601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601660156101000a81548160ff02191690831515021790555060016016806101000a81548160ff02191690831515021790555066071afd498d000060175566071afd498d0000601855655af3107a40006019553480156200016657600080fd5b50600062000179620006a460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600654600260006200022e620006a460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000312573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033891906200081a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003a0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c691906200081a565b6040518363ffffffff1660e01b8152600401620003e59291906200085d565b6020604051808303816000875af115801562000405573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042b91906200081a565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016005600062000481620006ac60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200062e620006a460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef67016345785d8a00006040516200069591906200089b565b60405180910390a350620008b8565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200071b82620006d5565b91506200072883620006d5565b9250826200073b576200073a620006df565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200078282620006d5565b91506200078f83620006d5565b925082821015620007a557620007a462000746565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007e282620007b5565b9050919050565b620007f481620007d5565b81146200080057600080fd5b50565b6000815190506200081481620007e9565b92915050565b600060208284031215620008335762000832620007b0565b5b6000620008438482850162000803565b91505092915050565b6200085781620007d5565b82525050565b60006040820190506200087460008301856200084c565b6200088360208301846200084c565b9392505050565b6200089581620006d5565b82525050565b6000602082019050620008b260008301846200088a565b92915050565b613b0d80620008c86000396000f3fe6080604052600436106101c65760003560e01c80637f2feddc116100f7578063a9059cbb11610095578063c492f04611610064578063c492f0461461063d578063dd62ed3e14610666578063ea1644d5146106a3578063f2fde38b146106cc576101cd565b8063a9059cbb1461056f578063bdd795ef146105ac578063bfd79284146105e9578063c3c8cd8014610626576101cd565b80638f9a55c0116100d15780638f9a55c0146104c757806395d89b41146104f257806398a5c3151461051d578063a2a957bb14610546576101cd565b80637f2feddc146104365780638da5cb5b146104735780638f70ccf71461049e576101cd565b806349bd5a5e1161016457806370a082311161013e57806370a082311461038e578063715018a6146103cb57806374010ece146103e25780637d1db4a51461040b576101cd565b806349bd5a5e146103235780636d8aa8f81461034e5780636fc3eaec14610377576101cd565b806318160ddd116101a057806318160ddd1461026557806323b872dd146102905780632fd689e3146102cd578063313ce567146102f8576101cd565b806306fdde03146101d2578063095ea7b3146101fd5780631694505e1461023a576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e76106f5565b6040516101f49190612aca565b60405180910390f35b34801561020957600080fd5b50610224600480360381019061021f9190612b8a565b610732565b6040516102319190612be5565b60405180910390f35b34801561024657600080fd5b5061024f610750565b60405161025c9190612c5f565b60405180910390f35b34801561027157600080fd5b5061027a610776565b6040516102879190612c89565b60405180910390f35b34801561029c57600080fd5b506102b760048036038101906102b29190612ca4565b610786565b6040516102c49190612be5565b60405180910390f35b3480156102d957600080fd5b506102e261085f565b6040516102ef9190612c89565b60405180910390f35b34801561030457600080fd5b5061030d610865565b60405161031a9190612d13565b60405180910390f35b34801561032f57600080fd5b5061033861086e565b6040516103459190612d3d565b60405180910390f35b34801561035a57600080fd5b5061037560048036038101906103709190612d84565b610894565b005b34801561038357600080fd5b5061038c610945565b005b34801561039a57600080fd5b506103b560048036038101906103b09190612db1565b610a16565b6040516103c29190612c89565b60405180910390f35b3480156103d757600080fd5b506103e0610a67565b005b3480156103ee57600080fd5b5061040960048036038101906104049190612dde565b610bba565b005b34801561041757600080fd5b50610420610c59565b60405161042d9190612c89565b60405180910390f35b34801561044257600080fd5b5061045d60048036038101906104589190612db1565b610c5f565b60405161046a9190612c89565b60405180910390f35b34801561047f57600080fd5b50610488610c77565b6040516104959190612d3d565b60405180910390f35b3480156104aa57600080fd5b506104c560048036038101906104c09190612d84565b610ca0565b005b3480156104d357600080fd5b506104dc610d52565b6040516104e99190612c89565b60405180910390f35b3480156104fe57600080fd5b50610507610d58565b6040516105149190612aca565b60405180910390f35b34801561052957600080fd5b50610544600480360381019061053f9190612dde565b610d95565b005b34801561055257600080fd5b5061056d60048036038101906105689190612e0b565b610e34565b005b34801561057b57600080fd5b5061059660048036038101906105919190612b8a565b610eeb565b6040516105a39190612be5565b60405180910390f35b3480156105b857600080fd5b506105d360048036038101906105ce9190612db1565b610f09565b6040516105e09190612be5565b60405180910390f35b3480156105f557600080fd5b50610610600480360381019061060b9190612db1565b610f29565b60405161061d9190612be5565b60405180910390f35b34801561063257600080fd5b5061063b610f49565b005b34801561064957600080fd5b50610664600480360381019061065f9190612ed7565b611022565b005b34801561067257600080fd5b5061068d60048036038101906106889190612f37565b61115c565b60405161069a9190612c89565b60405180910390f35b3480156106af57600080fd5b506106ca60048036038101906106c59190612dde565b6111e3565b005b3480156106d857600080fd5b506106f360048036038101906106ee9190612db1565b611282565b005b60606040518060400160405280600981526020017f5045504550554e4b530000000000000000000000000000000000000000000000815250905090565b600061074661073f611443565b848461144b565b6001905092915050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600067016345785d8a0000905090565b6000610793848484611614565b6108548461079f611443565b61084f85604051806060016040528060288152602001613ab060289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610805611443565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f5a9092919063ffffffff16565b61144b565b600190509392505050565b60195481565b60006009905090565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61089c611443565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610929576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092090612fc3565b60405180910390fd5b806016806101000a81548160ff02191690831515021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610986611443565b73ffffffffffffffffffffffffffffffffffffffff1614806109fc5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109e4611443565b73ffffffffffffffffffffffffffffffffffffffff16145b610a0557600080fd5b6000479050610a1381611fbe565b50565b6000610a60600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202a565b9050919050565b610a6f611443565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610afc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af390612fc3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610bc2611443565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4690612fc3565b60405180910390fd5b8060178190555050565b60175481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ca8611443565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2c90612fc3565b60405180910390fd5b80601660146101000a81548160ff02191690831515021790555050565b60185481565b60606040518060400160405280600981526020017f5045504550554e4b530000000000000000000000000000000000000000000000815250905090565b610d9d611443565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2190612fc3565b60405180910390fd5b8060198190555050565b610e3c611443565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ec9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec090612fc3565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6000610eff610ef8611443565b8484611614565b6001905092915050565b60126020528060005260406000206000915054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f8a611443565b73ffffffffffffffffffffffffffffffffffffffff1614806110005750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fe8611443565b73ffffffffffffffffffffffffffffffffffffffff16145b61100957600080fd5b600061101430610a16565b905061101f81612098565b50565b61102a611443565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ae90612fc3565b60405180910390fd5b60005b838390508110156111565781600560008686858181106110dd576110dc612fe3565b5b90506020020160208101906110f29190612db1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061114e90613041565b9150506110ba565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6111eb611443565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126f90612fc3565b60405180910390fd5b8060188190555050565b61128a611443565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611317576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130e90612fc3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611386576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137d906130fb565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b19061318d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611529576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115209061321f565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116079190612c89565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611683576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167a906132b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e990613343565b60405180910390fd5b60008111611735576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172c906133d5565b60405180910390fd5b61173d610c77565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117ab575061177b610c77565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118015750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156118575750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c5957601660149054906101000a900460ff166118fd57601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166118fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f390613467565b60405180910390fd5b5b601754811115611942576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611939906134d3565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119e65750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1c90613565565b60405180910390fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ad25760185481611a8784610a16565b611a919190613585565b10611ad1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac89061364d565b60405180910390fd5b5b6000611add30610a16565b9050600060195482101590506017548210611af85760175491505b808015611b125750601660159054906101000a900460ff16155b8015611b6c5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611b82575060168054906101000a900460ff165b8015611bd85750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c2e5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c5657611c3c82612098565b60004790506000811115611c5457611c5347611fbe565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611d005750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611db35750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611db25750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611dc15760009050611f48565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e6c5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e8457600854600c81905550600954600d819055505b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611f2f5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611f4757600a54600c81905550600b54600d819055505b5b611f5484848484612311565b50505050565b6000838311158290611fa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f999190612aca565b60405180910390fd5b5060008385611fb1919061366d565b9050809150509392505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612026573d6000803e3d6000fd5b5050565b6000600654821115612071576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206890613713565b60405180910390fd5b600061207b61233e565b9050612090818461236990919063ffffffff16565b915050919050565b6001601660156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156120d0576120cf613733565b5b6040519080825280602002602001820160405280156120fe5781602001602082028036833780820191505090505b509050308160008151811061211657612115612fe3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e19190613777565b816001815181106121f5576121f4612fe3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061225c30601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461144b565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122c095949392919061389d565b600060405180830381600087803b1580156122da57600080fd5b505af11580156122ee573d6000803e3d6000fd5b50505050506000601660156101000a81548160ff02191690831515021790555050565b8061231f5761231e6123b3565b5b61232a8484846123f0565b80612338576123376125bb565b5b50505050565b600080600061234b6125cf565b91509150612362818361236990919063ffffffff16565b9250505090565b60006123ab83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061262e565b905092915050565b6000600c541480156123c757506000600d54145b6123ee57600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061240287612691565b95509550955095509550955061246086600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f990919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124f585600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461274390919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612541816127a1565b61254b848361285e565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516125a89190612c89565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006006549050600067016345785d8a0000905061260367016345785d8a000060065461236990919063ffffffff16565b8210156126215760065467016345785d8a000093509350505061262a565b81819350935050505b9091565b60008083118290612675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266c9190612aca565b60405180910390fd5b50600083856126849190613926565b9050809150509392505050565b60008060008060008060008060006126ae8a600c54600d54612898565b92509250925060006126be61233e565b905060008060006126d18e87878761292e565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061273b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f5a565b905092915050565b60008082846127529190613585565b905083811015612797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278e906139a3565b60405180910390fd5b8091505092915050565b60006127ab61233e565b905060006127c282846129b790919063ffffffff16565b905061281681600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461274390919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612873826006546126f990919063ffffffff16565b60068190555061288e8160075461274390919063ffffffff16565b6007819055505050565b6000806000806128c460646128b6888a6129b790919063ffffffff16565b61236990919063ffffffff16565b905060006128ee60646128e0888b6129b790919063ffffffff16565b61236990919063ffffffff16565b9050600061291782612909858c6126f990919063ffffffff16565b6126f990919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061294785896129b790919063ffffffff16565b9050600061295e86896129b790919063ffffffff16565b9050600061297587896129b790919063ffffffff16565b9050600061299e8261299085876126f990919063ffffffff16565b6126f990919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083036129c95760009050612a2b565b600082846129d791906139c3565b90508284826129e69190613926565b14612a26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1d90613a8f565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a6b578082015181840152602081019050612a50565b83811115612a7a576000848401525b50505050565b6000601f19601f8301169050919050565b6000612a9c82612a31565b612aa68185612a3c565b9350612ab6818560208601612a4d565b612abf81612a80565b840191505092915050565b60006020820190508181036000830152612ae48184612a91565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b2182612af6565b9050919050565b612b3181612b16565b8114612b3c57600080fd5b50565b600081359050612b4e81612b28565b92915050565b6000819050919050565b612b6781612b54565b8114612b7257600080fd5b50565b600081359050612b8481612b5e565b92915050565b60008060408385031215612ba157612ba0612aec565b5b6000612baf85828601612b3f565b9250506020612bc085828601612b75565b9150509250929050565b60008115159050919050565b612bdf81612bca565b82525050565b6000602082019050612bfa6000830184612bd6565b92915050565b6000819050919050565b6000612c25612c20612c1b84612af6565b612c00565b612af6565b9050919050565b6000612c3782612c0a565b9050919050565b6000612c4982612c2c565b9050919050565b612c5981612c3e565b82525050565b6000602082019050612c746000830184612c50565b92915050565b612c8381612b54565b82525050565b6000602082019050612c9e6000830184612c7a565b92915050565b600080600060608486031215612cbd57612cbc612aec565b5b6000612ccb86828701612b3f565b9350506020612cdc86828701612b3f565b9250506040612ced86828701612b75565b9150509250925092565b600060ff82169050919050565b612d0d81612cf7565b82525050565b6000602082019050612d286000830184612d04565b92915050565b612d3781612b16565b82525050565b6000602082019050612d526000830184612d2e565b92915050565b612d6181612bca565b8114612d6c57600080fd5b50565b600081359050612d7e81612d58565b92915050565b600060208284031215612d9a57612d99612aec565b5b6000612da884828501612d6f565b91505092915050565b600060208284031215612dc757612dc6612aec565b5b6000612dd584828501612b3f565b91505092915050565b600060208284031215612df457612df3612aec565b5b6000612e0284828501612b75565b91505092915050565b60008060008060808587031215612e2557612e24612aec565b5b6000612e3387828801612b75565b9450506020612e4487828801612b75565b9350506040612e5587828801612b75565b9250506060612e6687828801612b75565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112612e9757612e96612e72565b5b8235905067ffffffffffffffff811115612eb457612eb3612e77565b5b602083019150836020820283011115612ed057612ecf612e7c565b5b9250929050565b600080600060408486031215612ef057612eef612aec565b5b600084013567ffffffffffffffff811115612f0e57612f0d612af1565b5b612f1a86828701612e81565b93509350506020612f2d86828701612d6f565b9150509250925092565b60008060408385031215612f4e57612f4d612aec565b5b6000612f5c85828601612b3f565b9250506020612f6d85828601612b3f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612fad602083612a3c565b9150612fb882612f77565b602082019050919050565b60006020820190508181036000830152612fdc81612fa0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061304c82612b54565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361307e5761307d613012565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006130e5602683612a3c565b91506130f082613089565b604082019050919050565b60006020820190508181036000830152613114816130d8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613177602483612a3c565b91506131828261311b565b604082019050919050565b600060208201905081810360008301526131a68161316a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613209602283612a3c565b9150613214826131ad565b604082019050919050565b60006020820190508181036000830152613238816131fc565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061329b602583612a3c565b91506132a68261323f565b604082019050919050565b600060208201905081810360008301526132ca8161328e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061332d602383612a3c565b9150613338826132d1565b604082019050919050565b6000602082019050818103600083015261335c81613320565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006133bf602983612a3c565b91506133ca82613363565b604082019050919050565b600060208201905081810360008301526133ee816133b2565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613451603f83612a3c565b915061345c826133f5565b604082019050919050565b6000602082019050818103600083015261348081613444565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006134bd601c83612a3c565b91506134c882613487565b602082019050919050565b600060208201905081810360008301526134ec816134b0565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b600061354f602383612a3c565b915061355a826134f3565b604082019050919050565b6000602082019050818103600083015261357e81613542565b9050919050565b600061359082612b54565b915061359b83612b54565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156135d0576135cf613012565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613637602383612a3c565b9150613642826135db565b604082019050919050565b600060208201905081810360008301526136668161362a565b9050919050565b600061367882612b54565b915061368383612b54565b92508282101561369657613695613012565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006136fd602a83612a3c565b9150613708826136a1565b604082019050919050565b6000602082019050818103600083015261372c816136f0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061377181612b28565b92915050565b60006020828403121561378d5761378c612aec565b5b600061379b84828501613762565b91505092915050565b6000819050919050565b60006137c96137c46137bf846137a4565b612c00565b612b54565b9050919050565b6137d9816137ae565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61381481612b16565b82525050565b6000613826838361380b565b60208301905092915050565b6000602082019050919050565b600061384a826137df565b61385481856137ea565b935061385f836137fb565b8060005b83811015613890578151613877888261381a565b975061388283613832565b925050600181019050613863565b5085935050505092915050565b600060a0820190506138b26000830188612c7a565b6138bf60208301876137d0565b81810360408301526138d1818661383f565b90506138e06060830185612d2e565b6138ed6080830184612c7a565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061393182612b54565b915061393c83612b54565b92508261394c5761394b6138f7565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061398d601b83612a3c565b915061399882613957565b602082019050919050565b600060208201905081810360008301526139bc81613980565b9050919050565b60006139ce82612b54565b91506139d983612b54565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613a1257613a11613012565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a79602183612a3c565b9150613a8482613a1d565b604082019050919050565b60006020820190508181036000830152613aa881613a6c565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206bc1d66eb8d155138b356b5c51dd8716ff4d88b34c81a391d82438b1aacb35ba64736f6c634300080e0033

Deployed Bytecode

0x6080604052600436106101c65760003560e01c80637f2feddc116100f7578063a9059cbb11610095578063c492f04611610064578063c492f0461461063d578063dd62ed3e14610666578063ea1644d5146106a3578063f2fde38b146106cc576101cd565b8063a9059cbb1461056f578063bdd795ef146105ac578063bfd79284146105e9578063c3c8cd8014610626576101cd565b80638f9a55c0116100d15780638f9a55c0146104c757806395d89b41146104f257806398a5c3151461051d578063a2a957bb14610546576101cd565b80637f2feddc146104365780638da5cb5b146104735780638f70ccf71461049e576101cd565b806349bd5a5e1161016457806370a082311161013e57806370a082311461038e578063715018a6146103cb57806374010ece146103e25780637d1db4a51461040b576101cd565b806349bd5a5e146103235780636d8aa8f81461034e5780636fc3eaec14610377576101cd565b806318160ddd116101a057806318160ddd1461026557806323b872dd146102905780632fd689e3146102cd578063313ce567146102f8576101cd565b806306fdde03146101d2578063095ea7b3146101fd5780631694505e1461023a576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e76106f5565b6040516101f49190612aca565b60405180910390f35b34801561020957600080fd5b50610224600480360381019061021f9190612b8a565b610732565b6040516102319190612be5565b60405180910390f35b34801561024657600080fd5b5061024f610750565b60405161025c9190612c5f565b60405180910390f35b34801561027157600080fd5b5061027a610776565b6040516102879190612c89565b60405180910390f35b34801561029c57600080fd5b506102b760048036038101906102b29190612ca4565b610786565b6040516102c49190612be5565b60405180910390f35b3480156102d957600080fd5b506102e261085f565b6040516102ef9190612c89565b60405180910390f35b34801561030457600080fd5b5061030d610865565b60405161031a9190612d13565b60405180910390f35b34801561032f57600080fd5b5061033861086e565b6040516103459190612d3d565b60405180910390f35b34801561035a57600080fd5b5061037560048036038101906103709190612d84565b610894565b005b34801561038357600080fd5b5061038c610945565b005b34801561039a57600080fd5b506103b560048036038101906103b09190612db1565b610a16565b6040516103c29190612c89565b60405180910390f35b3480156103d757600080fd5b506103e0610a67565b005b3480156103ee57600080fd5b5061040960048036038101906104049190612dde565b610bba565b005b34801561041757600080fd5b50610420610c59565b60405161042d9190612c89565b60405180910390f35b34801561044257600080fd5b5061045d60048036038101906104589190612db1565b610c5f565b60405161046a9190612c89565b60405180910390f35b34801561047f57600080fd5b50610488610c77565b6040516104959190612d3d565b60405180910390f35b3480156104aa57600080fd5b506104c560048036038101906104c09190612d84565b610ca0565b005b3480156104d357600080fd5b506104dc610d52565b6040516104e99190612c89565b60405180910390f35b3480156104fe57600080fd5b50610507610d58565b6040516105149190612aca565b60405180910390f35b34801561052957600080fd5b50610544600480360381019061053f9190612dde565b610d95565b005b34801561055257600080fd5b5061056d60048036038101906105689190612e0b565b610e34565b005b34801561057b57600080fd5b5061059660048036038101906105919190612b8a565b610eeb565b6040516105a39190612be5565b60405180910390f35b3480156105b857600080fd5b506105d360048036038101906105ce9190612db1565b610f09565b6040516105e09190612be5565b60405180910390f35b3480156105f557600080fd5b50610610600480360381019061060b9190612db1565b610f29565b60405161061d9190612be5565b60405180910390f35b34801561063257600080fd5b5061063b610f49565b005b34801561064957600080fd5b50610664600480360381019061065f9190612ed7565b611022565b005b34801561067257600080fd5b5061068d60048036038101906106889190612f37565b61115c565b60405161069a9190612c89565b60405180910390f35b3480156106af57600080fd5b506106ca60048036038101906106c59190612dde565b6111e3565b005b3480156106d857600080fd5b506106f360048036038101906106ee9190612db1565b611282565b005b60606040518060400160405280600981526020017f5045504550554e4b530000000000000000000000000000000000000000000000815250905090565b600061074661073f611443565b848461144b565b6001905092915050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600067016345785d8a0000905090565b6000610793848484611614565b6108548461079f611443565b61084f85604051806060016040528060288152602001613ab060289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610805611443565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f5a9092919063ffffffff16565b61144b565b600190509392505050565b60195481565b60006009905090565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61089c611443565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610929576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092090612fc3565b60405180910390fd5b806016806101000a81548160ff02191690831515021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610986611443565b73ffffffffffffffffffffffffffffffffffffffff1614806109fc5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109e4611443565b73ffffffffffffffffffffffffffffffffffffffff16145b610a0557600080fd5b6000479050610a1381611fbe565b50565b6000610a60600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202a565b9050919050565b610a6f611443565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610afc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af390612fc3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610bc2611443565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4690612fc3565b60405180910390fd5b8060178190555050565b60175481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ca8611443565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2c90612fc3565b60405180910390fd5b80601660146101000a81548160ff02191690831515021790555050565b60185481565b60606040518060400160405280600981526020017f5045504550554e4b530000000000000000000000000000000000000000000000815250905090565b610d9d611443565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2190612fc3565b60405180910390fd5b8060198190555050565b610e3c611443565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ec9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec090612fc3565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6000610eff610ef8611443565b8484611614565b6001905092915050565b60126020528060005260406000206000915054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f8a611443565b73ffffffffffffffffffffffffffffffffffffffff1614806110005750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fe8611443565b73ffffffffffffffffffffffffffffffffffffffff16145b61100957600080fd5b600061101430610a16565b905061101f81612098565b50565b61102a611443565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ae90612fc3565b60405180910390fd5b60005b838390508110156111565781600560008686858181106110dd576110dc612fe3565b5b90506020020160208101906110f29190612db1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061114e90613041565b9150506110ba565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6111eb611443565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126f90612fc3565b60405180910390fd5b8060188190555050565b61128a611443565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611317576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130e90612fc3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611386576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137d906130fb565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b19061318d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611529576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115209061321f565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116079190612c89565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611683576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167a906132b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e990613343565b60405180910390fd5b60008111611735576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172c906133d5565b60405180910390fd5b61173d610c77565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117ab575061177b610c77565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118015750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156118575750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c5957601660149054906101000a900460ff166118fd57601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166118fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f390613467565b60405180910390fd5b5b601754811115611942576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611939906134d3565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119e65750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1c90613565565b60405180910390fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ad25760185481611a8784610a16565b611a919190613585565b10611ad1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac89061364d565b60405180910390fd5b5b6000611add30610a16565b9050600060195482101590506017548210611af85760175491505b808015611b125750601660159054906101000a900460ff16155b8015611b6c5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611b82575060168054906101000a900460ff165b8015611bd85750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c2e5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c5657611c3c82612098565b60004790506000811115611c5457611c5347611fbe565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611d005750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611db35750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611db25750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611dc15760009050611f48565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e6c5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e8457600854600c81905550600954600d819055505b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611f2f5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611f4757600a54600c81905550600b54600d819055505b5b611f5484848484612311565b50505050565b6000838311158290611fa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f999190612aca565b60405180910390fd5b5060008385611fb1919061366d565b9050809150509392505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612026573d6000803e3d6000fd5b5050565b6000600654821115612071576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206890613713565b60405180910390fd5b600061207b61233e565b9050612090818461236990919063ffffffff16565b915050919050565b6001601660156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156120d0576120cf613733565b5b6040519080825280602002602001820160405280156120fe5781602001602082028036833780820191505090505b509050308160008151811061211657612115612fe3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e19190613777565b816001815181106121f5576121f4612fe3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061225c30601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461144b565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122c095949392919061389d565b600060405180830381600087803b1580156122da57600080fd5b505af11580156122ee573d6000803e3d6000fd5b50505050506000601660156101000a81548160ff02191690831515021790555050565b8061231f5761231e6123b3565b5b61232a8484846123f0565b80612338576123376125bb565b5b50505050565b600080600061234b6125cf565b91509150612362818361236990919063ffffffff16565b9250505090565b60006123ab83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061262e565b905092915050565b6000600c541480156123c757506000600d54145b6123ee57600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061240287612691565b95509550955095509550955061246086600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f990919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124f585600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461274390919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612541816127a1565b61254b848361285e565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516125a89190612c89565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006006549050600067016345785d8a0000905061260367016345785d8a000060065461236990919063ffffffff16565b8210156126215760065467016345785d8a000093509350505061262a565b81819350935050505b9091565b60008083118290612675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266c9190612aca565b60405180910390fd5b50600083856126849190613926565b9050809150509392505050565b60008060008060008060008060006126ae8a600c54600d54612898565b92509250925060006126be61233e565b905060008060006126d18e87878761292e565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061273b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f5a565b905092915050565b60008082846127529190613585565b905083811015612797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278e906139a3565b60405180910390fd5b8091505092915050565b60006127ab61233e565b905060006127c282846129b790919063ffffffff16565b905061281681600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461274390919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612873826006546126f990919063ffffffff16565b60068190555061288e8160075461274390919063ffffffff16565b6007819055505050565b6000806000806128c460646128b6888a6129b790919063ffffffff16565b61236990919063ffffffff16565b905060006128ee60646128e0888b6129b790919063ffffffff16565b61236990919063ffffffff16565b9050600061291782612909858c6126f990919063ffffffff16565b6126f990919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061294785896129b790919063ffffffff16565b9050600061295e86896129b790919063ffffffff16565b9050600061297587896129b790919063ffffffff16565b9050600061299e8261299085876126f990919063ffffffff16565b6126f990919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083036129c95760009050612a2b565b600082846129d791906139c3565b90508284826129e69190613926565b14612a26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1d90613a8f565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a6b578082015181840152602081019050612a50565b83811115612a7a576000848401525b50505050565b6000601f19601f8301169050919050565b6000612a9c82612a31565b612aa68185612a3c565b9350612ab6818560208601612a4d565b612abf81612a80565b840191505092915050565b60006020820190508181036000830152612ae48184612a91565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b2182612af6565b9050919050565b612b3181612b16565b8114612b3c57600080fd5b50565b600081359050612b4e81612b28565b92915050565b6000819050919050565b612b6781612b54565b8114612b7257600080fd5b50565b600081359050612b8481612b5e565b92915050565b60008060408385031215612ba157612ba0612aec565b5b6000612baf85828601612b3f565b9250506020612bc085828601612b75565b9150509250929050565b60008115159050919050565b612bdf81612bca565b82525050565b6000602082019050612bfa6000830184612bd6565b92915050565b6000819050919050565b6000612c25612c20612c1b84612af6565b612c00565b612af6565b9050919050565b6000612c3782612c0a565b9050919050565b6000612c4982612c2c565b9050919050565b612c5981612c3e565b82525050565b6000602082019050612c746000830184612c50565b92915050565b612c8381612b54565b82525050565b6000602082019050612c9e6000830184612c7a565b92915050565b600080600060608486031215612cbd57612cbc612aec565b5b6000612ccb86828701612b3f565b9350506020612cdc86828701612b3f565b9250506040612ced86828701612b75565b9150509250925092565b600060ff82169050919050565b612d0d81612cf7565b82525050565b6000602082019050612d286000830184612d04565b92915050565b612d3781612b16565b82525050565b6000602082019050612d526000830184612d2e565b92915050565b612d6181612bca565b8114612d6c57600080fd5b50565b600081359050612d7e81612d58565b92915050565b600060208284031215612d9a57612d99612aec565b5b6000612da884828501612d6f565b91505092915050565b600060208284031215612dc757612dc6612aec565b5b6000612dd584828501612b3f565b91505092915050565b600060208284031215612df457612df3612aec565b5b6000612e0284828501612b75565b91505092915050565b60008060008060808587031215612e2557612e24612aec565b5b6000612e3387828801612b75565b9450506020612e4487828801612b75565b9350506040612e5587828801612b75565b9250506060612e6687828801612b75565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112612e9757612e96612e72565b5b8235905067ffffffffffffffff811115612eb457612eb3612e77565b5b602083019150836020820283011115612ed057612ecf612e7c565b5b9250929050565b600080600060408486031215612ef057612eef612aec565b5b600084013567ffffffffffffffff811115612f0e57612f0d612af1565b5b612f1a86828701612e81565b93509350506020612f2d86828701612d6f565b9150509250925092565b60008060408385031215612f4e57612f4d612aec565b5b6000612f5c85828601612b3f565b9250506020612f6d85828601612b3f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612fad602083612a3c565b9150612fb882612f77565b602082019050919050565b60006020820190508181036000830152612fdc81612fa0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061304c82612b54565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361307e5761307d613012565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006130e5602683612a3c565b91506130f082613089565b604082019050919050565b60006020820190508181036000830152613114816130d8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613177602483612a3c565b91506131828261311b565b604082019050919050565b600060208201905081810360008301526131a68161316a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613209602283612a3c565b9150613214826131ad565b604082019050919050565b60006020820190508181036000830152613238816131fc565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061329b602583612a3c565b91506132a68261323f565b604082019050919050565b600060208201905081810360008301526132ca8161328e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061332d602383612a3c565b9150613338826132d1565b604082019050919050565b6000602082019050818103600083015261335c81613320565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006133bf602983612a3c565b91506133ca82613363565b604082019050919050565b600060208201905081810360008301526133ee816133b2565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613451603f83612a3c565b915061345c826133f5565b604082019050919050565b6000602082019050818103600083015261348081613444565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006134bd601c83612a3c565b91506134c882613487565b602082019050919050565b600060208201905081810360008301526134ec816134b0565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b600061354f602383612a3c565b915061355a826134f3565b604082019050919050565b6000602082019050818103600083015261357e81613542565b9050919050565b600061359082612b54565b915061359b83612b54565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156135d0576135cf613012565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613637602383612a3c565b9150613642826135db565b604082019050919050565b600060208201905081810360008301526136668161362a565b9050919050565b600061367882612b54565b915061368383612b54565b92508282101561369657613695613012565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006136fd602a83612a3c565b9150613708826136a1565b604082019050919050565b6000602082019050818103600083015261372c816136f0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061377181612b28565b92915050565b60006020828403121561378d5761378c612aec565b5b600061379b84828501613762565b91505092915050565b6000819050919050565b60006137c96137c46137bf846137a4565b612c00565b612b54565b9050919050565b6137d9816137ae565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61381481612b16565b82525050565b6000613826838361380b565b60208301905092915050565b6000602082019050919050565b600061384a826137df565b61385481856137ea565b935061385f836137fb565b8060005b83811015613890578151613877888261381a565b975061388283613832565b925050600181019050613863565b5085935050505092915050565b600060a0820190506138b26000830188612c7a565b6138bf60208301876137d0565b81810360408301526138d1818661383f565b90506138e06060830185612d2e565b6138ed6080830184612c7a565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061393182612b54565b915061393c83612b54565b92508261394c5761394b6138f7565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061398d601b83612a3c565b915061399882613957565b602082019050919050565b600060208201905081810360008301526139bc81613980565b9050919050565b60006139ce82612b54565b91506139d983612b54565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613a1257613a11613012565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a79602183612a3c565b9150613a8482613a1d565b604082019050919050565b60006020820190508181036000830152613aa881613a6c565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206bc1d66eb8d155138b356b5c51dd8716ff4d88b34c81a391d82438b1aacb35ba64736f6c634300080e0033

Deployed Bytecode Sourcemap

4138:13306:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6683:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7608:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5534:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6960:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7809:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5830:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6869:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5582:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16826:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12651:235;;;;;;;;;;;;;:::i;:::-;;7063:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1625:148;;;;;;;;;;;;;:::i;:::-;;16966:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5724:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5227:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1411:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12298:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5776:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6774:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16635:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16292:291;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7209:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5277:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5189:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12407:236;;;;;;;;;;;;;:::i;:::-;;17205:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7416:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17082:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1781:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6683:83;6720:13;6753:5;;;;;;;;;;;;;;;;;6746:12;;6683:83;:::o;7608:193::-;7710:4;7732:39;7741:12;:10;:12::i;:::-;7755:7;7764:6;7732:8;:39::i;:::-;7789:4;7782:11;;7608:193;;;;:::o;5534:41::-;;;;;;;;;;;;;:::o;6960:95::-;7013:7;4692:17;7033:14;;6960:95;:::o;7809:446::-;7941:4;7958:36;7968:6;7976:9;7987:6;7958:9;:36::i;:::-;8005:220;8028:6;8049:12;:10;:12::i;:::-;8076:138;8132:6;8076:138;;;;;;;;;;;;;;;;;:11;:19;8088:6;8076:19;;;;;;;;;;;;;;;:33;8096:12;:10;:12::i;:::-;8076:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8005:8;:220::i;:::-;8243:4;8236:11;;7809:446;;;;;:::o;5830:51::-;;;;:::o;6869:83::-;6910:5;4366:1;6928:16;;6869:83;:::o;5582:28::-;;;;;;;;;;;;;:::o;16826:101::-;1548:12;:10;:12::i;:::-;1538:22;;:6;;;;;;;;;;:22;;;1530:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16907:12:::1;16893:11;::::0;:26:::1;;;;;;;;;;;;;;;;;;16826:101:::0;:::o;12651:235::-;12717:19;;;;;;;;;;;12701:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12756:17;;;;;;;;;;;12740:33;;:12;:10;:12::i;:::-;:33;;;12701:72;12693:81;;;;;;12785:26;12814:21;12785:50;;12846:32;12859:18;12846:12;:32::i;:::-;12682:204;12651:235::o;7063:138::-;7129:7;7156:37;7176:7;:16;7184:7;7176:16;;;;;;;;;;;;;;;;7156:19;:37::i;:::-;7149:44;;7063:138;;;:::o;1625:148::-;1548:12;:10;:12::i;:::-;1538:22;;:6;;;;;;;;;;:22;;;1530:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1732:1:::1;1695:40;;1716:6;::::0;::::1;;;;;;;;1695:40;;;;;;;;;;;;1763:1;1746:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1625:148::o:0;16966:108::-;1548:12;:10;:12::i;:::-;1538:22;;:6;;;;;;;;;;:22;;;1530:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17055:11:::1;17040:12;:26;;;;16966:108:::0;:::o;5724:45::-;;;;:::o;5227:43::-;;;;;;;;;;;;;;;;;:::o;1411:79::-;1449:7;1476:6;;;;;;;;;;;1469:13;;1411:79;:::o;12298:101::-;1548:12;:10;:12::i;:::-;1538:22;;:6;;;;;;;;;;:22;;;1530:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12379:12:::1;12365:11;;:26;;;;;;;;;;;;;;;;;;12298:101:::0;:::o;5776:47::-;;;;:::o;6774:87::-;6813:13;6846:7;;;;;;;;;;;;;;;;;6839:14;;6774:87;:::o;16635:139::-;1548:12;:10;:12::i;:::-;1538:22;;:6;;;;;;;;;;:22;;;1530:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16748:18:::1;16726:19;:40;;;;16635:139:::0;:::o;16292:291::-;1548:12;:10;:12::i;:::-;1538:22;;:6;;;;;;;;;;:22;;;1530:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16443:13:::1;16426:14;:30;;;;16485:14;16467:15;:32;;;;16525:11;16510:12;:26;;;;16563:12;16547:13;:28;;;;16292:291:::0;;;;:::o;7209:199::-;7314:4;7336:42;7346:12;:10;:12::i;:::-;7360:9;7371:6;7336:9;:42::i;:::-;7396:4;7389:11;;7209:199;;;;:::o;5277:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;5189:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12407:236::-;12473:19;;;;;;;;;;;12457:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12512:17;;;;;;;;;;;12496:33;;:12;:10;:12::i;:::-;:33;;;12457:72;12449:81;;;;;;12541:23;12567:24;12585:4;12567:9;:24::i;:::-;12541:50;;12602:33;12619:15;12602:16;:33::i;:::-;12438:205;12407:236::o;17205:234::-;1548:12;:10;:12::i;:::-;1538:22;;:6;;;;;;;;;;:22;;;1530:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17322:9:::1;17318:114;17341:8;;:15;;17337:1;:19;17318:114;;;17412:8;17378:18;:31;17397:8;;17406:1;17397:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17378:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17358:3;;;;;:::i;:::-;;;;17318:114;;;;17205:234:::0;;;:::o;7416:184::-;7533:7;7565:11;:18;7577:5;7565:18;;;;;;;;;;;;;;;:27;7584:7;7565:27;;;;;;;;;;;;;;;;7558:34;;7416:184;;;;:::o;17082:115::-;1548:12;:10;:12::i;:::-;1538:22;;:6;;;;;;;;;;:22;;;1530:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17176:13:::1;17159:14;:30;;;;17082:115:::0;:::o;1781:244::-;1548:12;:10;:12::i;:::-;1538:22;;:6;;;;;;;;;;:22;;;1530:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1890:1:::1;1870:22;;:8;:22;;::::0;1862:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1980:8;1951:38;;1972:6;::::0;::::1;;;;;;;;1951:38;;;;;;;;;;;;2009:8;2000:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1781:244:::0;:::o;170:98::-;223:7;250:10;243:17;;170:98;:::o;8946:369::-;9090:1;9073:19;;:5;:19;;;9065:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9171:1;9152:21;;:7;:21;;;9144:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9253:6;9223:11;:18;9235:5;9223:18;;;;;;;;;;;;;;;:27;9242:7;9223:27;;;;;;;;;;;;;;;:36;;;;9291:7;9275:32;;9284:5;9275:32;;;9300:6;9275:32;;;;;;:::i;:::-;;;;;;;;8946:369;;;:::o;9323:2369::-;9461:1;9445:18;;:4;:18;;;9437:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9538:1;9524:16;;:2;:16;;;9516:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9608:1;9599:6;:10;9591:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9681:7;:5;:7::i;:::-;9673:15;;:4;:15;;;;:32;;;;;9698:7;:5;:7::i;:::-;9692:13;;:2;:13;;;;9673:32;:52;;;;;9710:9;:15;9720:4;9710:15;;;;;;;;;;;;;;;;;;;;;;;;;9709:16;9673:52;:70;;;;;9730:9;:13;9740:2;9730:13;;;;;;;;;;;;;;;;;;;;;;;;;9729:14;9673:70;9669:1297;;;9800:11;;;;;;;;;;;9795:144;;9840:9;:15;9850:4;9840:15;;;;;;;;;;;;;;;;;;;;;;;;;9832:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9795:144;9973:12;;9963:6;:22;;9955:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10042:4;:10;10047:4;10042:10;;;;;;;;;;;;;;;;;;;;;;;;;10041:11;:24;;;;;10057:4;:8;10062:2;10057:8;;;;;;;;;;;;;;;;;;;;;;;;;10056:9;10041:24;10033:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10131:13;;;;;;;;;;;10125:19;;:2;:19;;;10122:146;;10198:14;;10189:6;10173:13;10183:2;10173:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10165:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10122:146;10284:28;10315:24;10333:4;10315:9;:24::i;:::-;10284:55;;10354:12;10393:19;;10369:20;:43;;10354:58;;10456:12;;10432:20;:36;10429:124;;10525:12;;10502:35;;10429:124;10573:7;:18;;;;;10585:6;;;;;;;;;;;10584:7;10573:18;:43;;;;;10603:13;;;;;;;;;;;10595:21;;:4;:21;;;;10573:43;:58;;;;;10620:11;;;;;;;;;;10573:58;:87;;;;;10636:18;:24;10655:4;10636:24;;;;;;;;;;;;;;;;;;;;;;;;;10635:25;10573:87;:114;;;;;10665:18;:22;10684:2;10665:22;;;;;;;;;;;;;;;;;;;;;;;;;10664:23;10573:114;10569:386;;;10708:38;10725:20;10708:16;:38::i;:::-;10765:26;10794:21;10765:50;;10859:1;10838:18;:22;10834:106;;;10885:35;10898:21;10885:12;:35::i;:::-;10834:106;10689:266;10569:386;9745:1221;;9669:1297;10978:12;10993:4;10978:19;;11042:18;:24;11061:4;11042:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11070:18;:22;11089:2;11070:22;;;;;;;;;;;;;;;;;;;;;;;;;11042:50;11041:102;;;;11106:13;;;;;;;;;;;11098:21;;:4;:21;;;;:44;;;;;11129:13;;;;;;;;;;;11123:19;;:2;:19;;;;11098:44;11041:102;11037:594;;;11170:5;11160:15;;11037:594;;;11253:13;;;;;;;;;;;11245:21;;:4;:21;;;:55;;;;;11284:15;;;;;;;;;;;11270:30;;:2;:30;;;;11245:55;11242:162;;;11333:14;;11321:9;:26;;;;11376:12;;11366:7;:22;;;;11242:162;11463:13;;;;;;;;;;;11457:19;;:2;:19;;;:55;;;;;11496:15;;;;;;;;;;;11480:32;;:4;:32;;;;11457:55;11453:165;;;11545:15;;11533:9;:27;;;;11589:13;;11579:7;:23;;;;11453:165;11037:594;11643:41;11658:4;11664:2;11668:6;11676:7;11643:14;:41::i;:::-;9426:2266;9323:2369;;;:::o;2389:224::-;2509:7;2542:1;2537;:6;;2545:12;2529:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2569:9;2585:1;2581;:5;;;;:::i;:::-;2569:17;;2604:1;2597:8;;;2389:224;;;;;:::o;12191:99::-;12248:17;;;;;;;;;;;:26;;:34;12275:6;12248:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12191:99;:::o;8263:323::-;8358:7;8416;;8405;:18;;8383:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8504:19;8526:10;:8;:10::i;:::-;8504:32;;8554:24;8566:11;8554:7;:11;;:24;;;;:::i;:::-;8547:31;;;8263:323;;;:::o;11700:483::-;5984:4;5975:6;;:13;;;;;;;;;;;;;;;;;;11778:21:::1;11816:1;11802:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11778:40;;11847:4;11829;11834:1;11829:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11873:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11863:4;11868:1;11863:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11906:62;11923:4;11938:15;;;;;;;;;;;11956:11;11906:8;:62::i;:::-;11979:15;;;;;;;;;;;:66;;;12060:11;12086:1;12102:4;12129;12149:15;11979:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11767:416;6020:5:::0;6011:6;;:14;;;;;;;;;;;;;;;;;;11700:483;:::o;12894:282::-;13050:7;13045:28;;13059:14;:12;:14::i;:::-;13045:28;13084:44;13102:6;13110:9;13121:6;13084:17;:44::i;:::-;13144:7;13139:29;;13153:15;:13;:15::i;:::-;13139:29;12894:282;;;;:::o;15855:164::-;15897:7;15918:15;15935;15954:19;:17;:19::i;:::-;15917:56;;;;15991:20;16003:7;15991;:11;;:20;;;;:::i;:::-;15984:27;;;;15855:164;:::o;2875:132::-;2933:7;2960:39;2964:1;2967;2960:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2953:46;;2875:132;;;;:::o;8594:219::-;8654:1;8641:9;;:14;:30;;;;;8670:1;8659:7;;:12;8641:30;8673:7;8637:43;8712:9;;8692:17;:29;;;;8750:7;;8732:15;:25;;;;8782:1;8770:9;:13;;;;8804:1;8794:7;:11;;;;8594:219;:::o;13184:610::-;13331:15;13361:23;13399:12;13426:23;13464:12;13491:13;13518:19;13529:7;13518:10;:19::i;:::-;13316:221;;;;;;;;;;;;13566:28;13586:7;13566;:15;13574:6;13566:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13548:7;:15;13556:6;13548:15;;;;;;;;;;;;;;;:46;;;;13626:39;13649:15;13626:7;:18;13634:9;13626:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13605:7;:18;13613:9;13605:18;;;;;;;;;;;;;;;:60;;;;13676:16;13686:5;13676:9;:16::i;:::-;13703:23;13715:4;13721;13703:11;:23::i;:::-;13759:9;13742:44;;13751:6;13742:44;;;13770:15;13742:44;;;;;;:::i;:::-;;;;;;;;13305:489;;;;;;13184:610;;;:::o;8821:117::-;8877:17;;8865:9;:29;;;;8915:15;;8905:7;:25;;;;8821:117::o;16027:257::-;16078:7;16087;16107:15;16125:7;;16107:25;;16143:15;4692:17;16143:25;;16193:20;4692:17;16193:7;;:11;;:20;;;;:::i;:::-;16183:7;:30;16179:61;;;16223:7;;4692:17;16215:25;;;;;;;;16179:61;16259:7;16268;16251:25;;;;;;16027:257;;;:::o;3015:223::-;3135:7;3167:1;3163;:5;3170:12;3155:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3194:9;3210:1;3206;:5;;;;:::i;:::-;3194:17;;3229:1;3222:8;;;3015:223;;;;;:::o;14213:615::-;14313:7;14335;14357;14379;14401;14423;14459:23;14484:12;14498:13;14528:40;14540:7;14549:9;;14560:7;;14528:11;:40::i;:::-;14458:110;;;;;;14579:19;14601:10;:8;:10::i;:::-;14579:32;;14623:15;14640:23;14665:12;14694:46;14706:7;14715:4;14721:5;14728:11;14694;:46::i;:::-;14622:118;;;;;;14759:7;14768:15;14785:4;14791:15;14808:4;14814:5;14751:69;;;;;;;;;;;;;;;;;;;14213:615;;;;;;;:::o;2245:136::-;2303:7;2330:43;2334:1;2337;2330:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2323:50;;2245:136;;;;:::o;2058:179::-;2116:7;2136:9;2152:1;2148;:5;;;;:::i;:::-;2136:17;;2177:1;2172;:6;;2164:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2228:1;2221:8;;;2058:179;;;;:::o;13802:211::-;13855:19;13877:10;:8;:10::i;:::-;13855:32;;13898:13;13914:22;13924:11;13914:5;:9;;:22;;;;:::i;:::-;13898:38;;13972:33;13999:5;13972:7;:22;13988:4;13972:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13947:7;:22;13963:4;13947:22;;;;;;;;;;;;;;;:58;;;;13844:169;;13802:211;:::o;14021:147::-;14099:17;14111:4;14099:7;;:11;;:17;;;;:::i;:::-;14089:7;:27;;;;14140:20;14155:4;14140:10;;:14;;:20;;;;:::i;:::-;14127:10;:33;;;;14021:147;;:::o;14836:469::-;15005:7;15027;15049;15084:12;15099:30;15125:3;15099:21;15111:8;15099:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15084:45;;15140:13;15156:28;15180:3;15156:19;15168:6;15156:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15140:44;;15195:23;15221:28;15243:5;15221:17;15233:4;15221:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15195:54;;15268:15;15285:4;15291:5;15260:37;;;;;;;;;14836:469;;;;;;;:::o;15313:534::-;15507:7;15529;15551;15586:15;15604:24;15616:11;15604:7;:11;;:24;;;;:::i;:::-;15586:42;;15639:12;15654:21;15663:11;15654:4;:8;;:21;;;;:::i;:::-;15639:36;;15686:13;15702:22;15712:11;15702:5;:9;;:22;;;;:::i;:::-;15686:38;;15735:23;15761:28;15783:5;15761:17;15773:4;15761:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15735:54;;15808:7;15817:15;15834:4;15800:39;;;;;;;;;;15313:534;;;;;;;;:::o;2621:246::-;2679:7;2708:1;2703;:6;2699:47;;2733:1;2726:8;;;;2699:47;2756:9;2772:1;2768;:5;;;;:::i;:::-;2756:17;;2801:1;2796;2792;:5;;;;:::i;:::-;:10;2784:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2858:1;2851:8;;;2621: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:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:60::-;3522:3;3543:5;3536:12;;3494:60;;;:::o;3560:142::-;3610:9;3643:53;3661:34;3670:24;3688:5;3670:24;:::i;:::-;3661:34;:::i;:::-;3643:53;:::i;:::-;3630:66;;3560:142;;;:::o;3708:126::-;3758:9;3791:37;3822:5;3791:37;:::i;:::-;3778:50;;3708:126;;;:::o;3840:152::-;3916:9;3949:37;3980:5;3949:37;:::i;:::-;3936:50;;3840:152;;;:::o;3998:183::-;4111:63;4168:5;4111:63;:::i;:::-;4106:3;4099:76;3998:183;;:::o;4187:274::-;4306:4;4344:2;4333:9;4329:18;4321:26;;4357:97;4451:1;4440:9;4436:17;4427:6;4357:97;:::i;:::-;4187:274;;;;:::o;4467:118::-;4554:24;4572:5;4554:24;:::i;:::-;4549:3;4542:37;4467:118;;:::o;4591:222::-;4684:4;4722:2;4711:9;4707:18;4699:26;;4735:71;4803:1;4792:9;4788:17;4779:6;4735:71;:::i;:::-;4591:222;;;;:::o;4819:619::-;4896:6;4904;4912;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;5214:2;5240:53;5285:7;5276:6;5265:9;5261:22;5240:53;:::i;:::-;5230:63;;5185:118;5342:2;5368:53;5413:7;5404:6;5393:9;5389:22;5368:53;:::i;:::-;5358:63;;5313:118;4819:619;;;;;:::o;5444:86::-;5479:7;5519:4;5512:5;5508:16;5497:27;;5444:86;;;:::o;5536:112::-;5619:22;5635:5;5619:22;:::i;:::-;5614:3;5607:35;5536:112;;:::o;5654:214::-;5743:4;5781:2;5770:9;5766:18;5758:26;;5794:67;5858:1;5847:9;5843:17;5834:6;5794:67;:::i;:::-;5654:214;;;;:::o;5874:118::-;5961:24;5979:5;5961:24;:::i;:::-;5956:3;5949:37;5874:118;;:::o;5998:222::-;6091:4;6129:2;6118:9;6114:18;6106:26;;6142:71;6210:1;6199:9;6195:17;6186:6;6142:71;:::i;:::-;5998:222;;;;:::o;6226:116::-;6296:21;6311:5;6296:21;:::i;:::-;6289:5;6286:32;6276:60;;6332:1;6329;6322:12;6276:60;6226:116;:::o;6348:133::-;6391:5;6429:6;6416:20;6407:29;;6445:30;6469:5;6445:30;:::i;:::-;6348:133;;;;:::o;6487:323::-;6543:6;6592:2;6580:9;6571:7;6567:23;6563:32;6560:119;;;6598:79;;:::i;:::-;6560:119;6718:1;6743:50;6785:7;6776:6;6765:9;6761:22;6743:50;:::i;:::-;6733:60;;6689:114;6487:323;;;;:::o;6816:329::-;6875:6;6924:2;6912:9;6903:7;6899:23;6895:32;6892:119;;;6930:79;;:::i;:::-;6892:119;7050:1;7075:53;7120:7;7111:6;7100:9;7096:22;7075:53;:::i;:::-;7065:63;;7021:117;6816:329;;;;:::o;7151:::-;7210:6;7259:2;7247:9;7238:7;7234:23;7230:32;7227:119;;;7265:79;;:::i;:::-;7227:119;7385:1;7410:53;7455:7;7446:6;7435:9;7431:22;7410:53;:::i;:::-;7400:63;;7356:117;7151:329;;;;:::o;7486:765::-;7572:6;7580;7588;7596;7645:3;7633:9;7624:7;7620:23;7616:33;7613:120;;;7652:79;;:::i;:::-;7613:120;7772:1;7797:53;7842:7;7833:6;7822:9;7818:22;7797:53;:::i;:::-;7787:63;;7743:117;7899:2;7925:53;7970:7;7961:6;7950:9;7946:22;7925:53;:::i;:::-;7915:63;;7870:118;8027:2;8053:53;8098:7;8089:6;8078:9;8074:22;8053:53;:::i;:::-;8043:63;;7998:118;8155:2;8181:53;8226:7;8217:6;8206:9;8202:22;8181:53;:::i;:::-;8171:63;;8126:118;7486:765;;;;;;;:::o;8257:117::-;8366:1;8363;8356:12;8380:117;8489:1;8486;8479:12;8503:117;8612:1;8609;8602:12;8643:568;8716:8;8726:6;8776:3;8769:4;8761:6;8757:17;8753:27;8743:122;;8784:79;;:::i;:::-;8743:122;8897:6;8884:20;8874:30;;8927:18;8919:6;8916:30;8913:117;;;8949:79;;:::i;:::-;8913:117;9063:4;9055:6;9051:17;9039:29;;9117:3;9109:4;9101:6;9097:17;9087:8;9083:32;9080:41;9077:128;;;9124:79;;:::i;:::-;9077:128;8643:568;;;;;:::o;9217:698::-;9309:6;9317;9325;9374:2;9362:9;9353:7;9349:23;9345:32;9342:119;;;9380:79;;:::i;:::-;9342:119;9528:1;9517:9;9513:17;9500:31;9558:18;9550:6;9547:30;9544:117;;;9580:79;;:::i;:::-;9544:117;9693:80;9765:7;9756:6;9745:9;9741:22;9693:80;:::i;:::-;9675:98;;;;9471:312;9822:2;9848:50;9890:7;9881:6;9870:9;9866:22;9848:50;:::i;:::-;9838:60;;9793:115;9217:698;;;;;:::o;9921:474::-;9989:6;9997;10046:2;10034:9;10025:7;10021:23;10017:32;10014:119;;;10052:79;;:::i;:::-;10014:119;10172:1;10197:53;10242:7;10233:6;10222:9;10218:22;10197:53;:::i;:::-;10187:63;;10143:117;10299:2;10325:53;10370:7;10361:6;10350:9;10346:22;10325:53;:::i;:::-;10315:63;;10270:118;9921:474;;;;;:::o;10401:182::-;10541:34;10537:1;10529:6;10525:14;10518:58;10401:182;:::o;10589:366::-;10731:3;10752:67;10816:2;10811:3;10752:67;:::i;:::-;10745:74;;10828:93;10917:3;10828:93;:::i;:::-;10946:2;10941:3;10937:12;10930:19;;10589:366;;;:::o;10961:419::-;11127:4;11165:2;11154:9;11150:18;11142:26;;11214:9;11208:4;11204:20;11200:1;11189:9;11185:17;11178:47;11242:131;11368:4;11242:131;:::i;:::-;11234:139;;10961:419;;;:::o;11386:180::-;11434:77;11431:1;11424:88;11531:4;11528:1;11521:15;11555:4;11552:1;11545:15;11572:180;11620:77;11617:1;11610:88;11717:4;11714:1;11707:15;11741:4;11738:1;11731:15;11758:233;11797:3;11820:24;11838:5;11820:24;:::i;:::-;11811:33;;11866:66;11859:5;11856:77;11853:103;;11936:18;;:::i;:::-;11853:103;11983:1;11976:5;11972:13;11965:20;;11758:233;;;:::o;11997:225::-;12137:34;12133:1;12125:6;12121:14;12114:58;12206:8;12201:2;12193:6;12189:15;12182:33;11997:225;:::o;12228:366::-;12370:3;12391:67;12455:2;12450:3;12391:67;:::i;:::-;12384:74;;12467:93;12556:3;12467:93;:::i;:::-;12585:2;12580:3;12576:12;12569:19;;12228:366;;;:::o;12600:419::-;12766:4;12804:2;12793:9;12789:18;12781:26;;12853:9;12847:4;12843:20;12839:1;12828:9;12824:17;12817:47;12881:131;13007:4;12881:131;:::i;:::-;12873:139;;12600:419;;;:::o;13025:223::-;13165:34;13161:1;13153:6;13149:14;13142:58;13234:6;13229:2;13221:6;13217:15;13210:31;13025:223;:::o;13254:366::-;13396:3;13417:67;13481:2;13476:3;13417:67;:::i;:::-;13410:74;;13493:93;13582:3;13493:93;:::i;:::-;13611:2;13606:3;13602:12;13595:19;;13254:366;;;:::o;13626:419::-;13792:4;13830:2;13819:9;13815:18;13807:26;;13879:9;13873:4;13869:20;13865:1;13854:9;13850:17;13843:47;13907:131;14033:4;13907:131;:::i;:::-;13899:139;;13626:419;;;:::o;14051:221::-;14191:34;14187:1;14179:6;14175:14;14168:58;14260:4;14255:2;14247:6;14243:15;14236:29;14051:221;:::o;14278:366::-;14420:3;14441:67;14505:2;14500:3;14441:67;:::i;:::-;14434:74;;14517:93;14606:3;14517:93;:::i;:::-;14635:2;14630:3;14626:12;14619:19;;14278:366;;;:::o;14650:419::-;14816:4;14854:2;14843:9;14839:18;14831:26;;14903:9;14897:4;14893:20;14889:1;14878:9;14874:17;14867:47;14931:131;15057:4;14931:131;:::i;:::-;14923:139;;14650:419;;;:::o;15075:224::-;15215:34;15211:1;15203:6;15199:14;15192:58;15284:7;15279:2;15271:6;15267:15;15260:32;15075:224;:::o;15305:366::-;15447:3;15468:67;15532:2;15527:3;15468:67;:::i;:::-;15461:74;;15544:93;15633:3;15544:93;:::i;:::-;15662:2;15657:3;15653:12;15646:19;;15305:366;;;:::o;15677:419::-;15843:4;15881:2;15870:9;15866:18;15858:26;;15930:9;15924:4;15920:20;15916:1;15905:9;15901:17;15894:47;15958:131;16084:4;15958:131;:::i;:::-;15950:139;;15677:419;;;:::o;16102:222::-;16242:34;16238:1;16230:6;16226:14;16219:58;16311:5;16306:2;16298:6;16294:15;16287:30;16102:222;:::o;16330:366::-;16472:3;16493:67;16557:2;16552:3;16493:67;:::i;:::-;16486:74;;16569:93;16658:3;16569:93;:::i;:::-;16687:2;16682:3;16678:12;16671:19;;16330:366;;;:::o;16702:419::-;16868:4;16906:2;16895:9;16891:18;16883:26;;16955:9;16949:4;16945:20;16941:1;16930:9;16926:17;16919:47;16983:131;17109:4;16983:131;:::i;:::-;16975:139;;16702:419;;;:::o;17127:228::-;17267:34;17263:1;17255:6;17251:14;17244:58;17336:11;17331:2;17323:6;17319:15;17312:36;17127:228;:::o;17361:366::-;17503:3;17524:67;17588:2;17583:3;17524:67;:::i;:::-;17517:74;;17600:93;17689:3;17600:93;:::i;:::-;17718:2;17713:3;17709:12;17702:19;;17361:366;;;:::o;17733:419::-;17899:4;17937:2;17926:9;17922:18;17914:26;;17986:9;17980:4;17976:20;17972:1;17961:9;17957:17;17950:47;18014:131;18140:4;18014:131;:::i;:::-;18006:139;;17733:419;;;:::o;18158:250::-;18298:34;18294:1;18286:6;18282:14;18275:58;18367:33;18362:2;18354:6;18350:15;18343:58;18158:250;:::o;18414:366::-;18556:3;18577:67;18641:2;18636:3;18577:67;:::i;:::-;18570:74;;18653:93;18742:3;18653:93;:::i;:::-;18771:2;18766:3;18762:12;18755:19;;18414:366;;;:::o;18786:419::-;18952:4;18990:2;18979:9;18975:18;18967:26;;19039:9;19033:4;19029:20;19025:1;19014:9;19010:17;19003:47;19067:131;19193:4;19067:131;:::i;:::-;19059:139;;18786:419;;;:::o;19211:178::-;19351:30;19347:1;19339:6;19335:14;19328:54;19211:178;:::o;19395:366::-;19537:3;19558:67;19622:2;19617:3;19558:67;:::i;:::-;19551:74;;19634:93;19723:3;19634:93;:::i;:::-;19752:2;19747:3;19743:12;19736:19;;19395:366;;;:::o;19767:419::-;19933:4;19971:2;19960:9;19956:18;19948:26;;20020:9;20014:4;20010:20;20006:1;19995:9;19991:17;19984:47;20048:131;20174:4;20048:131;:::i;:::-;20040:139;;19767:419;;;:::o;20192:222::-;20332:34;20328:1;20320:6;20316:14;20309:58;20401:5;20396:2;20388:6;20384:15;20377:30;20192:222;:::o;20420:366::-;20562:3;20583:67;20647:2;20642:3;20583:67;:::i;:::-;20576:74;;20659:93;20748:3;20659:93;:::i;:::-;20777:2;20772:3;20768:12;20761:19;;20420:366;;;:::o;20792:419::-;20958:4;20996:2;20985:9;20981:18;20973:26;;21045:9;21039:4;21035:20;21031:1;21020:9;21016:17;21009:47;21073:131;21199:4;21073:131;:::i;:::-;21065:139;;20792:419;;;:::o;21217:305::-;21257:3;21276:20;21294:1;21276:20;:::i;:::-;21271:25;;21310:20;21328:1;21310:20;:::i;:::-;21305:25;;21464:1;21396:66;21392:74;21389:1;21386:81;21383:107;;;21470:18;;:::i;:::-;21383:107;21514:1;21511;21507:9;21500:16;;21217:305;;;;:::o;21528:222::-;21668:34;21664:1;21656:6;21652:14;21645:58;21737:5;21732:2;21724:6;21720:15;21713:30;21528:222;:::o;21756:366::-;21898:3;21919:67;21983:2;21978:3;21919:67;:::i;:::-;21912:74;;21995:93;22084:3;21995:93;:::i;:::-;22113:2;22108:3;22104:12;22097:19;;21756:366;;;:::o;22128:419::-;22294:4;22332:2;22321:9;22317:18;22309:26;;22381:9;22375:4;22371:20;22367:1;22356:9;22352:17;22345:47;22409:131;22535:4;22409:131;:::i;:::-;22401:139;;22128:419;;;:::o;22553:191::-;22593:4;22613:20;22631:1;22613:20;:::i;:::-;22608:25;;22647:20;22665:1;22647:20;:::i;:::-;22642:25;;22686:1;22683;22680:8;22677:34;;;22691:18;;:::i;:::-;22677:34;22736:1;22733;22729:9;22721:17;;22553:191;;;;:::o;22750:229::-;22890:34;22886:1;22878:6;22874:14;22867:58;22959:12;22954:2;22946:6;22942:15;22935:37;22750:229;:::o;22985:366::-;23127:3;23148:67;23212:2;23207:3;23148:67;:::i;:::-;23141:74;;23224:93;23313:3;23224:93;:::i;:::-;23342:2;23337:3;23333:12;23326:19;;22985:366;;;:::o;23357:419::-;23523:4;23561:2;23550:9;23546:18;23538:26;;23610:9;23604:4;23600:20;23596:1;23585:9;23581:17;23574:47;23638:131;23764:4;23638:131;:::i;:::-;23630:139;;23357:419;;;:::o;23782:180::-;23830:77;23827:1;23820:88;23927:4;23924:1;23917:15;23951:4;23948:1;23941:15;23968:143;24025:5;24056:6;24050:13;24041:22;;24072:33;24099:5;24072:33;:::i;:::-;23968:143;;;;:::o;24117:351::-;24187:6;24236:2;24224:9;24215:7;24211:23;24207:32;24204:119;;;24242:79;;:::i;:::-;24204:119;24362:1;24387:64;24443:7;24434:6;24423:9;24419:22;24387:64;:::i;:::-;24377:74;;24333:128;24117:351;;;;:::o;24474:85::-;24519:7;24548:5;24537:16;;24474:85;;;:::o;24565:158::-;24623:9;24656:61;24674:42;24683:32;24709:5;24683:32;:::i;:::-;24674:42;:::i;:::-;24656:61;:::i;:::-;24643:74;;24565:158;;;:::o;24729:147::-;24824:45;24863:5;24824:45;:::i;:::-;24819:3;24812:58;24729:147;;:::o;24882:114::-;24949:6;24983:5;24977:12;24967:22;;24882:114;;;:::o;25002:184::-;25101:11;25135:6;25130:3;25123:19;25175:4;25170:3;25166:14;25151:29;;25002:184;;;;:::o;25192:132::-;25259:4;25282:3;25274:11;;25312:4;25307:3;25303:14;25295:22;;25192:132;;;:::o;25330:108::-;25407:24;25425:5;25407:24;:::i;:::-;25402:3;25395:37;25330:108;;:::o;25444:179::-;25513:10;25534:46;25576:3;25568:6;25534:46;:::i;:::-;25612:4;25607:3;25603:14;25589:28;;25444:179;;;;:::o;25629:113::-;25699:4;25731;25726:3;25722:14;25714:22;;25629:113;;;:::o;25778:732::-;25897:3;25926:54;25974:5;25926:54;:::i;:::-;25996:86;26075:6;26070:3;25996:86;:::i;:::-;25989:93;;26106:56;26156:5;26106:56;:::i;:::-;26185:7;26216:1;26201:284;26226:6;26223:1;26220:13;26201:284;;;26302:6;26296:13;26329:63;26388:3;26373:13;26329:63;:::i;:::-;26322:70;;26415:60;26468:6;26415:60;:::i;:::-;26405:70;;26261:224;26248:1;26245;26241:9;26236:14;;26201:284;;;26205:14;26501:3;26494:10;;25902:608;;;25778:732;;;;:::o;26516:831::-;26779:4;26817:3;26806:9;26802:19;26794:27;;26831:71;26899:1;26888:9;26884:17;26875:6;26831:71;:::i;:::-;26912:80;26988:2;26977:9;26973:18;26964:6;26912:80;:::i;:::-;27039:9;27033:4;27029:20;27024:2;27013:9;27009:18;27002:48;27067:108;27170:4;27161:6;27067:108;:::i;:::-;27059:116;;27185:72;27253:2;27242:9;27238:18;27229:6;27185:72;:::i;:::-;27267:73;27335:3;27324:9;27320:19;27311:6;27267:73;:::i;:::-;26516:831;;;;;;;;:::o;27353:180::-;27401:77;27398:1;27391:88;27498:4;27495:1;27488:15;27522:4;27519:1;27512:15;27539:185;27579:1;27596:20;27614:1;27596:20;:::i;:::-;27591:25;;27630:20;27648:1;27630:20;:::i;:::-;27625:25;;27669:1;27659:35;;27674:18;;:::i;:::-;27659:35;27716:1;27713;27709:9;27704:14;;27539:185;;;;:::o;27730:177::-;27870:29;27866:1;27858:6;27854:14;27847:53;27730:177;:::o;27913:366::-;28055:3;28076:67;28140:2;28135:3;28076:67;:::i;:::-;28069:74;;28152:93;28241:3;28152:93;:::i;:::-;28270:2;28265:3;28261:12;28254:19;;27913:366;;;:::o;28285:419::-;28451:4;28489:2;28478:9;28474:18;28466:26;;28538:9;28532:4;28528:20;28524:1;28513:9;28509:17;28502:47;28566:131;28692:4;28566:131;:::i;:::-;28558:139;;28285:419;;;:::o;28710:348::-;28750:7;28773:20;28791:1;28773:20;:::i;:::-;28768:25;;28807:20;28825:1;28807:20;:::i;:::-;28802:25;;28995:1;28927:66;28923:74;28920:1;28917:81;28912:1;28905:9;28898:17;28894:105;28891:131;;;29002:18;;:::i;:::-;28891:131;29050:1;29047;29043:9;29032:20;;28710:348;;;;:::o;29064:220::-;29204:34;29200:1;29192:6;29188:14;29181:58;29273:3;29268:2;29260:6;29256:15;29249:28;29064:220;:::o;29290:366::-;29432:3;29453:67;29517:2;29512:3;29453:67;:::i;:::-;29446:74;;29529:93;29618:3;29529:93;:::i;:::-;29647:2;29642:3;29638:12;29631:19;;29290:366;;;:::o;29662:419::-;29828:4;29866:2;29855:9;29851:18;29843:26;;29915:9;29909:4;29905:20;29901:1;29890:9;29886:17;29879:47;29943:131;30069:4;29943:131;:::i;:::-;29935:139;;29662:419;;;:::o

Swarm Source

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