ETH Price: $3,965.88 (+1.90%)

Token

ERC-20: PrimeFlow (ETFP)
 

Overview

Max Total Supply

1,000,000,000 ETFP

Holders

1,116

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
800 ETFP

Value
$0.00
0x6cb5fc955dc44ff4dff8d8faffac7443d741fc7e
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:
PrimeFlow

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-09-24
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

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

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}
library StringUtils {
    function toString(bytes32 data) internal pure returns (string memory) {
        bytes memory bytesString = new bytes(64);
        for (uint256 i = 0; i < 32; i++) {
            bytesString[i * 2] = _char(bytes1(uint8(data[i]) >> 4));
            bytesString[1 + i * 2] = _char(bytes1(uint8(data[i]) & 0x0f));
        }
        return string(bytesString);
    }

    function _char(bytes1 b) internal pure returns (bytes1 c) {
        if (uint8(b) < 10) {
            return bytes1(uint8(b) + 0x30);
        } else {
            return bytes1(uint8(b) + 0x57);
        }
    }

    function substring(string memory str, uint startIndex, uint endIndex) internal pure returns (string memory) {
        bytes memory strBytes = bytes(str);
        bytes memory result = new bytes(endIndex - startIndex);
        for (uint i = startIndex; i < endIndex; i++) {
            result[i - startIndex] = strBytes[i];
        }
        return string(result);
    }
}
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);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

library Address {
    function sendValue(address payable recipient, uint256 amount) internal returns(bool){
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        return success;
    }
}

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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

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

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) internal _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;


    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }

        _transfer(sender, recipient, amount);

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    /*
    * @notice Creates new tokens and adds them to the specified account.
    * @dev The function creates a specified amount of tokens and adds them to the specified account, increasing the total supply accordingly.
    * @param account The account to which the tokens will be minted.
    * @param amount The amount of tokens to be minted.
    * @return It emits a Transfer event indicating the minting of tokens from the zero address to the specified account.
    */ 
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    /*
    * @notice Burns a specific amount of tokens from the specified account.
    * @dev The function reduces the balance of the specified account by the specified amount and decreases the total supply accordingly.
    * @param account The account from which the tokens will be burned.
    * @param amount The amount of tokens to be burned.
    * @return It emits a Transfer event indicating the burning of tokens from the account to the zero address.
    */ 
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }


    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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);
    }

    /*
    * @notice Hook that is called before transferring tokens.
    * @dev This function is called before transferring tokens from one account to another.
    * @param from The account from which the tokens are being transferred.
    * @param to The account to which the tokens are being transferred.
    * @param amount The amount of tokens being transferred.
    */ 
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}


contract PrimeFlow is ERC20, Ownable {
    using SafeMath for uint256;
    using StringUtils for bytes32;
    using StringUtils for string;
    using Address for address payable;
    uint256 private  mintAmount = 3125 * 10**uint256(decimals());
    uint256 private constant mintETHAmount = 0.05 ether;
    mapping (address => bool) private _isExcludedFromFees;
    mapping(address => bool) public liquidityPools;
    bool public publicSaleEnabled = false;
     // Mapping to store invite codes and their corresponding addresses
    mapping(string => address) public inviteCodeToAddress;
    event ReferralReward(address indexed sender,address indexed referrer, uint256 rewardAmount);

    constructor () ERC20("PrimeFlow", "ETFP") 
    {   
        _isExcludedFromFees[owner()] = true;
        _mint(address(this), 1e9 * (10 ** decimals()));
    }

    receive() external payable {}

  
    function swap(string calldata inviteCode) external payable {
        require(!publicSaleEnabled, "Public sale has ended");
        require(msg.value >= mintETHAmount, "Insufficient ETH sent");

        // Calculate mint quantity
        uint256 mintQuantity = msg.value.mul(mintAmount).div(mintETHAmount);
        require(_balances[address(this)] >= mintQuantity, "Insufficient balance");

        // Transfer mint tokens to the user
        _balances[msg.sender] = _balances[msg.sender].add(mintQuantity);
        _balances[address(this)] = _balances[address(this)].sub(mintQuantity);
        emit Transfer(address(this), msg.sender, mintQuantity);
        //Generate invitation code
        registerInviteCode(msg.sender);
        address referrer = inviteCodeToAddress[inviteCode];
        if (referrer != address(0) &&  referrer != msg.sender) {
            // Calculate referral reward (5% of the minted tokens)
            uint256 referralReward = mintQuantity.mul(1).div(100);

            // Transfer referral reward to the referrer
            _balances[referrer] = _balances[referrer].add(referralReward);
            _balances[address(this)] = _balances[address(this)].sub(referralReward);
            emit Transfer(address(this), referrer, referralReward);
            emit ReferralReward(msg.sender,referrer, referralReward);
        }
    }

    function registerInviteCode(address user) internal {
        string memory inviteCode = getInviteCode(user);
        if (inviteCodeToAddress[inviteCode] == address(0)) {
            inviteCodeToAddress[inviteCode] = user;
        }
    }

    function getInviteCode(address user) public pure returns (string memory) {
        return StringUtils.substring(StringUtils.toString(keccak256(abi.encodePacked(user))), 0, 8);
    }

     function getAddressByInviteCode(string calldata inviteCode) external view returns (address) {
        return inviteCodeToAddress[inviteCode];
    }

    function endedPublicSaleEnabled() external onlyOwner{
        require(!publicSaleEnabled, "Public sale has ended");
        publicSaleEnabled = true;
    }

    function sendAirdrops(address[] memory recipients, uint256 amount) external onlyOwner{
        for (uint i = 0; i < recipients.length; i++) {
            super._transfer(address(this), recipients[i], amount);
        }
    }

    function isContract(address _addr) internal view returns (bool) {
        uint32 size;
        assembly {
            size := extcodesize(_addr)
        }
        return (size > 0);
    }
   
    function claimStuckTokens(address token, uint256 amount) external onlyOwner {
        require(token != address(this), "Owner cannot claim contract's balance of its own tokens");
        
        if (token == address(0)) {
            require(amount <= address(this).balance, "Insufficient contract balance");
            payable(msg.sender).transfer(amount);
            return;
        }

        IERC20 ERC20token = IERC20(token);
        uint256 contractBalance = ERC20token.balanceOf(address(this));
        require(amount <= contractBalance, "Insufficient token balance in contract");
        ERC20token.transfer(msg.sender, amount);
    }
    
    function _transfer(address from,address to,uint256 amount) internal  override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        if (isContract(to) && (from != owner() && !publicSaleEnabled)) {
            revert("Only the owner can add liquidity before public sale ends.");
        }

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        super._transfer(from, to, amount);
    }
}

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":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"referrer","type":"address"},{"indexed":false,"internalType":"uint256","name":"rewardAmount","type":"uint256"}],"name":"ReferralReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"endedPublicSaleEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"inviteCode","type":"string"}],"name":"getAddressByInviteCode","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getInviteCode","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"inviteCodeToAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"liquidityPools","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSaleEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sendAirdrops","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"inviteCode","type":"string"}],"name":"swap","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000146200025e60201b60201c565b60ff16600a62000025919062000659565b610c35620000349190620006aa565b6006556000600960006101000a81548160ff0219169083151502179055503480156200005f57600080fd5b506040518060400160405280600981526020017f5072696d65466c6f7700000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f45544650000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000e49291906200041c565b508060049080519060200190620000fd9291906200041c565b5050506000620001126200026760201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600160076000620001c76200026f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000258306200022d6200025e60201b60201c565b600a6200023b919062000718565b633b9aca006200024c9190620006aa565b6200029960201b60201c565b620008dc565b60006012905090565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200030c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200030390620007ca565b60405180910390fd5b62000320600083836200041260201b60201c565b8060026000828254620003349190620007ec565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200038b9190620007ec565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620003f291906200085a565b60405180910390a36200040e600083836200041760201b60201c565b5050565b505050565b505050565b8280546200042a90620008a6565b90600052602060002090601f0160209004810192826200044e57600085556200049a565b82601f106200046957805160ff19168380011785556200049a565b828001600101855582156200049a579182015b82811115620004995782518255916020019190600101906200047c565b5b509050620004a99190620004ad565b5090565b5b80821115620004c8576000816000905550600101620004ae565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200055a57808604811115620005325762000531620004cc565b5b6001851615620005425780820291505b80810290506200055285620004fb565b945062000512565b94509492505050565b60008262000575576001905062000648565b8162000585576000905062000648565b81600181146200059e5760028114620005a957620005df565b600191505062000648565b60ff841115620005be57620005bd620004cc565b5b8360020a915084821115620005d857620005d7620004cc565b5b5062000648565b5060208310610133831016604e8410600b8410161715620006195782820a905083811115620006135762000612620004cc565b5b62000648565b62000628848484600162000508565b92509050818404811115620006425762000641620004cc565b5b81810290505b9392505050565b6000819050919050565b600062000666826200064f565b915062000673836200064f565b9250620006a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000563565b905092915050565b6000620006b7826200064f565b9150620006c4836200064f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200070057620006ff620004cc565b5b828202905092915050565b600060ff82169050919050565b600062000725826200064f565b915062000732836200070b565b9250620007617fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000563565b905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620007b2601f8362000769565b9150620007bf826200077a565b602082019050919050565b60006020820190508181036000830152620007e581620007a3565b9050919050565b6000620007f9826200064f565b915062000806836200064f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200083e576200083d620004cc565b5b828201905092915050565b62000854816200064f565b82525050565b600060208201905062000871600083018462000849565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620008bf57607f821691505b60208210811415620008d657620008d562000877565b5b50919050565b61370c80620008ec6000396000f3fe6080604052600436106101445760003560e01c80637e097c48116100b6578063a99d1ac31161006f578063a99d1ac3146104aa578063b26baf44146104e7578063bc66a72d14610510578063c6acc77a14610527578063dd62ed3e14610550578063f2fde38b1461058d5761014b565b80637e097c48146103605780638da5cb5b1461039d57806395d89b41146103c85780639bd86c34146103f3578063a457c2d714610430578063a9059cbb1461046d5761014b565b80632ab91bba116101085780632ab91bba1461025d578063313ce5671461028857806339509351146102b357806370a08231146102f0578063715018a61461032d57806378d410e6146103445761014b565b806306fdde0314610150578063095ea7b31461017b5780630b0fd47e146101b857806318160ddd146101f557806323b872dd146102205761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b506101656105b6565b6040516101729190612464565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d919061252e565b610648565b6040516101af9190612589565b60405180910390f35b3480156101c457600080fd5b506101df60048036038101906101da91906125a4565b610666565b6040516101ec9190612589565b60405180910390f35b34801561020157600080fd5b5061020a610686565b60405161021791906125e0565b60405180910390f35b34801561022c57600080fd5b50610247600480360381019061024291906125fb565b610690565b6040516102549190612589565b60405180910390f35b34801561026957600080fd5b506102726107af565b60405161027f9190612589565b60405180910390f35b34801561029457600080fd5b5061029d6107c2565b6040516102aa919061266a565b60405180910390f35b3480156102bf57600080fd5b506102da60048036038101906102d5919061252e565b6107cb565b6040516102e79190612589565b60405180910390f35b3480156102fc57600080fd5b50610317600480360381019061031291906125a4565b610877565b60405161032491906125e0565b60405180910390f35b34801561033957600080fd5b506103426108bf565b005b61035e600480360381019061035991906126ea565b610a17565b005b34801561036c57600080fd5b5061038760048036038101906103829190612867565b610fce565b60405161039491906128bf565b60405180910390f35b3480156103a957600080fd5b506103b2611017565b6040516103bf91906128bf565b60405180910390f35b3480156103d457600080fd5b506103dd611041565b6040516103ea9190612464565b60405180910390f35b3480156103ff57600080fd5b5061041a600480360381019061041591906125a4565b6110d3565b6040516104279190612464565b60405180910390f35b34801561043c57600080fd5b506104576004803603810190610452919061252e565b611117565b6040516104649190612589565b60405180910390f35b34801561047957600080fd5b50610494600480360381019061048f919061252e565b611202565b6040516104a19190612589565b60405180910390f35b3480156104b657600080fd5b506104d160048036038101906104cc91906126ea565b611220565b6040516104de91906128bf565b60405180910390f35b3480156104f357600080fd5b5061050e6004803603810190610509919061299d565b61126b565b005b34801561051c57600080fd5b5061052561134b565b005b34801561053357600080fd5b5061054e6004803603810190610549919061252e565b61144f565b005b34801561055c57600080fd5b50610577600480360381019061057291906129f9565b611765565b60405161058491906125e0565b60405180910390f35b34801561059957600080fd5b506105b460048036038101906105af91906125a4565b6117ec565b005b6060600380546105c590612a68565b80601f01602080910402602001604051908101604052809291908181526020018280546105f190612a68565b801561063e5780601f106106135761010080835404028352916020019161063e565b820191906000526020600020905b81548152906001019060200180831161062157829003601f168201915b5050505050905090565b600061065c6106556119b3565b84846119bb565b6001905092915050565b60086020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106dc6119b3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107985782811015610783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077a90612b0c565b60405180910390fd5b6107978561078f6119b3565b8584036119bb565b5b6107a3858585611b86565b60019150509392505050565b600960009054906101000a900460ff1681565b60006012905090565b600061086d6107d86119b3565b8484600160006107e66119b3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108689190612b5b565b6119bb565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6108c76119b3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094d90612bfd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600960009054906101000a900460ff1615610a67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5e90612c69565b60405180910390fd5b66b1a2bc2ec50000341015610ab1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa890612cd5565b60405180910390fd5b6000610ae166b1a2bc2ec50000610ad360065434611d3290919063ffffffff16565b611d4890919063ffffffff16565b9050806000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610b64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5b90612d41565b60405180910390fd5b610bb5816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5e90919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c48816000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d7490919063ffffffff16565b6000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ce791906125e0565b60405180910390a3610cf833611d8a565b6000600a8484604051610d0c929190612d91565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015610da657503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15610fc8576000610dd46064610dc6600186611d3290919063ffffffff16565b611d4890919063ffffffff16565b9050610e27816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5e90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610eba816000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d7490919063ffffffff16565b6000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610f5991906125e0565b60405180910390a38173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f53958b9c644a1d5529da7c36929d59417eb9a996f08e02a52632bfe20c92ef4883604051610fbe91906125e0565b60405180910390a3505b50505050565b600a818051602081018201805184825260208301602085012081835280955050505050506000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461105090612a68565b80601f016020809104026020016040519081016040528092919081815260200182805461107c90612a68565b80156110c95780601f1061109e576101008083540402835291602001916110c9565b820191906000526020600020905b8154815290600101906020018083116110ac57829003601f168201915b5050505050905090565b6060611110611107836040516020016110ec9190612df2565b60405160208183030381529060405280519060200120611e6c565b60006008611fe5565b9050919050565b600080600160006111266119b3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156111e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111da90612e7f565b60405180910390fd5b6111f76111ee6119b3565b858584036119bb565b600191505092915050565b600061121661120f6119b3565b8484611b86565b6001905092915050565b6000600a8383604051611234929190612d91565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905092915050565b6112736119b3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611302576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f990612bfd565b60405180910390fd5b60005b8251811015611346576113333084838151811061132557611324612e9f565b5b6020026020010151846120e1565b808061133e90612ece565b915050611305565b505050565b6113536119b3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d990612bfd565b60405180910390fd5b600960009054906101000a900460ff1615611432576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142990612c69565b60405180910390fd5b6001600960006101000a81548160ff021916908315150217905550565b6114576119b3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114dd90612bfd565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154c90612f89565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561161957478111156115cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c490612ff5565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611613573d6000803e3d6000fd5b50611761565b600082905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161165991906128bf565b602060405180830381865afa158015611676573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169a919061302a565b9050808311156116df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d6906130c9565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff1660e01b815260040161171a9291906130e9565b6020604051808303816000875af1158015611739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175d919061313e565b5050505b5050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6117f46119b3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611883576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187a90612bfd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ea906131dd565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a229061326f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9290613301565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b7991906125e0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611bf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bed90613393565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5d90613425565b60405180910390fd5b611c6f82612362565b8015611cc75750611c7e611017565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611cc65750600960009054906101000a900460ff16155b5b15611d07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfe906134b7565b60405180910390fd5b6000811415611d2157611d1c838360006120e1565b611d2d565b611d2c8383836120e1565b5b505050565b60008183611d4091906134d7565b905092915050565b60008183611d569190613560565b905092915050565b60008183611d6c9190612b5b565b905092915050565b60008183611d829190613591565b905092915050565b6000611d95826110d3565b9050600073ffffffffffffffffffffffffffffffffffffffff16600a82604051611dbf91906135f6565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611e685781600a82604051611e1b91906135f6565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b60606000604067ffffffffffffffff811115611e8b57611e8a61273c565b5b6040519080825280601f01601f191660200182016040528015611ebd5781602001600182028036833780820191505090505b50905060005b6020811015611fdb57611ef86004858360208110611ee457611ee3612e9f565b5b1a60f81b60f81c60ff16901c60f81b61237b565b82600283611f0691906134d7565b81518110611f1757611f16612e9f565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611f6e600f858360208110611f5e57611f5d612e9f565b5b1a60f81b60f81c1660f81b61237b565b82600283611f7c91906134d7565b6001611f889190612b5b565b81518110611f9957611f98612e9f565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080611fd390612ece565b915050611ec3565b5080915050919050565b6060600084905060008484611ffa9190613591565b67ffffffffffffffff8111156120135761201261273c565b5b6040519080825280601f01601f1916602001820160405280156120455781602001600182028036833780820191505090505b50905060008590505b848110156120d45782818151811061206957612068612e9f565b5b602001015160f81c60f81b8287836120819190613591565b8151811061209257612091612e9f565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806120cc90612ece565b91505061204e565b5080925050509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612151576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214890613393565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b890613425565b60405180910390fd5b6121cc8383836123c1565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612252576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122499061367f565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122e59190612b5b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161234991906125e0565b60405180910390a361235c8484846123c6565b50505050565b600080823b905060008163ffffffff1611915050919050565b6000600a8260f81c60ff1610156123a65760308260f81c61239c919061369f565b60f81b90506123bc565b60578260f81c6123b6919061369f565b60f81b90505b919050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156124055780820151818401526020810190506123ea565b83811115612414576000848401525b50505050565b6000601f19601f8301169050919050565b6000612436826123cb565b61244081856123d6565b93506124508185602086016123e7565b6124598161241a565b840191505092915050565b6000602082019050818103600083015261247e818461242b565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006124c58261249a565b9050919050565b6124d5816124ba565b81146124e057600080fd5b50565b6000813590506124f2816124cc565b92915050565b6000819050919050565b61250b816124f8565b811461251657600080fd5b50565b60008135905061252881612502565b92915050565b6000806040838503121561254557612544612490565b5b6000612553858286016124e3565b925050602061256485828601612519565b9150509250929050565b60008115159050919050565b6125838161256e565b82525050565b600060208201905061259e600083018461257a565b92915050565b6000602082840312156125ba576125b9612490565b5b60006125c8848285016124e3565b91505092915050565b6125da816124f8565b82525050565b60006020820190506125f560008301846125d1565b92915050565b60008060006060848603121561261457612613612490565b5b6000612622868287016124e3565b9350506020612633868287016124e3565b925050604061264486828701612519565b9150509250925092565b600060ff82169050919050565b6126648161264e565b82525050565b600060208201905061267f600083018461265b565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126126aa576126a9612685565b5b8235905067ffffffffffffffff8111156126c7576126c661268a565b5b6020830191508360018202830111156126e3576126e261268f565b5b9250929050565b6000806020838503121561270157612700612490565b5b600083013567ffffffffffffffff81111561271f5761271e612495565b5b61272b85828601612694565b92509250509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6127748261241a565b810181811067ffffffffffffffff821117156127935761279261273c565b5b80604052505050565b60006127a6612486565b90506127b2828261276b565b919050565b600067ffffffffffffffff8211156127d2576127d161273c565b5b6127db8261241a565b9050602081019050919050565b82818337600083830152505050565b600061280a612805846127b7565b61279c565b90508281526020810184848401111561282657612825612737565b5b6128318482856127e8565b509392505050565b600082601f83011261284e5761284d612685565b5b813561285e8482602086016127f7565b91505092915050565b60006020828403121561287d5761287c612490565b5b600082013567ffffffffffffffff81111561289b5761289a612495565b5b6128a784828501612839565b91505092915050565b6128b9816124ba565b82525050565b60006020820190506128d460008301846128b0565b92915050565b600067ffffffffffffffff8211156128f5576128f461273c565b5b602082029050602081019050919050565b6000612919612914846128da565b61279c565b9050808382526020820190506020840283018581111561293c5761293b61268f565b5b835b81811015612965578061295188826124e3565b84526020840193505060208101905061293e565b5050509392505050565b600082601f83011261298457612983612685565b5b8135612994848260208601612906565b91505092915050565b600080604083850312156129b4576129b3612490565b5b600083013567ffffffffffffffff8111156129d2576129d1612495565b5b6129de8582860161296f565b92505060206129ef85828601612519565b9150509250929050565b60008060408385031215612a1057612a0f612490565b5b6000612a1e858286016124e3565b9250506020612a2f858286016124e3565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612a8057607f821691505b60208210811415612a9457612a93612a39565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612af66028836123d6565b9150612b0182612a9a565b604082019050919050565b60006020820190508181036000830152612b2581612ae9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612b66826124f8565b9150612b71836124f8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612ba657612ba5612b2c565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612be76020836123d6565b9150612bf282612bb1565b602082019050919050565b60006020820190508181036000830152612c1681612bda565b9050919050565b7f5075626c69632073616c652068617320656e6465640000000000000000000000600082015250565b6000612c536015836123d6565b9150612c5e82612c1d565b602082019050919050565b60006020820190508181036000830152612c8281612c46565b9050919050565b7f496e73756666696369656e74204554482073656e740000000000000000000000600082015250565b6000612cbf6015836123d6565b9150612cca82612c89565b602082019050919050565b60006020820190508181036000830152612cee81612cb2565b9050919050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b6000612d2b6014836123d6565b9150612d3682612cf5565b602082019050919050565b60006020820190508181036000830152612d5a81612d1e565b9050919050565b600081905092915050565b6000612d788385612d61565b9350612d858385846127e8565b82840190509392505050565b6000612d9e828486612d6c565b91508190509392505050565b60008160601b9050919050565b6000612dc282612daa565b9050919050565b6000612dd482612db7565b9050919050565b612dec612de7826124ba565b612dc9565b82525050565b6000612dfe8284612ddb565b60148201915081905092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612e696025836123d6565b9150612e7482612e0d565b604082019050919050565b60006020820190508181036000830152612e9881612e5c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612ed9826124f8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612f0c57612f0b612b2c565b5b600182019050919050565b7f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160008201527f6c616e6365206f6620697473206f776e20746f6b656e73000000000000000000602082015250565b6000612f736037836123d6565b9150612f7e82612f17565b604082019050919050565b60006020820190508181036000830152612fa281612f66565b9050919050565b7f496e73756666696369656e7420636f6e74726163742062616c616e6365000000600082015250565b6000612fdf601d836123d6565b9150612fea82612fa9565b602082019050919050565b6000602082019050818103600083015261300e81612fd2565b9050919050565b60008151905061302481612502565b92915050565b6000602082840312156130405761303f612490565b5b600061304e84828501613015565b91505092915050565b7f496e73756666696369656e7420746f6b656e2062616c616e636520696e20636f60008201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b60006130b36026836123d6565b91506130be82613057565b604082019050919050565b600060208201905081810360008301526130e2816130a6565b9050919050565b60006040820190506130fe60008301856128b0565b61310b60208301846125d1565b9392505050565b61311b8161256e565b811461312657600080fd5b50565b60008151905061313881613112565b92915050565b60006020828403121561315457613153612490565b5b600061316284828501613129565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006131c76026836123d6565b91506131d28261316b565b604082019050919050565b600060208201905081810360008301526131f6816131ba565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006132596024836123d6565b9150613264826131fd565b604082019050919050565b600060208201905081810360008301526132888161324c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006132eb6022836123d6565b91506132f68261328f565b604082019050919050565b6000602082019050818103600083015261331a816132de565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061337d6025836123d6565b915061338882613321565b604082019050919050565b600060208201905081810360008301526133ac81613370565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061340f6023836123d6565b915061341a826133b3565b604082019050919050565b6000602082019050818103600083015261343e81613402565b9050919050565b7f4f6e6c7920746865206f776e65722063616e20616464206c697175696469747960008201527f206265666f7265207075626c69632073616c6520656e64732e00000000000000602082015250565b60006134a16039836123d6565b91506134ac82613445565b604082019050919050565b600060208201905081810360008301526134d081613494565b9050919050565b60006134e2826124f8565b91506134ed836124f8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561352657613525612b2c565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061356b826124f8565b9150613576836124f8565b92508261358657613585613531565b5b828204905092915050565b600061359c826124f8565b91506135a7836124f8565b9250828210156135ba576135b9612b2c565b5b828203905092915050565b60006135d0826123cb565b6135da8185612d61565b93506135ea8185602086016123e7565b80840191505092915050565b600061360282846135c5565b915081905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006136696026836123d6565b91506136748261360d565b604082019050919050565b600060208201905081810360008301526136988161365c565b9050919050565b60006136aa8261264e565b91506136b58361264e565b92508260ff038211156136cb576136ca612b2c565b5b82820190509291505056fea2646970667358221220d8a4b84c9c7f4fccf6ab12ad156ce04b02659a4c91c5be99020b33ee9d8fb7c364736f6c634300080a0033

Deployed Bytecode

0x6080604052600436106101445760003560e01c80637e097c48116100b6578063a99d1ac31161006f578063a99d1ac3146104aa578063b26baf44146104e7578063bc66a72d14610510578063c6acc77a14610527578063dd62ed3e14610550578063f2fde38b1461058d5761014b565b80637e097c48146103605780638da5cb5b1461039d57806395d89b41146103c85780639bd86c34146103f3578063a457c2d714610430578063a9059cbb1461046d5761014b565b80632ab91bba116101085780632ab91bba1461025d578063313ce5671461028857806339509351146102b357806370a08231146102f0578063715018a61461032d57806378d410e6146103445761014b565b806306fdde0314610150578063095ea7b31461017b5780630b0fd47e146101b857806318160ddd146101f557806323b872dd146102205761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b506101656105b6565b6040516101729190612464565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d919061252e565b610648565b6040516101af9190612589565b60405180910390f35b3480156101c457600080fd5b506101df60048036038101906101da91906125a4565b610666565b6040516101ec9190612589565b60405180910390f35b34801561020157600080fd5b5061020a610686565b60405161021791906125e0565b60405180910390f35b34801561022c57600080fd5b50610247600480360381019061024291906125fb565b610690565b6040516102549190612589565b60405180910390f35b34801561026957600080fd5b506102726107af565b60405161027f9190612589565b60405180910390f35b34801561029457600080fd5b5061029d6107c2565b6040516102aa919061266a565b60405180910390f35b3480156102bf57600080fd5b506102da60048036038101906102d5919061252e565b6107cb565b6040516102e79190612589565b60405180910390f35b3480156102fc57600080fd5b50610317600480360381019061031291906125a4565b610877565b60405161032491906125e0565b60405180910390f35b34801561033957600080fd5b506103426108bf565b005b61035e600480360381019061035991906126ea565b610a17565b005b34801561036c57600080fd5b5061038760048036038101906103829190612867565b610fce565b60405161039491906128bf565b60405180910390f35b3480156103a957600080fd5b506103b2611017565b6040516103bf91906128bf565b60405180910390f35b3480156103d457600080fd5b506103dd611041565b6040516103ea9190612464565b60405180910390f35b3480156103ff57600080fd5b5061041a600480360381019061041591906125a4565b6110d3565b6040516104279190612464565b60405180910390f35b34801561043c57600080fd5b506104576004803603810190610452919061252e565b611117565b6040516104649190612589565b60405180910390f35b34801561047957600080fd5b50610494600480360381019061048f919061252e565b611202565b6040516104a19190612589565b60405180910390f35b3480156104b657600080fd5b506104d160048036038101906104cc91906126ea565b611220565b6040516104de91906128bf565b60405180910390f35b3480156104f357600080fd5b5061050e6004803603810190610509919061299d565b61126b565b005b34801561051c57600080fd5b5061052561134b565b005b34801561053357600080fd5b5061054e6004803603810190610549919061252e565b61144f565b005b34801561055c57600080fd5b50610577600480360381019061057291906129f9565b611765565b60405161058491906125e0565b60405180910390f35b34801561059957600080fd5b506105b460048036038101906105af91906125a4565b6117ec565b005b6060600380546105c590612a68565b80601f01602080910402602001604051908101604052809291908181526020018280546105f190612a68565b801561063e5780601f106106135761010080835404028352916020019161063e565b820191906000526020600020905b81548152906001019060200180831161062157829003601f168201915b5050505050905090565b600061065c6106556119b3565b84846119bb565b6001905092915050565b60086020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106dc6119b3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107985782811015610783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077a90612b0c565b60405180910390fd5b6107978561078f6119b3565b8584036119bb565b5b6107a3858585611b86565b60019150509392505050565b600960009054906101000a900460ff1681565b60006012905090565b600061086d6107d86119b3565b8484600160006107e66119b3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108689190612b5b565b6119bb565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6108c76119b3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094d90612bfd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600960009054906101000a900460ff1615610a67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5e90612c69565b60405180910390fd5b66b1a2bc2ec50000341015610ab1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa890612cd5565b60405180910390fd5b6000610ae166b1a2bc2ec50000610ad360065434611d3290919063ffffffff16565b611d4890919063ffffffff16565b9050806000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610b64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5b90612d41565b60405180910390fd5b610bb5816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5e90919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c48816000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d7490919063ffffffff16565b6000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ce791906125e0565b60405180910390a3610cf833611d8a565b6000600a8484604051610d0c929190612d91565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015610da657503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15610fc8576000610dd46064610dc6600186611d3290919063ffffffff16565b611d4890919063ffffffff16565b9050610e27816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5e90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610eba816000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d7490919063ffffffff16565b6000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610f5991906125e0565b60405180910390a38173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f53958b9c644a1d5529da7c36929d59417eb9a996f08e02a52632bfe20c92ef4883604051610fbe91906125e0565b60405180910390a3505b50505050565b600a818051602081018201805184825260208301602085012081835280955050505050506000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461105090612a68565b80601f016020809104026020016040519081016040528092919081815260200182805461107c90612a68565b80156110c95780601f1061109e576101008083540402835291602001916110c9565b820191906000526020600020905b8154815290600101906020018083116110ac57829003601f168201915b5050505050905090565b6060611110611107836040516020016110ec9190612df2565b60405160208183030381529060405280519060200120611e6c565b60006008611fe5565b9050919050565b600080600160006111266119b3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156111e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111da90612e7f565b60405180910390fd5b6111f76111ee6119b3565b858584036119bb565b600191505092915050565b600061121661120f6119b3565b8484611b86565b6001905092915050565b6000600a8383604051611234929190612d91565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905092915050565b6112736119b3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611302576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f990612bfd565b60405180910390fd5b60005b8251811015611346576113333084838151811061132557611324612e9f565b5b6020026020010151846120e1565b808061133e90612ece565b915050611305565b505050565b6113536119b3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d990612bfd565b60405180910390fd5b600960009054906101000a900460ff1615611432576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142990612c69565b60405180910390fd5b6001600960006101000a81548160ff021916908315150217905550565b6114576119b3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114dd90612bfd565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154c90612f89565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561161957478111156115cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c490612ff5565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611613573d6000803e3d6000fd5b50611761565b600082905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161165991906128bf565b602060405180830381865afa158015611676573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169a919061302a565b9050808311156116df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d6906130c9565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff1660e01b815260040161171a9291906130e9565b6020604051808303816000875af1158015611739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175d919061313e565b5050505b5050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6117f46119b3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611883576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187a90612bfd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ea906131dd565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a229061326f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9290613301565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b7991906125e0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611bf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bed90613393565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5d90613425565b60405180910390fd5b611c6f82612362565b8015611cc75750611c7e611017565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611cc65750600960009054906101000a900460ff16155b5b15611d07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfe906134b7565b60405180910390fd5b6000811415611d2157611d1c838360006120e1565b611d2d565b611d2c8383836120e1565b5b505050565b60008183611d4091906134d7565b905092915050565b60008183611d569190613560565b905092915050565b60008183611d6c9190612b5b565b905092915050565b60008183611d829190613591565b905092915050565b6000611d95826110d3565b9050600073ffffffffffffffffffffffffffffffffffffffff16600a82604051611dbf91906135f6565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611e685781600a82604051611e1b91906135f6565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b60606000604067ffffffffffffffff811115611e8b57611e8a61273c565b5b6040519080825280601f01601f191660200182016040528015611ebd5781602001600182028036833780820191505090505b50905060005b6020811015611fdb57611ef86004858360208110611ee457611ee3612e9f565b5b1a60f81b60f81c60ff16901c60f81b61237b565b82600283611f0691906134d7565b81518110611f1757611f16612e9f565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611f6e600f858360208110611f5e57611f5d612e9f565b5b1a60f81b60f81c1660f81b61237b565b82600283611f7c91906134d7565b6001611f889190612b5b565b81518110611f9957611f98612e9f565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080611fd390612ece565b915050611ec3565b5080915050919050565b6060600084905060008484611ffa9190613591565b67ffffffffffffffff8111156120135761201261273c565b5b6040519080825280601f01601f1916602001820160405280156120455781602001600182028036833780820191505090505b50905060008590505b848110156120d45782818151811061206957612068612e9f565b5b602001015160f81c60f81b8287836120819190613591565b8151811061209257612091612e9f565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806120cc90612ece565b91505061204e565b5080925050509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612151576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214890613393565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b890613425565b60405180910390fd5b6121cc8383836123c1565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612252576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122499061367f565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122e59190612b5b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161234991906125e0565b60405180910390a361235c8484846123c6565b50505050565b600080823b905060008163ffffffff1611915050919050565b6000600a8260f81c60ff1610156123a65760308260f81c61239c919061369f565b60f81b90506123bc565b60578260f81c6123b6919061369f565b60f81b90505b919050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156124055780820151818401526020810190506123ea565b83811115612414576000848401525b50505050565b6000601f19601f8301169050919050565b6000612436826123cb565b61244081856123d6565b93506124508185602086016123e7565b6124598161241a565b840191505092915050565b6000602082019050818103600083015261247e818461242b565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006124c58261249a565b9050919050565b6124d5816124ba565b81146124e057600080fd5b50565b6000813590506124f2816124cc565b92915050565b6000819050919050565b61250b816124f8565b811461251657600080fd5b50565b60008135905061252881612502565b92915050565b6000806040838503121561254557612544612490565b5b6000612553858286016124e3565b925050602061256485828601612519565b9150509250929050565b60008115159050919050565b6125838161256e565b82525050565b600060208201905061259e600083018461257a565b92915050565b6000602082840312156125ba576125b9612490565b5b60006125c8848285016124e3565b91505092915050565b6125da816124f8565b82525050565b60006020820190506125f560008301846125d1565b92915050565b60008060006060848603121561261457612613612490565b5b6000612622868287016124e3565b9350506020612633868287016124e3565b925050604061264486828701612519565b9150509250925092565b600060ff82169050919050565b6126648161264e565b82525050565b600060208201905061267f600083018461265b565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126126aa576126a9612685565b5b8235905067ffffffffffffffff8111156126c7576126c661268a565b5b6020830191508360018202830111156126e3576126e261268f565b5b9250929050565b6000806020838503121561270157612700612490565b5b600083013567ffffffffffffffff81111561271f5761271e612495565b5b61272b85828601612694565b92509250509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6127748261241a565b810181811067ffffffffffffffff821117156127935761279261273c565b5b80604052505050565b60006127a6612486565b90506127b2828261276b565b919050565b600067ffffffffffffffff8211156127d2576127d161273c565b5b6127db8261241a565b9050602081019050919050565b82818337600083830152505050565b600061280a612805846127b7565b61279c565b90508281526020810184848401111561282657612825612737565b5b6128318482856127e8565b509392505050565b600082601f83011261284e5761284d612685565b5b813561285e8482602086016127f7565b91505092915050565b60006020828403121561287d5761287c612490565b5b600082013567ffffffffffffffff81111561289b5761289a612495565b5b6128a784828501612839565b91505092915050565b6128b9816124ba565b82525050565b60006020820190506128d460008301846128b0565b92915050565b600067ffffffffffffffff8211156128f5576128f461273c565b5b602082029050602081019050919050565b6000612919612914846128da565b61279c565b9050808382526020820190506020840283018581111561293c5761293b61268f565b5b835b81811015612965578061295188826124e3565b84526020840193505060208101905061293e565b5050509392505050565b600082601f83011261298457612983612685565b5b8135612994848260208601612906565b91505092915050565b600080604083850312156129b4576129b3612490565b5b600083013567ffffffffffffffff8111156129d2576129d1612495565b5b6129de8582860161296f565b92505060206129ef85828601612519565b9150509250929050565b60008060408385031215612a1057612a0f612490565b5b6000612a1e858286016124e3565b9250506020612a2f858286016124e3565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612a8057607f821691505b60208210811415612a9457612a93612a39565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612af66028836123d6565b9150612b0182612a9a565b604082019050919050565b60006020820190508181036000830152612b2581612ae9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612b66826124f8565b9150612b71836124f8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612ba657612ba5612b2c565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612be76020836123d6565b9150612bf282612bb1565b602082019050919050565b60006020820190508181036000830152612c1681612bda565b9050919050565b7f5075626c69632073616c652068617320656e6465640000000000000000000000600082015250565b6000612c536015836123d6565b9150612c5e82612c1d565b602082019050919050565b60006020820190508181036000830152612c8281612c46565b9050919050565b7f496e73756666696369656e74204554482073656e740000000000000000000000600082015250565b6000612cbf6015836123d6565b9150612cca82612c89565b602082019050919050565b60006020820190508181036000830152612cee81612cb2565b9050919050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b6000612d2b6014836123d6565b9150612d3682612cf5565b602082019050919050565b60006020820190508181036000830152612d5a81612d1e565b9050919050565b600081905092915050565b6000612d788385612d61565b9350612d858385846127e8565b82840190509392505050565b6000612d9e828486612d6c565b91508190509392505050565b60008160601b9050919050565b6000612dc282612daa565b9050919050565b6000612dd482612db7565b9050919050565b612dec612de7826124ba565b612dc9565b82525050565b6000612dfe8284612ddb565b60148201915081905092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612e696025836123d6565b9150612e7482612e0d565b604082019050919050565b60006020820190508181036000830152612e9881612e5c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612ed9826124f8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612f0c57612f0b612b2c565b5b600182019050919050565b7f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160008201527f6c616e6365206f6620697473206f776e20746f6b656e73000000000000000000602082015250565b6000612f736037836123d6565b9150612f7e82612f17565b604082019050919050565b60006020820190508181036000830152612fa281612f66565b9050919050565b7f496e73756666696369656e7420636f6e74726163742062616c616e6365000000600082015250565b6000612fdf601d836123d6565b9150612fea82612fa9565b602082019050919050565b6000602082019050818103600083015261300e81612fd2565b9050919050565b60008151905061302481612502565b92915050565b6000602082840312156130405761303f612490565b5b600061304e84828501613015565b91505092915050565b7f496e73756666696369656e7420746f6b656e2062616c616e636520696e20636f60008201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b60006130b36026836123d6565b91506130be82613057565b604082019050919050565b600060208201905081810360008301526130e2816130a6565b9050919050565b60006040820190506130fe60008301856128b0565b61310b60208301846125d1565b9392505050565b61311b8161256e565b811461312657600080fd5b50565b60008151905061313881613112565b92915050565b60006020828403121561315457613153612490565b5b600061316284828501613129565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006131c76026836123d6565b91506131d28261316b565b604082019050919050565b600060208201905081810360008301526131f6816131ba565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006132596024836123d6565b9150613264826131fd565b604082019050919050565b600060208201905081810360008301526132888161324c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006132eb6022836123d6565b91506132f68261328f565b604082019050919050565b6000602082019050818103600083015261331a816132de565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061337d6025836123d6565b915061338882613321565b604082019050919050565b600060208201905081810360008301526133ac81613370565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061340f6023836123d6565b915061341a826133b3565b604082019050919050565b6000602082019050818103600083015261343e81613402565b9050919050565b7f4f6e6c7920746865206f776e65722063616e20616464206c697175696469747960008201527f206265666f7265207075626c69632073616c6520656e64732e00000000000000602082015250565b60006134a16039836123d6565b91506134ac82613445565b604082019050919050565b600060208201905081810360008301526134d081613494565b9050919050565b60006134e2826124f8565b91506134ed836124f8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561352657613525612b2c565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061356b826124f8565b9150613576836124f8565b92508261358657613585613531565b5b828204905092915050565b600061359c826124f8565b91506135a7836124f8565b9250828210156135ba576135b9612b2c565b5b828203905092915050565b60006135d0826123cb565b6135da8185612d61565b93506135ea8185602086016123e7565b80840191505092915050565b600061360282846135c5565b915081905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006136696026836123d6565b91506136748261360d565b604082019050919050565b600060208201905081810360008301526136988161365c565b9050919050565b60006136aa8261264e565b91506136b58361264e565b92508260ff038211156136cb576136ca612b2c565b5b82820190509291505056fea2646970667358221220d8a4b84c9c7f4fccf6ab12ad156ce04b02659a4c91c5be99020b33ee9d8fb7c364736f6c634300080a0033

Deployed Bytecode Sourcemap

12512:4738:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6448:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7362:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12885:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6769:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7539:573;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12938:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6668:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8120:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6885:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5632:148;;;;;;;;;;;;;:::i;:::-;;13426:1379;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13055:53;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5418:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6556:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15063:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8343:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7020:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15255:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15578:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15412:158;;;;;;;;;;;;;:::i;:::-;;16018:657;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7203:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5788:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6448:100;6502:13;6535:5;6528:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6448:100;:::o;7362:169::-;7445:4;7462:39;7471:12;:10;:12::i;:::-;7485:7;7494:6;7462:8;:39::i;:::-;7519:4;7512:11;;7362:169;;;;:::o;12885:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;6769:108::-;6830:7;6857:12;;6850:19;;6769:108;:::o;7539:573::-;7679:4;7696:24;7723:11;:19;7735:6;7723:19;;;;;;;;;;;;;;;:33;7743:12;:10;:12::i;:::-;7723:33;;;;;;;;;;;;;;;;7696:60;;7791:17;7771:16;:37;7767:265;;7853:6;7833:16;:26;;7825:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;7948:57;7957:6;7965:12;:10;:12::i;:::-;7998:6;7979:16;:25;7948:8;:57::i;:::-;7767:265;8044:36;8054:6;8062:9;8073:6;8044:9;:36::i;:::-;8100:4;8093:11;;;7539:573;;;;;:::o;12938:37::-;;;;;;;;;;;;;:::o;6668:93::-;6726:5;6751:2;6744:9;;6668:93;:::o;8120:215::-;8208:4;8225:80;8234:12;:10;:12::i;:::-;8248:7;8294:10;8257:11;:25;8269:12;:10;:12::i;:::-;8257:25;;;;;;;;;;;;;;;:34;8283:7;8257:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;8225:8;:80::i;:::-;8323:4;8316:11;;8120:215;;;;:::o;6885:127::-;6959:7;6986:9;:18;6996:7;6986:18;;;;;;;;;;;;;;;;6979:25;;6885:127;;;:::o;5632:148::-;5555:12;:10;:12::i;:::-;5545:22;;:6;;;;;;;;;;;:22;;;5537:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5739:1:::1;5702:40;;5723:6;;;;;;;;;;;5702:40;;;;;;;;;;;;5770:1;5753:6;;:19;;;;;;;;;;;;;;;;;;5632:148::o:0;13426:1379::-;13505:17;;;;;;;;;;;13504:18;13496:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;12808:10;13567:9;:26;;13559:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;13668:20;13691:44;12808:10;13691:25;13705:10;;13691:9;:13;;:25;;;;:::i;:::-;:29;;:44;;;;:::i;:::-;13668:67;;13782:12;13754:9;:24;13772:4;13754:24;;;;;;;;;;;;;;;;:40;;13746:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;13901:39;13927:12;13901:9;:21;13911:10;13901:21;;;;;;;;;;;;;;;;:25;;:39;;;;:::i;:::-;13877:9;:21;13887:10;13877:21;;;;;;;;;;;;;;;:63;;;;13978:42;14007:12;13978:9;:24;13996:4;13978:24;;;;;;;;;;;;;;;;:28;;:42;;;;:::i;:::-;13951:9;:24;13969:4;13951:24;;;;;;;;;;;;;;;:69;;;;14060:10;14036:49;;14053:4;14036:49;;;14072:12;14036:49;;;;;;:::i;:::-;;;;;;;;14132:30;14151:10;14132:18;:30::i;:::-;14173:16;14192:19;14212:10;;14192:31;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14173:50;;14258:1;14238:22;;:8;:22;;;;:49;;;;;14277:10;14265:22;;:8;:22;;;;14238:49;14234:564;;;14372:22;14397:28;14421:3;14397:19;14414:1;14397:12;:16;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;14372:53;;14521:39;14545:14;14521:9;:19;14531:8;14521:19;;;;;;;;;;;;;;;;:23;;:39;;;;:::i;:::-;14499:9;:19;14509:8;14499:19;;;;;;;;;;;;;;;:61;;;;14602:44;14631:14;14602:9;:24;14620:4;14602:24;;;;;;;;;;;;;;;;:28;;:44;;;;:::i;:::-;14575:9;:24;14593:4;14575:24;;;;;;;;;;;;;;;:71;;;;14690:8;14666:49;;14683:4;14666:49;;;14700:14;14666:49;;;;;;:::i;:::-;;;;;;;;14761:8;14735:51;;14750:10;14735:51;;;14771:14;14735:51;;;;;;:::i;:::-;;;;;;;;14289:509;14234:564;13485:1320;;13426:1379;;:::o;13055:53::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5418:79::-;5456:7;5483:6;;;;;;;;;;;5476:13;;5418:79;:::o;6556:104::-;6612:13;6645:7;6638:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6556:104;:::o;15063:183::-;15121:13;15154:84;15176:55;15224:4;15207:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;15197:33;;;;;;15176:20;:55::i;:::-;15233:1;15236;15154:21;:84::i;:::-;15147:91;;15063:183;;;:::o;8343:413::-;8436:4;8453:24;8480:11;:25;8492:12;:10;:12::i;:::-;8480:25;;;;;;;;;;;;;;;:34;8506:7;8480:34;;;;;;;;;;;;;;;;8453:61;;8553:15;8533:16;:35;;8525:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;8646:67;8655:12;:10;:12::i;:::-;8669:7;8697:15;8678:16;:34;8646:8;:67::i;:::-;8744:4;8737:11;;;8343:413;;;;:::o;7020:175::-;7106:4;7123:42;7133:12;:10;:12::i;:::-;7147:9;7158:6;7123:9;:42::i;:::-;7183:4;7176:11;;7020:175;;;;:::o;15255:149::-;15338:7;15365:19;15385:10;;15365:31;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15358:38;;15255:149;;;;:::o;15578:228::-;5555:12;:10;:12::i;:::-;5545:22;;:6;;;;;;;;;;;:22;;;5537:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15679:6:::1;15674:125;15695:10;:17;15691:1;:21;15674:125;;;15734:53;15758:4;15765:10;15776:1;15765:13;;;;;;;;:::i;:::-;;;;;;;;15780:6;15734:15;:53::i;:::-;15714:3;;;;;:::i;:::-;;;;15674:125;;;;15578:228:::0;;:::o;15412:158::-;5555:12;:10;:12::i;:::-;5545:22;;:6;;;;;;;;;;;:22;;;5537:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15484:17:::1;;;;;;;;;;;15483:18;15475:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;15558:4;15538:17;;:24;;;;;;;;;;;;;;;;;;15412:158::o:0;16018:657::-;5555:12;:10;:12::i;:::-;5545:22;;:6;;;;;;;;;;;:22;;;5537:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16130:4:::1;16113:22;;:5;:22;;;;16105:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;16237:1;16220:19;;:5;:19;;;16216:197;;;16274:21;16264:6;:31;;16256:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;16352:10;16344:28;;:36;16373:6;16344:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;16395:7;;16216:197;16425:17;16452:5;16425:33;;16469:23;16495:10;:20;;;16524:4;16495:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16469:61;;16559:15;16549:6;:25;;16541:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;16628:10;:19;;;16648:10;16660:6;16628:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16094:581;;5615:1;16018:657:::0;;:::o;7203:151::-;7292:7;7319:11;:18;7331:5;7319:18;;;;;;;;;;;;;;;:27;7338:7;7319:27;;;;;;;;;;;;;;;;7312:34;;7203:151;;;;:::o;5788:244::-;5555:12;:10;:12::i;:::-;5545:22;;:6;;;;;;;;;;;:22;;;5537:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5897:1:::1;5877:22;;:8;:22;;;;5869:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;5987:8;5958:38;;5979:6;;;;;;;;;;;5958:38;;;;;;;;;;;;6016:8;6007:6;;:17;;;;;;;;;;;;;;;;;;5788:244:::0;:::o;4741:98::-;4794:7;4821:10;4814:17;;4741:98;:::o;11467:390::-;11620:1;11603:19;;:5;:19;;;;11595:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11701:1;11682:21;;:7;:21;;;;11674:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11795:6;11765:11;:18;11777:5;11765:18;;;;;;;;;;;;;;;:27;11784:7;11765:27;;;;;;;;;;;;;;;:36;;;;11833:7;11817:32;;11826:5;11817:32;;;11842:6;11817:32;;;;;;:::i;:::-;;;;;;;;11467:390;;;:::o;16687:560::-;16800:1;16784:18;;:4;:18;;;;16776:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16877:1;16863:16;;:2;:16;;;;16855:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16936:14;16947:2;16936:10;:14::i;:::-;:57;;;;;16963:7;:5;:7::i;:::-;16955:15;;:4;:15;;;;:37;;;;;16975:17;;;;;;;;;;;16974:18;16955:37;16936:57;16932:157;;;17010:67;;;;;;;;;;:::i;:::-;;;;;;;;16932:157;17115:1;17105:6;:11;17101:93;;;17133:28;17149:4;17155:2;17159:1;17133:15;:28::i;:::-;17176:7;;17101:93;17206:33;17222:4;17228:2;17232:6;17206:15;:33::i;:::-;16687:560;;;;:::o;1412:98::-;1470:7;1501:1;1497;:5;;;;:::i;:::-;1490:12;;1412:98;;;;:::o;1518:::-;1576:7;1607:1;1603;:5;;;;:::i;:::-;1596:12;;1518:98;;;;:::o;1200:::-;1258:7;1289:1;1285;:5;;;;:::i;:::-;1278:12;;1200:98;;;;:::o;1306:::-;1364:7;1395:1;1391;:5;;;;:::i;:::-;1384:12;;1306:98;;;;:::o;14813:242::-;14875:24;14902:19;14916:4;14902:13;:19::i;:::-;14875:46;;14979:1;14936:45;;:19;14956:10;14936:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:45;;;14932:116;;;15032:4;14998:19;15018:10;14998:31;;;;;;:::i;:::-;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;14932:116;14864:191;14813:242;:::o;2496:367::-;2551:13;2577:24;2614:2;2604:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2577:40;;2633:9;2628:191;2652:2;2648:1;:6;2628:191;;;2697:34;2728:1;2716:4;2721:1;2716:7;;;;;;;:::i;:::-;;;;;2710:14;;:19;;;;2703:27;;2697:5;:34::i;:::-;2676:11;2692:1;2688;:5;;;;:::i;:::-;2676:18;;;;;;;;:::i;:::-;;;;;:55;;;;;;;;;;;2771:36;2801:4;2790;2795:1;2790:7;;;;;;;:::i;:::-;;;;;2784:14;;:21;2777:29;;2771:5;:36::i;:::-;2746:11;2766:1;2762;:5;;;;:::i;:::-;2758:1;:9;;;;:::i;:::-;2746:22;;;;;;;;:::i;:::-;;;;;:61;;;;;;;;;;;2656:3;;;;;:::i;:::-;;;;2628:191;;;;2843:11;2829:26;;;2496:367;;;:::o;3094:376::-;3187:13;3213:21;3243:3;3213:34;;3258:19;3301:10;3290:8;:21;;;;:::i;:::-;3280:32;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3258:54;;3328:6;3337:10;3328:19;;3323:108;3353:8;3349:1;:12;3323:108;;;3408:8;3417:1;3408:11;;;;;;;;:::i;:::-;;;;;;;;;;3383:6;3394:10;3390:1;:14;;;;:::i;:::-;3383:22;;;;;;;;:::i;:::-;;;;;:36;;;;;;;;;;;3363:3;;;;;:::i;:::-;;;;3323:108;;;;3455:6;3441:21;;;;3094:376;;;;;:::o;8764:733::-;8922:1;8904:20;;:6;:20;;;;8896:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9006:1;8985:23;;:9;:23;;;;8977:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9061:47;9082:6;9090:9;9101:6;9061:20;:47::i;:::-;9121:21;9145:9;:17;9155:6;9145:17;;;;;;;;;;;;;;;;9121:41;;9198:6;9181:13;:23;;9173:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;9319:6;9303:13;:22;9283:9;:17;9293:6;9283:17;;;;;;;;;;;;;;;:42;;;;9371:6;9347:9;:20;9357:9;9347:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;9412:9;9395:35;;9404:6;9395:35;;;9423:6;9395:35;;;;;;:::i;:::-;;;;;;;;9443:46;9463:6;9471:9;9482:6;9443:19;:46::i;:::-;8885:612;8764:733;;;:::o;15814:193::-;15872:4;15889:11;15955:5;15943:18;15935:26;;15997:1;15990:4;:8;;;15982:17;;;15814:193;;;:::o;2871:215::-;2919:8;2955:2;2950:1;2944:8;;:13;;;2940:139;;;2999:4;2994:1;2988:8;;:15;;;;:::i;:::-;2981:23;;2974:30;;;;2940:139;3062:4;3057:1;3051:8;;:15;;;;:::i;:::-;3044:23;;3037:30;;2871:215;;;;:::o;12246:125::-;;;;:::o;12379:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:118::-;3916:24;3934:5;3916:24;:::i;:::-;3911:3;3904:37;3829:118;;:::o;3953:222::-;4046:4;4084:2;4073:9;4069:18;4061:26;;4097:71;4165:1;4154:9;4150:17;4141:6;4097:71;:::i;:::-;3953:222;;;;:::o;4181:619::-;4258:6;4266;4274;4323:2;4311:9;4302:7;4298:23;4294:32;4291:119;;;4329:79;;:::i;:::-;4291:119;4449:1;4474:53;4519:7;4510:6;4499:9;4495:22;4474:53;:::i;:::-;4464:63;;4420:117;4576:2;4602:53;4647:7;4638:6;4627:9;4623:22;4602:53;:::i;:::-;4592:63;;4547:118;4704:2;4730:53;4775:7;4766:6;4755:9;4751:22;4730:53;:::i;:::-;4720:63;;4675:118;4181:619;;;;;:::o;4806:86::-;4841:7;4881:4;4874:5;4870:16;4859:27;;4806:86;;;:::o;4898:112::-;4981:22;4997:5;4981:22;:::i;:::-;4976:3;4969:35;4898:112;;:::o;5016:214::-;5105:4;5143:2;5132:9;5128:18;5120:26;;5156:67;5220:1;5209:9;5205:17;5196:6;5156:67;:::i;:::-;5016:214;;;;:::o;5236:117::-;5345:1;5342;5335:12;5359:117;5468:1;5465;5458:12;5482:117;5591:1;5588;5581:12;5619:553;5677:8;5687:6;5737:3;5730:4;5722:6;5718:17;5714:27;5704:122;;5745:79;;:::i;:::-;5704:122;5858:6;5845:20;5835:30;;5888:18;5880:6;5877:30;5874:117;;;5910:79;;:::i;:::-;5874:117;6024:4;6016:6;6012:17;6000:29;;6078:3;6070:4;6062:6;6058:17;6048:8;6044:32;6041:41;6038:128;;;6085:79;;:::i;:::-;6038:128;5619:553;;;;;:::o;6178:529::-;6249:6;6257;6306:2;6294:9;6285:7;6281:23;6277:32;6274:119;;;6312:79;;:::i;:::-;6274:119;6460:1;6449:9;6445:17;6432:31;6490:18;6482:6;6479:30;6476:117;;;6512:79;;:::i;:::-;6476:117;6625:65;6682:7;6673:6;6662:9;6658:22;6625:65;:::i;:::-;6607:83;;;;6403:297;6178:529;;;;;:::o;6713:117::-;6822:1;6819;6812:12;6836:180;6884:77;6881:1;6874:88;6981:4;6978:1;6971:15;7005:4;7002:1;6995:15;7022:281;7105:27;7127:4;7105:27;:::i;:::-;7097:6;7093:40;7235:6;7223:10;7220:22;7199:18;7187:10;7184:34;7181:62;7178:88;;;7246:18;;:::i;:::-;7178:88;7286:10;7282:2;7275:22;7065:238;7022:281;;:::o;7309:129::-;7343:6;7370:20;;:::i;:::-;7360:30;;7399:33;7427:4;7419:6;7399:33;:::i;:::-;7309:129;;;:::o;7444:308::-;7506:4;7596:18;7588:6;7585:30;7582:56;;;7618:18;;:::i;:::-;7582:56;7656:29;7678:6;7656:29;:::i;:::-;7648:37;;7740:4;7734;7730:15;7722:23;;7444:308;;;:::o;7758:154::-;7842:6;7837:3;7832;7819:30;7904:1;7895:6;7890:3;7886:16;7879:27;7758:154;;;:::o;7918:412::-;7996:5;8021:66;8037:49;8079:6;8037:49;:::i;:::-;8021:66;:::i;:::-;8012:75;;8110:6;8103:5;8096:21;8148:4;8141:5;8137:16;8186:3;8177:6;8172:3;8168:16;8165:25;8162:112;;;8193:79;;:::i;:::-;8162:112;8283:41;8317:6;8312:3;8307;8283:41;:::i;:::-;8002:328;7918:412;;;;;:::o;8350:340::-;8406:5;8455:3;8448:4;8440:6;8436:17;8432:27;8422:122;;8463:79;;:::i;:::-;8422:122;8580:6;8567:20;8605:79;8680:3;8672:6;8665:4;8657:6;8653:17;8605:79;:::i;:::-;8596:88;;8412:278;8350:340;;;;:::o;8696:509::-;8765:6;8814:2;8802:9;8793:7;8789:23;8785:32;8782:119;;;8820:79;;:::i;:::-;8782:119;8968:1;8957:9;8953:17;8940:31;8998:18;8990:6;8987:30;8984:117;;;9020:79;;:::i;:::-;8984:117;9125:63;9180:7;9171:6;9160:9;9156:22;9125:63;:::i;:::-;9115:73;;8911:287;8696:509;;;;:::o;9211:118::-;9298:24;9316:5;9298:24;:::i;:::-;9293:3;9286:37;9211:118;;:::o;9335:222::-;9428:4;9466:2;9455:9;9451:18;9443:26;;9479:71;9547:1;9536:9;9532:17;9523:6;9479:71;:::i;:::-;9335:222;;;;:::o;9563:311::-;9640:4;9730:18;9722:6;9719:30;9716:56;;;9752:18;;:::i;:::-;9716:56;9802:4;9794:6;9790:17;9782:25;;9862:4;9856;9852:15;9844:23;;9563:311;;;:::o;9897:710::-;9993:5;10018:81;10034:64;10091:6;10034:64;:::i;:::-;10018:81;:::i;:::-;10009:90;;10119:5;10148:6;10141:5;10134:21;10182:4;10175:5;10171:16;10164:23;;10235:4;10227:6;10223:17;10215:6;10211:30;10264:3;10256:6;10253:15;10250:122;;;10283:79;;:::i;:::-;10250:122;10398:6;10381:220;10415:6;10410:3;10407:15;10381:220;;;10490:3;10519:37;10552:3;10540:10;10519:37;:::i;:::-;10514:3;10507:50;10586:4;10581:3;10577:14;10570:21;;10457:144;10441:4;10436:3;10432:14;10425:21;;10381:220;;;10385:21;9999:608;;9897:710;;;;;:::o;10630:370::-;10701:5;10750:3;10743:4;10735:6;10731:17;10727:27;10717:122;;10758:79;;:::i;:::-;10717:122;10875:6;10862:20;10900:94;10990:3;10982:6;10975:4;10967:6;10963:17;10900:94;:::i;:::-;10891:103;;10707:293;10630:370;;;;:::o;11006:684::-;11099:6;11107;11156:2;11144:9;11135:7;11131:23;11127:32;11124:119;;;11162:79;;:::i;:::-;11124:119;11310:1;11299:9;11295:17;11282:31;11340:18;11332:6;11329:30;11326:117;;;11362:79;;:::i;:::-;11326:117;11467:78;11537:7;11528:6;11517:9;11513:22;11467:78;:::i;:::-;11457:88;;11253:302;11594:2;11620:53;11665:7;11656:6;11645:9;11641:22;11620:53;:::i;:::-;11610:63;;11565:118;11006:684;;;;;:::o;11696:474::-;11764:6;11772;11821:2;11809:9;11800:7;11796:23;11792:32;11789:119;;;11827:79;;:::i;:::-;11789:119;11947:1;11972:53;12017:7;12008:6;11997:9;11993:22;11972:53;:::i;:::-;11962:63;;11918:117;12074:2;12100:53;12145:7;12136:6;12125:9;12121:22;12100:53;:::i;:::-;12090:63;;12045:118;11696:474;;;;;:::o;12176:180::-;12224:77;12221:1;12214:88;12321:4;12318:1;12311:15;12345:4;12342:1;12335:15;12362:320;12406:6;12443:1;12437:4;12433:12;12423:22;;12490:1;12484:4;12480:12;12511:18;12501:81;;12567:4;12559:6;12555:17;12545:27;;12501:81;12629:2;12621:6;12618:14;12598:18;12595:38;12592:84;;;12648:18;;:::i;:::-;12592:84;12413:269;12362:320;;;:::o;12688:227::-;12828:34;12824:1;12816:6;12812:14;12805:58;12897:10;12892:2;12884:6;12880:15;12873:35;12688:227;:::o;12921:366::-;13063:3;13084:67;13148:2;13143:3;13084:67;:::i;:::-;13077:74;;13160:93;13249:3;13160:93;:::i;:::-;13278:2;13273:3;13269:12;13262:19;;12921:366;;;:::o;13293:419::-;13459:4;13497:2;13486:9;13482:18;13474:26;;13546:9;13540:4;13536:20;13532:1;13521:9;13517:17;13510:47;13574:131;13700:4;13574:131;:::i;:::-;13566:139;;13293:419;;;:::o;13718:180::-;13766:77;13763:1;13756:88;13863:4;13860:1;13853:15;13887:4;13884:1;13877:15;13904:305;13944:3;13963:20;13981:1;13963:20;:::i;:::-;13958:25;;13997:20;14015:1;13997:20;:::i;:::-;13992:25;;14151:1;14083:66;14079:74;14076:1;14073:81;14070:107;;;14157:18;;:::i;:::-;14070:107;14201:1;14198;14194:9;14187:16;;13904:305;;;;:::o;14215:182::-;14355:34;14351:1;14343:6;14339:14;14332:58;14215:182;:::o;14403:366::-;14545:3;14566:67;14630:2;14625:3;14566:67;:::i;:::-;14559:74;;14642:93;14731:3;14642:93;:::i;:::-;14760:2;14755:3;14751:12;14744:19;;14403:366;;;:::o;14775:419::-;14941:4;14979:2;14968:9;14964:18;14956:26;;15028:9;15022:4;15018:20;15014:1;15003:9;14999:17;14992:47;15056:131;15182:4;15056:131;:::i;:::-;15048:139;;14775:419;;;:::o;15200:171::-;15340:23;15336:1;15328:6;15324:14;15317:47;15200:171;:::o;15377:366::-;15519:3;15540:67;15604:2;15599:3;15540:67;:::i;:::-;15533:74;;15616:93;15705:3;15616:93;:::i;:::-;15734:2;15729:3;15725:12;15718:19;;15377:366;;;:::o;15749:419::-;15915:4;15953:2;15942:9;15938:18;15930:26;;16002:9;15996:4;15992:20;15988:1;15977:9;15973:17;15966:47;16030:131;16156:4;16030:131;:::i;:::-;16022:139;;15749:419;;;:::o;16174:171::-;16314:23;16310:1;16302:6;16298:14;16291:47;16174:171;:::o;16351:366::-;16493:3;16514:67;16578:2;16573:3;16514:67;:::i;:::-;16507:74;;16590:93;16679:3;16590:93;:::i;:::-;16708:2;16703:3;16699:12;16692:19;;16351:366;;;:::o;16723:419::-;16889:4;16927:2;16916:9;16912:18;16904:26;;16976:9;16970:4;16966:20;16962:1;16951:9;16947:17;16940:47;17004:131;17130:4;17004:131;:::i;:::-;16996:139;;16723:419;;;:::o;17148:170::-;17288:22;17284:1;17276:6;17272:14;17265:46;17148:170;:::o;17324:366::-;17466:3;17487:67;17551:2;17546:3;17487:67;:::i;:::-;17480:74;;17563:93;17652:3;17563:93;:::i;:::-;17681:2;17676:3;17672:12;17665:19;;17324:366;;;:::o;17696:419::-;17862:4;17900:2;17889:9;17885:18;17877:26;;17949:9;17943:4;17939:20;17935:1;17924:9;17920:17;17913:47;17977:131;18103:4;17977:131;:::i;:::-;17969:139;;17696:419;;;:::o;18121:148::-;18223:11;18260:3;18245:18;;18121:148;;;;:::o;18299:317::-;18415:3;18436:89;18518:6;18513:3;18436:89;:::i;:::-;18429:96;;18535:43;18571:6;18566:3;18559:5;18535:43;:::i;:::-;18603:6;18598:3;18594:16;18587:23;;18299:317;;;;;:::o;18622:295::-;18764:3;18786:105;18887:3;18878:6;18870;18786:105;:::i;:::-;18779:112;;18908:3;18901:10;;18622:295;;;;;:::o;18923:94::-;18956:8;19004:5;19000:2;18996:14;18975:35;;18923:94;;;:::o;19023:::-;19062:7;19091:20;19105:5;19091:20;:::i;:::-;19080:31;;19023:94;;;:::o;19123:100::-;19162:7;19191:26;19211:5;19191:26;:::i;:::-;19180:37;;19123:100;;;:::o;19229:157::-;19334:45;19354:24;19372:5;19354:24;:::i;:::-;19334:45;:::i;:::-;19329:3;19322:58;19229:157;;:::o;19392:256::-;19504:3;19519:75;19590:3;19581:6;19519:75;:::i;:::-;19619:2;19614:3;19610:12;19603:19;;19639:3;19632:10;;19392:256;;;;:::o;19654:224::-;19794:34;19790:1;19782:6;19778:14;19771:58;19863:7;19858:2;19850:6;19846:15;19839:32;19654:224;:::o;19884:366::-;20026:3;20047:67;20111:2;20106:3;20047:67;:::i;:::-;20040:74;;20123:93;20212:3;20123:93;:::i;:::-;20241:2;20236:3;20232:12;20225:19;;19884:366;;;:::o;20256:419::-;20422:4;20460:2;20449:9;20445:18;20437:26;;20509:9;20503:4;20499:20;20495:1;20484:9;20480:17;20473:47;20537:131;20663:4;20537:131;:::i;:::-;20529:139;;20256:419;;;:::o;20681:180::-;20729:77;20726:1;20719:88;20826:4;20823:1;20816:15;20850:4;20847:1;20840:15;20867:233;20906:3;20929:24;20947:5;20929:24;:::i;:::-;20920:33;;20975:66;20968:5;20965:77;20962:103;;;21045:18;;:::i;:::-;20962:103;21092:1;21085:5;21081:13;21074:20;;20867:233;;;:::o;21106:242::-;21246:34;21242:1;21234:6;21230:14;21223:58;21315:25;21310:2;21302:6;21298:15;21291:50;21106:242;:::o;21354:366::-;21496:3;21517:67;21581:2;21576:3;21517:67;:::i;:::-;21510:74;;21593:93;21682:3;21593:93;:::i;:::-;21711:2;21706:3;21702:12;21695:19;;21354:366;;;:::o;21726:419::-;21892:4;21930:2;21919:9;21915:18;21907:26;;21979:9;21973:4;21969:20;21965:1;21954:9;21950:17;21943:47;22007:131;22133:4;22007:131;:::i;:::-;21999:139;;21726:419;;;:::o;22151:179::-;22291:31;22287:1;22279:6;22275:14;22268:55;22151:179;:::o;22336:366::-;22478:3;22499:67;22563:2;22558:3;22499:67;:::i;:::-;22492:74;;22575:93;22664:3;22575:93;:::i;:::-;22693:2;22688:3;22684:12;22677:19;;22336:366;;;:::o;22708:419::-;22874:4;22912:2;22901:9;22897:18;22889:26;;22961:9;22955:4;22951:20;22947:1;22936:9;22932:17;22925:47;22989:131;23115:4;22989:131;:::i;:::-;22981:139;;22708:419;;;:::o;23133:143::-;23190:5;23221:6;23215:13;23206:22;;23237:33;23264:5;23237:33;:::i;:::-;23133:143;;;;:::o;23282:351::-;23352:6;23401:2;23389:9;23380:7;23376:23;23372:32;23369:119;;;23407:79;;:::i;:::-;23369:119;23527:1;23552:64;23608:7;23599:6;23588:9;23584:22;23552:64;:::i;:::-;23542:74;;23498:128;23282:351;;;;:::o;23639:225::-;23779:34;23775:1;23767:6;23763:14;23756:58;23848:8;23843:2;23835:6;23831:15;23824:33;23639:225;:::o;23870:366::-;24012:3;24033:67;24097:2;24092:3;24033:67;:::i;:::-;24026:74;;24109:93;24198:3;24109:93;:::i;:::-;24227:2;24222:3;24218:12;24211:19;;23870:366;;;:::o;24242:419::-;24408:4;24446:2;24435:9;24431:18;24423:26;;24495:9;24489:4;24485:20;24481:1;24470:9;24466:17;24459:47;24523:131;24649:4;24523:131;:::i;:::-;24515:139;;24242:419;;;:::o;24667:332::-;24788:4;24826:2;24815:9;24811:18;24803:26;;24839:71;24907:1;24896:9;24892:17;24883:6;24839:71;:::i;:::-;24920:72;24988:2;24977:9;24973:18;24964:6;24920:72;:::i;:::-;24667:332;;;;;:::o;25005:116::-;25075:21;25090:5;25075:21;:::i;:::-;25068:5;25065:32;25055:60;;25111:1;25108;25101:12;25055:60;25005:116;:::o;25127:137::-;25181:5;25212:6;25206:13;25197:22;;25228:30;25252:5;25228:30;:::i;:::-;25127:137;;;;:::o;25270:345::-;25337:6;25386:2;25374:9;25365:7;25361:23;25357:32;25354:119;;;25392:79;;:::i;:::-;25354:119;25512:1;25537:61;25590:7;25581:6;25570:9;25566:22;25537:61;:::i;:::-;25527:71;;25483:125;25270:345;;;;:::o;25621:225::-;25761:34;25757:1;25749:6;25745:14;25738:58;25830:8;25825:2;25817:6;25813:15;25806:33;25621:225;:::o;25852:366::-;25994:3;26015:67;26079:2;26074:3;26015:67;:::i;:::-;26008:74;;26091:93;26180:3;26091:93;:::i;:::-;26209:2;26204:3;26200:12;26193:19;;25852:366;;;:::o;26224:419::-;26390:4;26428:2;26417:9;26413:18;26405:26;;26477:9;26471:4;26467:20;26463:1;26452:9;26448:17;26441:47;26505:131;26631:4;26505:131;:::i;:::-;26497:139;;26224:419;;;:::o;26649:223::-;26789:34;26785:1;26777:6;26773:14;26766:58;26858:6;26853:2;26845:6;26841:15;26834:31;26649:223;:::o;26878:366::-;27020:3;27041:67;27105:2;27100:3;27041:67;:::i;:::-;27034:74;;27117:93;27206:3;27117:93;:::i;:::-;27235:2;27230:3;27226:12;27219:19;;26878:366;;;:::o;27250:419::-;27416:4;27454:2;27443:9;27439:18;27431:26;;27503:9;27497:4;27493:20;27489:1;27478:9;27474:17;27467:47;27531:131;27657:4;27531:131;:::i;:::-;27523:139;;27250:419;;;:::o;27675:221::-;27815:34;27811:1;27803:6;27799:14;27792:58;27884:4;27879:2;27871:6;27867:15;27860:29;27675:221;:::o;27902:366::-;28044:3;28065:67;28129:2;28124:3;28065:67;:::i;:::-;28058:74;;28141:93;28230:3;28141:93;:::i;:::-;28259:2;28254:3;28250:12;28243:19;;27902:366;;;:::o;28274:419::-;28440:4;28478:2;28467:9;28463:18;28455:26;;28527:9;28521:4;28517:20;28513:1;28502:9;28498:17;28491:47;28555:131;28681:4;28555:131;:::i;:::-;28547:139;;28274:419;;;:::o;28699:224::-;28839:34;28835:1;28827:6;28823:14;28816:58;28908:7;28903:2;28895:6;28891:15;28884:32;28699:224;:::o;28929:366::-;29071:3;29092:67;29156:2;29151:3;29092:67;:::i;:::-;29085:74;;29168:93;29257:3;29168:93;:::i;:::-;29286:2;29281:3;29277:12;29270:19;;28929:366;;;:::o;29301:419::-;29467:4;29505:2;29494:9;29490:18;29482:26;;29554:9;29548:4;29544:20;29540:1;29529:9;29525:17;29518:47;29582:131;29708:4;29582:131;:::i;:::-;29574:139;;29301:419;;;:::o;29726:222::-;29866:34;29862:1;29854:6;29850:14;29843:58;29935:5;29930:2;29922:6;29918:15;29911:30;29726:222;:::o;29954:366::-;30096:3;30117:67;30181:2;30176:3;30117:67;:::i;:::-;30110:74;;30193:93;30282:3;30193:93;:::i;:::-;30311:2;30306:3;30302:12;30295:19;;29954:366;;;:::o;30326:419::-;30492:4;30530:2;30519:9;30515:18;30507:26;;30579:9;30573:4;30569:20;30565:1;30554:9;30550:17;30543:47;30607:131;30733:4;30607:131;:::i;:::-;30599:139;;30326:419;;;:::o;30751:244::-;30891:34;30887:1;30879:6;30875:14;30868:58;30960:27;30955:2;30947:6;30943:15;30936:52;30751:244;:::o;31001:366::-;31143:3;31164:67;31228:2;31223:3;31164:67;:::i;:::-;31157:74;;31240:93;31329:3;31240:93;:::i;:::-;31358:2;31353:3;31349:12;31342:19;;31001:366;;;:::o;31373:419::-;31539:4;31577:2;31566:9;31562:18;31554:26;;31626:9;31620:4;31616:20;31612:1;31601:9;31597:17;31590:47;31654:131;31780:4;31654:131;:::i;:::-;31646:139;;31373:419;;;:::o;31798:348::-;31838:7;31861:20;31879:1;31861:20;:::i;:::-;31856:25;;31895:20;31913:1;31895:20;:::i;:::-;31890:25;;32083:1;32015:66;32011:74;32008:1;32005:81;32000:1;31993:9;31986:17;31982:105;31979:131;;;32090:18;;:::i;:::-;31979:131;32138:1;32135;32131:9;32120:20;;31798:348;;;;:::o;32152:180::-;32200:77;32197:1;32190:88;32297:4;32294:1;32287:15;32321:4;32318:1;32311:15;32338:185;32378:1;32395:20;32413:1;32395:20;:::i;:::-;32390:25;;32429:20;32447:1;32429:20;:::i;:::-;32424:25;;32468:1;32458:35;;32473:18;;:::i;:::-;32458:35;32515:1;32512;32508:9;32503:14;;32338:185;;;;:::o;32529:191::-;32569:4;32589:20;32607:1;32589:20;:::i;:::-;32584:25;;32623:20;32641:1;32623:20;:::i;:::-;32618:25;;32662:1;32659;32656:8;32653:34;;;32667:18;;:::i;:::-;32653:34;32712:1;32709;32705:9;32697:17;;32529:191;;;;:::o;32726:377::-;32832:3;32860:39;32893:5;32860:39;:::i;:::-;32915:89;32997:6;32992:3;32915:89;:::i;:::-;32908:96;;33013:52;33058:6;33053:3;33046:4;33039:5;33035:16;33013:52;:::i;:::-;33090:6;33085:3;33081:16;33074:23;;32836:267;32726:377;;;;:::o;33109:275::-;33241:3;33263:95;33354:3;33345:6;33263:95;:::i;:::-;33256:102;;33375:3;33368:10;;33109:275;;;;:::o;33390:225::-;33530:34;33526:1;33518:6;33514:14;33507:58;33599:8;33594:2;33586:6;33582:15;33575:33;33390:225;:::o;33621:366::-;33763:3;33784:67;33848:2;33843:3;33784:67;:::i;:::-;33777:74;;33860:93;33949:3;33860:93;:::i;:::-;33978:2;33973:3;33969:12;33962:19;;33621:366;;;:::o;33993:419::-;34159:4;34197:2;34186:9;34182:18;34174:26;;34246:9;34240:4;34236:20;34232:1;34221:9;34217:17;34210:47;34274:131;34400:4;34274:131;:::i;:::-;34266:139;;33993:419;;;:::o;34418:237::-;34456:3;34475:18;34491:1;34475:18;:::i;:::-;34470:23;;34507:18;34523:1;34507:18;:::i;:::-;34502:23;;34597:1;34591:4;34587:12;34584:1;34581:19;34578:45;;;34603:18;;:::i;:::-;34578:45;34647:1;34644;34640:9;34633:16;;34418:237;;;;:::o

Swarm Source

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