ERC-20
Overview
Max Total Supply
100,000,000 BROOM
Holders
25
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
390,978.835282370366304437 BROOMValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
BroomstickRocket
Compiler Version
v0.8.12+commit.f00d7308
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-03-03 */ // SPDX-License-Identifier: MIT // Web: www.BroomstickRocket.com // Telegram: https://t.me/broomstickrocket // Russia says we can't use their rockets anymore // https://www.newsweek.com/russia-nasa-broomstick-rocket-engines-ukraine-1684522 // https://techcrunch.com/2022/03/03/russia-halts-rocket-engine-sales-to-u-s-suggests-flying-to-space-on-their-broomsticks/ // SPAXEX has awesome rockets. We decided to do our part too and help as much as we can. // Broomstick (BROOM) is a new rocket that wants to help us get to the moon and beyond. pragma solidity ^0.8.4; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev 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 `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @dev 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; } } // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } /** * @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() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(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"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } /** * dex pancake interface */ interface IPancakeFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IPancakeRouter { function WETH() external pure returns (address); function factory() external pure returns (address); } interface IPancakePair{ function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); } contract BroomstickRocket is Context, IERC20, IERC20Metadata,Ownable { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name = "Broomstick Rocket"; string private _symbol = "BROOM"; uint256 private _initSupply = 100000000*10**18; uint256 public dexTaxFee = 250; //take fee while sell token to dex address public taxAddress; address public immutable pairAddress; address public immutable routerAddress; mapping(address => bool) private _isExcludedFromFee; /** * @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() { _mint(msg.sender, _initSupply); taxAddress = payable(msg.sender); // Uniswap IPancakeRouter _router = IPancakeRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); pairAddress = IPancakeFactory(_router.factory()).createPair(address(this), _router.WETH()); // set the rest of the contract variables routerAddress = address(_router); _isExcludedFromFee[owner()] = true; } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function setTaxAddress(address _taxAddress) public onlyOwner { taxAddress = _taxAddress; } function setTax(uint256 _taxFee) public onlyOwner{ dexTaxFee = _taxFee; } function isExcludedFromFee(address account) public view returns (bool) { return _isExcludedFromFee[account]; } function amountForEth(uint256 ethAmount) public view returns(uint256 tokenAmount){ address _token0Address = IPancakePair(pairAddress).token0(); address wethAddress = IPancakeRouter(routerAddress).WETH(); (uint112 _reserve0,uint112 _reserve1,) = IPancakePair(pairAddress).getReserves(); uint256 _tokenAmount; uint256 _wethAmount; if(_token0Address==wethAddress){ _wethAmount = _reserve0; _tokenAmount = _reserve1; } else{ _wethAmount = _reserve1; _tokenAmount = _reserve0; } tokenAmount = ethAmount.mul(_tokenAmount).div(_wethAmount); } /** * @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; } /** * @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: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, 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}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), 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}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - 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) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(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) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance.sub(subtractedValue)); } return true; } /** * @dev Moves `amount` of tokens from `sender` to `recipient`. * * 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: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance.sub(amount); } bool takeFee = true; if (_isExcludedFromFee[sender]) { takeFee = false; } uint256 taxFee = amount.mul(dexTaxFee).div(10000); _balances[taxAddress] = _balances[taxAddress].add(taxFee); emit Transfer(sender, taxAddress, taxFee); amount = amount.sub(taxFee); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, 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 { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * 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); } }
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":"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":"uint256","name":"ethAmount","type":"uint256"}],"name":"amountForEth","outputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexTaxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","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":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"routerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_taxFee","type":"uint256"}],"name":"setTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_taxAddress","type":"address"}],"name":"setTaxAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60c06040526040518060400160405280601181526020017f42726f6f6d737469636b20526f636b6574000000000000000000000000000000815250600490805190602001906200005192919062000634565b506040518060400160405280600581526020017f42524f4f4d000000000000000000000000000000000000000000000000000000815250600590805190602001906200009f92919062000634565b506a52b7d2dcc80cd2e400000060065560fa600755348015620000c157600080fd5b50620000e2620000d66200038a60201b60201c565b6200039260201b60201c565b620000f6336006546200045660201b60201c565b33600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200019c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c291906200074e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200022a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025091906200074e565b6040518363ffffffff1660e01b81526004016200026f92919062000791565b6020604051808303816000875af11580156200028f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b591906200074e565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff168152505060016009600062000332620005f360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550506200096a565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620004c9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004c0906200081f565b60405180910390fd5b620004e5816003546200061c60201b6200117a1790919060201c565b6003819055506200054481600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200061c60201b6200117a1790919060201c565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620005e791906200085c565b60405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081836200062c9190620008a8565b905092915050565b828054620006429062000934565b90600052602060002090601f016020900481019282620006665760008555620006b2565b82601f106200068157805160ff1916838001178555620006b2565b82800160010185558215620006b2579182015b82811115620006b157825182559160200191906001019062000694565b5b509050620006c19190620006c5565b5090565b5b80821115620006e0576000816000905550600101620006c6565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200071682620006e9565b9050919050565b620007288162000709565b81146200073457600080fd5b50565b60008151905062000748816200071d565b92915050565b600060208284031215620007675762000766620006e4565b5b6000620007778482850162000737565b91505092915050565b6200078b8162000709565b82525050565b6000604082019050620007a8600083018562000780565b620007b7602083018462000780565b9392505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000807601f83620007be565b91506200081482620007cf565b602082019050919050565b600060208201905081810360008301526200083a81620007f8565b9050919050565b6000819050919050565b620008568162000841565b82525050565b60006020820190506200087360008301846200084b565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620008b58262000841565b9150620008c28362000841565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620008fa57620008f962000879565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200094d57607f821691505b6020821081141562000964576200096362000905565b5b50919050565b60805160a051612486620009a5600039600081816106f4015261098e0152600081816108fb01528181610a220152610eb801526124866000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c8063715018a6116100c3578063a9059cbb1161007c578063a9059cbb146103dd578063b7bda68f1461040d578063d9de569a1461042b578063dd62ed3e14610449578063ea2f0b3714610479578063f2fde38b1461049557610158565b8063715018a61461032d5780638da5cb5b1461033757806395d89b4114610355578063a1883d2614610373578063a457c2d71461038f578063a8b08982146103bf57610158565b80633268cc56116101155780633268cc56146102335780633950935114610251578063437823ec146102815780635342acb41461029d5780635d4d5965146102cd57806370a08231146102fd57610158565b806306fdde031461015d578063095ea7b31461017b57806318160ddd146101ab57806323b872dd146101c95780632e5bb6ff146101f9578063313ce56714610215575b600080fd5b6101656104b1565b60405161017291906119c0565b60405180910390f35b61019560048036038101906101909190611a7b565b610543565b6040516101a29190611ad6565b60405180910390f35b6101b3610561565b6040516101c09190611b00565b60405180910390f35b6101e360048036038101906101de9190611b1b565b61056b565b6040516101f09190611ad6565b60405180910390f35b610213600480360381019061020e9190611b6e565b610663565b005b61021d6106e9565b60405161022a9190611bb7565b60405180910390f35b61023b6106f2565b6040516102489190611be1565b60405180910390f35b61026b60048036038101906102669190611a7b565b610716565b6040516102789190611ad6565b60405180910390f35b61029b60048036038101906102969190611bfc565b6107c9565b005b6102b760048036038101906102b29190611bfc565b6108a0565b6040516102c49190611ad6565b60405180910390f35b6102e760048036038101906102e29190611b6e565b6108f6565b6040516102f49190611b00565b60405180910390f35b61031760048036038101906103129190611bfc565b610b6f565b6040516103249190611b00565b60405180910390f35b610335610bb8565b005b61033f610c40565b60405161034c9190611be1565b60405180910390f35b61035d610c69565b60405161036a91906119c0565b60405180910390f35b61038d60048036038101906103889190611bfc565b610cfb565b005b6103a960048036038101906103a49190611a7b565b610dbb565b6040516103b69190611ad6565b60405180910390f35b6103c7610eb6565b6040516103d49190611be1565b60405180910390f35b6103f760048036038101906103f29190611a7b565b610eda565b6040516104049190611ad6565b60405180910390f35b610415610ef8565b6040516104229190611be1565b60405180910390f35b610433610f1e565b6040516104409190611b00565b60405180910390f35b610463600480360381019061045e9190611c29565b610f24565b6040516104709190611b00565b60405180910390f35b610493600480360381019061048e9190611bfc565b610fab565b005b6104af60048036038101906104aa9190611bfc565b611082565b005b6060600480546104c090611c98565b80601f01602080910402602001604051908101604052809291908181526020018280546104ec90611c98565b80156105395780601f1061050e57610100808354040283529160200191610539565b820191906000526020600020905b81548152906001019060200180831161051c57829003601f168201915b5050505050905090565b6000610557610550611190565b8484611198565b6001905092915050565b6000600354905090565b6000610578848484611363565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105c3611190565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610643576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063a90611d3c565b60405180910390fd5b6106578561064f611190565b858403611198565b60019150509392505050565b61066b611190565b73ffffffffffffffffffffffffffffffffffffffff16610689610c40565b73ffffffffffffffffffffffffffffffffffffffff16146106df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d690611da8565b60405180910390fd5b8060078190555050565b60006012905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006107bf610723611190565b846107ba8560026000610734611190565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461117a90919063ffffffff16565b611198565b6001905092915050565b6107d1611190565b73ffffffffffffffffffffffffffffffffffffffff166107ef610c40565b73ffffffffffffffffffffffffffffffffffffffff1614610845576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c90611da8565b60405180910390fd5b6001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610964573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109889190611ddd565b905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109f7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1b9190611ddd565b90506000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610a8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaf9190611e8c565b50915091506000808473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415610b1657836dffffffffffffffffffffffffffff169050826dffffffffffffffffffffffffffff169150610b3d565b826dffffffffffffffffffffffffffff169050836dffffffffffffffffffffffffffff1691505b610b6281610b54848b61182190919063ffffffff16565b61183790919063ffffffff16565b9650505050505050919050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610bc0611190565b73ffffffffffffffffffffffffffffffffffffffff16610bde610c40565b73ffffffffffffffffffffffffffffffffffffffff1614610c34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2b90611da8565b60405180910390fd5b610c3e600061184d565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060058054610c7890611c98565b80601f0160208091040260200160405190810160405280929190818152602001828054610ca490611c98565b8015610cf15780601f10610cc657610100808354040283529160200191610cf1565b820191906000526020600020905b815481529060010190602001808311610cd457829003601f168201915b5050505050905090565b610d03611190565b73ffffffffffffffffffffffffffffffffffffffff16610d21610c40565b73ffffffffffffffffffffffffffffffffffffffff1614610d77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6e90611da8565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060026000610dca611190565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7e90611f51565b60405180910390fd5b610eab610e92611190565b85610ea6868561191190919063ffffffff16565b611198565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610eee610ee7611190565b8484611363565b6001905092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610fb3611190565b73ffffffffffffffffffffffffffffffffffffffff16610fd1610c40565b73ffffffffffffffffffffffffffffffffffffffff1614611027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101e90611da8565b60405180910390fd5b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61108a611190565b73ffffffffffffffffffffffffffffffffffffffff166110a8610c40565b73ffffffffffffffffffffffffffffffffffffffff16146110fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f590611da8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561116e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116590611fe3565b60405180910390fd5b6111778161184d565b50565b600081836111889190612032565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ff906120fa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126f9061218c565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113569190611b00565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156113d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ca9061221e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143a906122b0565b60405180910390fd5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156114ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c190612342565b60405180910390fd5b6114dd828261191190919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600060019050600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561157d57600090505b60006115a861271061159a6007548761182190919063ffffffff16565b61183790919063ffffffff16565b905061161e8160016000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461117a90919063ffffffff16565b60016000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516117029190611b00565b60405180910390a361171d818561191190919063ffffffff16565b935061177184600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461117a90919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516118119190611b00565b60405180910390a3505050505050565b6000818361182f9190612362565b905092915050565b6000818361184591906123eb565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000818361191f919061241c565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611961578082015181840152602081019050611946565b83811115611970576000848401525b50505050565b6000601f19601f8301169050919050565b600061199282611927565b61199c8185611932565b93506119ac818560208601611943565b6119b581611976565b840191505092915050565b600060208201905081810360008301526119da8184611987565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611a12826119e7565b9050919050565b611a2281611a07565b8114611a2d57600080fd5b50565b600081359050611a3f81611a19565b92915050565b6000819050919050565b611a5881611a45565b8114611a6357600080fd5b50565b600081359050611a7581611a4f565b92915050565b60008060408385031215611a9257611a916119e2565b5b6000611aa085828601611a30565b9250506020611ab185828601611a66565b9150509250929050565b60008115159050919050565b611ad081611abb565b82525050565b6000602082019050611aeb6000830184611ac7565b92915050565b611afa81611a45565b82525050565b6000602082019050611b156000830184611af1565b92915050565b600080600060608486031215611b3457611b336119e2565b5b6000611b4286828701611a30565b9350506020611b5386828701611a30565b9250506040611b6486828701611a66565b9150509250925092565b600060208284031215611b8457611b836119e2565b5b6000611b9284828501611a66565b91505092915050565b600060ff82169050919050565b611bb181611b9b565b82525050565b6000602082019050611bcc6000830184611ba8565b92915050565b611bdb81611a07565b82525050565b6000602082019050611bf66000830184611bd2565b92915050565b600060208284031215611c1257611c116119e2565b5b6000611c2084828501611a30565b91505092915050565b60008060408385031215611c4057611c3f6119e2565b5b6000611c4e85828601611a30565b9250506020611c5f85828601611a30565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611cb057607f821691505b60208210811415611cc457611cc3611c69565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000611d26602883611932565b9150611d3182611cca565b604082019050919050565b60006020820190508181036000830152611d5581611d19565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611d92602083611932565b9150611d9d82611d5c565b602082019050919050565b60006020820190508181036000830152611dc181611d85565b9050919050565b600081519050611dd781611a19565b92915050565b600060208284031215611df357611df26119e2565b5b6000611e0184828501611dc8565b91505092915050565b60006dffffffffffffffffffffffffffff82169050919050565b611e2d81611e0a565b8114611e3857600080fd5b50565b600081519050611e4a81611e24565b92915050565b600063ffffffff82169050919050565b611e6981611e50565b8114611e7457600080fd5b50565b600081519050611e8681611e60565b92915050565b600080600060608486031215611ea557611ea46119e2565b5b6000611eb386828701611e3b565b9350506020611ec486828701611e3b565b9250506040611ed586828701611e77565b9150509250925092565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611f3b602583611932565b9150611f4682611edf565b604082019050919050565b60006020820190508181036000830152611f6a81611f2e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611fcd602683611932565b9150611fd882611f71565b604082019050919050565b60006020820190508181036000830152611ffc81611fc0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061203d82611a45565b915061204883611a45565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561207d5761207c612003565b5b828201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006120e4602483611932565b91506120ef82612088565b604082019050919050565b60006020820190508181036000830152612113816120d7565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612176602283611932565b91506121818261211a565b604082019050919050565b600060208201905081810360008301526121a581612169565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612208602583611932565b9150612213826121ac565b604082019050919050565b60006020820190508181036000830152612237816121fb565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061229a602383611932565b91506122a58261223e565b604082019050919050565b600060208201905081810360008301526122c98161228d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061232c602683611932565b9150612337826122d0565b604082019050919050565b6000602082019050818103600083015261235b8161231f565b9050919050565b600061236d82611a45565b915061237883611a45565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156123b1576123b0612003565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006123f682611a45565b915061240183611a45565b925082612411576124106123bc565b5b828204905092915050565b600061242782611a45565b915061243283611a45565b92508282101561244557612444612003565b5b82820390509291505056fea26469706673582212202e23a8c6515ad1a30e0e74000c78c22f57cef654012311dfc90d3e8d0b3e774c64736f6c634300080c0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101585760003560e01c8063715018a6116100c3578063a9059cbb1161007c578063a9059cbb146103dd578063b7bda68f1461040d578063d9de569a1461042b578063dd62ed3e14610449578063ea2f0b3714610479578063f2fde38b1461049557610158565b8063715018a61461032d5780638da5cb5b1461033757806395d89b4114610355578063a1883d2614610373578063a457c2d71461038f578063a8b08982146103bf57610158565b80633268cc56116101155780633268cc56146102335780633950935114610251578063437823ec146102815780635342acb41461029d5780635d4d5965146102cd57806370a08231146102fd57610158565b806306fdde031461015d578063095ea7b31461017b57806318160ddd146101ab57806323b872dd146101c95780632e5bb6ff146101f9578063313ce56714610215575b600080fd5b6101656104b1565b60405161017291906119c0565b60405180910390f35b61019560048036038101906101909190611a7b565b610543565b6040516101a29190611ad6565b60405180910390f35b6101b3610561565b6040516101c09190611b00565b60405180910390f35b6101e360048036038101906101de9190611b1b565b61056b565b6040516101f09190611ad6565b60405180910390f35b610213600480360381019061020e9190611b6e565b610663565b005b61021d6106e9565b60405161022a9190611bb7565b60405180910390f35b61023b6106f2565b6040516102489190611be1565b60405180910390f35b61026b60048036038101906102669190611a7b565b610716565b6040516102789190611ad6565b60405180910390f35b61029b60048036038101906102969190611bfc565b6107c9565b005b6102b760048036038101906102b29190611bfc565b6108a0565b6040516102c49190611ad6565b60405180910390f35b6102e760048036038101906102e29190611b6e565b6108f6565b6040516102f49190611b00565b60405180910390f35b61031760048036038101906103129190611bfc565b610b6f565b6040516103249190611b00565b60405180910390f35b610335610bb8565b005b61033f610c40565b60405161034c9190611be1565b60405180910390f35b61035d610c69565b60405161036a91906119c0565b60405180910390f35b61038d60048036038101906103889190611bfc565b610cfb565b005b6103a960048036038101906103a49190611a7b565b610dbb565b6040516103b69190611ad6565b60405180910390f35b6103c7610eb6565b6040516103d49190611be1565b60405180910390f35b6103f760048036038101906103f29190611a7b565b610eda565b6040516104049190611ad6565b60405180910390f35b610415610ef8565b6040516104229190611be1565b60405180910390f35b610433610f1e565b6040516104409190611b00565b60405180910390f35b610463600480360381019061045e9190611c29565b610f24565b6040516104709190611b00565b60405180910390f35b610493600480360381019061048e9190611bfc565b610fab565b005b6104af60048036038101906104aa9190611bfc565b611082565b005b6060600480546104c090611c98565b80601f01602080910402602001604051908101604052809291908181526020018280546104ec90611c98565b80156105395780601f1061050e57610100808354040283529160200191610539565b820191906000526020600020905b81548152906001019060200180831161051c57829003601f168201915b5050505050905090565b6000610557610550611190565b8484611198565b6001905092915050565b6000600354905090565b6000610578848484611363565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105c3611190565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610643576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063a90611d3c565b60405180910390fd5b6106578561064f611190565b858403611198565b60019150509392505050565b61066b611190565b73ffffffffffffffffffffffffffffffffffffffff16610689610c40565b73ffffffffffffffffffffffffffffffffffffffff16146106df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d690611da8565b60405180910390fd5b8060078190555050565b60006012905090565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b60006107bf610723611190565b846107ba8560026000610734611190565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461117a90919063ffffffff16565b611198565b6001905092915050565b6107d1611190565b73ffffffffffffffffffffffffffffffffffffffff166107ef610c40565b73ffffffffffffffffffffffffffffffffffffffff1614610845576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c90611da8565b60405180910390fd5b6001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000807f0000000000000000000000008f1b08471c927d1325676d0550d197e4eadaf42373ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610964573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109889190611ddd565b905060007f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109f7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1b9190611ddd565b90506000807f0000000000000000000000008f1b08471c927d1325676d0550d197e4eadaf42373ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610a8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaf9190611e8c565b50915091506000808473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415610b1657836dffffffffffffffffffffffffffff169050826dffffffffffffffffffffffffffff169150610b3d565b826dffffffffffffffffffffffffffff169050836dffffffffffffffffffffffffffff1691505b610b6281610b54848b61182190919063ffffffff16565b61183790919063ffffffff16565b9650505050505050919050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610bc0611190565b73ffffffffffffffffffffffffffffffffffffffff16610bde610c40565b73ffffffffffffffffffffffffffffffffffffffff1614610c34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2b90611da8565b60405180910390fd5b610c3e600061184d565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060058054610c7890611c98565b80601f0160208091040260200160405190810160405280929190818152602001828054610ca490611c98565b8015610cf15780601f10610cc657610100808354040283529160200191610cf1565b820191906000526020600020905b815481529060010190602001808311610cd457829003601f168201915b5050505050905090565b610d03611190565b73ffffffffffffffffffffffffffffffffffffffff16610d21610c40565b73ffffffffffffffffffffffffffffffffffffffff1614610d77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6e90611da8565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060026000610dca611190565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7e90611f51565b60405180910390fd5b610eab610e92611190565b85610ea6868561191190919063ffffffff16565b611198565b600191505092915050565b7f0000000000000000000000008f1b08471c927d1325676d0550d197e4eadaf42381565b6000610eee610ee7611190565b8484611363565b6001905092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610fb3611190565b73ffffffffffffffffffffffffffffffffffffffff16610fd1610c40565b73ffffffffffffffffffffffffffffffffffffffff1614611027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101e90611da8565b60405180910390fd5b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61108a611190565b73ffffffffffffffffffffffffffffffffffffffff166110a8610c40565b73ffffffffffffffffffffffffffffffffffffffff16146110fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f590611da8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561116e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116590611fe3565b60405180910390fd5b6111778161184d565b50565b600081836111889190612032565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ff906120fa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126f9061218c565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113569190611b00565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156113d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ca9061221e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143a906122b0565b60405180910390fd5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156114ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c190612342565b60405180910390fd5b6114dd828261191190919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600060019050600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561157d57600090505b60006115a861271061159a6007548761182190919063ffffffff16565b61183790919063ffffffff16565b905061161e8160016000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461117a90919063ffffffff16565b60016000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516117029190611b00565b60405180910390a361171d818561191190919063ffffffff16565b935061177184600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461117a90919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516118119190611b00565b60405180910390a3505050505050565b6000818361182f9190612362565b905092915050565b6000818361184591906123eb565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000818361191f919061241c565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611961578082015181840152602081019050611946565b83811115611970576000848401525b50505050565b6000601f19601f8301169050919050565b600061199282611927565b61199c8185611932565b93506119ac818560208601611943565b6119b581611976565b840191505092915050565b600060208201905081810360008301526119da8184611987565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611a12826119e7565b9050919050565b611a2281611a07565b8114611a2d57600080fd5b50565b600081359050611a3f81611a19565b92915050565b6000819050919050565b611a5881611a45565b8114611a6357600080fd5b50565b600081359050611a7581611a4f565b92915050565b60008060408385031215611a9257611a916119e2565b5b6000611aa085828601611a30565b9250506020611ab185828601611a66565b9150509250929050565b60008115159050919050565b611ad081611abb565b82525050565b6000602082019050611aeb6000830184611ac7565b92915050565b611afa81611a45565b82525050565b6000602082019050611b156000830184611af1565b92915050565b600080600060608486031215611b3457611b336119e2565b5b6000611b4286828701611a30565b9350506020611b5386828701611a30565b9250506040611b6486828701611a66565b9150509250925092565b600060208284031215611b8457611b836119e2565b5b6000611b9284828501611a66565b91505092915050565b600060ff82169050919050565b611bb181611b9b565b82525050565b6000602082019050611bcc6000830184611ba8565b92915050565b611bdb81611a07565b82525050565b6000602082019050611bf66000830184611bd2565b92915050565b600060208284031215611c1257611c116119e2565b5b6000611c2084828501611a30565b91505092915050565b60008060408385031215611c4057611c3f6119e2565b5b6000611c4e85828601611a30565b9250506020611c5f85828601611a30565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611cb057607f821691505b60208210811415611cc457611cc3611c69565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000611d26602883611932565b9150611d3182611cca565b604082019050919050565b60006020820190508181036000830152611d5581611d19565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611d92602083611932565b9150611d9d82611d5c565b602082019050919050565b60006020820190508181036000830152611dc181611d85565b9050919050565b600081519050611dd781611a19565b92915050565b600060208284031215611df357611df26119e2565b5b6000611e0184828501611dc8565b91505092915050565b60006dffffffffffffffffffffffffffff82169050919050565b611e2d81611e0a565b8114611e3857600080fd5b50565b600081519050611e4a81611e24565b92915050565b600063ffffffff82169050919050565b611e6981611e50565b8114611e7457600080fd5b50565b600081519050611e8681611e60565b92915050565b600080600060608486031215611ea557611ea46119e2565b5b6000611eb386828701611e3b565b9350506020611ec486828701611e3b565b9250506040611ed586828701611e77565b9150509250925092565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611f3b602583611932565b9150611f4682611edf565b604082019050919050565b60006020820190508181036000830152611f6a81611f2e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611fcd602683611932565b9150611fd882611f71565b604082019050919050565b60006020820190508181036000830152611ffc81611fc0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061203d82611a45565b915061204883611a45565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561207d5761207c612003565b5b828201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006120e4602483611932565b91506120ef82612088565b604082019050919050565b60006020820190508181036000830152612113816120d7565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612176602283611932565b91506121818261211a565b604082019050919050565b600060208201905081810360008301526121a581612169565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612208602583611932565b9150612213826121ac565b604082019050919050565b60006020820190508181036000830152612237816121fb565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061229a602383611932565b91506122a58261223e565b604082019050919050565b600060208201905081810360008301526122c98161228d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061232c602683611932565b9150612337826122d0565b604082019050919050565b6000602082019050818103600083015261235b8161231f565b9050919050565b600061236d82611a45565b915061237883611a45565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156123b1576123b0612003565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006123f682611a45565b915061240183611a45565b925082612411576124106123bc565b5b828204905092915050565b600061242782611a45565b915061243283611a45565b92508282101561244557612444612003565b5b82820390509291505056fea26469706673582212202e23a8c6515ad1a30e0e74000c78c22f57cef654012311dfc90d3e8d0b3e774c64736f6c634300080c0033
Deployed Bytecode Sourcemap
14283:10632:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17149:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19316:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18269:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19967:492;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16152:87;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18111:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14863:38;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20868:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15795:111;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16251:124;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16387:692;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18440:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13066:94;;;:::i;:::-;;12415:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17368:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16036;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21589:416;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14820:36;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18780:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14788:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14716:30;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19018:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15914:110;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13315:192;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17149:100;17203:13;17236:5;17229:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17149:100;:::o;19316:169::-;19399:4;19416:39;19425:12;:10;:12::i;:::-;19439:7;19448:6;19416:8;:39::i;:::-;19473:4;19466:11;;19316:169;;;;:::o;18269:108::-;18330:7;18357:12;;18350:19;;18269:108;:::o;19967:492::-;20107:4;20124:36;20134:6;20142:9;20153:6;20124:9;:36::i;:::-;20173:24;20200:11;:19;20212:6;20200:19;;;;;;;;;;;;;;;:33;20220:12;:10;:12::i;:::-;20200:33;;;;;;;;;;;;;;;;20173:60;;20272:6;20252:16;:26;;20244:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;20359:57;20368:6;20376:12;:10;:12::i;:::-;20409:6;20390:16;:25;20359:8;:57::i;:::-;20447:4;20440:11;;;19967:492;;;;;:::o;16152:87::-;12646:12;:10;:12::i;:::-;12635:23;;:7;:5;:7::i;:::-;:23;;;12627:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16224:7:::1;16212:9;:19;;;;16152:87:::0;:::o;18111:93::-;18169:5;18194:2;18187:9;;18111:93;:::o;14863:38::-;;;:::o;20868:218::-;20956:4;20973:83;20982:12;:10;:12::i;:::-;20996:7;21005:50;21044:10;21005:11;:25;21017:12;:10;:12::i;:::-;21005:25;;;;;;;;;;;;;;;:34;21031:7;21005:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;20973:8;:83::i;:::-;21074:4;21067:11;;20868:218;;;;:::o;15795:111::-;12646:12;:10;:12::i;:::-;12635:23;;:7;:5;:7::i;:::-;:23;;;12627:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15894:4:::1;15864:18;:27;15883:7;15864:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;15795:111:::0;:::o;16251:124::-;16316:4;16340:18;:27;16359:7;16340:27;;;;;;;;;;;;;;;;;;;;;;;;;16333:34;;16251:124;;;:::o;16387:692::-;16448:19;16479:22;16517:11;16504:32;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16479:59;;16549:19;16586:13;16571:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16549:58;;16629:17;16647;16682:11;16669:37;;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16628:80;;;;;16719:20;16750:19;16799:11;16783:27;;:14;:27;;;16780:223;;;16840:9;16826:23;;;;16879:9;16864:24;;;;16780:223;;;16943:9;16929:23;;;;16982:9;16967:24;;;;16780:223;17027:44;17059:11;17027:27;17041:12;17027:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;17013:58;;16468:611;;;;;;16387:692;;;:::o;18440:127::-;18514:7;18541:9;:18;18551:7;18541:18;;;;;;;;;;;;;;;;18534:25;;18440:127;;;:::o;13066:94::-;12646:12;:10;:12::i;:::-;12635:23;;:7;:5;:7::i;:::-;:23;;;12627:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13131:21:::1;13149:1;13131:9;:21::i;:::-;13066:94::o:0;12415:87::-;12461:7;12488:6;;;;;;;;;;;12481:13;;12415:87;:::o;17368:104::-;17424:13;17457:7;17450:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17368:104;:::o;16036:::-;12646:12;:10;:12::i;:::-;12635:23;;:7;:5;:7::i;:::-;:23;;;12627:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16121:11:::1;16108:10;;:24;;;;;;;;;;;;;;;;;;16036:104:::0;:::o;21589:416::-;21682:4;21699:24;21726:11;:25;21738:12;:10;:12::i;:::-;21726:25;;;;;;;;;;;;;;;:34;21752:7;21726:34;;;;;;;;;;;;;;;;21699:61;;21799:15;21779:16;:35;;21771:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;21892:70;21901:12;:10;:12::i;:::-;21915:7;21924:37;21945:15;21924:16;:20;;:37;;;;:::i;:::-;21892:8;:70::i;:::-;21993:4;21986:11;;;21589:416;;;;:::o;14820:36::-;;;:::o;18780:175::-;18866:4;18883:42;18893:12;:10;:12::i;:::-;18907:9;18918:6;18883:9;:42::i;:::-;18943:4;18936:11;;18780:175;;;;:::o;14788:25::-;;;;;;;;;;;;;:::o;14716:30::-;;;;:::o;19018:151::-;19107:7;19134:11;:18;19146:5;19134:18;;;;;;;;;;;;;;;:27;19153:7;19134:27;;;;;;;;;;;;;;;;19127:34;;19018:151;;;;:::o;15914:110::-;12646:12;:10;:12::i;:::-;12635:23;;:7;:5;:7::i;:::-;:23;;;12627:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16011:5:::1;15981:18;:27;16000:7;15981:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;15914:110:::0;:::o;13315:192::-;12646:12;:10;:12::i;:::-;12635:23;;:7;:5;:7::i;:::-;:23;;;12627:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13424:1:::1;13404:22;;:8;:22;;;;13396:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;13480:19;13490:8;13480:9;:19::i;:::-;13315:192:::0;:::o;7340:98::-;7398:7;7429:1;7425;:5;;;;:::i;:::-;7418:12;;7340:98;;;;:::o;4423:::-;4476:7;4503:10;4496:17;;4423:98;:::o;24530:380::-;24683:1;24666:19;;:5;:19;;;;24658:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24764:1;24745:21;;:7;:21;;;;24737:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24848:6;24818:11;:18;24830:5;24818:18;;;;;;;;;;;;;;;:27;24837:7;24818:27;;;;;;;;;;;;;;;:36;;;;24886:7;24870:32;;24879:5;24870:32;;;24895:6;24870:32;;;;;;:::i;:::-;;;;;;;;24530:380;;;:::o;22495:1000::-;22653:1;22635:20;;:6;:20;;;;22627:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;22737:1;22716:23;;:9;:23;;;;22708:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;22792:21;22816:9;:17;22826:6;22816:17;;;;;;;;;;;;;;;;22792:41;;22869:6;22852:13;:23;;22844:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;22976:25;22994:6;22976:13;:17;;:25;;;;:::i;:::-;22956:9;:17;22966:6;22956:17;;;;;;;;;;;;;;;:45;;;;23033:12;23048:4;23033:19;;23067:18;:26;23086:6;23067:26;;;;;;;;;;;;;;;;;;;;;;;;;23063:74;;;23120:5;23110:15;;23063:74;23157:14;23174:32;23200:5;23174:21;23185:9;;23174:6;:10;;:21;;;;:::i;:::-;:25;;:32;;;;:::i;:::-;23157:49;;23241:33;23267:6;23241:9;:21;23251:10;;;;;;;;;;;23241:21;;;;;;;;;;;;;;;;:25;;:33;;;;:::i;:::-;23217:9;:21;23227:10;;;;;;;;;;;23217:21;;;;;;;;;;;;;;;:57;;;;23307:10;;;;;;;;;;;23290:36;;23299:6;23290:36;;;23319:6;23290:36;;;;;;:::i;:::-;;;;;;;;23346:18;23357:6;23346;:10;;:18;;;;:::i;:::-;23337:27;;23404:32;23429:6;23404:9;:20;23414:9;23404:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;23381:9;:20;23391:9;23381:20;;;;;;;;;;;;;;;:55;;;;23469:9;23452:35;;23461:6;23452:35;;;23480:6;23452:35;;;;;;:::i;:::-;;;;;;;;22616:879;;;22495:1000;;;:::o;8078:98::-;8136:7;8167:1;8163;:5;;;;:::i;:::-;8156:12;;8078:98;;;;:::o;8477:::-;8535:7;8566:1;8562;:5;;;;:::i;:::-;8555:12;;8477:98;;;;:::o;13515:173::-;13571:16;13590:6;;;;;;;;;;;13571:25;;13616:8;13607:6;;:17;;;;;;;;;;;;;;;;;;13671:8;13640:40;;13661:8;13640:40;;;;;;;;;;;;13560:128;13515:173;:::o;7721:98::-;7779:7;7810:1;7806;:5;;;;:::i;:::-;7799:12;;7721:98;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:619::-;3923:6;3931;3939;3988:2;3976:9;3967:7;3963:23;3959:32;3956:119;;;3994:79;;:::i;:::-;3956:119;4114:1;4139:53;4184:7;4175:6;4164:9;4160:22;4139:53;:::i;:::-;4129:63;;4085:117;4241:2;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4212:118;4369:2;4395:53;4440:7;4431:6;4420:9;4416:22;4395:53;:::i;:::-;4385:63;;4340:118;3846:619;;;;;:::o;4471:329::-;4530:6;4579:2;4567:9;4558:7;4554:23;4550:32;4547:119;;;4585:79;;:::i;:::-;4547:119;4705:1;4730:53;4775:7;4766:6;4755:9;4751:22;4730:53;:::i;:::-;4720:63;;4676:117;4471:329;;;;:::o;4806:86::-;4841:7;4881:4;4874:5;4870:16;4859:27;;4806:86;;;:::o;4898:112::-;4981:22;4997:5;4981:22;:::i;:::-;4976:3;4969:35;4898:112;;:::o;5016:214::-;5105:4;5143:2;5132:9;5128:18;5120:26;;5156:67;5220:1;5209:9;5205:17;5196:6;5156:67;:::i;:::-;5016:214;;;;:::o;5236:118::-;5323:24;5341:5;5323:24;:::i;:::-;5318:3;5311:37;5236:118;;:::o;5360:222::-;5453:4;5491:2;5480:9;5476:18;5468:26;;5504:71;5572:1;5561:9;5557:17;5548:6;5504:71;:::i;:::-;5360:222;;;;:::o;5588:329::-;5647:6;5696:2;5684:9;5675:7;5671:23;5667:32;5664:119;;;5702:79;;:::i;:::-;5664:119;5822:1;5847:53;5892:7;5883:6;5872:9;5868:22;5847:53;:::i;:::-;5837:63;;5793:117;5588:329;;;;:::o;5923:474::-;5991:6;5999;6048:2;6036:9;6027:7;6023:23;6019:32;6016:119;;;6054:79;;:::i;:::-;6016:119;6174:1;6199:53;6244:7;6235:6;6224:9;6220:22;6199:53;:::i;:::-;6189:63;;6145:117;6301:2;6327:53;6372:7;6363:6;6352:9;6348:22;6327:53;:::i;:::-;6317:63;;6272:118;5923:474;;;;;:::o;6403:180::-;6451:77;6448:1;6441:88;6548:4;6545:1;6538:15;6572:4;6569:1;6562:15;6589:320;6633:6;6670:1;6664:4;6660:12;6650:22;;6717:1;6711:4;6707:12;6738:18;6728:81;;6794:4;6786:6;6782:17;6772:27;;6728:81;6856:2;6848:6;6845:14;6825:18;6822:38;6819:84;;;6875:18;;:::i;:::-;6819:84;6640:269;6589:320;;;:::o;6915:227::-;7055:34;7051:1;7043:6;7039:14;7032:58;7124:10;7119:2;7111:6;7107:15;7100:35;6915:227;:::o;7148:366::-;7290:3;7311:67;7375:2;7370:3;7311:67;:::i;:::-;7304:74;;7387:93;7476:3;7387:93;:::i;:::-;7505:2;7500:3;7496:12;7489:19;;7148:366;;;:::o;7520:419::-;7686:4;7724:2;7713:9;7709:18;7701:26;;7773:9;7767:4;7763:20;7759:1;7748:9;7744:17;7737:47;7801:131;7927:4;7801:131;:::i;:::-;7793:139;;7520:419;;;:::o;7945:182::-;8085:34;8081:1;8073:6;8069:14;8062:58;7945:182;:::o;8133:366::-;8275:3;8296:67;8360:2;8355:3;8296:67;:::i;:::-;8289:74;;8372:93;8461:3;8372:93;:::i;:::-;8490:2;8485:3;8481:12;8474:19;;8133:366;;;:::o;8505:419::-;8671:4;8709:2;8698:9;8694:18;8686:26;;8758:9;8752:4;8748:20;8744:1;8733:9;8729:17;8722:47;8786:131;8912:4;8786:131;:::i;:::-;8778:139;;8505:419;;;:::o;8930:143::-;8987:5;9018:6;9012:13;9003:22;;9034:33;9061:5;9034:33;:::i;:::-;8930:143;;;;:::o;9079:351::-;9149:6;9198:2;9186:9;9177:7;9173:23;9169:32;9166:119;;;9204:79;;:::i;:::-;9166:119;9324:1;9349:64;9405:7;9396:6;9385:9;9381:22;9349:64;:::i;:::-;9339:74;;9295:128;9079:351;;;;:::o;9436:114::-;9473:7;9513:30;9506:5;9502:42;9491:53;;9436:114;;;:::o;9556:122::-;9629:24;9647:5;9629:24;:::i;:::-;9622:5;9619:35;9609:63;;9668:1;9665;9658:12;9609:63;9556:122;:::o;9684:143::-;9741:5;9772:6;9766:13;9757:22;;9788:33;9815:5;9788:33;:::i;:::-;9684:143;;;;:::o;9833:93::-;9869:7;9909:10;9902:5;9898:22;9887:33;;9833:93;;;:::o;9932:120::-;10004:23;10021:5;10004:23;:::i;:::-;9997:5;9994:34;9984:62;;10042:1;10039;10032:12;9984:62;9932:120;:::o;10058:141::-;10114:5;10145:6;10139:13;10130:22;;10161:32;10187:5;10161:32;:::i;:::-;10058:141;;;;:::o;10205:661::-;10292:6;10300;10308;10357:2;10345:9;10336:7;10332:23;10328:32;10325:119;;;10363:79;;:::i;:::-;10325:119;10483:1;10508:64;10564:7;10555:6;10544:9;10540:22;10508:64;:::i;:::-;10498:74;;10454:128;10621:2;10647:64;10703:7;10694:6;10683:9;10679:22;10647:64;:::i;:::-;10637:74;;10592:129;10760:2;10786:63;10841:7;10832:6;10821:9;10817:22;10786:63;:::i;:::-;10776:73;;10731:128;10205:661;;;;;:::o;10872:224::-;11012:34;11008:1;11000:6;10996:14;10989:58;11081:7;11076:2;11068:6;11064:15;11057:32;10872:224;:::o;11102:366::-;11244:3;11265:67;11329:2;11324:3;11265:67;:::i;:::-;11258:74;;11341:93;11430:3;11341:93;:::i;:::-;11459:2;11454:3;11450:12;11443:19;;11102:366;;;:::o;11474:419::-;11640:4;11678:2;11667:9;11663:18;11655:26;;11727:9;11721:4;11717:20;11713:1;11702:9;11698:17;11691:47;11755:131;11881:4;11755:131;:::i;:::-;11747:139;;11474:419;;;:::o;11899:225::-;12039:34;12035:1;12027:6;12023:14;12016:58;12108:8;12103:2;12095:6;12091:15;12084:33;11899:225;:::o;12130:366::-;12272:3;12293:67;12357:2;12352:3;12293:67;:::i;:::-;12286:74;;12369:93;12458:3;12369:93;:::i;:::-;12487:2;12482:3;12478:12;12471:19;;12130:366;;;:::o;12502:419::-;12668:4;12706:2;12695:9;12691:18;12683:26;;12755:9;12749:4;12745:20;12741:1;12730:9;12726:17;12719:47;12783:131;12909:4;12783:131;:::i;:::-;12775:139;;12502:419;;;:::o;12927:180::-;12975:77;12972:1;12965:88;13072:4;13069:1;13062:15;13096:4;13093:1;13086:15;13113:305;13153:3;13172:20;13190:1;13172:20;:::i;:::-;13167:25;;13206:20;13224:1;13206:20;:::i;:::-;13201:25;;13360:1;13292:66;13288:74;13285:1;13282:81;13279:107;;;13366:18;;:::i;:::-;13279:107;13410:1;13407;13403:9;13396:16;;13113:305;;;;:::o;13424:223::-;13564:34;13560:1;13552:6;13548:14;13541:58;13633:6;13628:2;13620:6;13616:15;13609:31;13424:223;:::o;13653:366::-;13795:3;13816:67;13880:2;13875:3;13816:67;:::i;:::-;13809:74;;13892:93;13981:3;13892:93;:::i;:::-;14010:2;14005:3;14001:12;13994:19;;13653:366;;;:::o;14025:419::-;14191:4;14229:2;14218:9;14214:18;14206:26;;14278:9;14272:4;14268:20;14264:1;14253:9;14249:17;14242:47;14306:131;14432:4;14306:131;:::i;:::-;14298:139;;14025:419;;;:::o;14450:221::-;14590:34;14586:1;14578:6;14574:14;14567:58;14659:4;14654:2;14646:6;14642:15;14635:29;14450:221;:::o;14677:366::-;14819:3;14840:67;14904:2;14899:3;14840:67;:::i;:::-;14833:74;;14916:93;15005:3;14916:93;:::i;:::-;15034:2;15029:3;15025:12;15018:19;;14677:366;;;:::o;15049:419::-;15215:4;15253:2;15242:9;15238:18;15230:26;;15302:9;15296:4;15292:20;15288:1;15277:9;15273:17;15266:47;15330:131;15456:4;15330:131;:::i;:::-;15322:139;;15049:419;;;:::o;15474:224::-;15614:34;15610:1;15602:6;15598:14;15591:58;15683:7;15678:2;15670:6;15666:15;15659:32;15474:224;:::o;15704:366::-;15846:3;15867:67;15931:2;15926:3;15867:67;:::i;:::-;15860:74;;15943:93;16032:3;15943:93;:::i;:::-;16061:2;16056:3;16052:12;16045:19;;15704:366;;;:::o;16076:419::-;16242:4;16280:2;16269:9;16265:18;16257:26;;16329:9;16323:4;16319:20;16315:1;16304:9;16300:17;16293:47;16357:131;16483:4;16357:131;:::i;:::-;16349:139;;16076:419;;;:::o;16501:222::-;16641:34;16637:1;16629:6;16625:14;16618:58;16710:5;16705:2;16697:6;16693:15;16686:30;16501:222;:::o;16729:366::-;16871:3;16892:67;16956:2;16951:3;16892:67;:::i;:::-;16885:74;;16968:93;17057:3;16968:93;:::i;:::-;17086:2;17081:3;17077:12;17070:19;;16729:366;;;:::o;17101:419::-;17267:4;17305:2;17294:9;17290:18;17282:26;;17354:9;17348:4;17344:20;17340:1;17329:9;17325:17;17318:47;17382:131;17508:4;17382:131;:::i;:::-;17374:139;;17101:419;;;:::o;17526:225::-;17666:34;17662:1;17654:6;17650:14;17643:58;17735:8;17730:2;17722:6;17718:15;17711:33;17526:225;:::o;17757:366::-;17899:3;17920:67;17984:2;17979:3;17920:67;:::i;:::-;17913:74;;17996:93;18085:3;17996:93;:::i;:::-;18114:2;18109:3;18105:12;18098:19;;17757:366;;;:::o;18129:419::-;18295:4;18333:2;18322:9;18318:18;18310:26;;18382:9;18376:4;18372:20;18368:1;18357:9;18353:17;18346:47;18410:131;18536:4;18410:131;:::i;:::-;18402:139;;18129:419;;;:::o;18554:348::-;18594:7;18617:20;18635:1;18617:20;:::i;:::-;18612:25;;18651:20;18669:1;18651:20;:::i;:::-;18646:25;;18839:1;18771:66;18767:74;18764:1;18761:81;18756:1;18749:9;18742:17;18738:105;18735:131;;;18846:18;;:::i;:::-;18735:131;18894:1;18891;18887:9;18876:20;;18554:348;;;;:::o;18908:180::-;18956:77;18953:1;18946:88;19053:4;19050:1;19043:15;19077:4;19074:1;19067:15;19094:185;19134:1;19151:20;19169:1;19151:20;:::i;:::-;19146:25;;19185:20;19203:1;19185:20;:::i;:::-;19180:25;;19224:1;19214:35;;19229:18;;:::i;:::-;19214:35;19271:1;19268;19264:9;19259:14;;19094:185;;;;:::o;19285:191::-;19325:4;19345:20;19363:1;19345:20;:::i;:::-;19340:25;;19379:20;19397:1;19379:20;:::i;:::-;19374:25;;19418:1;19415;19412:8;19409:34;;;19423:18;;:::i;:::-;19409:34;19468:1;19465;19461:9;19453:17;;19285:191;;;;:::o
Swarm Source
ipfs://2e23a8c6515ad1a30e0e74000c78c22f57cef654012311dfc90d3e8d0b3e774c
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.