ETH Price: $2,469.41 (+0.39%)

Token

Blub (BLUB)
 

Overview

Max Total Supply

1,000,000,000 BLUB

Holders

63

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
lostallmyethongasfrom404s.eth
Balance
7,500,000 BLUB

Value
$0.00
0x8de6b37F068A571b121fd3e46854d85B10aD87Ea
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:
BLUB

Compiler Version
v0.8.27+commit.40a35a09

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

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


// SPDX-License-Identifier: MIT

  /*
  */
  
  pragma solidity ^0.8.26;

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

      function _msgData() internal view virtual returns (bytes calldata) {
          return msg.data;
      }
  }

  interface IERC20 {
      function totalSupply() external view returns (uint256);
      function balanceOf(address account) external view returns (uint256);
      function transfer(address to, 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 from,
          address to,
          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);
  }

  contract ERC20 is Context, IERC20, IERC20Metadata {
      mapping(address => uint256) private _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 to, uint256 amount) public virtual override returns (bool) {
          address owner = _msgSender();
          _transfer(owner, to, 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) {
          address owner = _msgSender();
          _approve(owner, spender, amount);
          return true;
      }

      function transferFrom(
          address from,
          address to,
          uint256 amount
      ) public virtual override returns (bool) {
          address spender = _msgSender();
          _spendAllowance(from, spender, amount);
          _transfer(from, to, amount);
          return true;
      }

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

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

          return true;
      }

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

          _beforeTokenTransfer(from, to, amount);

          uint256 fromBalance = _balances[from];
          require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
          unchecked {
              _balances[from] = fromBalance - amount;
          }
          _balances[to] += amount;

          emit Transfer(from, to, amount);

          _afterTokenTransfer(from, to, amount);
      }

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

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

      function _spendAllowance(
          address owner,
          address spender,
          uint256 amount
      ) internal virtual {
          uint256 currentAllowance = allowance(owner, spender);
          if (currentAllowance != type(uint256).max) {
              require(currentAllowance >= amount, "ERC20: insufficient allowance");
              unchecked {
                  _approve(owner, spender, currentAllowance - amount);
              }
          }
      }

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

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

  abstract contract Ownable is Context {
      address private _owner;

      event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

      constructor() {
          _transferOwnership(_msgSender());
      }

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

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

      function renounceOwnership() public virtual onlyOwner {
          _transferOwnership(address(0));
      }

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

      function _transferOwnership(address newOwner) internal virtual {
          address oldOwner = _owner;
          _owner = newOwner;
          emit OwnershipTransferred(oldOwner, newOwner);
      }
  }

  library SafeMath {
      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 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;
          }
      }
  }

  interface IUniswapV2Factory {
      function createPair(address tokenA, address tokenB) external returns (address pair);
      function getPair(address tokenA, address tokenB) external view returns (address pair);
  }

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

contract BLUB is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 private constant _router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

    address public uniPair;
    address public immutable feeRecipientAddress;

    uint256 public maxSwapAmount;
    uint256 public maxHoldings;
    uint256 public feeTokenThreshold;

    uint256 public buyTaxPercent;
    uint256 public sellTaxPercent;

    bool private _inSwap;
    mapping (address => bool) private _excludedLimits;
    mapping (address => bool) public blacklisted;

    event FeeSwap(uint256 indexed value);

    constructor() ERC20("Blub", "BLUB") payable {
        uint256 totalSupply = 1000000000 * 1e18;
        uint256 lpSupply = totalSupply.mul(100).div(100);

        maxSwapAmount = totalSupply.mul(10).div(1000);
        maxHoldings = totalSupply.mul(10).div(1000);
        feeTokenThreshold = totalSupply.mul(5).div(1000);

        feeRecipientAddress = 0x27B6389Cd5704b6B2b61d52d09Cae54fC08c0e84;

        buyTaxPercent = 25;
        sellTaxPercent = 30;

        _excludedLimits[feeRecipientAddress] = true;
        _excludedLimits[msg.sender] = true;
        _excludedLimits[tx.origin] = true;
        _excludedLimits[address(this)] = true;
        _excludedLimits[address(0xdead)] = true;

        _mint(msg.sender, lpSupply);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "Transfer from the zero address not allowed.");
        require(to != address(0), "Transfer to the zero address not allowed.");
        require(amount > 0, 'Transfer amount must be greater than zero.');
        require(!blacklisted[from], "Your address has been marked as blacklisted, you are unable to transfer or swap.");

        bool excluded = _excludedLimits[from] || _excludedLimits[to];
        require(uniPair != address(0) || excluded, "Liquidity pair not yet created.");

        bool isSell = to == uniPair;
        bool isBuy = from == uniPair;

        if ((isBuy || isSell) && maxSwapAmount > 0 && !excluded)
            require(amount <= maxSwapAmount, "Swap value exceeds max swap amount, try again with less swap value.");

        if (!isSell && maxHoldings > 0 && !excluded)
            require(balanceOf(to) + amount <= maxHoldings, "Balance exceeds max holdings amount, consider using a second wallet.");

        if (
          balanceOf(address(this)) >= feeTokenThreshold &&
          !_inSwap && isSell &&
          !excluded 
        ) {
            _inSwap = true;
            _swapBackTokenFee();
            _inSwap = false;
        }

        uint256 fee = isBuy ? buyTaxPercent : sellTaxPercent;

        if (fee > 0) {
            if (!excluded && !_inSwap && (isBuy || isSell)) {
                uint256 fees = amount.mul(fee).div(100);

                if (fees > 0)
                    super._transfer(from, address(this), fees);

                amount = amount.sub(fees);
            }
        }

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

    function _swapBackTokenFee() private {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance == 0) return;
        if (contractBalance > feeTokenThreshold) contractBalance = feeTokenThreshold;

        uint256 initETHBal = address(this).balance;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _router.WETH();

        _approve(address(this), address(_router), contractBalance);

        _router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            contractBalance,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 ethFee = address(this).balance.sub(initETHBal);
        uint256 splitFee = ethFee.mul(5).div(100);

        ethFee = ethFee.sub(splitFee);
        payable(feeRecipientAddress).transfer(ethFee);
        payable(0x27B6389Cd5704b6B2b61d52d09Cae54fC08c0e84).transfer(splitFee);

        emit FeeSwap(splitFee);
    }

    function enableTrading() external onlyOwner {
        uniPair = IUniswapV2Factory(_router.factory()).getPair(address(this), _router.WETH());
    }

    function updateFeesThreshold(uint256 newThreshold) external {
        require(msg.sender == feeRecipientAddress || msg.sender == owner());
        require(newThreshold >= totalSupply().mul(1).div(100000), "Swap threshold cannot be lower than 0.001% total supply.");
        require(newThreshold <= totalSupply().mul(2).div(100), "Swap threshold cannot be higher than 2% total supply.");
        feeTokenThreshold = newThreshold;
    }

    function setTokenFees(uint256 newBuyFee, uint256 newSellFee) external onlyOwner {
        require(newBuyFee <= 99 && newSellFee <= 99, 'Attempting to set fee higher than initial fee.');
        buyTaxPercent = newBuyFee;
        sellTaxPercent = newSellFee;
    }

    function clearAllLimits() external onlyOwner {
        maxHoldings = 0;
        maxSwapAmount = 0;
    }

    function removeWalletLimit() external onlyOwner {
        maxHoldings = 0;
    }

    function deleteSwapLimit() external onlyOwner {
        maxSwapAmount = 0;
    }

    function BlacklistWallet(address target, bool state) external onlyOwner {
        require(target != uniPair, "Cannot blacklist the pair address.");
        blacklisted[target] = state;
    }

    function removeStuckETH() external  {
        require(msg.sender == feeRecipientAddress || msg.sender == owner());
        payable(msg.sender).transfer(address(this).balance);
    }

    function removeStuckERC20(IERC20 token) external  {
      require(msg.sender == feeRecipientAddress || msg.sender == owner());
        token.transfer(msg.sender, token.balanceOf(address(this)));
    }

    receive() external payable {}
  }

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","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":"uint256","name":"value","type":"uint256"}],"name":"FeeSwap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"BlacklistWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTaxPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearAllLimits","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":"deleteSwapLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeRecipientAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeTokenThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"maxHoldings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"removeStuckERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTaxPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyFee","type":"uint256"},{"internalType":"uint256","name":"newSellFee","type":"uint256"}],"name":"setTokenFees","outputs":[],"stateMutability":"nonpayable","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":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"updateFeesThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526040518060400160405280600481526020017f426c7562000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f424c554200000000000000000000000000000000000000000000000000000000815250816003908161007f919061082c565b50806004908161008f919061082c565b5050506100ae6100a361038e60201b60201c565b61039560201b60201c565b5f6b033b2e3c9fd0803ce800000090505f6100e660646100d860648561045860201b90919060201c565b61046d60201b90919060201c565b90506101106103e8610102600a8561045860201b90919060201c565b61046d60201b90919060201c565b60078190555061013e6103e8610130600a8561045860201b90919060201c565b61046d60201b90919060201c565b60088190555061016c6103e861015e60058561045860201b90919060201c565b61046d60201b90919060201c565b6009819055507327b6389cd5704b6b2b61d52d09cae54fc08c0e8473ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250506019600a81905550601e600b819055506001600d5f60805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600d5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600d5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600d5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600d5f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550610387338261048260201b60201c565b5050610a99565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f81836104659190610928565b905092915050565b5f818361047a9190610996565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036104f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e790610a20565b60405180910390fd5b6105015f83836105e560201b60201c565b8060025f8282546105129190610a3e565b92505081905550805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546105649190610a3e565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516105c89190610a80565b60405180910390a36105e15f83836105ea60201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061066a57607f821691505b60208210810361067d5761067c610626565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026106df7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826106a4565b6106e986836106a4565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61072d61072861072384610701565b61070a565b610701565b9050919050565b5f819050919050565b61074683610713565b61075a61075282610734565b8484546106b0565b825550505050565b5f5f905090565b610771610762565b61077c81848461073d565b505050565b5b8181101561079f576107945f82610769565b600181019050610782565b5050565b601f8211156107e4576107b581610683565b6107be84610695565b810160208510156107cd578190505b6107e16107d985610695565b830182610781565b50505b505050565b5f82821c905092915050565b5f6108045f19846008026107e9565b1980831691505092915050565b5f61081c83836107f5565b9150826002028217905092915050565b610835826105ef565b67ffffffffffffffff81111561084e5761084d6105f9565b5b6108588254610653565b6108638282856107a3565b5f60209050601f831160018114610894575f8415610882578287015190505b61088c8582610811565b8655506108f3565b601f1984166108a286610683565b5f5b828110156108c9578489015182556001820191506020850194506020810190506108a4565b868310156108e657848901516108e2601f8916826107f5565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61093282610701565b915061093d83610701565b925082820261094b81610701565b91508282048414831517610962576109616108fb565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6109a082610701565b91506109ab83610701565b9250826109bb576109ba610969565b5b828204905092915050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f610a0a601f836109c6565b9150610a15826109d6565b602082019050919050565b5f6020820190508181035f830152610a37816109fe565b9050919050565b5f610a4882610701565b9150610a5383610701565b9250828201905080821115610a6b57610a6a6108fb565b5b92915050565b610a7a81610701565b82525050565b5f602082019050610a935f830184610a71565b92915050565b60805161399a610acd5f395f81816107be015281816108d50152818161134701528181611601015261227f015261399a5ff3fe6080604052600436106101db575f3560e01c80637df405a411610101578063c83c383711610094578063dd62ed3e11610063578063dd62ed3e14610652578063e54f4faa1461068e578063f1bab2ec146106b8578063f2fde38b146106e2576101e2565b8063c83c3837146105ae578063cce987d4146105d6578063d92ce5c114610600578063dbac26e914610616576101e2565b8063a457c2d7116100d0578063a457c2d71461050a578063a9059cbb14610546578063ac79e98414610582578063b144896f14610598576101e2565b80637df405a4146104765780638a8c523c146104a05780638da5cb5b146104b657806395d89b41146104e0576101e2565b80632e0c2801116101795780636fb1896c116101485780636fb1896c146103d257806370a08231146103fc578063715018a61461043857806372fbf58a1461044e576101e2565b80632e0c28011461031a578063313ce5671461034257806332972e461461036c5780633950935114610396576101e2565b806318160ddd116101b557806318160ddd146102625780631ffc29981461028c57806323b872dd146102b65780632b467374146102f2576101e2565b806306fdde03146101e6578063095ea7b3146102105780630f299cf11461024c576101e2565b366101e257005b5f5ffd5b3480156101f1575f5ffd5b506101fa61070a565b6040516102079190612672565b60405180910390f35b34801561021b575f5ffd5b5061023660048036038101906102319190612723565b61079a565b604051610243919061277b565b60405180910390f35b348015610257575f5ffd5b506102606107bc565b005b34801561026d575f5ffd5b50610276610896565b60405161028391906127a3565b60405180910390f35b348015610297575f5ffd5b506102a061089f565b6040516102ad91906127a3565b60405180910390f35b3480156102c1575f5ffd5b506102dc60048036038101906102d791906127bc565b6108a5565b6040516102e9919061277b565b60405180910390f35b3480156102fd575f5ffd5b506103186004803603810190610313919061280c565b6108d3565b005b348015610325575f5ffd5b50610340600480360381019061033b9190612861565b610a53565b005b34801561034d575f5ffd5b50610356610bb6565b60405161036391906128ba565b60405180910390f35b348015610377575f5ffd5b50610380610bbe565b60405161038d91906128e2565b60405180910390f35b3480156103a1575f5ffd5b506103bc60048036038101906103b79190612723565b610be3565b6040516103c9919061277b565b60405180910390f35b3480156103dd575f5ffd5b506103e6610c88565b6040516103f391906127a3565b60405180910390f35b348015610407575f5ffd5b50610422600480360381019061041d91906128fb565b610c8e565b60405161042f91906127a3565b60405180910390f35b348015610443575f5ffd5b5061044c610cd3565b005b348015610459575f5ffd5b50610474600480360381019061046f9190612926565b610d5a565b005b348015610481575f5ffd5b5061048a610e39565b60405161049791906127a3565b60405180910390f35b3480156104ab575f5ffd5b506104b4610e3f565b005b3480156104c1575f5ffd5b506104ca611076565b6040516104d791906128e2565b60405180910390f35b3480156104eb575f5ffd5b506104f461109e565b6040516105019190612672565b60405180910390f35b348015610515575f5ffd5b50610530600480360381019061052b9190612723565b61112e565b60405161053d919061277b565b60405180910390f35b348015610551575f5ffd5b5061056c60048036038101906105679190612723565b611212565b604051610579919061277b565b60405180910390f35b34801561058d575f5ffd5b50610596611234565b005b3480156105a3575f5ffd5b506105ac6112c0565b005b3480156105b9575f5ffd5b506105d460048036038101906105cf919061299f565b611345565b005b3480156105e1575f5ffd5b506105ea6114cf565b6040516105f791906127a3565b60405180910390f35b34801561060b575f5ffd5b506106146114d5565b005b348015610621575f5ffd5b5061063c600480360381019061063791906128fb565b61155a565b604051610649919061277b565b60405180910390f35b34801561065d575f5ffd5b50610678600480360381019061067391906129ca565b611577565b60405161068591906127a3565b60405180910390f35b348015610699575f5ffd5b506106a26115f9565b6040516106af91906127a3565b60405180910390f35b3480156106c3575f5ffd5b506106cc6115ff565b6040516106d991906128e2565b60405180910390f35b3480156106ed575f5ffd5b50610708600480360381019061070391906128fb565b611623565b005b60606003805461071990612a35565b80601f016020809104026020016040519081016040528092919081815260200182805461074590612a35565b80156107905780601f1061076757610100808354040283529160200191610790565b820191905f5260205f20905b81548152906001019060200180831161077357829003601f168201915b5050505050905090565b5f5f6107a4611719565b90506107b1818585611720565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806108485750610819611076565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610850575f5ffd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610893573d5f5f3e3d5ffd5b50565b5f600254905090565b60095481565b5f5f6108af611719565b90506108bc8582856118e3565b6108c785858561196e565b60019150509392505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061095f5750610930611076565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610967575f5ffd5b610997620186a0610989600161097b610896565b611f0390919063ffffffff16565b611f1890919063ffffffff16565b8110156109d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d090612ad5565b60405180910390fd5b610a0760646109f960026109eb610896565b611f0390919063ffffffff16565b611f1890919063ffffffff16565b811115610a49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4090612b63565b60405180910390fd5b8060098190555050565b610a5b611719565b73ffffffffffffffffffffffffffffffffffffffff16610a79611076565b73ffffffffffffffffffffffffffffffffffffffff1614610acf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac690612bcb565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5590612c59565b60405180910390fd5b80600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f6012905090565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f610bed611719565b9050610c7d81858560015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610c789190612ca4565b611720565b600191505092915050565b600b5481565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610cdb611719565b73ffffffffffffffffffffffffffffffffffffffff16610cf9611076565b73ffffffffffffffffffffffffffffffffffffffff1614610d4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4690612bcb565b60405180910390fd5b610d585f611f2d565b565b610d62611719565b73ffffffffffffffffffffffffffffffffffffffff16610d80611076565b73ffffffffffffffffffffffffffffffffffffffff1614610dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcd90612bcb565b60405180910390fd5b60638211158015610de8575060638111155b610e27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1e90612d47565b60405180910390fd5b81600a8190555080600b819055505050565b600a5481565b610e47611719565b73ffffffffffffffffffffffffffffffffffffffff16610e65611076565b73ffffffffffffffffffffffffffffffffffffffff1614610ebb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb290612bcb565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f18573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f3c9190612d79565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fb5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fd99190612d79565b6040518363ffffffff1660e01b8152600401610ff6929190612da4565b602060405180830381865afa158015611011573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110359190612d79565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546110ad90612a35565b80601f01602080910402602001604051908101604052809291908181526020018280546110d990612a35565b80156111245780601f106110fb57610100808354040283529160200191611124565b820191905f5260205f20905b81548152906001019060200180831161110757829003601f168201915b5050505050905090565b5f5f611138611719565b90505f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050838110156111f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f090612e3b565b60405180910390fd5b6112068286868403611720565b60019250505092915050565b5f5f61121c611719565b905061122981858561196e565b600191505092915050565b61123c611719565b73ffffffffffffffffffffffffffffffffffffffff1661125a611076565b73ffffffffffffffffffffffffffffffffffffffff16146112b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a790612bcb565b60405180910390fd5b5f6008819055505f600781905550565b6112c8611719565b73ffffffffffffffffffffffffffffffffffffffff166112e6611076565b73ffffffffffffffffffffffffffffffffffffffff161461133c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133390612bcb565b60405180910390fd5b5f600881905550565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806113d157506113a2611076565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6113d9575f5ffd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161142f91906128e2565b602060405180830381865afa15801561144a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061146e9190612e6d565b6040518363ffffffff1660e01b815260040161148b929190612e98565b6020604051808303815f875af11580156114a7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114cb9190612ed3565b5050565b60075481565b6114dd611719565b73ffffffffffffffffffffffffffffffffffffffff166114fb611076565b73ffffffffffffffffffffffffffffffffffffffff1614611551576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154890612bcb565b60405180910390fd5b5f600781905550565b600e602052805f5260405f205f915054906101000a900460ff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60085481565b7f000000000000000000000000000000000000000000000000000000000000000081565b61162b611719565b73ffffffffffffffffffffffffffffffffffffffff16611649611076565b73ffffffffffffffffffffffffffffffffffffffff161461169f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169690612bcb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361170d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170490612f6e565b60405180910390fd5b61171681611f2d565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361178e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178590612ffc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f39061308a565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118d691906127a3565b60405180910390a3505050565b5f6118ee8484611577565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611968578181101561195a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611951906130f2565b60405180910390fd5b6119678484848403611720565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d390613180565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a419061320e565b60405180910390fd5b5f8111611a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a839061329c565b60405180910390fd5b600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611b16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0d90613350565b60405180910390fd5b5f600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611bb25750600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b90505f73ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580611c0d5750805b611c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c43906133b8565b60405180910390fd5b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490505f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161490508080611cfb5750815b8015611d0857505f600754115b8015611d12575082155b15611d5d57600754841115611d5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d539061346c565b60405180910390fd5b5b81158015611d6c57505f600854115b8015611d76575082155b15611dd45760085484611d8887610c8e565b611d929190612ca4565b1115611dd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dca90613520565b60405180910390fd5b5b600954611de030610c8e565b10158015611dfa5750600c5f9054906101000a900460ff16155b8015611e035750815b8015611e0d575082155b15611e4e576001600c5f6101000a81548160ff021916908315150217905550611e34611ff0565b5f600c5f6101000a81548160ff0219169083151502179055505b5f81611e5c57600b54611e60565b600a545b90505f811115611eef5783158015611e845750600c5f9054906101000a900460ff16155b8015611e9557508180611e945750825b5b15611eee575f611ec16064611eb38489611f0390919063ffffffff16565b611f1890919063ffffffff16565b90505f811115611ed757611ed688308361236e565b5b611eea81876125e390919063ffffffff16565b9550505b5b611efa87878761236e565b50505050505050565b5f8183611f10919061353e565b905092915050565b5f8183611f2591906135ac565b905092915050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f611ffa30610c8e565b90505f8103612009575061236c565b6009548111156120195760095490505b5f4790505f600267ffffffffffffffff811115612039576120386135dc565b5b6040519080825280602002602001820160405280156120675781602001602082028036833780820191505090505b50905030815f8151811061207e5761207d613609565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612115573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121399190612d79565b8160018151811061214d5761214c613609565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506121a630737a250d5630b4cf539739df2c5dacb4c659f2488d85611720565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8430426040518663ffffffff1660e01b81526004016121fb95949392919061372f565b5f604051808303815f87803b158015612212575f5ffd5b505af1158015612224573d5f5f3e3d5ffd5b505050505f61223c83476125e390919063ffffffff16565b90505f6122666064612258600585611f0390919063ffffffff16565b611f1890919063ffffffff16565b905061227b81836125e390919063ffffffff16565b91507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f193505050501580156122e0573d5f5f3e3d5ffd5b507327b6389cd5704b6b2b61d52d09cae54fc08c0e8473ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612338573d5f5f3e3d5ffd5b50807f1cfca31204cc745553128283c3bd97acb07e803bd611f352db637c644eb59b8760405160405180910390a250505050505b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d3906137f7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361244a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244190613885565b60405180910390fd5b6124558383836125f8565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156124d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cf90613913565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546125669190612ca4565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125ca91906127a3565b60405180910390a36125dd8484846125fd565b50505050565b5f81836125f09190613931565b905092915050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61264482612602565b61264e818561260c565b935061265e81856020860161261c565b6126678161262a565b840191505092915050565b5f6020820190508181035f83015261268a818461263a565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6126bf82612696565b9050919050565b6126cf816126b5565b81146126d9575f5ffd5b50565b5f813590506126ea816126c6565b92915050565b5f819050919050565b612702816126f0565b811461270c575f5ffd5b50565b5f8135905061271d816126f9565b92915050565b5f5f6040838503121561273957612738612692565b5b5f612746858286016126dc565b92505060206127578582860161270f565b9150509250929050565b5f8115159050919050565b61277581612761565b82525050565b5f60208201905061278e5f83018461276c565b92915050565b61279d816126f0565b82525050565b5f6020820190506127b65f830184612794565b92915050565b5f5f5f606084860312156127d3576127d2612692565b5b5f6127e0868287016126dc565b93505060206127f1868287016126dc565b92505060406128028682870161270f565b9150509250925092565b5f6020828403121561282157612820612692565b5b5f61282e8482850161270f565b91505092915050565b61284081612761565b811461284a575f5ffd5b50565b5f8135905061285b81612837565b92915050565b5f5f6040838503121561287757612876612692565b5b5f612884858286016126dc565b92505060206128958582860161284d565b9150509250929050565b5f60ff82169050919050565b6128b48161289f565b82525050565b5f6020820190506128cd5f8301846128ab565b92915050565b6128dc816126b5565b82525050565b5f6020820190506128f55f8301846128d3565b92915050565b5f602082840312156129105761290f612692565b5b5f61291d848285016126dc565b91505092915050565b5f5f6040838503121561293c5761293b612692565b5b5f6129498582860161270f565b925050602061295a8582860161270f565b9150509250929050565b5f61296e826126b5565b9050919050565b61297e81612964565b8114612988575f5ffd5b50565b5f8135905061299981612975565b92915050565b5f602082840312156129b4576129b3612692565b5b5f6129c18482850161298b565b91505092915050565b5f5f604083850312156129e0576129df612692565b5b5f6129ed858286016126dc565b92505060206129fe858286016126dc565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612a4c57607f821691505b602082108103612a5f57612a5e612a08565b5b50919050565b7f53776170207468726573686f6c642063616e6e6f74206265206c6f77657220745f8201527f68616e20302e3030312520746f74616c20737570706c792e0000000000000000602082015250565b5f612abf60388361260c565b9150612aca82612a65565b604082019050919050565b5f6020820190508181035f830152612aec81612ab3565b9050919050565b7f53776170207468726573686f6c642063616e6e6f7420626520686967686572205f8201527f7468616e20322520746f74616c20737570706c792e0000000000000000000000602082015250565b5f612b4d60358361260c565b9150612b5882612af3565b604082019050919050565b5f6020820190508181035f830152612b7a81612b41565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612bb560208361260c565b9150612bc082612b81565b602082019050919050565b5f6020820190508181035f830152612be281612ba9565b9050919050565b7f43616e6e6f7420626c61636b6c697374207468652070616972206164647265735f8201527f732e000000000000000000000000000000000000000000000000000000000000602082015250565b5f612c4360228361260c565b9150612c4e82612be9565b604082019050919050565b5f6020820190508181035f830152612c7081612c37565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612cae826126f0565b9150612cb9836126f0565b9250828201905080821115612cd157612cd0612c77565b5b92915050565b7f417474656d7074696e6720746f207365742066656520686967686572207468615f8201527f6e20696e697469616c206665652e000000000000000000000000000000000000602082015250565b5f612d31602e8361260c565b9150612d3c82612cd7565b604082019050919050565b5f6020820190508181035f830152612d5e81612d25565b9050919050565b5f81519050612d73816126c6565b92915050565b5f60208284031215612d8e57612d8d612692565b5b5f612d9b84828501612d65565b91505092915050565b5f604082019050612db75f8301856128d3565b612dc460208301846128d3565b9392505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612e2560258361260c565b9150612e3082612dcb565b604082019050919050565b5f6020820190508181035f830152612e5281612e19565b9050919050565b5f81519050612e67816126f9565b92915050565b5f60208284031215612e8257612e81612692565b5b5f612e8f84828501612e59565b91505092915050565b5f604082019050612eab5f8301856128d3565b612eb86020830184612794565b9392505050565b5f81519050612ecd81612837565b92915050565b5f60208284031215612ee857612ee7612692565b5b5f612ef584828501612ebf565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612f5860268361260c565b9150612f6382612efe565b604082019050919050565b5f6020820190508181035f830152612f8581612f4c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612fe660248361260c565b9150612ff182612f8c565b604082019050919050565b5f6020820190508181035f83015261301381612fda565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61307460228361260c565b915061307f8261301a565b604082019050919050565b5f6020820190508181035f8301526130a181613068565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f6130dc601d8361260c565b91506130e7826130a8565b602082019050919050565b5f6020820190508181035f830152613109816130d0565b9050919050565b7f5472616e736665722066726f6d20746865207a65726f2061646472657373206e5f8201527f6f7420616c6c6f7765642e000000000000000000000000000000000000000000602082015250565b5f61316a602b8361260c565b915061317582613110565b604082019050919050565b5f6020820190508181035f8301526131978161315e565b9050919050565b7f5472616e7366657220746f20746865207a65726f2061646472657373206e6f745f8201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000602082015250565b5f6131f860298361260c565b91506132038261319e565b604082019050919050565b5f6020820190508181035f830152613225816131ec565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f2e00000000000000000000000000000000000000000000602082015250565b5f613286602a8361260c565b91506132918261322c565b604082019050919050565b5f6020820190508181035f8301526132b38161327a565b9050919050565b7f596f7572206164647265737320686173206265656e206d61726b6564206173205f8201527f626c61636b6c69737465642c20796f752061726520756e61626c6520746f207460208201527f72616e73666572206f7220737761702e00000000000000000000000000000000604082015250565b5f61333a60508361260c565b9150613345826132ba565b606082019050919050565b5f6020820190508181035f8301526133678161332e565b9050919050565b7f4c69717569646974792070616972206e6f742079657420637265617465642e005f82015250565b5f6133a2601f8361260c565b91506133ad8261336e565b602082019050919050565b5f6020820190508181035f8301526133cf81613396565b9050919050565b7f537761702076616c75652065786365656473206d6178207377617020616d6f755f8201527f6e742c2074727920616761696e2077697468206c65737320737761702076616c60208201527f75652e0000000000000000000000000000000000000000000000000000000000604082015250565b5f61345660438361260c565b9150613461826133d6565b606082019050919050565b5f6020820190508181035f8301526134838161344a565b9050919050565b7f42616c616e63652065786365656473206d617820686f6c64696e677320616d6f5f8201527f756e742c20636f6e7369646572207573696e672061207365636f6e642077616c60208201527f6c65742e00000000000000000000000000000000000000000000000000000000604082015250565b5f61350a60448361260c565b91506135158261348a565b606082019050919050565b5f6020820190508181035f830152613537816134fe565b9050919050565b5f613548826126f0565b9150613553836126f0565b9250828202613561816126f0565b9150828204841483151761357857613577612c77565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6135b6826126f0565b91506135c1836126f0565b9250826135d1576135d061357f565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f819050919050565b5f61366261365d61365884613636565b61363f565b6126f0565b9050919050565b61367281613648565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6136aa816126b5565b82525050565b5f6136bb83836136a1565b60208301905092915050565b5f602082019050919050565b5f6136dd82613678565b6136e78185613682565b93506136f283613692565b805f5b8381101561372257815161370988826136b0565b9750613714836136c7565b9250506001810190506136f5565b5085935050505092915050565b5f60a0820190506137425f830188612794565b61374f6020830187613669565b818103604083015261376181866136d3565b905061377060608301856128d3565b61377d6080830184612794565b9695505050505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6137e160258361260c565b91506137ec82613787565b604082019050919050565b5f6020820190508181035f83015261380e816137d5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61386f60238361260c565b915061387a82613815565b604082019050919050565b5f6020820190508181035f83015261389c81613863565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6138fd60268361260c565b9150613908826138a3565b604082019050919050565b5f6020820190508181035f83015261392a816138f1565b9050919050565b5f61393b826126f0565b9150613946836126f0565b925082820390508181111561395e5761395d612c77565b5b9291505056fea2646970667358221220ca76630a31d7b79791a066ca68c1c5a2d0753a2a66d9157cb87b014cd023db1264736f6c634300081b0033

Deployed Bytecode

0x6080604052600436106101db575f3560e01c80637df405a411610101578063c83c383711610094578063dd62ed3e11610063578063dd62ed3e14610652578063e54f4faa1461068e578063f1bab2ec146106b8578063f2fde38b146106e2576101e2565b8063c83c3837146105ae578063cce987d4146105d6578063d92ce5c114610600578063dbac26e914610616576101e2565b8063a457c2d7116100d0578063a457c2d71461050a578063a9059cbb14610546578063ac79e98414610582578063b144896f14610598576101e2565b80637df405a4146104765780638a8c523c146104a05780638da5cb5b146104b657806395d89b41146104e0576101e2565b80632e0c2801116101795780636fb1896c116101485780636fb1896c146103d257806370a08231146103fc578063715018a61461043857806372fbf58a1461044e576101e2565b80632e0c28011461031a578063313ce5671461034257806332972e461461036c5780633950935114610396576101e2565b806318160ddd116101b557806318160ddd146102625780631ffc29981461028c57806323b872dd146102b65780632b467374146102f2576101e2565b806306fdde03146101e6578063095ea7b3146102105780630f299cf11461024c576101e2565b366101e257005b5f5ffd5b3480156101f1575f5ffd5b506101fa61070a565b6040516102079190612672565b60405180910390f35b34801561021b575f5ffd5b5061023660048036038101906102319190612723565b61079a565b604051610243919061277b565b60405180910390f35b348015610257575f5ffd5b506102606107bc565b005b34801561026d575f5ffd5b50610276610896565b60405161028391906127a3565b60405180910390f35b348015610297575f5ffd5b506102a061089f565b6040516102ad91906127a3565b60405180910390f35b3480156102c1575f5ffd5b506102dc60048036038101906102d791906127bc565b6108a5565b6040516102e9919061277b565b60405180910390f35b3480156102fd575f5ffd5b506103186004803603810190610313919061280c565b6108d3565b005b348015610325575f5ffd5b50610340600480360381019061033b9190612861565b610a53565b005b34801561034d575f5ffd5b50610356610bb6565b60405161036391906128ba565b60405180910390f35b348015610377575f5ffd5b50610380610bbe565b60405161038d91906128e2565b60405180910390f35b3480156103a1575f5ffd5b506103bc60048036038101906103b79190612723565b610be3565b6040516103c9919061277b565b60405180910390f35b3480156103dd575f5ffd5b506103e6610c88565b6040516103f391906127a3565b60405180910390f35b348015610407575f5ffd5b50610422600480360381019061041d91906128fb565b610c8e565b60405161042f91906127a3565b60405180910390f35b348015610443575f5ffd5b5061044c610cd3565b005b348015610459575f5ffd5b50610474600480360381019061046f9190612926565b610d5a565b005b348015610481575f5ffd5b5061048a610e39565b60405161049791906127a3565b60405180910390f35b3480156104ab575f5ffd5b506104b4610e3f565b005b3480156104c1575f5ffd5b506104ca611076565b6040516104d791906128e2565b60405180910390f35b3480156104eb575f5ffd5b506104f461109e565b6040516105019190612672565b60405180910390f35b348015610515575f5ffd5b50610530600480360381019061052b9190612723565b61112e565b60405161053d919061277b565b60405180910390f35b348015610551575f5ffd5b5061056c60048036038101906105679190612723565b611212565b604051610579919061277b565b60405180910390f35b34801561058d575f5ffd5b50610596611234565b005b3480156105a3575f5ffd5b506105ac6112c0565b005b3480156105b9575f5ffd5b506105d460048036038101906105cf919061299f565b611345565b005b3480156105e1575f5ffd5b506105ea6114cf565b6040516105f791906127a3565b60405180910390f35b34801561060b575f5ffd5b506106146114d5565b005b348015610621575f5ffd5b5061063c600480360381019061063791906128fb565b61155a565b604051610649919061277b565b60405180910390f35b34801561065d575f5ffd5b50610678600480360381019061067391906129ca565b611577565b60405161068591906127a3565b60405180910390f35b348015610699575f5ffd5b506106a26115f9565b6040516106af91906127a3565b60405180910390f35b3480156106c3575f5ffd5b506106cc6115ff565b6040516106d991906128e2565b60405180910390f35b3480156106ed575f5ffd5b50610708600480360381019061070391906128fb565b611623565b005b60606003805461071990612a35565b80601f016020809104026020016040519081016040528092919081815260200182805461074590612a35565b80156107905780601f1061076757610100808354040283529160200191610790565b820191905f5260205f20905b81548152906001019060200180831161077357829003601f168201915b5050505050905090565b5f5f6107a4611719565b90506107b1818585611720565b600191505092915050565b7f00000000000000000000000027b6389cd5704b6b2b61d52d09cae54fc08c0e8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806108485750610819611076565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610850575f5ffd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610893573d5f5f3e3d5ffd5b50565b5f600254905090565b60095481565b5f5f6108af611719565b90506108bc8582856118e3565b6108c785858561196e565b60019150509392505050565b7f00000000000000000000000027b6389cd5704b6b2b61d52d09cae54fc08c0e8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061095f5750610930611076565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610967575f5ffd5b610997620186a0610989600161097b610896565b611f0390919063ffffffff16565b611f1890919063ffffffff16565b8110156109d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d090612ad5565b60405180910390fd5b610a0760646109f960026109eb610896565b611f0390919063ffffffff16565b611f1890919063ffffffff16565b811115610a49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4090612b63565b60405180910390fd5b8060098190555050565b610a5b611719565b73ffffffffffffffffffffffffffffffffffffffff16610a79611076565b73ffffffffffffffffffffffffffffffffffffffff1614610acf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac690612bcb565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5590612c59565b60405180910390fd5b80600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f6012905090565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f610bed611719565b9050610c7d81858560015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610c789190612ca4565b611720565b600191505092915050565b600b5481565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610cdb611719565b73ffffffffffffffffffffffffffffffffffffffff16610cf9611076565b73ffffffffffffffffffffffffffffffffffffffff1614610d4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4690612bcb565b60405180910390fd5b610d585f611f2d565b565b610d62611719565b73ffffffffffffffffffffffffffffffffffffffff16610d80611076565b73ffffffffffffffffffffffffffffffffffffffff1614610dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcd90612bcb565b60405180910390fd5b60638211158015610de8575060638111155b610e27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1e90612d47565b60405180910390fd5b81600a8190555080600b819055505050565b600a5481565b610e47611719565b73ffffffffffffffffffffffffffffffffffffffff16610e65611076565b73ffffffffffffffffffffffffffffffffffffffff1614610ebb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb290612bcb565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f18573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f3c9190612d79565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fb5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fd99190612d79565b6040518363ffffffff1660e01b8152600401610ff6929190612da4565b602060405180830381865afa158015611011573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110359190612d79565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546110ad90612a35565b80601f01602080910402602001604051908101604052809291908181526020018280546110d990612a35565b80156111245780601f106110fb57610100808354040283529160200191611124565b820191905f5260205f20905b81548152906001019060200180831161110757829003601f168201915b5050505050905090565b5f5f611138611719565b90505f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050838110156111f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f090612e3b565b60405180910390fd5b6112068286868403611720565b60019250505092915050565b5f5f61121c611719565b905061122981858561196e565b600191505092915050565b61123c611719565b73ffffffffffffffffffffffffffffffffffffffff1661125a611076565b73ffffffffffffffffffffffffffffffffffffffff16146112b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a790612bcb565b60405180910390fd5b5f6008819055505f600781905550565b6112c8611719565b73ffffffffffffffffffffffffffffffffffffffff166112e6611076565b73ffffffffffffffffffffffffffffffffffffffff161461133c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133390612bcb565b60405180910390fd5b5f600881905550565b7f00000000000000000000000027b6389cd5704b6b2b61d52d09cae54fc08c0e8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806113d157506113a2611076565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6113d9575f5ffd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161142f91906128e2565b602060405180830381865afa15801561144a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061146e9190612e6d565b6040518363ffffffff1660e01b815260040161148b929190612e98565b6020604051808303815f875af11580156114a7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114cb9190612ed3565b5050565b60075481565b6114dd611719565b73ffffffffffffffffffffffffffffffffffffffff166114fb611076565b73ffffffffffffffffffffffffffffffffffffffff1614611551576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154890612bcb565b60405180910390fd5b5f600781905550565b600e602052805f5260405f205f915054906101000a900460ff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60085481565b7f00000000000000000000000027b6389cd5704b6b2b61d52d09cae54fc08c0e8481565b61162b611719565b73ffffffffffffffffffffffffffffffffffffffff16611649611076565b73ffffffffffffffffffffffffffffffffffffffff161461169f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169690612bcb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361170d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170490612f6e565b60405180910390fd5b61171681611f2d565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361178e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178590612ffc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f39061308a565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118d691906127a3565b60405180910390a3505050565b5f6118ee8484611577565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611968578181101561195a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611951906130f2565b60405180910390fd5b6119678484848403611720565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d390613180565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a419061320e565b60405180910390fd5b5f8111611a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a839061329c565b60405180910390fd5b600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611b16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0d90613350565b60405180910390fd5b5f600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611bb25750600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b90505f73ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580611c0d5750805b611c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c43906133b8565b60405180910390fd5b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490505f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161490508080611cfb5750815b8015611d0857505f600754115b8015611d12575082155b15611d5d57600754841115611d5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d539061346c565b60405180910390fd5b5b81158015611d6c57505f600854115b8015611d76575082155b15611dd45760085484611d8887610c8e565b611d929190612ca4565b1115611dd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dca90613520565b60405180910390fd5b5b600954611de030610c8e565b10158015611dfa5750600c5f9054906101000a900460ff16155b8015611e035750815b8015611e0d575082155b15611e4e576001600c5f6101000a81548160ff021916908315150217905550611e34611ff0565b5f600c5f6101000a81548160ff0219169083151502179055505b5f81611e5c57600b54611e60565b600a545b90505f811115611eef5783158015611e845750600c5f9054906101000a900460ff16155b8015611e9557508180611e945750825b5b15611eee575f611ec16064611eb38489611f0390919063ffffffff16565b611f1890919063ffffffff16565b90505f811115611ed757611ed688308361236e565b5b611eea81876125e390919063ffffffff16565b9550505b5b611efa87878761236e565b50505050505050565b5f8183611f10919061353e565b905092915050565b5f8183611f2591906135ac565b905092915050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f611ffa30610c8e565b90505f8103612009575061236c565b6009548111156120195760095490505b5f4790505f600267ffffffffffffffff811115612039576120386135dc565b5b6040519080825280602002602001820160405280156120675781602001602082028036833780820191505090505b50905030815f8151811061207e5761207d613609565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612115573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121399190612d79565b8160018151811061214d5761214c613609565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506121a630737a250d5630b4cf539739df2c5dacb4c659f2488d85611720565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8430426040518663ffffffff1660e01b81526004016121fb95949392919061372f565b5f604051808303815f87803b158015612212575f5ffd5b505af1158015612224573d5f5f3e3d5ffd5b505050505f61223c83476125e390919063ffffffff16565b90505f6122666064612258600585611f0390919063ffffffff16565b611f1890919063ffffffff16565b905061227b81836125e390919063ffffffff16565b91507f00000000000000000000000027b6389cd5704b6b2b61d52d09cae54fc08c0e8473ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f193505050501580156122e0573d5f5f3e3d5ffd5b507327b6389cd5704b6b2b61d52d09cae54fc08c0e8473ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612338573d5f5f3e3d5ffd5b50807f1cfca31204cc745553128283c3bd97acb07e803bd611f352db637c644eb59b8760405160405180910390a250505050505b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d3906137f7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361244a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244190613885565b60405180910390fd5b6124558383836125f8565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156124d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cf90613913565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546125669190612ca4565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125ca91906127a3565b60405180910390a36125dd8484846125fd565b50505050565b5f81836125f09190613931565b905092915050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61264482612602565b61264e818561260c565b935061265e81856020860161261c565b6126678161262a565b840191505092915050565b5f6020820190508181035f83015261268a818461263a565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6126bf82612696565b9050919050565b6126cf816126b5565b81146126d9575f5ffd5b50565b5f813590506126ea816126c6565b92915050565b5f819050919050565b612702816126f0565b811461270c575f5ffd5b50565b5f8135905061271d816126f9565b92915050565b5f5f6040838503121561273957612738612692565b5b5f612746858286016126dc565b92505060206127578582860161270f565b9150509250929050565b5f8115159050919050565b61277581612761565b82525050565b5f60208201905061278e5f83018461276c565b92915050565b61279d816126f0565b82525050565b5f6020820190506127b65f830184612794565b92915050565b5f5f5f606084860312156127d3576127d2612692565b5b5f6127e0868287016126dc565b93505060206127f1868287016126dc565b92505060406128028682870161270f565b9150509250925092565b5f6020828403121561282157612820612692565b5b5f61282e8482850161270f565b91505092915050565b61284081612761565b811461284a575f5ffd5b50565b5f8135905061285b81612837565b92915050565b5f5f6040838503121561287757612876612692565b5b5f612884858286016126dc565b92505060206128958582860161284d565b9150509250929050565b5f60ff82169050919050565b6128b48161289f565b82525050565b5f6020820190506128cd5f8301846128ab565b92915050565b6128dc816126b5565b82525050565b5f6020820190506128f55f8301846128d3565b92915050565b5f602082840312156129105761290f612692565b5b5f61291d848285016126dc565b91505092915050565b5f5f6040838503121561293c5761293b612692565b5b5f6129498582860161270f565b925050602061295a8582860161270f565b9150509250929050565b5f61296e826126b5565b9050919050565b61297e81612964565b8114612988575f5ffd5b50565b5f8135905061299981612975565b92915050565b5f602082840312156129b4576129b3612692565b5b5f6129c18482850161298b565b91505092915050565b5f5f604083850312156129e0576129df612692565b5b5f6129ed858286016126dc565b92505060206129fe858286016126dc565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612a4c57607f821691505b602082108103612a5f57612a5e612a08565b5b50919050565b7f53776170207468726573686f6c642063616e6e6f74206265206c6f77657220745f8201527f68616e20302e3030312520746f74616c20737570706c792e0000000000000000602082015250565b5f612abf60388361260c565b9150612aca82612a65565b604082019050919050565b5f6020820190508181035f830152612aec81612ab3565b9050919050565b7f53776170207468726573686f6c642063616e6e6f7420626520686967686572205f8201527f7468616e20322520746f74616c20737570706c792e0000000000000000000000602082015250565b5f612b4d60358361260c565b9150612b5882612af3565b604082019050919050565b5f6020820190508181035f830152612b7a81612b41565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612bb560208361260c565b9150612bc082612b81565b602082019050919050565b5f6020820190508181035f830152612be281612ba9565b9050919050565b7f43616e6e6f7420626c61636b6c697374207468652070616972206164647265735f8201527f732e000000000000000000000000000000000000000000000000000000000000602082015250565b5f612c4360228361260c565b9150612c4e82612be9565b604082019050919050565b5f6020820190508181035f830152612c7081612c37565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612cae826126f0565b9150612cb9836126f0565b9250828201905080821115612cd157612cd0612c77565b5b92915050565b7f417474656d7074696e6720746f207365742066656520686967686572207468615f8201527f6e20696e697469616c206665652e000000000000000000000000000000000000602082015250565b5f612d31602e8361260c565b9150612d3c82612cd7565b604082019050919050565b5f6020820190508181035f830152612d5e81612d25565b9050919050565b5f81519050612d73816126c6565b92915050565b5f60208284031215612d8e57612d8d612692565b5b5f612d9b84828501612d65565b91505092915050565b5f604082019050612db75f8301856128d3565b612dc460208301846128d3565b9392505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612e2560258361260c565b9150612e3082612dcb565b604082019050919050565b5f6020820190508181035f830152612e5281612e19565b9050919050565b5f81519050612e67816126f9565b92915050565b5f60208284031215612e8257612e81612692565b5b5f612e8f84828501612e59565b91505092915050565b5f604082019050612eab5f8301856128d3565b612eb86020830184612794565b9392505050565b5f81519050612ecd81612837565b92915050565b5f60208284031215612ee857612ee7612692565b5b5f612ef584828501612ebf565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612f5860268361260c565b9150612f6382612efe565b604082019050919050565b5f6020820190508181035f830152612f8581612f4c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612fe660248361260c565b9150612ff182612f8c565b604082019050919050565b5f6020820190508181035f83015261301381612fda565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61307460228361260c565b915061307f8261301a565b604082019050919050565b5f6020820190508181035f8301526130a181613068565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f6130dc601d8361260c565b91506130e7826130a8565b602082019050919050565b5f6020820190508181035f830152613109816130d0565b9050919050565b7f5472616e736665722066726f6d20746865207a65726f2061646472657373206e5f8201527f6f7420616c6c6f7765642e000000000000000000000000000000000000000000602082015250565b5f61316a602b8361260c565b915061317582613110565b604082019050919050565b5f6020820190508181035f8301526131978161315e565b9050919050565b7f5472616e7366657220746f20746865207a65726f2061646472657373206e6f745f8201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000602082015250565b5f6131f860298361260c565b91506132038261319e565b604082019050919050565b5f6020820190508181035f830152613225816131ec565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f2e00000000000000000000000000000000000000000000602082015250565b5f613286602a8361260c565b91506132918261322c565b604082019050919050565b5f6020820190508181035f8301526132b38161327a565b9050919050565b7f596f7572206164647265737320686173206265656e206d61726b6564206173205f8201527f626c61636b6c69737465642c20796f752061726520756e61626c6520746f207460208201527f72616e73666572206f7220737761702e00000000000000000000000000000000604082015250565b5f61333a60508361260c565b9150613345826132ba565b606082019050919050565b5f6020820190508181035f8301526133678161332e565b9050919050565b7f4c69717569646974792070616972206e6f742079657420637265617465642e005f82015250565b5f6133a2601f8361260c565b91506133ad8261336e565b602082019050919050565b5f6020820190508181035f8301526133cf81613396565b9050919050565b7f537761702076616c75652065786365656473206d6178207377617020616d6f755f8201527f6e742c2074727920616761696e2077697468206c65737320737761702076616c60208201527f75652e0000000000000000000000000000000000000000000000000000000000604082015250565b5f61345660438361260c565b9150613461826133d6565b606082019050919050565b5f6020820190508181035f8301526134838161344a565b9050919050565b7f42616c616e63652065786365656473206d617820686f6c64696e677320616d6f5f8201527f756e742c20636f6e7369646572207573696e672061207365636f6e642077616c60208201527f6c65742e00000000000000000000000000000000000000000000000000000000604082015250565b5f61350a60448361260c565b91506135158261348a565b606082019050919050565b5f6020820190508181035f830152613537816134fe565b9050919050565b5f613548826126f0565b9150613553836126f0565b9250828202613561816126f0565b9150828204841483151761357857613577612c77565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6135b6826126f0565b91506135c1836126f0565b9250826135d1576135d061357f565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f819050919050565b5f61366261365d61365884613636565b61363f565b6126f0565b9050919050565b61367281613648565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6136aa816126b5565b82525050565b5f6136bb83836136a1565b60208301905092915050565b5f602082019050919050565b5f6136dd82613678565b6136e78185613682565b93506136f283613692565b805f5b8381101561372257815161370988826136b0565b9750613714836136c7565b9250506001810190506136f5565b5085935050505092915050565b5f60a0820190506137425f830188612794565b61374f6020830187613669565b818103604083015261376181866136d3565b905061377060608301856128d3565b61377d6080830184612794565b9695505050505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6137e160258361260c565b91506137ec82613787565b604082019050919050565b5f6020820190508181035f83015261380e816137d5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61386f60238361260c565b915061387a82613815565b604082019050919050565b5f6020820190508181035f83015261389c81613863565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6138fd60268361260c565b9150613908826138a3565b604082019050919050565b5f6020820190508181035f83015261392a816138f1565b9050919050565b5f61393b826126f0565b9150613946836126f0565b925082820390508181111561395e5761395d612c77565b5b9291505056fea2646970667358221220ca76630a31d7b79791a066ca68c1c5a2d0753a2a66d9157cb87b014cd023db1264736f6c634300081b0033

Deployed Bytecode Sourcemap

9926:6022:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1799:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2777:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15511:184;;;;;;;;;;;;;:::i;:::-;;2138:112;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10267:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2996:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14293:439;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15310:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2031:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10117:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3319:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10343:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2260:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7470:107;;;;;;;;;;;;;:::i;:::-;;14740:267;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10308:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14137:148;;;;;;;;;;;;;:::i;:::-;;7233:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1913:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3577:454;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2401:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15015:107;;;;;;;;;;;;;:::i;:::-;;15130:82;;;;;;;;;;;;;:::i;:::-;;15703:203;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10199:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15220:82;;;;;;;;;;;;;:::i;:::-;;10464:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2612:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10234:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10146:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7587:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1799:104;1853:13;1888:5;1881:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1799:104;:::o;2777:209::-;2860:4;2879:13;2895:12;:10;:12::i;:::-;2879:28;;2920:32;2929:5;2936:7;2945:6;2920:8;:32::i;:::-;2972:4;2965:11;;;2777:209;;;;:::o;15511:184::-;15580:19;15566:33;;:10;:33;;;:58;;;;15617:7;:5;:7::i;:::-;15603:21;;:10;:21;;;15566:58;15558:67;;;;;;15644:10;15636:28;;:51;15665:21;15636:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15511:184::o;2138:112::-;2199:7;2228:12;;2221:19;;2138:112;:::o;10267:32::-;;;;:::o;2996:313::-;3135:4;3154:15;3172:12;:10;:12::i;:::-;3154:30;;3197:38;3213:4;3219:7;3228:6;3197:15;:38::i;:::-;3248:27;3258:4;3264:2;3268:6;3248:9;:27::i;:::-;3295:4;3288:11;;;2996:313;;;;;:::o;14293:439::-;14386:19;14372:33;;:10;:33;;;:58;;;;14423:7;:5;:7::i;:::-;14409:21;;:10;:21;;;14372:58;14364:67;;;;;;14466:32;14491:6;14466:20;14484:1;14466:13;:11;:13::i;:::-;:17;;:20;;;;:::i;:::-;:24;;:32;;;;:::i;:::-;14450:12;:48;;14442:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;14594:29;14619:3;14594:20;14612:1;14594:13;:11;:13::i;:::-;:17;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;14578:12;:45;;14570:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;14712:12;14692:17;:32;;;;14293:439;:::o;15310:193::-;7387:12;:10;:12::i;:::-;7376:23;;:7;:5;:7::i;:::-;:23;;;7368:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15411:7:::1;;;;;;;;;;;15401:17;;:6;:17;;::::0;15393:64:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15490:5;15468:11;:19;15480:6;15468:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;15310:193:::0;;:::o;2031:97::-;2089:5;2116:2;2109:9;;2031:97;:::o;10117:22::-;;;;;;;;;;;;;:::o;3319:248::-;3407:4;3426:13;3442:12;:10;:12::i;:::-;3426:28;;3467:66;3476:5;3483:7;3522:10;3492:11;:18;3504:5;3492:18;;;;;;;;;;;;;;;:27;3511:7;3492:27;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;3467:8;:66::i;:::-;3553:4;3546:11;;;3319:248;;;;:::o;10343:29::-;;;;:::o;2260:131::-;2334:7;2363:9;:18;2373:7;2363:18;;;;;;;;;;;;;;;;2356:25;;2260:131;;;:::o;7470:107::-;7387:12;:10;:12::i;:::-;7376:23;;:7;:5;:7::i;:::-;:23;;;7368:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7537:30:::1;7564:1;7537:18;:30::i;:::-;7470:107::o:0;14740:267::-;7387:12;:10;:12::i;:::-;7376:23;;:7;:5;:7::i;:::-;:23;;;7368:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14852:2:::1;14839:9;:15;;:35;;;;;14872:2;14858:10;:16;;14839:35;14831:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;14952:9;14936:13;:25;;;;14989:10;14972:14;:27;;;;14740:267:::0;;:::o;10308:28::-;;;;:::o;14137:148::-;7387:12;:10;:12::i;:::-;7376:23;;:7;:5;:7::i;:::-;:23;;;7368:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10065:42:::1;14220:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14202:44;;;14255:4;10065:42;14262:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14202:75;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14192:7;;:85;;;;;;;;;;;;;;;;;;14137:148::o:0;7233:91::-;7279:7;7308:6;;;;;;;;;;;7301:13;;7233:91;:::o;1913:108::-;1969:13;2004:7;1997:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1913:108;:::o;3577:454::-;3670:4;3689:13;3705:12;:10;:12::i;:::-;3689:28;;3730:24;3757:11;:18;3769:5;3757:18;;;;;;;;;;;;;;;:27;3776:7;3757:27;;;;;;;;;;;;;;;;3730:54;;3825:15;3805:16;:35;;3797:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;3922:60;3931:5;3938:7;3966:15;3947:16;:34;3922:8;:60::i;:::-;4017:4;4010:11;;;;3577:454;;;;:::o;2401:201::-;2480:4;2499:13;2515:12;:10;:12::i;:::-;2499:28;;2540;2550:5;2557:2;2561:6;2540:9;:28::i;:::-;2588:4;2581:11;;;2401:201;;;;:::o;15015:107::-;7387:12;:10;:12::i;:::-;7376:23;;:7;:5;:7::i;:::-;:23;;;7368:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15085:1:::1;15071:11;:15;;;;15113:1;15097:13;:17;;;;15015:107::o:0;15130:82::-;7387:12;:10;:12::i;:::-;7376:23;;:7;:5;:7::i;:::-;:23;;;7368:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15203:1:::1;15189:11;:15;;;;15130:82::o:0;15703:203::-;15784:19;15770:33;;:10;:33;;;:58;;;;15821:7;:5;:7::i;:::-;15807:21;;:10;:21;;;15770:58;15762:67;;;;;;15840:5;:14;;;15855:10;15867:5;:15;;;15891:4;15867:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15840:58;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15703:203;:::o;10199:28::-;;;;:::o;15220:82::-;7387:12;:10;:12::i;:::-;7376:23;;:7;:5;:7::i;:::-;:23;;;7368:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15293:1:::1;15277:13;:17;;;;15220:82::o:0;10464:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;2612:155::-;2701:7;2730:11;:18;2742:5;2730:18;;;;;;;;;;;;;;;:27;2749:7;2730:27;;;;;;;;;;;;;;;;2723:34;;2612:155;;;;:::o;10234:26::-;;;;:::o;10146:44::-;;;:::o;7587:207::-;7387:12;:10;:12::i;:::-;7376:23;;:7;:5;:7::i;:::-;:23;;;7368:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7698:1:::1;7678:22;;:8;:22;;::::0;7670:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7756:28;7775:8;7756:18;:28::i;:::-;7587:207:::0;:::o;191:102::-;244:7;273:10;266:17;;191:102;:::o;5800:398::-;5963:1;5946:19;;:5;:19;;;5938:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6046:1;6027:21;;:7;:21;;;6019:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6132:6;6102:11;:18;6114:5;6102:18;;;;;;;;;;;;;;;:27;6121:7;6102:27;;;;;;;;;;;;;;;:36;;;;6172:7;6156:32;;6165:5;6156:32;;;6181:6;6156:32;;;;;;:::i;:::-;;;;;;;;5800:398;;;:::o;6208:477::-;6353:24;6380:25;6390:5;6397:7;6380:9;:25::i;:::-;6353:52;;6442:17;6422:16;:37;6418:258;;6506:6;6486:16;:26;;6478:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6594:51;6603:5;6610:7;6638:6;6619:16;:25;6594:8;:51::i;:::-;6418:258;6340:345;6208:477;;;:::o;11323:1776::-;11471:1;11455:18;;:4;:18;;;11447:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;11554:1;11540:16;;:2;:16;;;11532:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;11630:1;11621:6;:10;11613:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;11698:11;:17;11710:4;11698:17;;;;;;;;;;;;;;;;;;;;;;;;;11697:18;11689:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;11813:13;11829:15;:21;11845:4;11829:21;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;;11854:15;:19;11870:2;11854:19;;;;;;;;;;;;;;;;;;;;;;;;;11829:44;11813:60;;11911:1;11892:21;;:7;;;;;;;;;;;:21;;;;:33;;;;11917:8;11892:33;11884:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;11974:11;11994:7;;;;;;;;;;;11988:13;;:2;:13;;;11974:27;;12012:10;12033:7;;;;;;;;;;;12025:15;;:4;:15;;;12012:28;;12058:5;:15;;;;12067:6;12058:15;12057:38;;;;;12094:1;12078:13;;:17;12057:38;:51;;;;;12100:8;12099:9;12057:51;12053:173;;;12141:13;;12131:6;:23;;12123:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;12053:173;12244:6;12243:7;:26;;;;;12268:1;12254:11;;:15;12243:26;:39;;;;;12274:8;12273:9;12243:39;12239:176;;;12331:11;;12321:6;12305:13;12315:2;12305:9;:13::i;:::-;:22;;;;:::i;:::-;:37;;12297:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;12239:176;12472:17;;12444:24;12462:4;12444:9;:24::i;:::-;:45;;:68;;;;;12505:7;;;;;;;;;;;12504:8;12444:68;:78;;;;;12516:6;12444:78;:102;;;;;12538:8;12537:9;12444:102;12428:236;;;12584:4;12574:7;;:14;;;;;;;;;;;;;;;;;;12603:19;:17;:19::i;:::-;12647:5;12637:7;;:15;;;;;;;;;;;;;;;;;;12428:236;12676:11;12690:5;:38;;12714:14;;12690:38;;;12698:13;;12690:38;12676:52;;12751:1;12745:3;:7;12741:305;;;12774:8;12773:9;:21;;;;;12787:7;;;;;;;;;;;12786:8;12773:21;:42;;;;;12799:5;:15;;;;12808:6;12799:15;12773:42;12769:266;;;12836:12;12851:24;12871:3;12851:15;12862:3;12851:6;:10;;:15;;;;:::i;:::-;:19;;:24;;;;:::i;:::-;12836:39;;12907:1;12900:4;:8;12896:77;;;12931:42;12947:4;12961;12968;12931:15;:42::i;:::-;12896:77;13003:16;13014:4;13003:6;:10;;:16;;;;:::i;:::-;12994:25;;12817:218;12769:266;12741:305;13058:33;13074:4;13080:2;13084:6;13058:15;:33::i;:::-;11436:1663;;;;11323:1776;;;:::o;8264:102::-;8322:7;8355:1;8351;:5;;;;:::i;:::-;8344:12;;8264:102;;;;:::o;8376:::-;8434:7;8467:1;8463;:5;;;;:::i;:::-;8456:12;;8376:102;;;;:::o;7804:199::-;7880:16;7899:6;;;;;;;;;;;7880:25;;7927:8;7918:6;;:17;;;;;;;;;;;;;;;;;;7984:8;7953:40;;7974:8;7953:40;;;;;;;;;;;;7867:136;7804:199;:::o;13107:1022::-;13155:23;13181:24;13199:4;13181:9;:24::i;:::-;13155:50;;13239:1;13220:15;:20;13216:33;;13242:7;;;13216:33;13281:17;;13263:15;:35;13259:76;;;13318:17;;13300:35;;13259:76;13348:18;13369:21;13348:42;;13403:21;13441:1;13427:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13403:40;;13472:4;13454;13459:1;13454:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;10065:42;13498:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13488:4;13493:1;13488:7;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;;;13525:58;13542:4;10065:42;13567:15;13525:8;:58::i;:::-;10065:42;13596:58;;;13669:15;13699:1;13715:4;13742;13762:15;13596:192;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13801:14;13818:37;13844:10;13818:21;:25;;:37;;;;:::i;:::-;13801:54;;13866:16;13885:22;13903:3;13885:13;13896:1;13885:6;:10;;:13;;;;:::i;:::-;:17;;:22;;;;:::i;:::-;13866:41;;13929:20;13940:8;13929:6;:10;;:20;;;;:::i;:::-;13920:29;;13968:19;13960:37;;:45;13998:6;13960:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14024:42;14016:60;;:70;14077:8;14016:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14112:8;14104:17;;;;;;;;;;13144:985;;;;;13107:1022;:::o;4041:703::-;4198:1;4182:18;;:4;:18;;;4174:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4277:1;4263:16;;:2;:16;;;4255:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;4334:38;4355:4;4361:2;4365:6;4334:20;:38::i;:::-;4387:19;4409:9;:15;4419:4;4409:15;;;;;;;;;;;;;;;;4387:37;;4460:6;4445:11;:21;;4437:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;4581:6;4567:11;:20;4549:9;:15;4559:4;4549:15;;;;;;;;;;;;;;;:38;;;;4630:6;4613:9;:13;4623:2;4613:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;4671:2;4656:26;;4665:4;4656:26;;;4675:6;4656:26;;;;;;:::i;:::-;;;;;;;;4697:37;4717:4;4723:2;4727:6;4697:19;:37::i;:::-;4161:583;4041:703;;;:::o;8152:102::-;8210:7;8243:1;8239;:5;;;;:::i;:::-;8232:12;;8152:102;;;;:::o;6695:133::-;;;;:::o;6838:132::-;;;;:::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:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:329::-;4375:6;4424:2;4412:9;4403:7;4399:23;4395:32;4392:119;;;4430:79;;:::i;:::-;4392:119;4550:1;4575:53;4620:7;4611:6;4600:9;4596:22;4575:53;:::i;:::-;4565:63;;4521:117;4316:329;;;;:::o;4651:116::-;4721:21;4736:5;4721:21;:::i;:::-;4714:5;4711:32;4701:60;;4757:1;4754;4747:12;4701:60;4651:116;:::o;4773:133::-;4816:5;4854:6;4841:20;4832:29;;4870:30;4894:5;4870:30;:::i;:::-;4773:133;;;;:::o;4912:468::-;4977:6;4985;5034:2;5022:9;5013:7;5009:23;5005:32;5002:119;;;5040:79;;:::i;:::-;5002:119;5160:1;5185:53;5230:7;5221:6;5210:9;5206:22;5185:53;:::i;:::-;5175:63;;5131:117;5287:2;5313:50;5355:7;5346:6;5335:9;5331:22;5313:50;:::i;:::-;5303:60;;5258:115;4912:468;;;;;:::o;5386:86::-;5421:7;5461:4;5454:5;5450:16;5439:27;;5386:86;;;:::o;5478:112::-;5561:22;5577:5;5561:22;:::i;:::-;5556:3;5549:35;5478:112;;:::o;5596:214::-;5685:4;5723:2;5712:9;5708:18;5700:26;;5736:67;5800:1;5789:9;5785:17;5776:6;5736:67;:::i;:::-;5596:214;;;;:::o;5816:118::-;5903:24;5921:5;5903:24;:::i;:::-;5898:3;5891:37;5816:118;;:::o;5940:222::-;6033:4;6071:2;6060:9;6056:18;6048:26;;6084:71;6152:1;6141:9;6137:17;6128:6;6084:71;:::i;:::-;5940:222;;;;:::o;6168:329::-;6227:6;6276:2;6264:9;6255:7;6251:23;6247:32;6244:119;;;6282:79;;:::i;:::-;6244:119;6402:1;6427:53;6472:7;6463:6;6452:9;6448:22;6427:53;:::i;:::-;6417:63;;6373:117;6168:329;;;;:::o;6503:474::-;6571:6;6579;6628:2;6616:9;6607:7;6603:23;6599:32;6596:119;;;6634:79;;:::i;:::-;6596:119;6754:1;6779:53;6824:7;6815:6;6804:9;6800:22;6779:53;:::i;:::-;6769:63;;6725:117;6881:2;6907:53;6952:7;6943:6;6932:9;6928:22;6907:53;:::i;:::-;6897:63;;6852:118;6503:474;;;;;:::o;6983:109::-;7033:7;7062:24;7080:5;7062:24;:::i;:::-;7051:35;;6983:109;;;:::o;7098:148::-;7184:37;7215:5;7184:37;:::i;:::-;7177:5;7174:48;7164:76;;7236:1;7233;7226:12;7164:76;7098:148;:::o;7252:165::-;7311:5;7349:6;7336:20;7327:29;;7365:46;7405:5;7365:46;:::i;:::-;7252:165;;;;:::o;7423:355::-;7495:6;7544:2;7532:9;7523:7;7519:23;7515:32;7512:119;;;7550:79;;:::i;:::-;7512:119;7670:1;7695:66;7753:7;7744:6;7733:9;7729:22;7695:66;:::i;:::-;7685:76;;7641:130;7423:355;;;;:::o;7784:474::-;7852:6;7860;7909:2;7897:9;7888:7;7884:23;7880:32;7877:119;;;7915:79;;:::i;:::-;7877:119;8035:1;8060:53;8105:7;8096:6;8085:9;8081:22;8060:53;:::i;:::-;8050:63;;8006:117;8162:2;8188:53;8233:7;8224:6;8213:9;8209:22;8188:53;:::i;:::-;8178:63;;8133:118;7784:474;;;;;:::o;8264:180::-;8312:77;8309:1;8302:88;8409:4;8406:1;8399:15;8433:4;8430:1;8423:15;8450:320;8494:6;8531:1;8525:4;8521:12;8511:22;;8578:1;8572:4;8568:12;8599:18;8589:81;;8655:4;8647:6;8643:17;8633:27;;8589:81;8717:2;8709:6;8706:14;8686:18;8683:38;8680:84;;8736:18;;:::i;:::-;8680:84;8501:269;8450:320;;;:::o;8776:243::-;8916:34;8912:1;8904:6;8900:14;8893:58;8985:26;8980:2;8972:6;8968:15;8961:51;8776:243;:::o;9025:366::-;9167:3;9188:67;9252:2;9247:3;9188:67;:::i;:::-;9181:74;;9264:93;9353:3;9264:93;:::i;:::-;9382:2;9377:3;9373:12;9366:19;;9025:366;;;:::o;9397:419::-;9563:4;9601:2;9590:9;9586:18;9578:26;;9650:9;9644:4;9640:20;9636:1;9625:9;9621:17;9614:47;9678:131;9804:4;9678:131;:::i;:::-;9670:139;;9397:419;;;:::o;9822:240::-;9962:34;9958:1;9950:6;9946:14;9939:58;10031:23;10026:2;10018:6;10014:15;10007:48;9822:240;:::o;10068:366::-;10210:3;10231:67;10295:2;10290:3;10231:67;:::i;:::-;10224:74;;10307:93;10396:3;10307:93;:::i;:::-;10425:2;10420:3;10416:12;10409:19;;10068:366;;;:::o;10440:419::-;10606:4;10644:2;10633:9;10629:18;10621:26;;10693:9;10687:4;10683:20;10679:1;10668:9;10664:17;10657:47;10721:131;10847:4;10721:131;:::i;:::-;10713:139;;10440:419;;;:::o;10865:182::-;11005:34;11001:1;10993:6;10989:14;10982:58;10865:182;:::o;11053:366::-;11195:3;11216:67;11280:2;11275:3;11216:67;:::i;:::-;11209:74;;11292:93;11381:3;11292:93;:::i;:::-;11410:2;11405:3;11401:12;11394:19;;11053:366;;;:::o;11425:419::-;11591:4;11629:2;11618:9;11614:18;11606:26;;11678:9;11672:4;11668:20;11664:1;11653:9;11649:17;11642:47;11706:131;11832:4;11706:131;:::i;:::-;11698:139;;11425:419;;;:::o;11850:221::-;11990:34;11986:1;11978:6;11974:14;11967:58;12059:4;12054:2;12046:6;12042:15;12035:29;11850:221;:::o;12077:366::-;12219:3;12240:67;12304:2;12299:3;12240:67;:::i;:::-;12233:74;;12316:93;12405:3;12316:93;:::i;:::-;12434:2;12429:3;12425:12;12418:19;;12077:366;;;:::o;12449:419::-;12615:4;12653:2;12642:9;12638:18;12630:26;;12702:9;12696:4;12692:20;12688:1;12677:9;12673:17;12666:47;12730:131;12856:4;12730:131;:::i;:::-;12722:139;;12449:419;;;:::o;12874:180::-;12922:77;12919:1;12912:88;13019:4;13016:1;13009:15;13043:4;13040:1;13033:15;13060:191;13100:3;13119:20;13137:1;13119:20;:::i;:::-;13114:25;;13153:20;13171:1;13153:20;:::i;:::-;13148:25;;13196:1;13193;13189:9;13182:16;;13217:3;13214:1;13211:10;13208:36;;;13224:18;;:::i;:::-;13208:36;13060:191;;;;:::o;13257:233::-;13397:34;13393:1;13385:6;13381:14;13374:58;13466:16;13461:2;13453:6;13449:15;13442:41;13257:233;:::o;13496:366::-;13638:3;13659:67;13723:2;13718:3;13659:67;:::i;:::-;13652:74;;13735:93;13824:3;13735:93;:::i;:::-;13853:2;13848:3;13844:12;13837:19;;13496:366;;;:::o;13868:419::-;14034:4;14072:2;14061:9;14057:18;14049:26;;14121:9;14115:4;14111:20;14107:1;14096:9;14092:17;14085:47;14149:131;14275:4;14149:131;:::i;:::-;14141:139;;13868:419;;;:::o;14293:143::-;14350:5;14381:6;14375:13;14366:22;;14397:33;14424:5;14397:33;:::i;:::-;14293:143;;;;:::o;14442:351::-;14512:6;14561:2;14549:9;14540:7;14536:23;14532:32;14529:119;;;14567:79;;:::i;:::-;14529:119;14687:1;14712:64;14768:7;14759:6;14748:9;14744:22;14712:64;:::i;:::-;14702:74;;14658:128;14442:351;;;;:::o;14799:332::-;14920:4;14958:2;14947:9;14943:18;14935:26;;14971:71;15039:1;15028:9;15024:17;15015:6;14971:71;:::i;:::-;15052:72;15120:2;15109:9;15105:18;15096:6;15052:72;:::i;:::-;14799:332;;;;;:::o;15137:224::-;15277:34;15273:1;15265:6;15261:14;15254:58;15346:7;15341:2;15333:6;15329:15;15322:32;15137:224;:::o;15367:366::-;15509:3;15530:67;15594:2;15589:3;15530:67;:::i;:::-;15523:74;;15606:93;15695:3;15606:93;:::i;:::-;15724:2;15719:3;15715:12;15708:19;;15367:366;;;:::o;15739:419::-;15905:4;15943:2;15932:9;15928:18;15920:26;;15992:9;15986:4;15982:20;15978:1;15967:9;15963:17;15956:47;16020:131;16146:4;16020:131;:::i;:::-;16012:139;;15739:419;;;:::o;16164:143::-;16221:5;16252:6;16246:13;16237:22;;16268:33;16295:5;16268:33;:::i;:::-;16164:143;;;;:::o;16313:351::-;16383:6;16432:2;16420:9;16411:7;16407:23;16403:32;16400:119;;;16438:79;;:::i;:::-;16400:119;16558:1;16583:64;16639:7;16630:6;16619:9;16615:22;16583:64;:::i;:::-;16573:74;;16529:128;16313:351;;;;:::o;16670:332::-;16791:4;16829:2;16818:9;16814:18;16806:26;;16842:71;16910:1;16899:9;16895:17;16886:6;16842:71;:::i;:::-;16923:72;16991:2;16980:9;16976:18;16967:6;16923:72;:::i;:::-;16670:332;;;;;:::o;17008:137::-;17062:5;17093:6;17087:13;17078:22;;17109:30;17133:5;17109:30;:::i;:::-;17008:137;;;;:::o;17151:345::-;17218:6;17267:2;17255:9;17246:7;17242:23;17238:32;17235:119;;;17273:79;;:::i;:::-;17235:119;17393:1;17418:61;17471:7;17462:6;17451:9;17447:22;17418:61;:::i;:::-;17408:71;;17364:125;17151:345;;;;:::o;17502:225::-;17642:34;17638:1;17630:6;17626:14;17619:58;17711:8;17706:2;17698:6;17694:15;17687:33;17502:225;:::o;17733:366::-;17875:3;17896:67;17960:2;17955:3;17896:67;:::i;:::-;17889:74;;17972:93;18061:3;17972:93;:::i;:::-;18090:2;18085:3;18081:12;18074:19;;17733:366;;;:::o;18105:419::-;18271:4;18309:2;18298:9;18294:18;18286:26;;18358:9;18352:4;18348:20;18344:1;18333:9;18329:17;18322:47;18386:131;18512:4;18386:131;:::i;:::-;18378:139;;18105:419;;;:::o;18530:223::-;18670:34;18666:1;18658:6;18654:14;18647:58;18739:6;18734:2;18726:6;18722:15;18715:31;18530:223;:::o;18759:366::-;18901:3;18922:67;18986:2;18981:3;18922:67;:::i;:::-;18915:74;;18998:93;19087:3;18998:93;:::i;:::-;19116:2;19111:3;19107:12;19100:19;;18759:366;;;:::o;19131:419::-;19297:4;19335:2;19324:9;19320:18;19312:26;;19384:9;19378:4;19374:20;19370:1;19359:9;19355:17;19348:47;19412:131;19538:4;19412:131;:::i;:::-;19404:139;;19131:419;;;:::o;19556:221::-;19696:34;19692:1;19684:6;19680:14;19673:58;19765:4;19760:2;19752:6;19748:15;19741:29;19556:221;:::o;19783:366::-;19925:3;19946:67;20010:2;20005:3;19946:67;:::i;:::-;19939:74;;20022:93;20111:3;20022:93;:::i;:::-;20140:2;20135:3;20131:12;20124:19;;19783:366;;;:::o;20155:419::-;20321:4;20359:2;20348:9;20344:18;20336:26;;20408:9;20402:4;20398:20;20394:1;20383:9;20379:17;20372:47;20436:131;20562:4;20436:131;:::i;:::-;20428:139;;20155:419;;;:::o;20580:179::-;20720:31;20716:1;20708:6;20704:14;20697:55;20580:179;:::o;20765:366::-;20907:3;20928:67;20992:2;20987:3;20928:67;:::i;:::-;20921:74;;21004:93;21093:3;21004:93;:::i;:::-;21122:2;21117:3;21113:12;21106:19;;20765:366;;;:::o;21137:419::-;21303:4;21341:2;21330:9;21326:18;21318:26;;21390:9;21384:4;21380:20;21376:1;21365:9;21361:17;21354:47;21418:131;21544:4;21418:131;:::i;:::-;21410:139;;21137:419;;;:::o;21562:230::-;21702:34;21698:1;21690:6;21686:14;21679:58;21771:13;21766:2;21758:6;21754:15;21747:38;21562:230;:::o;21798:366::-;21940:3;21961:67;22025:2;22020:3;21961:67;:::i;:::-;21954:74;;22037:93;22126:3;22037:93;:::i;:::-;22155:2;22150:3;22146:12;22139:19;;21798:366;;;:::o;22170:419::-;22336:4;22374:2;22363:9;22359:18;22351:26;;22423:9;22417:4;22413:20;22409:1;22398:9;22394:17;22387:47;22451:131;22577:4;22451:131;:::i;:::-;22443:139;;22170:419;;;:::o;22595:228::-;22735:34;22731:1;22723:6;22719:14;22712:58;22804:11;22799:2;22791:6;22787:15;22780:36;22595:228;:::o;22829:366::-;22971:3;22992:67;23056:2;23051:3;22992:67;:::i;:::-;22985:74;;23068:93;23157:3;23068:93;:::i;:::-;23186:2;23181:3;23177:12;23170:19;;22829:366;;;:::o;23201:419::-;23367:4;23405:2;23394:9;23390:18;23382:26;;23454:9;23448:4;23444:20;23440:1;23429:9;23425:17;23418:47;23482:131;23608:4;23482:131;:::i;:::-;23474:139;;23201:419;;;:::o;23626:229::-;23766:34;23762:1;23754:6;23750:14;23743:58;23835:12;23830:2;23822:6;23818:15;23811:37;23626:229;:::o;23861:366::-;24003:3;24024:67;24088:2;24083:3;24024:67;:::i;:::-;24017:74;;24100:93;24189:3;24100:93;:::i;:::-;24218:2;24213:3;24209:12;24202:19;;23861:366;;;:::o;24233:419::-;24399:4;24437:2;24426:9;24422:18;24414:26;;24486:9;24480:4;24476:20;24472:1;24461:9;24457:17;24450:47;24514:131;24640:4;24514:131;:::i;:::-;24506:139;;24233:419;;;:::o;24658:304::-;24798:34;24794:1;24786:6;24782:14;24775:58;24867:34;24862:2;24854:6;24850:15;24843:59;24936:18;24931:2;24923:6;24919:15;24912:43;24658:304;:::o;24968:366::-;25110:3;25131:67;25195:2;25190:3;25131:67;:::i;:::-;25124:74;;25207:93;25296:3;25207:93;:::i;:::-;25325:2;25320:3;25316:12;25309:19;;24968:366;;;:::o;25340:419::-;25506:4;25544:2;25533:9;25529:18;25521:26;;25593:9;25587:4;25583:20;25579:1;25568:9;25564:17;25557:47;25621:131;25747:4;25621:131;:::i;:::-;25613:139;;25340:419;;;:::o;25765:181::-;25905:33;25901:1;25893:6;25889:14;25882:57;25765:181;:::o;25952:366::-;26094:3;26115:67;26179:2;26174:3;26115:67;:::i;:::-;26108:74;;26191:93;26280:3;26191:93;:::i;:::-;26309:2;26304:3;26300:12;26293:19;;25952:366;;;:::o;26324:419::-;26490:4;26528:2;26517:9;26513:18;26505:26;;26577:9;26571:4;26567:20;26563:1;26552:9;26548:17;26541:47;26605:131;26731:4;26605:131;:::i;:::-;26597:139;;26324:419;;;:::o;26749:291::-;26889:34;26885:1;26877:6;26873:14;26866:58;26958:34;26953:2;26945:6;26941:15;26934:59;27027:5;27022:2;27014:6;27010:15;27003:30;26749:291;:::o;27046:366::-;27188:3;27209:67;27273:2;27268:3;27209:67;:::i;:::-;27202:74;;27285:93;27374:3;27285:93;:::i;:::-;27403:2;27398:3;27394:12;27387:19;;27046:366;;;:::o;27418:419::-;27584:4;27622:2;27611:9;27607:18;27599:26;;27671:9;27665:4;27661:20;27657:1;27646:9;27642:17;27635:47;27699:131;27825:4;27699:131;:::i;:::-;27691:139;;27418:419;;;:::o;27843:292::-;27983:34;27979:1;27971:6;27967:14;27960:58;28052:34;28047:2;28039:6;28035:15;28028:59;28121:6;28116:2;28108:6;28104:15;28097:31;27843:292;:::o;28141:366::-;28283:3;28304:67;28368:2;28363:3;28304:67;:::i;:::-;28297:74;;28380:93;28469:3;28380:93;:::i;:::-;28498:2;28493:3;28489:12;28482:19;;28141:366;;;:::o;28513:419::-;28679:4;28717:2;28706:9;28702:18;28694:26;;28766:9;28760:4;28756:20;28752:1;28741:9;28737:17;28730:47;28794:131;28920:4;28794:131;:::i;:::-;28786:139;;28513:419;;;:::o;28938:410::-;28978:7;29001:20;29019:1;29001:20;:::i;:::-;28996:25;;29035:20;29053:1;29035:20;:::i;:::-;29030:25;;29090:1;29087;29083:9;29112:30;29130:11;29112:30;:::i;:::-;29101:41;;29291:1;29282:7;29278:15;29275:1;29272:22;29252:1;29245:9;29225:83;29202:139;;29321:18;;:::i;:::-;29202:139;28986:362;28938:410;;;;:::o;29354:180::-;29402:77;29399:1;29392:88;29499:4;29496:1;29489:15;29523:4;29520:1;29513:15;29540:185;29580:1;29597:20;29615:1;29597:20;:::i;:::-;29592:25;;29631:20;29649:1;29631:20;:::i;:::-;29626:25;;29670:1;29660:35;;29675:18;;:::i;:::-;29660:35;29717:1;29714;29710:9;29705:14;;29540:185;;;;:::o;29731:180::-;29779:77;29776:1;29769:88;29876:4;29873:1;29866:15;29900:4;29897:1;29890:15;29917:180;29965:77;29962:1;29955:88;30062:4;30059:1;30052:15;30086:4;30083:1;30076:15;30103:85;30148:7;30177:5;30166:16;;30103:85;;;:::o;30194:60::-;30222:3;30243:5;30236:12;;30194:60;;;:::o;30260:158::-;30318:9;30351:61;30369:42;30378:32;30404:5;30378:32;:::i;:::-;30369:42;:::i;:::-;30351:61;:::i;:::-;30338:74;;30260:158;;;:::o;30424:147::-;30519:45;30558:5;30519:45;:::i;:::-;30514:3;30507:58;30424:147;;:::o;30577:114::-;30644:6;30678:5;30672:12;30662:22;;30577:114;;;:::o;30697:184::-;30796:11;30830:6;30825:3;30818:19;30870:4;30865:3;30861:14;30846:29;;30697:184;;;;:::o;30887:132::-;30954:4;30977:3;30969:11;;31007:4;31002:3;30998:14;30990:22;;30887:132;;;:::o;31025:108::-;31102:24;31120:5;31102:24;:::i;:::-;31097:3;31090:37;31025:108;;:::o;31139:179::-;31208:10;31229:46;31271:3;31263:6;31229:46;:::i;:::-;31307:4;31302:3;31298:14;31284:28;;31139:179;;;;:::o;31324:113::-;31394:4;31426;31421:3;31417:14;31409:22;;31324:113;;;:::o;31473:732::-;31592:3;31621:54;31669:5;31621:54;:::i;:::-;31691:86;31770:6;31765:3;31691:86;:::i;:::-;31684:93;;31801:56;31851:5;31801:56;:::i;:::-;31880:7;31911:1;31896:284;31921:6;31918:1;31915:13;31896:284;;;31997:6;31991:13;32024:63;32083:3;32068:13;32024:63;:::i;:::-;32017:70;;32110:60;32163:6;32110:60;:::i;:::-;32100:70;;31956:224;31943:1;31940;31936:9;31931:14;;31896:284;;;31900:14;32196:3;32189:10;;31597:608;;;31473:732;;;;:::o;32211:831::-;32474:4;32512:3;32501:9;32497:19;32489:27;;32526:71;32594:1;32583:9;32579:17;32570:6;32526:71;:::i;:::-;32607:80;32683:2;32672:9;32668:18;32659:6;32607:80;:::i;:::-;32734:9;32728:4;32724:20;32719:2;32708:9;32704:18;32697:48;32762:108;32865:4;32856:6;32762:108;:::i;:::-;32754:116;;32880:72;32948:2;32937:9;32933:18;32924:6;32880:72;:::i;:::-;32962:73;33030:3;33019:9;33015:19;33006:6;32962:73;:::i;:::-;32211:831;;;;;;;;:::o;33048:224::-;33188:34;33184:1;33176:6;33172:14;33165:58;33257:7;33252:2;33244:6;33240:15;33233:32;33048:224;:::o;33278:366::-;33420:3;33441:67;33505:2;33500:3;33441:67;:::i;:::-;33434:74;;33517:93;33606:3;33517:93;:::i;:::-;33635:2;33630:3;33626:12;33619:19;;33278:366;;;:::o;33650:419::-;33816:4;33854:2;33843:9;33839:18;33831:26;;33903:9;33897:4;33893:20;33889:1;33878:9;33874:17;33867:47;33931:131;34057:4;33931:131;:::i;:::-;33923:139;;33650:419;;;:::o;34075:222::-;34215:34;34211:1;34203:6;34199:14;34192:58;34284:5;34279:2;34271:6;34267:15;34260:30;34075:222;:::o;34303:366::-;34445:3;34466:67;34530:2;34525:3;34466:67;:::i;:::-;34459:74;;34542:93;34631:3;34542:93;:::i;:::-;34660:2;34655:3;34651:12;34644:19;;34303:366;;;:::o;34675:419::-;34841:4;34879:2;34868:9;34864:18;34856:26;;34928:9;34922:4;34918:20;34914:1;34903:9;34899:17;34892:47;34956:131;35082:4;34956:131;:::i;:::-;34948:139;;34675:419;;;:::o;35100:225::-;35240:34;35236:1;35228:6;35224:14;35217:58;35309:8;35304:2;35296:6;35292:15;35285:33;35100:225;:::o;35331:366::-;35473:3;35494:67;35558:2;35553:3;35494:67;:::i;:::-;35487:74;;35570:93;35659:3;35570:93;:::i;:::-;35688:2;35683:3;35679:12;35672:19;;35331:366;;;:::o;35703:419::-;35869:4;35907:2;35896:9;35892:18;35884:26;;35956:9;35950:4;35946:20;35942:1;35931:9;35927:17;35920:47;35984:131;36110:4;35984:131;:::i;:::-;35976:139;;35703:419;;;:::o;36128:194::-;36168:4;36188:20;36206:1;36188:20;:::i;:::-;36183:25;;36222:20;36240:1;36222:20;:::i;:::-;36217:25;;36266:1;36263;36259:9;36251:17;;36290:1;36284:4;36281:11;36278:37;;;36295:18;;:::i;:::-;36278:37;36128:194;;;;:::o

Swarm Source

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