ETH Price: $3,536.69 (+7.26%)

Token

Pepiaocoin (PIAO)
 

Overview

Max Total Supply

1,000,000,000 PIAO

Holders

42

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
13,860,000 PIAO

Value
$0.00
0xd81b5e4c883710738a9d6eb0f14c438a651dabb4
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:
PIAO

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-28
*/

/*

https://www.pepiao.com/
https://t.me/PepiaoEntry/

   
*/

// 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 PIAO is Context, IERC20, Ownable {
 
    using SafeMath for uint256;
 
    string private constant _name = "Pepiaocoin";
    string private constant _symbol = "PIAO";
    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 = 1000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;  
    uint256 private _taxFeeOnBuy = 30;  
    uint256 private _redisFeeOnSell = 0;  
    uint256 private _taxFeeOnSell = 40;
 
    //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; 
    address payable private _developmentAddress = payable(0x03A92BFEb5f5B0dD9ef08f63B3D0cf9370846711); 
    address payable private _marketingAddress = payable(0x03A92BFEb5f5B0dD9ef08f63B3D0cf9370846711);
 
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
 
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;
 
    uint256 public _maxTxAmount = 20000000 * 10**9; 
    uint256 public _maxWalletSize = 20000000 * 10**9; 
    uint256 public _swapTokensAtAmount = 500000 * 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()) {
 
            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }
 
            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");
 
            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }
 
            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;
 
            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }
 
            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
 
        bool takeFee = true;
 
        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {
 
            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }
 
            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }
 
        }
 
        _tokenTransfer(from, to, amount, takeFee);
    }
 
    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
 
    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }
 
    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }
 
    function manualswap() external {
        require(_msgSender() == _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 {
        require(redisFeeOnBuy >= 0 && redisFeeOnBuy <= 4, "Buy rewards must be between 0% and 4%");
        require(taxFeeOnBuy >= 0 && taxFeeOnBuy <= 98, "Buy tax must be between 0% and 98%");
        require(redisFeeOnSell >= 0 && redisFeeOnSell <= 4, "Sell rewards must be between 0% and 4%");
        require(taxFeeOnSell >= 0 && taxFeeOnSell <= 98, "Sell tax must be between 0% and 98%");

        _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":[],"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"}]

6080604052670de0b6b3a76400006000196200001c91906200070f565b6000196200002b919062000776565b6006556000600855601e6009556000600a556028600b55600a54600c55600b54600d55600c54600e55600d54600f557303a92bfeb5f5b0dd9ef08f63b3d0cf9370846711601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507303a92bfeb5f5b0dd9ef08f63b3d0cf9370846711601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555066470de4df82000060165566470de4df8200006017556601c6bf526340006018553480156200016757600080fd5b5060006200017a620006a560201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600654600260006200022f620006a560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000313573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033991906200081b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c791906200081b565b6040518363ffffffff1660e01b8152600401620003e69291906200085e565b6020604051808303816000875af115801562000406573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042c91906200081b565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016005600062000482620006ad60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200062f620006a560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a76400006040516200069691906200089c565b60405180910390a350620008b9565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200071c82620006d6565b91506200072983620006d6565b9250826200073c576200073b620006e0565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200078382620006d6565b91506200079083620006d6565b925082821015620007a657620007a562000747565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007e382620007b6565b9050919050565b620007f581620007d6565b81146200080157600080fd5b50565b6000815190506200081581620007ea565b92915050565b600060208284031215620008345762000833620007b1565b5b6000620008448482850162000804565b91505092915050565b6200085881620007d6565b82525050565b60006040820190506200087560008301856200084d565b6200088460208301846200084d565b9392505050565b6200089681620006d6565b82525050565b6000602082019050620008b360008301846200088b565b92915050565b613d6d80620008c96000396000f3fe6080604052600436106101bb5760003560e01c80637f2feddc116100ec578063a9059cbb1161008a578063c492f04611610064578063c492f046146105f5578063dd62ed3e1461061e578063ea1644d51461065b578063f2fde38b14610684576101c2565b8063a9059cbb14610564578063bfd79284146105a1578063c3c8cd80146105de576101c2565b80638f9a55c0116100c65780638f9a55c0146104bc57806395d89b41146104e757806398a5c31514610512578063a2a957bb1461053b576101c2565b80637f2feddc1461042b5780638da5cb5b146104685780638f70ccf714610493576101c2565b806349bd5a5e1161015957806370a082311161013357806370a0823114610383578063715018a6146103c057806374010ece146103d75780637d1db4a514610400576101c2565b806349bd5a5e146103185780636d8aa8f8146103435780636fc3eaec1461036c576101c2565b806318160ddd1161019557806318160ddd1461025a57806323b872dd146102855780632fd689e3146102c2578063313ce567146102ed576101c2565b806306fdde03146101c7578063095ea7b3146101f25780631694505e1461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc6106ad565b6040516101e99190612ae2565b60405180910390f35b3480156101fe57600080fd5b5061021960048036038101906102149190612ba2565b6106ea565b6040516102269190612bfd565b60405180910390f35b34801561023b57600080fd5b50610244610708565b6040516102519190612c77565b60405180910390f35b34801561026657600080fd5b5061026f61072e565b60405161027c9190612ca1565b60405180910390f35b34801561029157600080fd5b506102ac60048036038101906102a79190612cbc565b61073e565b6040516102b99190612bfd565b60405180910390f35b3480156102ce57600080fd5b506102d7610817565b6040516102e49190612ca1565b60405180910390f35b3480156102f957600080fd5b5061030261081d565b60405161030f9190612d2b565b60405180910390f35b34801561032457600080fd5b5061032d610826565b60405161033a9190612d55565b60405180910390f35b34801561034f57600080fd5b5061036a60048036038101906103659190612d9c565b61084c565b005b34801561037857600080fd5b506103816108fe565b005b34801561038f57600080fd5b506103aa60048036038101906103a59190612dc9565b6109cf565b6040516103b79190612ca1565b60405180910390f35b3480156103cc57600080fd5b506103d5610a20565b005b3480156103e357600080fd5b506103fe60048036038101906103f99190612df6565b610b73565b005b34801561040c57600080fd5b50610415610c12565b6040516104229190612ca1565b60405180910390f35b34801561043757600080fd5b50610452600480360381019061044d9190612dc9565b610c18565b60405161045f9190612ca1565b60405180910390f35b34801561047457600080fd5b5061047d610c30565b60405161048a9190612d55565b60405180910390f35b34801561049f57600080fd5b506104ba60048036038101906104b59190612d9c565b610c59565b005b3480156104c857600080fd5b506104d1610d0b565b6040516104de9190612ca1565b60405180910390f35b3480156104f357600080fd5b506104fc610d11565b6040516105099190612ae2565b60405180910390f35b34801561051e57600080fd5b5061053960048036038101906105349190612df6565b610d4e565b005b34801561054757600080fd5b50610562600480360381019061055d9190612e23565b610ded565b005b34801561057057600080fd5b5061058b60048036038101906105869190612ba2565b610fe8565b6040516105989190612bfd565b60405180910390f35b3480156105ad57600080fd5b506105c860048036038101906105c39190612dc9565b611006565b6040516105d59190612bfd565b60405180910390f35b3480156105ea57600080fd5b506105f3611026565b005b34801561060157600080fd5b5061061c60048036038101906106179190612eef565b6110ff565b005b34801561062a57600080fd5b5061064560048036038101906106409190612f4f565b611239565b6040516106529190612ca1565b60405180910390f35b34801561066757600080fd5b50610682600480360381019061067d9190612df6565b6112c0565b005b34801561069057600080fd5b506106ab60048036038101906106a69190612dc9565b61135f565b005b60606040518060400160405280600a81526020017f50657069616f636f696e00000000000000000000000000000000000000000000815250905090565b60006106fe6106f7611520565b8484611528565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b600061074b8484846116f1565b61080c84610757611520565b61080785604051806060016040528060288152602001613d1060289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107bd611520565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f749092919063ffffffff16565b611528565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610854611520565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d890612fdb565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661093f611520565b73ffffffffffffffffffffffffffffffffffffffff1614806109b55750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661099d611520565b73ffffffffffffffffffffffffffffffffffffffff16145b6109be57600080fd5b60004790506109cc81611fd8565b50565b6000610a19600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612044565b9050919050565b610a28611520565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aac90612fdb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b7b611520565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bff90612fdb565b60405180910390fd5b8060168190555050565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610c61611520565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce590612fdb565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600481526020017f5049414f00000000000000000000000000000000000000000000000000000000815250905090565b610d56611520565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610de3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dda90612fdb565b60405180910390fd5b8060188190555050565b610df5611520565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7990612fdb565b60405180910390fd5b60008410158015610e94575060048411155b610ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eca9061306d565b60405180910390fd5b60008210158015610ee5575060628211155b610f24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1b906130ff565b60405180910390fd5b60008310158015610f36575060048311155b610f75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6c90613191565b60405180910390fd5b60008110158015610f87575060628111155b610fc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbd90613223565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6000610ffc610ff5611520565b84846116f1565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611067611520565b73ffffffffffffffffffffffffffffffffffffffff1614806110dd5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110c5611520565b73ffffffffffffffffffffffffffffffffffffffff16145b6110e657600080fd5b60006110f1306109cf565b90506110fc816120b2565b50565b611107611520565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611194576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118b90612fdb565b60405180910390fd5b60005b838390508110156112335781600560008686858181106111ba576111b9613243565b5b90506020020160208101906111cf9190612dc9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061122b906132a1565b915050611197565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112c8611520565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611355576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134c90612fdb565b60405180910390fd5b8060178190555050565b611367611520565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113eb90612fdb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611463576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145a9061335b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611597576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158e906133ed565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611606576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fd9061347f565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116e49190612ca1565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611760576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175790613511565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c6906135a3565b60405180910390fd5b60008111611812576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180990613635565b60405180910390fd5b61181a610c30565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156118885750611858610c30565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611c7357601560149054906101000a900460ff16611917576118a9610c30565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611916576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190d906136c7565b60405180910390fd5b5b60165481111561195c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195390613733565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a005750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611a3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a36906137c5565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611aec5760175481611aa1846109cf565b611aab91906137e5565b10611aeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae2906138ad565b60405180910390fd5b5b6000611af7306109cf565b9050600060185482101590506016548210611b125760165491505b808015611b2a575060158054906101000a900460ff16155b8015611b845750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611b9c5750601560169054906101000a900460ff165b8015611bf25750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c485750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c7057611c56826120b2565b60004790506000811115611c6e57611c6d47611fd8565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611d1a5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611dcd5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611dcc5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611ddb5760009050611f62565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e865750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e9e57600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611f495750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611f6157600a54600c81905550600b54600d819055505b5b611f6e84848484612329565b50505050565b6000838311158290611fbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb39190612ae2565b60405180910390fd5b5060008385611fcb91906138cd565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612040573d6000803e3d6000fd5b5050565b600060065482111561208b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208290613973565b60405180910390fd5b6000612095612356565b90506120aa818461238190919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156120e9576120e8613993565b5b6040519080825280602002602001820160405280156121175781602001602082028036833780820191505090505b509050308160008151811061212f5761212e613243565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121fa91906139d7565b8160018151811061220e5761220d613243565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061227530601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611528565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122d9959493929190613afd565b600060405180830381600087803b1580156122f357600080fd5b505af1158015612307573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b80612337576123366123cb565b5b612342848484612408565b806123505761234f6125d3565b5b50505050565b60008060006123636125e7565b9150915061237a818361238190919063ffffffff16565b9250505090565b60006123c383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612646565b905092915050565b6000600c541480156123df57506000600d54145b61240657600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061241a876126a9565b95509550955095509550955061247886600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461271190919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061250d85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275b90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612559816127b9565b6125638483612876565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516125c09190612ca1565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a7640000905061261b670de0b6b3a764000060065461238190919063ffffffff16565b82101561263957600654670de0b6b3a7640000935093505050612642565b81819350935050505b9091565b6000808311829061268d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126849190612ae2565b60405180910390fd5b506000838561269c9190613b86565b9050809150509392505050565b60008060008060008060008060006126c68a600c54600d546128b0565b92509250925060006126d6612356565b905060008060006126e98e878787612946565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061275383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f74565b905092915050565b600080828461276a91906137e5565b9050838110156127af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a690613c03565b60405180910390fd5b8091505092915050565b60006127c3612356565b905060006127da82846129cf90919063ffffffff16565b905061282e81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275b90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61288b8260065461271190919063ffffffff16565b6006819055506128a68160075461275b90919063ffffffff16565b6007819055505050565b6000806000806128dc60646128ce888a6129cf90919063ffffffff16565b61238190919063ffffffff16565b9050600061290660646128f8888b6129cf90919063ffffffff16565b61238190919063ffffffff16565b9050600061292f82612921858c61271190919063ffffffff16565b61271190919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061295f85896129cf90919063ffffffff16565b9050600061297686896129cf90919063ffffffff16565b9050600061298d87896129cf90919063ffffffff16565b905060006129b6826129a8858761271190919063ffffffff16565b61271190919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083036129e15760009050612a43565b600082846129ef9190613c23565b90508284826129fe9190613b86565b14612a3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3590613cef565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a83578082015181840152602081019050612a68565b83811115612a92576000848401525b50505050565b6000601f19601f8301169050919050565b6000612ab482612a49565b612abe8185612a54565b9350612ace818560208601612a65565b612ad781612a98565b840191505092915050565b60006020820190508181036000830152612afc8184612aa9565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b3982612b0e565b9050919050565b612b4981612b2e565b8114612b5457600080fd5b50565b600081359050612b6681612b40565b92915050565b6000819050919050565b612b7f81612b6c565b8114612b8a57600080fd5b50565b600081359050612b9c81612b76565b92915050565b60008060408385031215612bb957612bb8612b04565b5b6000612bc785828601612b57565b9250506020612bd885828601612b8d565b9150509250929050565b60008115159050919050565b612bf781612be2565b82525050565b6000602082019050612c126000830184612bee565b92915050565b6000819050919050565b6000612c3d612c38612c3384612b0e565b612c18565b612b0e565b9050919050565b6000612c4f82612c22565b9050919050565b6000612c6182612c44565b9050919050565b612c7181612c56565b82525050565b6000602082019050612c8c6000830184612c68565b92915050565b612c9b81612b6c565b82525050565b6000602082019050612cb66000830184612c92565b92915050565b600080600060608486031215612cd557612cd4612b04565b5b6000612ce386828701612b57565b9350506020612cf486828701612b57565b9250506040612d0586828701612b8d565b9150509250925092565b600060ff82169050919050565b612d2581612d0f565b82525050565b6000602082019050612d406000830184612d1c565b92915050565b612d4f81612b2e565b82525050565b6000602082019050612d6a6000830184612d46565b92915050565b612d7981612be2565b8114612d8457600080fd5b50565b600081359050612d9681612d70565b92915050565b600060208284031215612db257612db1612b04565b5b6000612dc084828501612d87565b91505092915050565b600060208284031215612ddf57612dde612b04565b5b6000612ded84828501612b57565b91505092915050565b600060208284031215612e0c57612e0b612b04565b5b6000612e1a84828501612b8d565b91505092915050565b60008060008060808587031215612e3d57612e3c612b04565b5b6000612e4b87828801612b8d565b9450506020612e5c87828801612b8d565b9350506040612e6d87828801612b8d565b9250506060612e7e87828801612b8d565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112612eaf57612eae612e8a565b5b8235905067ffffffffffffffff811115612ecc57612ecb612e8f565b5b602083019150836020820283011115612ee857612ee7612e94565b5b9250929050565b600080600060408486031215612f0857612f07612b04565b5b600084013567ffffffffffffffff811115612f2657612f25612b09565b5b612f3286828701612e99565b93509350506020612f4586828701612d87565b9150509250925092565b60008060408385031215612f6657612f65612b04565b5b6000612f7485828601612b57565b9250506020612f8585828601612b57565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612fc5602083612a54565b9150612fd082612f8f565b602082019050919050565b60006020820190508181036000830152612ff481612fb8565b9050919050565b7f4275792072657761726473206d757374206265206265747765656e203025206160008201527f6e64203425000000000000000000000000000000000000000000000000000000602082015250565b6000613057602583612a54565b915061306282612ffb565b604082019050919050565b600060208201905081810360008301526130868161304a565b9050919050565b7f42757920746178206d757374206265206265747765656e20302520616e64203960008201527f3825000000000000000000000000000000000000000000000000000000000000602082015250565b60006130e9602283612a54565b91506130f48261308d565b604082019050919050565b60006020820190508181036000830152613118816130dc565b9050919050565b7f53656c6c2072657761726473206d757374206265206265747765656e2030252060008201527f616e642034250000000000000000000000000000000000000000000000000000602082015250565b600061317b602683612a54565b91506131868261311f565b604082019050919050565b600060208201905081810360008301526131aa8161316e565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e642060008201527f3938250000000000000000000000000000000000000000000000000000000000602082015250565b600061320d602383612a54565b9150613218826131b1565b604082019050919050565b6000602082019050818103600083015261323c81613200565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006132ac82612b6c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036132de576132dd613272565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613345602683612a54565b9150613350826132e9565b604082019050919050565b6000602082019050818103600083015261337481613338565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006133d7602483612a54565b91506133e28261337b565b604082019050919050565b60006020820190508181036000830152613406816133ca565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613469602283612a54565b91506134748261340d565b604082019050919050565b600060208201905081810360008301526134988161345c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006134fb602583612a54565b91506135068261349f565b604082019050919050565b6000602082019050818103600083015261352a816134ee565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061358d602383612a54565b915061359882613531565b604082019050919050565b600060208201905081810360008301526135bc81613580565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061361f602983612a54565b915061362a826135c3565b604082019050919050565b6000602082019050818103600083015261364e81613612565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006136b1603f83612a54565b91506136bc82613655565b604082019050919050565b600060208201905081810360008301526136e0816136a4565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b600061371d601c83612a54565b9150613728826136e7565b602082019050919050565b6000602082019050818103600083015261374c81613710565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b60006137af602383612a54565b91506137ba82613753565b604082019050919050565b600060208201905081810360008301526137de816137a2565b9050919050565b60006137f082612b6c565b91506137fb83612b6c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156138305761382f613272565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613897602383612a54565b91506138a28261383b565b604082019050919050565b600060208201905081810360008301526138c68161388a565b9050919050565b60006138d882612b6c565b91506138e383612b6c565b9250828210156138f6576138f5613272565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b600061395d602a83612a54565b915061396882613901565b604082019050919050565b6000602082019050818103600083015261398c81613950565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506139d181612b40565b92915050565b6000602082840312156139ed576139ec612b04565b5b60006139fb848285016139c2565b91505092915050565b6000819050919050565b6000613a29613a24613a1f84613a04565b612c18565b612b6c565b9050919050565b613a3981613a0e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a7481612b2e565b82525050565b6000613a868383613a6b565b60208301905092915050565b6000602082019050919050565b6000613aaa82613a3f565b613ab48185613a4a565b9350613abf83613a5b565b8060005b83811015613af0578151613ad78882613a7a565b9750613ae283613a92565b925050600181019050613ac3565b5085935050505092915050565b600060a082019050613b126000830188612c92565b613b1f6020830187613a30565b8181036040830152613b318186613a9f565b9050613b406060830185612d46565b613b4d6080830184612c92565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613b9182612b6c565b9150613b9c83612b6c565b925082613bac57613bab613b57565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613bed601b83612a54565b9150613bf882613bb7565b602082019050919050565b60006020820190508181036000830152613c1c81613be0565b9050919050565b6000613c2e82612b6c565b9150613c3983612b6c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613c7257613c71613272565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613cd9602183612a54565b9150613ce482613c7d565b604082019050919050565b60006020820190508181036000830152613d0881613ccc565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a5d7d29ac5c6d4f6e73d5925d20dee2efbdb58d5cb057d6d163195678feff91a64736f6c634300080e0033

Deployed Bytecode

0x6080604052600436106101bb5760003560e01c80637f2feddc116100ec578063a9059cbb1161008a578063c492f04611610064578063c492f046146105f5578063dd62ed3e1461061e578063ea1644d51461065b578063f2fde38b14610684576101c2565b8063a9059cbb14610564578063bfd79284146105a1578063c3c8cd80146105de576101c2565b80638f9a55c0116100c65780638f9a55c0146104bc57806395d89b41146104e757806398a5c31514610512578063a2a957bb1461053b576101c2565b80637f2feddc1461042b5780638da5cb5b146104685780638f70ccf714610493576101c2565b806349bd5a5e1161015957806370a082311161013357806370a0823114610383578063715018a6146103c057806374010ece146103d75780637d1db4a514610400576101c2565b806349bd5a5e146103185780636d8aa8f8146103435780636fc3eaec1461036c576101c2565b806318160ddd1161019557806318160ddd1461025a57806323b872dd146102855780632fd689e3146102c2578063313ce567146102ed576101c2565b806306fdde03146101c7578063095ea7b3146101f25780631694505e1461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc6106ad565b6040516101e99190612ae2565b60405180910390f35b3480156101fe57600080fd5b5061021960048036038101906102149190612ba2565b6106ea565b6040516102269190612bfd565b60405180910390f35b34801561023b57600080fd5b50610244610708565b6040516102519190612c77565b60405180910390f35b34801561026657600080fd5b5061026f61072e565b60405161027c9190612ca1565b60405180910390f35b34801561029157600080fd5b506102ac60048036038101906102a79190612cbc565b61073e565b6040516102b99190612bfd565b60405180910390f35b3480156102ce57600080fd5b506102d7610817565b6040516102e49190612ca1565b60405180910390f35b3480156102f957600080fd5b5061030261081d565b60405161030f9190612d2b565b60405180910390f35b34801561032457600080fd5b5061032d610826565b60405161033a9190612d55565b60405180910390f35b34801561034f57600080fd5b5061036a60048036038101906103659190612d9c565b61084c565b005b34801561037857600080fd5b506103816108fe565b005b34801561038f57600080fd5b506103aa60048036038101906103a59190612dc9565b6109cf565b6040516103b79190612ca1565b60405180910390f35b3480156103cc57600080fd5b506103d5610a20565b005b3480156103e357600080fd5b506103fe60048036038101906103f99190612df6565b610b73565b005b34801561040c57600080fd5b50610415610c12565b6040516104229190612ca1565b60405180910390f35b34801561043757600080fd5b50610452600480360381019061044d9190612dc9565b610c18565b60405161045f9190612ca1565b60405180910390f35b34801561047457600080fd5b5061047d610c30565b60405161048a9190612d55565b60405180910390f35b34801561049f57600080fd5b506104ba60048036038101906104b59190612d9c565b610c59565b005b3480156104c857600080fd5b506104d1610d0b565b6040516104de9190612ca1565b60405180910390f35b3480156104f357600080fd5b506104fc610d11565b6040516105099190612ae2565b60405180910390f35b34801561051e57600080fd5b5061053960048036038101906105349190612df6565b610d4e565b005b34801561054757600080fd5b50610562600480360381019061055d9190612e23565b610ded565b005b34801561057057600080fd5b5061058b60048036038101906105869190612ba2565b610fe8565b6040516105989190612bfd565b60405180910390f35b3480156105ad57600080fd5b506105c860048036038101906105c39190612dc9565b611006565b6040516105d59190612bfd565b60405180910390f35b3480156105ea57600080fd5b506105f3611026565b005b34801561060157600080fd5b5061061c60048036038101906106179190612eef565b6110ff565b005b34801561062a57600080fd5b5061064560048036038101906106409190612f4f565b611239565b6040516106529190612ca1565b60405180910390f35b34801561066757600080fd5b50610682600480360381019061067d9190612df6565b6112c0565b005b34801561069057600080fd5b506106ab60048036038101906106a69190612dc9565b61135f565b005b60606040518060400160405280600a81526020017f50657069616f636f696e00000000000000000000000000000000000000000000815250905090565b60006106fe6106f7611520565b8484611528565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b600061074b8484846116f1565b61080c84610757611520565b61080785604051806060016040528060288152602001613d1060289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107bd611520565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f749092919063ffffffff16565b611528565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610854611520565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d890612fdb565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661093f611520565b73ffffffffffffffffffffffffffffffffffffffff1614806109b55750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661099d611520565b73ffffffffffffffffffffffffffffffffffffffff16145b6109be57600080fd5b60004790506109cc81611fd8565b50565b6000610a19600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612044565b9050919050565b610a28611520565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aac90612fdb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b7b611520565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bff90612fdb565b60405180910390fd5b8060168190555050565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610c61611520565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce590612fdb565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600481526020017f5049414f00000000000000000000000000000000000000000000000000000000815250905090565b610d56611520565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610de3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dda90612fdb565b60405180910390fd5b8060188190555050565b610df5611520565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7990612fdb565b60405180910390fd5b60008410158015610e94575060048411155b610ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eca9061306d565b60405180910390fd5b60008210158015610ee5575060628211155b610f24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1b906130ff565b60405180910390fd5b60008310158015610f36575060048311155b610f75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6c90613191565b60405180910390fd5b60008110158015610f87575060628111155b610fc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbd90613223565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6000610ffc610ff5611520565b84846116f1565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611067611520565b73ffffffffffffffffffffffffffffffffffffffff1614806110dd5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110c5611520565b73ffffffffffffffffffffffffffffffffffffffff16145b6110e657600080fd5b60006110f1306109cf565b90506110fc816120b2565b50565b611107611520565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611194576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118b90612fdb565b60405180910390fd5b60005b838390508110156112335781600560008686858181106111ba576111b9613243565b5b90506020020160208101906111cf9190612dc9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061122b906132a1565b915050611197565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112c8611520565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611355576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134c90612fdb565b60405180910390fd5b8060178190555050565b611367611520565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113eb90612fdb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611463576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145a9061335b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611597576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158e906133ed565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611606576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fd9061347f565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116e49190612ca1565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611760576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175790613511565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c6906135a3565b60405180910390fd5b60008111611812576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180990613635565b60405180910390fd5b61181a610c30565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156118885750611858610c30565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611c7357601560149054906101000a900460ff16611917576118a9610c30565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611916576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190d906136c7565b60405180910390fd5b5b60165481111561195c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195390613733565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a005750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611a3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a36906137c5565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611aec5760175481611aa1846109cf565b611aab91906137e5565b10611aeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae2906138ad565b60405180910390fd5b5b6000611af7306109cf565b9050600060185482101590506016548210611b125760165491505b808015611b2a575060158054906101000a900460ff16155b8015611b845750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611b9c5750601560169054906101000a900460ff165b8015611bf25750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c485750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c7057611c56826120b2565b60004790506000811115611c6e57611c6d47611fd8565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611d1a5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611dcd5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611dcc5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611ddb5760009050611f62565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e865750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e9e57600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611f495750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611f6157600a54600c81905550600b54600d819055505b5b611f6e84848484612329565b50505050565b6000838311158290611fbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb39190612ae2565b60405180910390fd5b5060008385611fcb91906138cd565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612040573d6000803e3d6000fd5b5050565b600060065482111561208b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208290613973565b60405180910390fd5b6000612095612356565b90506120aa818461238190919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156120e9576120e8613993565b5b6040519080825280602002602001820160405280156121175781602001602082028036833780820191505090505b509050308160008151811061212f5761212e613243565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121fa91906139d7565b8160018151811061220e5761220d613243565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061227530601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611528565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122d9959493929190613afd565b600060405180830381600087803b1580156122f357600080fd5b505af1158015612307573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b80612337576123366123cb565b5b612342848484612408565b806123505761234f6125d3565b5b50505050565b60008060006123636125e7565b9150915061237a818361238190919063ffffffff16565b9250505090565b60006123c383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612646565b905092915050565b6000600c541480156123df57506000600d54145b61240657600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061241a876126a9565b95509550955095509550955061247886600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461271190919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061250d85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275b90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612559816127b9565b6125638483612876565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516125c09190612ca1565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a7640000905061261b670de0b6b3a764000060065461238190919063ffffffff16565b82101561263957600654670de0b6b3a7640000935093505050612642565b81819350935050505b9091565b6000808311829061268d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126849190612ae2565b60405180910390fd5b506000838561269c9190613b86565b9050809150509392505050565b60008060008060008060008060006126c68a600c54600d546128b0565b92509250925060006126d6612356565b905060008060006126e98e878787612946565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061275383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f74565b905092915050565b600080828461276a91906137e5565b9050838110156127af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a690613c03565b60405180910390fd5b8091505092915050565b60006127c3612356565b905060006127da82846129cf90919063ffffffff16565b905061282e81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275b90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61288b8260065461271190919063ffffffff16565b6006819055506128a68160075461275b90919063ffffffff16565b6007819055505050565b6000806000806128dc60646128ce888a6129cf90919063ffffffff16565b61238190919063ffffffff16565b9050600061290660646128f8888b6129cf90919063ffffffff16565b61238190919063ffffffff16565b9050600061292f82612921858c61271190919063ffffffff16565b61271190919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061295f85896129cf90919063ffffffff16565b9050600061297686896129cf90919063ffffffff16565b9050600061298d87896129cf90919063ffffffff16565b905060006129b6826129a8858761271190919063ffffffff16565b61271190919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083036129e15760009050612a43565b600082846129ef9190613c23565b90508284826129fe9190613b86565b14612a3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3590613cef565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a83578082015181840152602081019050612a68565b83811115612a92576000848401525b50505050565b6000601f19601f8301169050919050565b6000612ab482612a49565b612abe8185612a54565b9350612ace818560208601612a65565b612ad781612a98565b840191505092915050565b60006020820190508181036000830152612afc8184612aa9565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b3982612b0e565b9050919050565b612b4981612b2e565b8114612b5457600080fd5b50565b600081359050612b6681612b40565b92915050565b6000819050919050565b612b7f81612b6c565b8114612b8a57600080fd5b50565b600081359050612b9c81612b76565b92915050565b60008060408385031215612bb957612bb8612b04565b5b6000612bc785828601612b57565b9250506020612bd885828601612b8d565b9150509250929050565b60008115159050919050565b612bf781612be2565b82525050565b6000602082019050612c126000830184612bee565b92915050565b6000819050919050565b6000612c3d612c38612c3384612b0e565b612c18565b612b0e565b9050919050565b6000612c4f82612c22565b9050919050565b6000612c6182612c44565b9050919050565b612c7181612c56565b82525050565b6000602082019050612c8c6000830184612c68565b92915050565b612c9b81612b6c565b82525050565b6000602082019050612cb66000830184612c92565b92915050565b600080600060608486031215612cd557612cd4612b04565b5b6000612ce386828701612b57565b9350506020612cf486828701612b57565b9250506040612d0586828701612b8d565b9150509250925092565b600060ff82169050919050565b612d2581612d0f565b82525050565b6000602082019050612d406000830184612d1c565b92915050565b612d4f81612b2e565b82525050565b6000602082019050612d6a6000830184612d46565b92915050565b612d7981612be2565b8114612d8457600080fd5b50565b600081359050612d9681612d70565b92915050565b600060208284031215612db257612db1612b04565b5b6000612dc084828501612d87565b91505092915050565b600060208284031215612ddf57612dde612b04565b5b6000612ded84828501612b57565b91505092915050565b600060208284031215612e0c57612e0b612b04565b5b6000612e1a84828501612b8d565b91505092915050565b60008060008060808587031215612e3d57612e3c612b04565b5b6000612e4b87828801612b8d565b9450506020612e5c87828801612b8d565b9350506040612e6d87828801612b8d565b9250506060612e7e87828801612b8d565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112612eaf57612eae612e8a565b5b8235905067ffffffffffffffff811115612ecc57612ecb612e8f565b5b602083019150836020820283011115612ee857612ee7612e94565b5b9250929050565b600080600060408486031215612f0857612f07612b04565b5b600084013567ffffffffffffffff811115612f2657612f25612b09565b5b612f3286828701612e99565b93509350506020612f4586828701612d87565b9150509250925092565b60008060408385031215612f6657612f65612b04565b5b6000612f7485828601612b57565b9250506020612f8585828601612b57565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612fc5602083612a54565b9150612fd082612f8f565b602082019050919050565b60006020820190508181036000830152612ff481612fb8565b9050919050565b7f4275792072657761726473206d757374206265206265747765656e203025206160008201527f6e64203425000000000000000000000000000000000000000000000000000000602082015250565b6000613057602583612a54565b915061306282612ffb565b604082019050919050565b600060208201905081810360008301526130868161304a565b9050919050565b7f42757920746178206d757374206265206265747765656e20302520616e64203960008201527f3825000000000000000000000000000000000000000000000000000000000000602082015250565b60006130e9602283612a54565b91506130f48261308d565b604082019050919050565b60006020820190508181036000830152613118816130dc565b9050919050565b7f53656c6c2072657761726473206d757374206265206265747765656e2030252060008201527f616e642034250000000000000000000000000000000000000000000000000000602082015250565b600061317b602683612a54565b91506131868261311f565b604082019050919050565b600060208201905081810360008301526131aa8161316e565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e642060008201527f3938250000000000000000000000000000000000000000000000000000000000602082015250565b600061320d602383612a54565b9150613218826131b1565b604082019050919050565b6000602082019050818103600083015261323c81613200565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006132ac82612b6c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036132de576132dd613272565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613345602683612a54565b9150613350826132e9565b604082019050919050565b6000602082019050818103600083015261337481613338565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006133d7602483612a54565b91506133e28261337b565b604082019050919050565b60006020820190508181036000830152613406816133ca565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613469602283612a54565b91506134748261340d565b604082019050919050565b600060208201905081810360008301526134988161345c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006134fb602583612a54565b91506135068261349f565b604082019050919050565b6000602082019050818103600083015261352a816134ee565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061358d602383612a54565b915061359882613531565b604082019050919050565b600060208201905081810360008301526135bc81613580565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061361f602983612a54565b915061362a826135c3565b604082019050919050565b6000602082019050818103600083015261364e81613612565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006136b1603f83612a54565b91506136bc82613655565b604082019050919050565b600060208201905081810360008301526136e0816136a4565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b600061371d601c83612a54565b9150613728826136e7565b602082019050919050565b6000602082019050818103600083015261374c81613710565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b60006137af602383612a54565b91506137ba82613753565b604082019050919050565b600060208201905081810360008301526137de816137a2565b9050919050565b60006137f082612b6c565b91506137fb83612b6c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156138305761382f613272565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613897602383612a54565b91506138a28261383b565b604082019050919050565b600060208201905081810360008301526138c68161388a565b9050919050565b60006138d882612b6c565b91506138e383612b6c565b9250828210156138f6576138f5613272565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b600061395d602a83612a54565b915061396882613901565b604082019050919050565b6000602082019050818103600083015261398c81613950565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506139d181612b40565b92915050565b6000602082840312156139ed576139ec612b04565b5b60006139fb848285016139c2565b91505092915050565b6000819050919050565b6000613a29613a24613a1f84613a04565b612c18565b612b6c565b9050919050565b613a3981613a0e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a7481612b2e565b82525050565b6000613a868383613a6b565b60208301905092915050565b6000602082019050919050565b6000613aaa82613a3f565b613ab48185613a4a565b9350613abf83613a5b565b8060005b83811015613af0578151613ad78882613a7a565b9750613ae283613a92565b925050600181019050613ac3565b5085935050505092915050565b600060a082019050613b126000830188612c92565b613b1f6020830187613a30565b8181036040830152613b318186613a9f565b9050613b406060830185612d46565b613b4d6080830184612c92565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613b9182612b6c565b9150613b9c83612b6c565b925082613bac57613bab613b57565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613bed601b83612a54565b9150613bf882613bb7565b602082019050919050565b60006020820190508181036000830152613c1c81613be0565b9050919050565b6000613c2e82612b6c565b9150613c3983612b6c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613c7257613c71613272565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613cd9602183612a54565b9150613ce482613c7d565b604082019050919050565b60006020820190508181036000830152613d0881613ccc565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a5d7d29ac5c6d4f6e73d5925d20dee2efbdb58d5cb057d6d163195678feff91a64736f6c634300080e0033

Deployed Bytecode Sourcemap

4167:13707:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6685:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7617:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5523:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6965:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7819:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5825:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6873:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5571:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17240:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12647:235;;;;;;;;;;;;;:::i;:::-;;7069:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1640:148;;;;;;;;;;;;;:::i;:::-;;17381:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5715:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5262:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1424:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12292:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5769:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6777:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17048:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16302:693;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7216:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5224:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12402:236;;;;;;;;;;;;;:::i;:::-;;17635:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7424:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17511:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1797:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6685:83;6722:13;6755:5;;;;;;;;;;;;;;;;;6748:12;;6685:83;:::o;7617:193::-;7719:4;7741:39;7750:12;:10;:12::i;:::-;7764:7;7773:6;7741:8;:39::i;:::-;7798:4;7791:11;;7617:193;;;;:::o;5523:41::-;;;;;;;;;;;;;:::o;6965:95::-;7018:7;4715:18;7038:14;;6965:95;:::o;7819:446::-;7951:4;7968:36;7978:6;7986:9;7997:6;7968:9;:36::i;:::-;8015:220;8038:6;8059:12;:10;:12::i;:::-;8086:138;8142:6;8086:138;;;;;;;;;;;;;;;;;:11;:19;8098:6;8086:19;;;;;;;;;;;;;;;:33;8106:12;:10;:12::i;:::-;8086:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8015:8;:220::i;:::-;8253:4;8246:11;;7819:446;;;;;:::o;5825:51::-;;;;:::o;6873:83::-;6914:5;4388:1;6932:16;;6873:83;:::o;5571:28::-;;;;;;;;;;;;;:::o;17240:101::-;1562:12;:10;:12::i;:::-;1552:22;;:6;;;;;;;;;;:22;;;1544:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17321:12:::1;17307:11;;:26;;;;;;;;;;;;;;;;;;17240:101:::0;:::o;12647:235::-;12713:19;;;;;;;;;;;12697:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12752:17;;;;;;;;;;;12736:33;;:12;:10;:12::i;:::-;:33;;;12697:72;12689:81;;;;;;12781:26;12810:21;12781:50;;12842:32;12855:18;12842:12;:32::i;:::-;12678:204;12647:235::o;7069:138::-;7135:7;7162:37;7182:7;:16;7190:7;7182:16;;;;;;;;;;;;;;;;7162:19;:37::i;:::-;7155:44;;7069:138;;;:::o;1640:148::-;1562:12;:10;:12::i;:::-;1552:22;;:6;;;;;;;;;;:22;;;1544:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1747:1:::1;1710:40;;1731:6;::::0;::::1;;;;;;;;1710:40;;;;;;;;;;;;1778:1;1761:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1640:148::o:0;17381:121::-;1562:12;:10;:12::i;:::-;1552:22;;:6;;;;;;;;;;:22;;;1544:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17473:11:::1;17458:12;:26;;;;17381:121:::0;:::o;5715:46::-;;;;:::o;5262:43::-;;;;;;;;;;;;;;;;;:::o;1424:79::-;1462:7;1489:6;;;;;;;;;;;1482:13;;1424:79;:::o;12292:101::-;1562:12;:10;:12::i;:::-;1552:22;;:6;;;;;;;;;;:22;;;1544:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12373:12:::1;12359:11;;:26;;;;;;;;;;;;;;;;;;12292:101:::0;:::o;5769:48::-;;;;:::o;6777:87::-;6816:13;6849:7;;;;;;;;;;;;;;;;;6842:14;;6777:87;:::o;17048:139::-;1562:12;:10;:12::i;:::-;1552:22;;:6;;;;;;;;;;:22;;;1544:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17161:18:::1;17139:19;:40;;;;17048:139:::0;:::o;16302:693::-;1562:12;:10;:12::i;:::-;1552:22;;:6;;;;;;;;;;:22;;;1544:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16461:1:::1;16444:13;:18;;:40;;;;;16483:1;16466:13;:18;;16444:40;16436:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;16560:1;16545:11;:16;;:37;;;;;16580:2;16565:11;:17;;16545:37;16537:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;16658:1;16640:14;:19;;:42;;;;;16681:1;16663:14;:19;;16640:42;16632:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;16760:1;16744:12;:17;;:39;;;;;16781:2;16765:12;:18;;16744:39;16736:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;16853:13;16836:14;:30;;;;16895:14;16877:15;:32;;;;16935:11;16920:12;:26;;;;16973:12;16957:13;:28;;;;16302:693:::0;;;;:::o;7216:199::-;7321:4;7343:42;7353:12;:10;:12::i;:::-;7367:9;7378:6;7343:9;:42::i;:::-;7403:4;7396:11;;7216:199;;;;:::o;5224:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12402:236::-;12468:19;;;;;;;;;;;12452:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12507:17;;;;;;;;;;;12491:33;;:12;:10;:12::i;:::-;:33;;;12452:72;12444:81;;;;;;12536:23;12562:24;12580:4;12562:9;:24::i;:::-;12536:50;;12597:33;12614:15;12597:16;:33::i;:::-;12433:205;12402:236::o;17635:234::-;1562:12;:10;:12::i;:::-;1552:22;;:6;;;;;;;;;;:22;;;1544:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17752:9:::1;17748:114;17771:8;;:15;;17767:1;:19;17748:114;;;17842:8;17808:18;:31;17827:8;;17836:1;17827:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17808:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17788:3;;;;;:::i;:::-;;;;17748:114;;;;17635:234:::0;;;:::o;7424:184::-;7541:7;7573:11;:18;7585:5;7573:18;;;;;;;;;;;;;;;:27;7592:7;7573:27;;;;;;;;;;;;;;;;7566:34;;7424:184;;;;:::o;17511:115::-;1562:12;:10;:12::i;:::-;1552:22;;:6;;;;;;;;;;:22;;;1544:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17605:13:::1;17588:14;:30;;;;17511:115:::0;:::o;1797:244::-;1562:12;:10;:12::i;:::-;1552:22;;:6;;;;;;;;;;:22;;;1544:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1906:1:::1;1886:22;;:8;:22;;::::0;1878:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1996:8;1967:38;;1988:6;::::0;::::1;;;;;;;;1967:38;;;;;;;;;;;;2025:8;2016:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1797:244:::0;:::o;173:98::-;226:7;253:10;246:17;;173:98;:::o;8962:369::-;9106:1;9089:19;;:5;:19;;;9081:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9187:1;9168:21;;:7;:21;;;9160:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9269:6;9239:11;:18;9251:5;9239:18;;;;;;;;;;;;;;;:27;9258:7;9239:27;;;;;;;;;;;;;;;:36;;;;9307:7;9291:32;;9300:5;9291:32;;;9316:6;9291:32;;;;;;:::i;:::-;;;;;;;;8962:369;;;:::o;9340:2343::-;9478:1;9462:18;;:4;:18;;;9454:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9555:1;9541:16;;:2;:16;;;9533:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9625:1;9616:6;:10;9608:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9698:7;:5;:7::i;:::-;9690:15;;:4;:15;;;;:32;;;;;9715:7;:5;:7::i;:::-;9709:13;;:2;:13;;;;9690:32;9686:1265;;;9780:11;;;;;;;;;;;9775:144;;9828:7;:5;:7::i;:::-;9820:15;;:4;:15;;;9812:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9775:144;9954:12;;9944:6;:22;;9936:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10023:4;:10;10028:4;10023:10;;;;;;;;;;;;;;;;;;;;;;;;;10022:11;:24;;;;;10038:4;:8;10043:2;10038:8;;;;;;;;;;;;;;;;;;;;;;;;;10037:9;10022:24;10014:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10113:13;;;;;;;;;;;10107:19;;:2;:19;;;10104:146;;10180:14;;10171:6;10155:13;10165:2;10155:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10147:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10104:146;10267:28;10298:24;10316:4;10298:9;:24::i;:::-;10267:55;;10337:12;10376:19;;10352:20;:43;;10337:58;;10440:12;;10416:20;:36;10413:124;;10509:12;;10486:35;;10413:124;10558:7;:18;;;;;10570:6;;;;;;;;;;10569:7;10558:18;:43;;;;;10588:13;;;;;;;;;;;10580:21;;:4;:21;;;;10558:43;:58;;;;;10605:11;;;;;;;;;;;10558:58;:87;;;;;10621:18;:24;10640:4;10621:24;;;;;;;;;;;;;;;;;;;;;;;;;10620:25;10558:87;:114;;;;;10650:18;:22;10669:2;10650:22;;;;;;;;;;;;;;;;;;;;;;;;;10649:23;10558:114;10554:386;;;10693:38;10710:20;10693:16;:38::i;:::-;10750:26;10779:21;10750:50;;10844:1;10823:18;:22;10819:106;;;10870:35;10883:21;10870:12;:35::i;:::-;10819:106;10674:266;10554:386;9724:1227;;9686:1265;10964:12;10979:4;10964:19;;11029:18;:24;11048:4;11029:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11057:18;:22;11076:2;11057:22;;;;;;;;;;;;;;;;;;;;;;;;;11029:50;11028:102;;;;11093:13;;;;;;;;;;;11085:21;;:4;:21;;;;:44;;;;;11116:13;;;;;;;;;;;11110:19;;:2;:19;;;;11085:44;11028:102;11024:597;;;11157:5;11147:15;;11024:597;;;11241:13;;;;;;;;;;;11233:21;;:4;:21;;;:55;;;;;11272:15;;;;;;;;;;;11258:30;;:2;:30;;;;11233:55;11230:162;;;11321:14;;11309:9;:26;;;;11364:12;;11354:7;:22;;;;11230:162;11452:13;;;;;;;;;;;11446:19;;:2;:19;;;:55;;;;;11485:15;;;;;;;;;;;11469:32;;:4;:32;;;;11446:55;11442:165;;;11534:15;;11522:9;:27;;;;11578:13;;11568:7;:23;;;;11442:165;11024:597;11634:41;11649:4;11655:2;11659:6;11667:7;11634:14;:41::i;:::-;9443:2240;9340:2343;;;:::o;2409:224::-;2529:7;2562:1;2557;:6;;2565:12;2549:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2589:9;2605:1;2601;:5;;;;:::i;:::-;2589:17;;2624:1;2617:8;;;2409:224;;;;;:::o;12184:99::-;12241:17;;;;;;;;;;;:26;;:34;12268:6;12241:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12184:99;:::o;8274:323::-;8369:7;8427;;8416;:18;;8394:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8515:19;8537:10;:8;:10::i;:::-;8515:32;;8565:24;8577:11;8565:7;:11;;:24;;;;:::i;:::-;8558:31;;;8274:323;;;:::o;11692:483::-;5980:4;5971:6;;:13;;;;;;;;;;;;;;;;;;11770:21:::1;11808:1;11794:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11770:40;;11839:4;11821;11826:1;11821:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11865:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11855:4;11860:1;11855:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11898:62;11915:4;11930:15;;;;;;;;;;;11948:11;11898:8;:62::i;:::-;11971:15;;;;;;;;;;;:66;;;12052:11;12078:1;12094:4;12121;12141:15;11971:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11759:416;6016:5:::0;6007:6;;:14;;;;;;;;;;;;;;;;;;11692: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;15863:164::-;15905:7;15926:15;15943;15962:19;:17;:19::i;:::-;15925:56;;;;15999:20;16011:7;15999;:11;;:20;;;;:::i;:::-;15992:27;;;;15863:164;:::o;2897:132::-;2955:7;2982:39;2986:1;2989;2982:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2975:46;;2897:132;;;;:::o;8606:221::-;8666:1;8653:9;;:14;:30;;;;;8682:1;8671:7;;:12;8653:30;8685:7;8649:43;8725:9;;8705:17;:29;;;;8763:7;;8745:15;:25;;;;8796:1;8784:9;:13;;;;8818:1;8808:7;:11;;;;8606:221;:::o;13185:610::-;13332:15;13362:23;13400:12;13427:23;13465:12;13492:13;13519:19;13530:7;13519:10;:19::i;:::-;13317:221;;;;;;;;;;;;13567:28;13587:7;13567;:15;13575:6;13567:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13549:7;:15;13557:6;13549:15;;;;;;;;;;;;;;;:46;;;;13627:39;13650:15;13627:7;:18;13635:9;13627:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13606:7;:18;13614:9;13606:18;;;;;;;;;;;;;;;:60;;;;13677:16;13687:5;13677:9;:16::i;:::-;13704:23;13716:4;13722;13704:11;:23::i;:::-;13760:9;13743:44;;13752:6;13743:44;;;13771:15;13743:44;;;;;;:::i;:::-;;;;;;;;13306:489;;;;;;13185:610;;;:::o;8836:117::-;8892:17;;8880:9;:29;;;;8930:15;;8920:7;:25;;;;8836:117::o;16036:257::-;16087:7;16096;16116:15;16134:7;;16116:25;;16152:15;4715:18;16152:25;;16202:20;4715:18;16202:7;;:11;;:20;;;;:::i;:::-;16192:7;:30;16188:61;;;16232:7;;4715:18;16224:25;;;;;;;;16188:61;16268:7;16277;16260:25;;;;;;16036:257;;;:::o;3038:223::-;3158:7;3190:1;3186;:5;3193:12;3178:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3217:9;3233:1;3229;:5;;;;:::i;:::-;3217:17;;3252:1;3245:8;;;3038:223;;;;;:::o;14218:615::-;14318:7;14340;14362;14384;14406;14428;14464:23;14489:12;14503:13;14533:40;14545:7;14554:9;;14565:7;;14533:11;:40::i;:::-;14463:110;;;;;;14584:19;14606:10;:8;:10::i;:::-;14584:32;;14628:15;14645:23;14670:12;14699:46;14711:7;14720:4;14726:5;14733:11;14699;:46::i;:::-;14627:118;;;;;;14764:7;14773:15;14790:4;14796:15;14813:4;14819:5;14756:69;;;;;;;;;;;;;;;;;;;14218:615;;;;;;;:::o;2264:136::-;2322:7;2349:43;2353:1;2356;2349:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2342:50;;2264:136;;;;:::o;2076:179::-;2134:7;2154:9;2170:1;2166;:5;;;;:::i;:::-;2154:17;;2195:1;2190;:6;;2182:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2246:1;2239:8;;;2076:179;;;;:::o;13804:211::-;13857:19;13879:10;:8;:10::i;:::-;13857:32;;13900:13;13916:22;13926:11;13916:5;:9;;:22;;;;:::i;:::-;13900:38;;13974:33;14001:5;13974:7;:22;13990:4;13974:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13949:7;:22;13965:4;13949:22;;;;;;;;;;;;;;;:58;;;;13846:169;;13804:211;:::o;14024:147::-;14102:17;14114:4;14102:7;;:11;;:17;;;;:::i;:::-;14092:7;:27;;;;14143:20;14158:4;14143:10;;:14;;:20;;;;:::i;:::-;14130:10;:33;;;;14024:147;;:::o;14842:469::-;15011:7;15033;15055;15090:12;15105:30;15131:3;15105:21;15117:8;15105:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15090:45;;15146:13;15162:28;15186:3;15162:19;15174:6;15162:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15146:44;;15201:23;15227:28;15249:5;15227:17;15239:4;15227:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15201:54;;15274:15;15291:4;15297:5;15266:37;;;;;;;;;14842:469;;;;;;;:::o;15320:534::-;15514:7;15536;15558;15593:15;15611:24;15623:11;15611:7;:11;;:24;;;;:::i;:::-;15593:42;;15646:12;15661:21;15670:11;15661:4;:8;;:21;;;;:::i;:::-;15646:36;;15693:13;15709:22;15719:11;15709:5;:9;;:22;;;;:::i;:::-;15693:38;;15742:23;15768:28;15790:5;15768:17;15780:4;15768:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15742:54;;15815:7;15824:15;15841:4;15807:39;;;;;;;;;;15320:534;;;;;;;;:::o;2642:246::-;2700:7;2729:1;2724;:6;2720:47;;2754:1;2747:8;;;;2720:47;2777:9;2793:1;2789;:5;;;;:::i;:::-;2777:17;;2822:1;2817;2813;:5;;;;:::i;:::-;:10;2805:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2879:1;2872:8;;;2642: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:224::-;11526:34;11522:1;11514:6;11510:14;11503:58;11595:7;11590:2;11582:6;11578:15;11571:32;11386:224;:::o;11616:366::-;11758:3;11779:67;11843:2;11838:3;11779:67;:::i;:::-;11772:74;;11855:93;11944:3;11855:93;:::i;:::-;11973:2;11968:3;11964:12;11957:19;;11616:366;;;:::o;11988:419::-;12154:4;12192:2;12181:9;12177:18;12169:26;;12241:9;12235:4;12231:20;12227:1;12216:9;12212:17;12205:47;12269:131;12395:4;12269:131;:::i;:::-;12261:139;;11988:419;;;:::o;12413:221::-;12553:34;12549:1;12541:6;12537:14;12530:58;12622:4;12617:2;12609:6;12605:15;12598:29;12413:221;:::o;12640:366::-;12782:3;12803:67;12867:2;12862:3;12803:67;:::i;:::-;12796:74;;12879:93;12968:3;12879:93;:::i;:::-;12997:2;12992:3;12988:12;12981:19;;12640:366;;;:::o;13012:419::-;13178:4;13216:2;13205:9;13201:18;13193:26;;13265:9;13259:4;13255:20;13251:1;13240:9;13236:17;13229:47;13293:131;13419:4;13293:131;:::i;:::-;13285:139;;13012:419;;;:::o;13437:225::-;13577:34;13573:1;13565:6;13561:14;13554:58;13646:8;13641:2;13633:6;13629:15;13622:33;13437:225;:::o;13668:366::-;13810:3;13831:67;13895:2;13890:3;13831:67;:::i;:::-;13824:74;;13907:93;13996:3;13907:93;:::i;:::-;14025:2;14020:3;14016:12;14009:19;;13668:366;;;:::o;14040:419::-;14206:4;14244:2;14233:9;14229:18;14221:26;;14293:9;14287:4;14283:20;14279:1;14268:9;14264:17;14257:47;14321:131;14447:4;14321:131;:::i;:::-;14313:139;;14040:419;;;:::o;14465:222::-;14605:34;14601:1;14593:6;14589:14;14582:58;14674:5;14669:2;14661:6;14657:15;14650:30;14465:222;:::o;14693:366::-;14835:3;14856:67;14920:2;14915:3;14856:67;:::i;:::-;14849:74;;14932:93;15021:3;14932:93;:::i;:::-;15050:2;15045:3;15041:12;15034:19;;14693:366;;;:::o;15065:419::-;15231:4;15269:2;15258:9;15254:18;15246:26;;15318:9;15312:4;15308:20;15304:1;15293:9;15289:17;15282:47;15346:131;15472:4;15346:131;:::i;:::-;15338:139;;15065:419;;;:::o;15490:180::-;15538:77;15535:1;15528:88;15635:4;15632:1;15625:15;15659:4;15656:1;15649:15;15676:180;15724:77;15721:1;15714:88;15821:4;15818:1;15811:15;15845:4;15842:1;15835:15;15862:233;15901:3;15924:24;15942:5;15924:24;:::i;:::-;15915:33;;15970:66;15963:5;15960:77;15957:103;;16040:18;;:::i;:::-;15957:103;16087:1;16080:5;16076:13;16069:20;;15862:233;;;:::o;16101:225::-;16241:34;16237:1;16229:6;16225:14;16218:58;16310:8;16305:2;16297:6;16293:15;16286:33;16101:225;:::o;16332:366::-;16474:3;16495:67;16559:2;16554:3;16495:67;:::i;:::-;16488:74;;16571:93;16660:3;16571:93;:::i;:::-;16689:2;16684:3;16680:12;16673:19;;16332:366;;;:::o;16704:419::-;16870:4;16908:2;16897:9;16893:18;16885:26;;16957:9;16951:4;16947:20;16943:1;16932:9;16928:17;16921:47;16985:131;17111:4;16985:131;:::i;:::-;16977:139;;16704:419;;;:::o;17129:223::-;17269:34;17265:1;17257:6;17253:14;17246:58;17338:6;17333:2;17325:6;17321:15;17314:31;17129:223;:::o;17358:366::-;17500:3;17521:67;17585:2;17580:3;17521:67;:::i;:::-;17514:74;;17597:93;17686:3;17597:93;:::i;:::-;17715:2;17710:3;17706:12;17699:19;;17358:366;;;:::o;17730:419::-;17896:4;17934:2;17923:9;17919:18;17911:26;;17983:9;17977:4;17973:20;17969:1;17958:9;17954:17;17947:47;18011:131;18137:4;18011:131;:::i;:::-;18003:139;;17730:419;;;:::o;18155:221::-;18295:34;18291:1;18283:6;18279:14;18272:58;18364:4;18359:2;18351:6;18347:15;18340:29;18155:221;:::o;18382:366::-;18524:3;18545:67;18609:2;18604:3;18545:67;:::i;:::-;18538:74;;18621:93;18710:3;18621:93;:::i;:::-;18739:2;18734:3;18730:12;18723:19;;18382:366;;;:::o;18754:419::-;18920:4;18958:2;18947:9;18943:18;18935:26;;19007:9;19001:4;18997:20;18993:1;18982:9;18978:17;18971:47;19035:131;19161:4;19035:131;:::i;:::-;19027:139;;18754:419;;;:::o;19179:224::-;19319:34;19315:1;19307:6;19303:14;19296:58;19388:7;19383:2;19375:6;19371:15;19364:32;19179:224;:::o;19409:366::-;19551:3;19572:67;19636:2;19631:3;19572:67;:::i;:::-;19565:74;;19648:93;19737:3;19648:93;:::i;:::-;19766:2;19761:3;19757:12;19750:19;;19409:366;;;:::o;19781:419::-;19947:4;19985:2;19974:9;19970:18;19962:26;;20034:9;20028:4;20024:20;20020:1;20009:9;20005:17;19998:47;20062:131;20188:4;20062:131;:::i;:::-;20054:139;;19781:419;;;:::o;20206:222::-;20346:34;20342:1;20334:6;20330:14;20323:58;20415:5;20410:2;20402:6;20398:15;20391:30;20206:222;:::o;20434:366::-;20576:3;20597:67;20661:2;20656:3;20597:67;:::i;:::-;20590:74;;20673:93;20762:3;20673:93;:::i;:::-;20791:2;20786:3;20782:12;20775:19;;20434:366;;;:::o;20806:419::-;20972:4;21010:2;20999:9;20995:18;20987:26;;21059:9;21053:4;21049:20;21045:1;21034:9;21030:17;21023:47;21087:131;21213:4;21087:131;:::i;:::-;21079:139;;20806:419;;;:::o;21231:228::-;21371:34;21367:1;21359:6;21355:14;21348:58;21440:11;21435:2;21427:6;21423:15;21416:36;21231:228;:::o;21465:366::-;21607:3;21628:67;21692:2;21687:3;21628:67;:::i;:::-;21621:74;;21704:93;21793:3;21704:93;:::i;:::-;21822:2;21817:3;21813:12;21806:19;;21465:366;;;:::o;21837:419::-;22003:4;22041:2;22030:9;22026:18;22018:26;;22090:9;22084:4;22080:20;22076:1;22065:9;22061:17;22054:47;22118:131;22244:4;22118:131;:::i;:::-;22110:139;;21837:419;;;:::o;22262:250::-;22402:34;22398:1;22390:6;22386:14;22379:58;22471:33;22466:2;22458:6;22454:15;22447:58;22262:250;:::o;22518:366::-;22660:3;22681:67;22745:2;22740:3;22681:67;:::i;:::-;22674:74;;22757:93;22846:3;22757:93;:::i;:::-;22875:2;22870:3;22866:12;22859:19;;22518:366;;;:::o;22890:419::-;23056:4;23094:2;23083:9;23079:18;23071:26;;23143:9;23137:4;23133:20;23129:1;23118:9;23114:17;23107:47;23171:131;23297:4;23171:131;:::i;:::-;23163:139;;22890:419;;;:::o;23315:178::-;23455:30;23451:1;23443:6;23439:14;23432:54;23315:178;:::o;23499:366::-;23641:3;23662:67;23726:2;23721:3;23662:67;:::i;:::-;23655:74;;23738:93;23827:3;23738:93;:::i;:::-;23856:2;23851:3;23847:12;23840:19;;23499:366;;;:::o;23871:419::-;24037:4;24075:2;24064:9;24060:18;24052:26;;24124:9;24118:4;24114:20;24110:1;24099:9;24095:17;24088:47;24152:131;24278:4;24152:131;:::i;:::-;24144:139;;23871:419;;;:::o;24296:222::-;24436:34;24432:1;24424:6;24420:14;24413:58;24505:5;24500:2;24492:6;24488:15;24481:30;24296:222;:::o;24524:366::-;24666:3;24687:67;24751:2;24746:3;24687:67;:::i;:::-;24680:74;;24763:93;24852:3;24763:93;:::i;:::-;24881:2;24876:3;24872:12;24865:19;;24524:366;;;:::o;24896:419::-;25062:4;25100:2;25089:9;25085:18;25077:26;;25149:9;25143:4;25139:20;25135:1;25124:9;25120:17;25113:47;25177:131;25303:4;25177:131;:::i;:::-;25169:139;;24896:419;;;:::o;25321:305::-;25361:3;25380:20;25398:1;25380:20;:::i;:::-;25375:25;;25414:20;25432:1;25414:20;:::i;:::-;25409:25;;25568:1;25500:66;25496:74;25493:1;25490:81;25487:107;;;25574:18;;:::i;:::-;25487:107;25618:1;25615;25611:9;25604:16;;25321:305;;;;:::o;25632:222::-;25772:34;25768:1;25760:6;25756:14;25749:58;25841:5;25836:2;25828:6;25824:15;25817:30;25632:222;:::o;25860:366::-;26002:3;26023:67;26087:2;26082:3;26023:67;:::i;:::-;26016:74;;26099:93;26188:3;26099:93;:::i;:::-;26217:2;26212:3;26208:12;26201:19;;25860:366;;;:::o;26232:419::-;26398:4;26436:2;26425:9;26421:18;26413:26;;26485:9;26479:4;26475:20;26471:1;26460:9;26456:17;26449:47;26513:131;26639:4;26513:131;:::i;:::-;26505:139;;26232:419;;;:::o;26657:191::-;26697:4;26717:20;26735:1;26717:20;:::i;:::-;26712:25;;26751:20;26769:1;26751:20;:::i;:::-;26746:25;;26790:1;26787;26784:8;26781:34;;;26795:18;;:::i;:::-;26781:34;26840:1;26837;26833:9;26825:17;;26657:191;;;;:::o;26854:229::-;26994:34;26990:1;26982:6;26978:14;26971:58;27063:12;27058:2;27050:6;27046:15;27039:37;26854:229;:::o;27089:366::-;27231:3;27252:67;27316:2;27311:3;27252:67;:::i;:::-;27245:74;;27328:93;27417:3;27328:93;:::i;:::-;27446:2;27441:3;27437:12;27430:19;;27089:366;;;:::o;27461:419::-;27627:4;27665:2;27654:9;27650:18;27642:26;;27714:9;27708:4;27704:20;27700:1;27689:9;27685:17;27678:47;27742:131;27868:4;27742:131;:::i;:::-;27734:139;;27461:419;;;:::o;27886:180::-;27934:77;27931:1;27924:88;28031:4;28028:1;28021:15;28055:4;28052:1;28045:15;28072:143;28129:5;28160:6;28154:13;28145:22;;28176:33;28203:5;28176:33;:::i;:::-;28072:143;;;;:::o;28221:351::-;28291:6;28340:2;28328:9;28319:7;28315:23;28311:32;28308:119;;;28346:79;;:::i;:::-;28308:119;28466:1;28491:64;28547:7;28538:6;28527:9;28523:22;28491:64;:::i;:::-;28481:74;;28437:128;28221:351;;;;:::o;28578:85::-;28623:7;28652:5;28641:16;;28578:85;;;:::o;28669:158::-;28727:9;28760:61;28778:42;28787:32;28813:5;28787:32;:::i;:::-;28778:42;:::i;:::-;28760:61;:::i;:::-;28747:74;;28669:158;;;:::o;28833:147::-;28928:45;28967:5;28928:45;:::i;:::-;28923:3;28916:58;28833:147;;:::o;28986:114::-;29053:6;29087:5;29081:12;29071:22;;28986:114;;;:::o;29106:184::-;29205:11;29239:6;29234:3;29227:19;29279:4;29274:3;29270:14;29255:29;;29106:184;;;;:::o;29296:132::-;29363:4;29386:3;29378:11;;29416:4;29411:3;29407:14;29399:22;;29296:132;;;:::o;29434:108::-;29511:24;29529:5;29511:24;:::i;:::-;29506:3;29499:37;29434:108;;:::o;29548:179::-;29617:10;29638:46;29680:3;29672:6;29638:46;:::i;:::-;29716:4;29711:3;29707:14;29693:28;;29548:179;;;;:::o;29733:113::-;29803:4;29835;29830:3;29826:14;29818:22;;29733:113;;;:::o;29882:732::-;30001:3;30030:54;30078:5;30030:54;:::i;:::-;30100:86;30179:6;30174:3;30100:86;:::i;:::-;30093:93;;30210:56;30260:5;30210:56;:::i;:::-;30289:7;30320:1;30305:284;30330:6;30327:1;30324:13;30305:284;;;30406:6;30400:13;30433:63;30492:3;30477:13;30433:63;:::i;:::-;30426:70;;30519:60;30572:6;30519:60;:::i;:::-;30509:70;;30365:224;30352:1;30349;30345:9;30340:14;;30305:284;;;30309:14;30605:3;30598:10;;30006:608;;;29882:732;;;;:::o;30620:831::-;30883:4;30921:3;30910:9;30906:19;30898:27;;30935:71;31003:1;30992:9;30988:17;30979:6;30935:71;:::i;:::-;31016:80;31092:2;31081:9;31077:18;31068:6;31016:80;:::i;:::-;31143:9;31137:4;31133:20;31128:2;31117:9;31113:18;31106:48;31171:108;31274:4;31265:6;31171:108;:::i;:::-;31163:116;;31289:72;31357:2;31346:9;31342:18;31333:6;31289:72;:::i;:::-;31371:73;31439:3;31428:9;31424:19;31415:6;31371:73;:::i;:::-;30620:831;;;;;;;;:::o;31457:180::-;31505:77;31502:1;31495:88;31602:4;31599:1;31592:15;31626:4;31623:1;31616:15;31643:185;31683:1;31700:20;31718:1;31700:20;:::i;:::-;31695:25;;31734:20;31752:1;31734:20;:::i;:::-;31729:25;;31773:1;31763:35;;31778:18;;:::i;:::-;31763:35;31820:1;31817;31813:9;31808:14;;31643:185;;;;:::o;31834:177::-;31974:29;31970:1;31962:6;31958:14;31951:53;31834:177;:::o;32017:366::-;32159:3;32180:67;32244:2;32239:3;32180:67;:::i;:::-;32173:74;;32256:93;32345:3;32256:93;:::i;:::-;32374:2;32369:3;32365:12;32358:19;;32017:366;;;:::o;32389:419::-;32555:4;32593:2;32582:9;32578:18;32570:26;;32642:9;32636:4;32632:20;32628:1;32617:9;32613:17;32606:47;32670:131;32796:4;32670:131;:::i;:::-;32662:139;;32389:419;;;:::o;32814:348::-;32854:7;32877:20;32895:1;32877:20;:::i;:::-;32872:25;;32911:20;32929:1;32911:20;:::i;:::-;32906:25;;33099:1;33031:66;33027:74;33024:1;33021:81;33016:1;33009:9;33002:17;32998:105;32995:131;;;33106:18;;:::i;:::-;32995:131;33154:1;33151;33147:9;33136:20;;32814:348;;;;:::o;33168:220::-;33308:34;33304:1;33296:6;33292:14;33285:58;33377:3;33372:2;33364:6;33360:15;33353:28;33168:220;:::o;33394:366::-;33536:3;33557:67;33621:2;33616:3;33557:67;:::i;:::-;33550:74;;33633:93;33722:3;33633:93;:::i;:::-;33751:2;33746:3;33742:12;33735:19;;33394:366;;;:::o;33766:419::-;33932:4;33970:2;33959:9;33955:18;33947:26;;34019:9;34013:4;34009:20;34005:1;33994:9;33990:17;33983:47;34047:131;34173:4;34047:131;:::i;:::-;34039:139;;33766:419;;;:::o

Swarm Source

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