Feature Tip: Add private address tag to any address under My Name Tag !
Overview
Max Total Supply
86,425,414,361.11090665 SHIKO
Holders
86 (0.00%)
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
43,244,138.629520925 SHIKOValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
SHIKO
Compiler Version
v0.8.2+commit.661d1103
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-06-27 */ pragma solidity ^0.8.2; // SPDX-License-Identifier: MIT abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } /** * @dev Interface of the BEP20 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 Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @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) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @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 sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @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) { // 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 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts 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) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts 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) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts 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 mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message 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, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } /** * @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. */ 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 () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view 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 { emit OwnershipTransferred(_owner, address(0)); _owner = 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"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } contract SHIKO is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcluded; mapping (address => bool) private _isCharity; address[] private _excluded; string private constant _NAME = 'Shikoku Inu'; string private constant _SYMBOL = 'SHIKO'; uint8 private constant _DECIMALS = 9; uint256 private constant _MAX = ~uint256(0); uint256 private constant _DECIMALFACTOR = 10 ** uint256(_DECIMALS); uint256 private constant _GRANULARITY = 100; uint256 private _tTotal = 100000000000 * _DECIMALFACTOR; uint256 private _rTotal = (_MAX - (_MAX % _tTotal)); uint256 private _tFeeTotal; uint256 private _tBurnTotal; uint256 private _tCharityTotal; uint256 private _TAX_FEE = 200; // 2% back to the holders uint256 private _BURN_FEE = 200; // 2% will be burned uint256 private _CHARITY_FEE = 0; uint256 private constant _MAX_TX_SIZE = 100000000000 * _DECIMALFACTOR; // Track original fees to bypass fees for charity account uint256 private ORIG_TAX_FEE = _TAX_FEE; uint256 private ORIG_BURN_FEE = _BURN_FEE; uint256 private ORIG_CHARITY_FEE = _CHARITY_FEE; constructor () { _rOwned[_msgSender()] = _rTotal; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public pure returns (string memory) { return _NAME; } function symbol() public pure returns (string memory) { return _SYMBOL; } function decimals() public pure returns (uint8) { return _DECIMALS; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "BEP20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "BEP20: decreased allowance below zero")); return true; } function isExcluded(address account) public view returns (bool) { return _isExcluded[account]; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function totalBurn() public view returns (uint256) { return _tBurnTotal; } function deliver(uint256 tAmount) public { address sender = _msgSender(); require(!_isExcluded[sender], "Excluded addresses cannot call this function"); (uint256 rAmount,,,,,,) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rTotal = _rTotal.sub(rAmount); _tFeeTotal = _tFeeTotal.add(tAmount); } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferFee) { (uint256 rAmount,,,,,,) = _getValues(tAmount); return rAmount; } else { (,uint256 rTransferAmount,,,,,) = _getValues(tAmount); return rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function excludeAccount(address account) external onlyOwner() { require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.'); require(!_isExcluded[account], "Account is already excluded"); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeAccount(address account) external onlyOwner() { require(_isExcluded[account], "Account is already excluded"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "BEP20: approve from the zero address"); require(spender != address(0), "BEP20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address sender, address recipient, uint256 amount) private { require(sender != address(0), "BEP20: transfer from the zero address"); require(recipient != address(0), "BEP20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); // Remove fees for transfers to and from charity account or to excluded account bool takeFee = true; if (_isCharity[sender] || _isCharity[recipient] || _isExcluded[recipient]) { takeFee = false; } if (!takeFee) removeAllFee(); if (sender != owner() && recipient != owner()) require(amount <= _MAX_TX_SIZE, "Transfer amount exceeds the maxTxAmount."); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if (!takeFee) restoreAllFee(); } function _transferStandard(address sender, address recipient, uint256 tAmount) private { uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tCharity) = _getValues(tAmount); uint256 rBurn = tBurn.mul(currentRate); uint256 rCharity = tCharity.mul(currentRate); _standardTransferContent(sender, recipient, rAmount, rTransferAmount); //_sendToCharity(tCharity, sender); _reflectFee(rFee, rBurn, rCharity, tFee, tBurn, tCharity); emit Transfer(sender, recipient, tTransferAmount); } function _standardTransferContent(address sender, address recipient, uint256 rAmount, uint256 rTransferAmount) private { _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); } function _transferToExcluded(address sender, address recipient, uint256 tAmount) private { uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tCharity) = _getValues(tAmount); uint256 rBurn = tBurn.mul(currentRate); uint256 rCharity = tCharity.mul(currentRate); _excludedFromTransferContent(sender, recipient, tTransferAmount, rAmount, rTransferAmount); //_sendToCharity(tCharity, sender); _reflectFee(rFee, rBurn, rCharity, tFee, tBurn, tCharity); emit Transfer(sender, recipient, tTransferAmount); } function _excludedFromTransferContent(address sender, address recipient, uint256 tTransferAmount, uint256 rAmount, uint256 rTransferAmount) private { _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); } function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private { uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tCharity) = _getValues(tAmount); uint256 rBurn = tBurn.mul(currentRate); uint256 rCharity = tCharity.mul(currentRate); _excludedToTransferContent(sender, recipient, tAmount, rAmount, rTransferAmount); //_sendToCharity(tCharity, sender); _reflectFee(rFee, rBurn, rCharity, tFee, tBurn, tCharity); emit Transfer(sender, recipient, tTransferAmount); } function _excludedToTransferContent(address sender, address recipient, uint256 tAmount, uint256 rAmount, uint256 rTransferAmount) private { _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); } function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private { uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tCharity) = _getValues(tAmount); uint256 rBurn = tBurn.mul(currentRate); uint256 rCharity = tCharity.mul(currentRate); _bothTransferContent(sender, recipient, tAmount, rAmount, tTransferAmount, rTransferAmount); //_sendToCharity(tCharity, sender); _reflectFee(rFee, rBurn, rCharity, tFee, tBurn, tCharity); emit Transfer(sender, recipient, tTransferAmount); } function _bothTransferContent(address sender, address recipient, uint256 tAmount, uint256 rAmount, uint256 tTransferAmount, uint256 rTransferAmount) private { _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); } function _reflectFee(uint256 rFee, uint256 rBurn, uint256 rCharity, uint256 tFee, uint256 tBurn, uint256 tCharity) private { _rTotal = _rTotal.sub(rFee).sub(rBurn).sub(rCharity); _tFeeTotal = _tFeeTotal.add(tFee); _tBurnTotal = _tBurnTotal.add(tBurn); _tCharityTotal = _tCharityTotal.add(tCharity); _tTotal = _tTotal.sub(tBurn); } function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tFee, uint256 tBurn, uint256 tCharity) = _getTBasics(tAmount, _TAX_FEE, _BURN_FEE, _CHARITY_FEE); uint256 tTransferAmount = getTTransferAmount(tAmount, tFee, tBurn, tCharity); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rFee) = _getRBasics(tAmount, tFee, currentRate); uint256 rTransferAmount = _getRTransferAmount(rAmount, rFee, tBurn, tCharity, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tBurn, tCharity); } function _getTBasics(uint256 tAmount, uint256 taxFee, uint256 burnFee, uint256 charityFee) private pure returns (uint256, uint256, uint256) { uint256 tFee = ((tAmount.mul(taxFee)).div(_GRANULARITY)).div(100); uint256 tBurn = ((tAmount.mul(burnFee)).div(_GRANULARITY)).div(100); uint256 tCharity = ((tAmount.mul(charityFee)).div(_GRANULARITY)).div(100); return (tFee, tBurn, tCharity); } function getTTransferAmount(uint256 tAmount, uint256 tFee, uint256 tBurn, uint256 tCharity) private pure returns (uint256) { return tAmount.sub(tFee).sub(tBurn).sub(tCharity); } function _getRBasics(uint256 tAmount, uint256 tFee, uint256 currentRate) private pure returns (uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); return (rAmount, rFee); } function _getRTransferAmount(uint256 rAmount, uint256 rFee, uint256 tBurn, uint256 tCharity, uint256 currentRate) private pure returns (uint256) { uint256 rBurn = tBurn.mul(currentRate); uint256 rCharity = tCharity.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rBurn).sub(rCharity); return rTransferAmount; } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function removeAllFee() private { if(_TAX_FEE == 0 && _BURN_FEE == 0 && _CHARITY_FEE == 0) return; ORIG_TAX_FEE = _TAX_FEE; ORIG_BURN_FEE = _BURN_FEE; ORIG_CHARITY_FEE = _CHARITY_FEE; _TAX_FEE = 0; _BURN_FEE = 0; _CHARITY_FEE = 0; } function restoreAllFee() private { _TAX_FEE = ORIG_TAX_FEE; _BURN_FEE = ORIG_BURN_FEE; _CHARITY_FEE = ORIG_CHARITY_FEE; } function _getTaxFee() public view returns(uint256) { return _TAX_FEE; } function _getMaxTxAmount() private pure returns(uint256) { return _MAX_TX_SIZE; } }
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":[],"name":"_getTaxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","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":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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
6080604052600960ff16600a62000017919062000294565b64174876e800620000299190620003d1565b6007556007546000196200003e919062000477565b6000196200004d919062000432565b60085560c8600c5560c8600d556000600e55600c54600f55600d54601055600e546011553480156200007e57600080fd5b506000620000916200020360201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060085460016000620001466200020360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620001946200020360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600754604051620001f591906200021c565b60405180910390a36200051a565b600033905090565b62000216816200046d565b82525050565b60006020820190506200023360008301846200020b565b92915050565b6000808291508390505b60018511156200028b57808604811115620002635762000262620004af565b5b6001851615620002735780820291505b808102905062000283856200050d565b945062000243565b94509492505050565b6000620002a1826200046d565b9150620002ae836200046d565b9250620002dd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620002e5565b905092915050565b600082620002f75760019050620003ca565b81620003075760009050620003ca565b81600181146200032057600281146200032b5762000361565b6001915050620003ca565b60ff84111562000340576200033f620004af565b5b8360020a9150848211156200035a5762000359620004af565b5b50620003ca565b5060208310610133831016604e8410600b84101617156200039b5782820a905083811115620003955762000394620004af565b5b620003ca565b620003aa848484600162000239565b92509050818404811115620003c457620003c3620004af565b5b81810290505b9392505050565b6000620003de826200046d565b9150620003eb836200046d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620004275762000426620004af565b5b828202905092915050565b60006200043f826200046d565b91506200044c836200046d565b925082821015620004625762000461620004af565b5b828203905092915050565b6000819050919050565b600062000484826200046d565b915062000491836200046d565b925082620004a457620004a3620004de565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008160011c9050919050565b61419b806200052a6000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80634549b039116100c3578063a9059cbb1161007c578063a9059cbb146103b8578063cba0e996146103e8578063dd62ed3e14610418578063f2cc0c1814610448578063f2fde38b14610464578063f84354f1146104805761014d565b80634549b039146102e257806370a0823114610312578063715018a6146103425780638da5cb5b1461034c57806395d89b411461036a578063a457c2d7146103885761014d565b80632d838119116101155780632d8381191461020c5780632fbff0301461023c578063313ce5671461025a57806339509351146102785780633bd5d173146102a85780633c9f861d146102c45761014d565b806306fdde0314610152578063095ea7b31461017057806313114a9d146101a057806318160ddd146101be57806323b872dd146101dc575b600080fd5b61015a61049c565b60405161016791906136a3565b60405180910390f35b61018a6004803603810190610185919061334a565b6104d9565b6040516101979190613688565b60405180910390f35b6101a86104f7565b6040516101b591906138a5565b60405180910390f35b6101c6610501565b6040516101d391906138a5565b60405180910390f35b6101f660048036038101906101f191906132fb565b61050b565b6040516102039190613688565b60405180910390f35b61022660048036038101906102219190613386565b6105e4565b60405161023391906138a5565b60405180910390f35b610244610652565b60405161025191906138a5565b60405180910390f35b61026261065c565b60405161026f91906138c0565b60405180910390f35b610292600480360381019061028d919061334a565b610665565b60405161029f9190613688565b60405180910390f35b6102c260048036038101906102bd9190613386565b610718565b005b6102cc610894565b6040516102d991906138a5565b60405180910390f35b6102fc60048036038101906102f791906133af565b61089e565b60405161030991906138a5565b60405180910390f35b61032c60048036038101906103279190613296565b610924565b60405161033991906138a5565b60405180910390f35b61034a610a0f565b005b610354610b62565b604051610361919061366d565b60405180910390f35b610372610b8b565b60405161037f91906136a3565b60405180910390f35b6103a2600480360381019061039d919061334a565b610bc8565b6040516103af9190613688565b60405180910390f35b6103d260048036038101906103cd919061334a565b610c95565b6040516103df9190613688565b60405180910390f35b61040260048036038101906103fd9190613296565b610cb3565b60405161040f9190613688565b60405180910390f35b610432600480360381019061042d91906132bf565b610d09565b60405161043f91906138a5565b60405180910390f35b610462600480360381019061045d9190613296565b610d90565b005b61047e60048036038101906104799190613296565b6110c7565b005b61049a60048036038101906104959190613296565b611289565b005b60606040518060400160405280600b81526020017f5368696b6f6b7520496e75000000000000000000000000000000000000000000815250905090565b60006104ed6104e6611670565b8484611678565b6001905092915050565b6000600954905090565b6000600754905090565b6000610518848484611843565b6105d984610524611670565b6105d48560405180606001604052806028815260200161411960289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061058a611670565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e5b9092919063ffffffff16565b611678565b600190509392505050565b600060085482111561062b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062290613705565b60405180910390fd5b6000610635611ebf565b905061064a8184611eea90919063ffffffff16565b915050919050565b6000600c54905090565b60006009905090565b600061070e610672611670565b846107098560036000610683611670565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f3490919063ffffffff16565b611678565b6001905092915050565b6000610722611670565b9050600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156107b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a890613865565b60405180910390fd5b60006107bc83611f92565b505050505050905061081681600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202090919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061086e8160085461202090919063ffffffff16565b60088190555061088983600954611f3490919063ffffffff16565b600981905550505050565b6000600a54905090565b60006007548311156108e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108dc90613785565b60405180910390fd5b816109065760006108f584611f92565b50505050505090508091505061091e565b600061091184611f92565b5050505050915050809150505b92915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156109bf57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610a0a565b610a07600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546105e4565b90505b919050565b610a17611670565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9b906137e5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f5348494b4f000000000000000000000000000000000000000000000000000000815250905090565b6000610c8b610bd5611670565b84610c86856040518060600160405280602581526020016141416025913960036000610bff611670565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e5b9092919063ffffffff16565b611678565b6001905092915050565b6000610ca9610ca2611670565b8484611843565b6001905092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610d98611670565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1c906137e5565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9f90613845565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610f35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2c90613765565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561100957610fc5600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546105e4565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6110cf611670565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461115c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611153906137e5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156111cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c390613725565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611291611670565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461131e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611315906137e5565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166113aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a190613765565b60405180910390fd5b60005b60068054905081101561166c578173ffffffffffffffffffffffffffffffffffffffff166006828154811061140b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561165957600660016006805490506114669190613b49565b8154811061149d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660068281548110611502577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600680548061161f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561166c565b808061166490613c05565b9150506113ad565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116df906136e5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174f90613885565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161183691906138a5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156118b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118aa906136c5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611923576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191a90613825565b60405180910390fd5b60008111611966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195d90613805565b60405180910390fd5b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611a0d5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611a615750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611a6b57600090505b80611a7957611a7861206a565b5b611a81610b62565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611aef5750611abf610b62565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611b5857600960ff16600a611b0591906139d1565b64174876e800611b159190613aef565b821115611b57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4e906137a5565b60405180910390fd5b5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611bfb5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c1057611c0b8484846120cc565b611e47565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611cb35750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611cc857611cc38484846121b7565b611e46565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611d6c5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d8157611d7c8484846122a2565b611e45565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611e235750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611e3857611e3384848461238c565b611e44565b611e438484846122a2565b5b5b5b5b80611e5557611e54612478565b5b50505050565b6000838311158290611ea3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9a91906136a3565b60405180910390fd5b5060008385611eb29190613b49565b9050809150509392505050565b6000806000611ecc612495565b91509150611ee38183611eea90919063ffffffff16565b9250505090565b6000611f2c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506127e0565b905092915050565b6000808284611f4391906138f7565b905083811015611f88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7f90613745565b60405180910390fd5b8091505092915050565b600080600080600080600080600080611fb38b600c54600d54600e54612843565b9250925092506000611fc78c858585612914565b90506000611fd3611ebf565b9050600080611fe38f8885612957565b915091506000611ff68383898988612998565b9050828183878b8b8b9e509e509e509e509e509e509e505050505050505050919395979092949650565b600061206283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e5b565b905092915050565b6000600c5414801561207e57506000600d54145b801561208c57506000600e54145b15612096576120ca565b600c54600f81905550600d54601081905550600e546011819055506000600c819055506000600d819055506000600e819055505b565b60006120d6611ebf565b905060008060008060008060006120ec89611f92565b9650965096509650965096509650600061210f8984612a1190919063ffffffff16565b905060006121268a84612a1190919063ffffffff16565b90506121358d8d8d8c8c612a8c565b612143878383888888612c52565b8b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef886040516121a091906138a5565b60405180910390a350505050505050505050505050565b60006121c1611ebf565b905060008060008060008060006121d789611f92565b965096509650965096509650965060006121fa8984612a1190919063ffffffff16565b905060006122118a84612a1190919063ffffffff16565b90506122208d8d888c8c612d05565b61222e878383888888612c52565b8b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8860405161228b91906138a5565b60405180910390a350505050505050505050505050565b60006122ac611ebf565b905060008060008060008060006122c289611f92565b965096509650965096509650965060006122e58984612a1190919063ffffffff16565b905060006122fc8a84612a1190919063ffffffff16565b905061230a8d8d8b8b612ecb565b612318878383888888612c52565b8b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8860405161237591906138a5565b60405180910390a350505050505050505050505050565b6000612396611ebf565b905060008060008060008060006123ac89611f92565b965096509650965096509650965060006123cf8984612a1190919063ffffffff16565b905060006123e68a84612a1190919063ffffffff16565b90506123f68d8d8d8c8a8d612ffb565b612404878383888888612c52565b8b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8860405161246191906138a5565b60405180910390a350505050505050505050505050565b600f54600c81905550601054600d81905550601154600e81905550565b600080600060085490506000600754905060005b6006805490508110156127a3578260016000600684815481106124f5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061260957508160026000600684815481106125a1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561262057600854600754945094505050506127dc565b6126d66001600060068481548110612661577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461202090919063ffffffff16565b925061278e6002600060068481548110612719577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361202090919063ffffffff16565b9150808061279b90613c05565b9150506124a9565b506127bb600754600854611eea90919063ffffffff16565b8210156127d3576008546007549350935050506127dc565b81819350935050505b9091565b60008083118290612827576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281e91906136a3565b60405180910390fd5b5060008385612836919061394d565b9050809150509392505050565b600080600080612882606461287460646128668b8d612a1190919063ffffffff16565b611eea90919063ffffffff16565b611eea90919063ffffffff16565b905060006128bf60646128b160646128a38b8e612a1190919063ffffffff16565b611eea90919063ffffffff16565b611eea90919063ffffffff16565b905060006128fc60646128ee60646128e08b8f612a1190919063ffffffff16565b611eea90919063ffffffff16565b611eea90919063ffffffff16565b90508282829550955095505050509450945094915050565b600061294d8261293f85612931888a61202090919063ffffffff16565b61202090919063ffffffff16565b61202090919063ffffffff16565b9050949350505050565b600080600061296f8487612a1190919063ffffffff16565b905060006129868587612a1190919063ffffffff16565b90508181935093505050935093915050565b6000806129ae8386612a1190919063ffffffff16565b905060006129c58486612a1190919063ffffffff16565b90506000612a00826129f2856129e48c8e61202090919063ffffffff16565b61202090919063ffffffff16565b61202090919063ffffffff16565b905080935050505095945050505050565b600080831415612a245760009050612a86565b60008284612a329190613aef565b9050828482612a41919061394d565b14612a81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a78906137c5565b60405180910390fd5b809150505b92915050565b612ade83600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202090919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b7382600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202090919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c0881600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f3490919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050565b612c8b84612c7d87612c6f8a60085461202090919063ffffffff16565b61202090919063ffffffff16565b61202090919063ffffffff16565b600881905550612ca683600954611f3490919063ffffffff16565b600981905550612cc182600a54611f3490919063ffffffff16565b600a81905550612cdc81600b54611f3490919063ffffffff16565b600b81905550612cf78260075461202090919063ffffffff16565b600781905550505050505050565b612d5782600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202090919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612dec83600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f3490919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e8181600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f3490919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050565b612f1d82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202090919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612fb281600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f3490919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050565b61304d84600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202090919063ffffffff16565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506130e283600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202090919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061317782600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f3490919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061320c81600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f3490919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050565b600081359050613266816140d3565b92915050565b60008135905061327b816140ea565b92915050565b60008135905061329081614101565b92915050565b6000602082840312156132a857600080fd5b60006132b684828501613257565b91505092915050565b600080604083850312156132d257600080fd5b60006132e085828601613257565b92505060206132f185828601613257565b9150509250929050565b60008060006060848603121561331057600080fd5b600061331e86828701613257565b935050602061332f86828701613257565b925050604061334086828701613281565b9150509250925092565b6000806040838503121561335d57600080fd5b600061336b85828601613257565b925050602061337c85828601613281565b9150509250929050565b60006020828403121561339857600080fd5b60006133a684828501613281565b91505092915050565b600080604083850312156133c257600080fd5b60006133d085828601613281565b92505060206133e18582860161326c565b9150509250929050565b6133f481613b7d565b82525050565b61340381613b8f565b82525050565b6000613414826138db565b61341e81856138e6565b935061342e818560208601613bd2565b61343781613cac565b840191505092915050565b600061344f6025836138e6565b915061345a82613cca565b604082019050919050565b60006134726024836138e6565b915061347d82613d19565b604082019050919050565b6000613495602a836138e6565b91506134a082613d68565b604082019050919050565b60006134b86026836138e6565b91506134c382613db7565b604082019050919050565b60006134db601b836138e6565b91506134e682613e06565b602082019050919050565b60006134fe601b836138e6565b915061350982613e2f565b602082019050919050565b6000613521601f836138e6565b915061352c82613e58565b602082019050919050565b60006135446028836138e6565b915061354f82613e81565b604082019050919050565b60006135676021836138e6565b915061357282613ed0565b604082019050919050565b600061358a6020836138e6565b915061359582613f1f565b602082019050919050565b60006135ad6029836138e6565b91506135b882613f48565b604082019050919050565b60006135d06023836138e6565b91506135db82613f97565b604082019050919050565b60006135f36022836138e6565b91506135fe82613fe6565b604082019050919050565b6000613616602c836138e6565b915061362182614035565b604082019050919050565b60006136396022836138e6565b915061364482614084565b604082019050919050565b61365881613bbb565b82525050565b61366781613bc5565b82525050565b600060208201905061368260008301846133eb565b92915050565b600060208201905061369d60008301846133fa565b92915050565b600060208201905081810360008301526136bd8184613409565b905092915050565b600060208201905081810360008301526136de81613442565b9050919050565b600060208201905081810360008301526136fe81613465565b9050919050565b6000602082019050818103600083015261371e81613488565b9050919050565b6000602082019050818103600083015261373e816134ab565b9050919050565b6000602082019050818103600083015261375e816134ce565b9050919050565b6000602082019050818103600083015261377e816134f1565b9050919050565b6000602082019050818103600083015261379e81613514565b9050919050565b600060208201905081810360008301526137be81613537565b9050919050565b600060208201905081810360008301526137de8161355a565b9050919050565b600060208201905081810360008301526137fe8161357d565b9050919050565b6000602082019050818103600083015261381e816135a0565b9050919050565b6000602082019050818103600083015261383e816135c3565b9050919050565b6000602082019050818103600083015261385e816135e6565b9050919050565b6000602082019050818103600083015261387e81613609565b9050919050565b6000602082019050818103600083015261389e8161362c565b9050919050565b60006020820190506138ba600083018461364f565b92915050565b60006020820190506138d5600083018461365e565b92915050565b600081519050919050565b600082825260208201905092915050565b600061390282613bbb565b915061390d83613bbb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561394257613941613c4e565b5b828201905092915050565b600061395882613bbb565b915061396383613bbb565b92508261397357613972613c7d565b5b828204905092915050565b6000808291508390505b60018511156139c8578086048111156139a4576139a3613c4e565b5b60018516156139b35780820291505b80810290506139c185613cbd565b9450613988565b94509492505050565b60006139dc82613bbb565b91506139e783613bbb565b9250613a147fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613a1c565b905092915050565b600082613a2c5760019050613ae8565b81613a3a5760009050613ae8565b8160018114613a505760028114613a5a57613a89565b6001915050613ae8565b60ff841115613a6c57613a6b613c4e565b5b8360020a915084821115613a8357613a82613c4e565b5b50613ae8565b5060208310610133831016604e8410600b8410161715613abe5782820a905083811115613ab957613ab8613c4e565b5b613ae8565b613acb848484600161397e565b92509050818404811115613ae257613ae1613c4e565b5b81810290505b9392505050565b6000613afa82613bbb565b9150613b0583613bbb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b3e57613b3d613c4e565b5b828202905092915050565b6000613b5482613bbb565b9150613b5f83613bbb565b925082821015613b7257613b71613c4e565b5b828203905092915050565b6000613b8882613b9b565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015613bf0578082015181840152602081019050613bd5565b83811115613bff576000848401525b50505050565b6000613c1082613bbb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613c4357613c42613c4e565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f42455032303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f42455032303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f42455032303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f57652063616e206e6f74206578636c75646520556e697377617020726f75746560008201527f722e000000000000000000000000000000000000000000000000000000000000602082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b7f42455032303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6140dc81613b7d565b81146140e757600080fd5b50565b6140f381613b8f565b81146140fe57600080fd5b50565b61410a81613bbb565b811461411557600080fd5b5056fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220712037f167d8cc5df8cc3537e2064075c02dc78d0c0cdf4550c97eebf833440b64736f6c63430008020033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061014d5760003560e01c80634549b039116100c3578063a9059cbb1161007c578063a9059cbb146103b8578063cba0e996146103e8578063dd62ed3e14610418578063f2cc0c1814610448578063f2fde38b14610464578063f84354f1146104805761014d565b80634549b039146102e257806370a0823114610312578063715018a6146103425780638da5cb5b1461034c57806395d89b411461036a578063a457c2d7146103885761014d565b80632d838119116101155780632d8381191461020c5780632fbff0301461023c578063313ce5671461025a57806339509351146102785780633bd5d173146102a85780633c9f861d146102c45761014d565b806306fdde0314610152578063095ea7b31461017057806313114a9d146101a057806318160ddd146101be57806323b872dd146101dc575b600080fd5b61015a61049c565b60405161016791906136a3565b60405180910390f35b61018a6004803603810190610185919061334a565b6104d9565b6040516101979190613688565b60405180910390f35b6101a86104f7565b6040516101b591906138a5565b60405180910390f35b6101c6610501565b6040516101d391906138a5565b60405180910390f35b6101f660048036038101906101f191906132fb565b61050b565b6040516102039190613688565b60405180910390f35b61022660048036038101906102219190613386565b6105e4565b60405161023391906138a5565b60405180910390f35b610244610652565b60405161025191906138a5565b60405180910390f35b61026261065c565b60405161026f91906138c0565b60405180910390f35b610292600480360381019061028d919061334a565b610665565b60405161029f9190613688565b60405180910390f35b6102c260048036038101906102bd9190613386565b610718565b005b6102cc610894565b6040516102d991906138a5565b60405180910390f35b6102fc60048036038101906102f791906133af565b61089e565b60405161030991906138a5565b60405180910390f35b61032c60048036038101906103279190613296565b610924565b60405161033991906138a5565b60405180910390f35b61034a610a0f565b005b610354610b62565b604051610361919061366d565b60405180910390f35b610372610b8b565b60405161037f91906136a3565b60405180910390f35b6103a2600480360381019061039d919061334a565b610bc8565b6040516103af9190613688565b60405180910390f35b6103d260048036038101906103cd919061334a565b610c95565b6040516103df9190613688565b60405180910390f35b61040260048036038101906103fd9190613296565b610cb3565b60405161040f9190613688565b60405180910390f35b610432600480360381019061042d91906132bf565b610d09565b60405161043f91906138a5565b60405180910390f35b610462600480360381019061045d9190613296565b610d90565b005b61047e60048036038101906104799190613296565b6110c7565b005b61049a60048036038101906104959190613296565b611289565b005b60606040518060400160405280600b81526020017f5368696b6f6b7520496e75000000000000000000000000000000000000000000815250905090565b60006104ed6104e6611670565b8484611678565b6001905092915050565b6000600954905090565b6000600754905090565b6000610518848484611843565b6105d984610524611670565b6105d48560405180606001604052806028815260200161411960289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061058a611670565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e5b9092919063ffffffff16565b611678565b600190509392505050565b600060085482111561062b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062290613705565b60405180910390fd5b6000610635611ebf565b905061064a8184611eea90919063ffffffff16565b915050919050565b6000600c54905090565b60006009905090565b600061070e610672611670565b846107098560036000610683611670565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f3490919063ffffffff16565b611678565b6001905092915050565b6000610722611670565b9050600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156107b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a890613865565b60405180910390fd5b60006107bc83611f92565b505050505050905061081681600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202090919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061086e8160085461202090919063ffffffff16565b60088190555061088983600954611f3490919063ffffffff16565b600981905550505050565b6000600a54905090565b60006007548311156108e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108dc90613785565b60405180910390fd5b816109065760006108f584611f92565b50505050505090508091505061091e565b600061091184611f92565b5050505050915050809150505b92915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156109bf57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610a0a565b610a07600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546105e4565b90505b919050565b610a17611670565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9b906137e5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f5348494b4f000000000000000000000000000000000000000000000000000000815250905090565b6000610c8b610bd5611670565b84610c86856040518060600160405280602581526020016141416025913960036000610bff611670565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e5b9092919063ffffffff16565b611678565b6001905092915050565b6000610ca9610ca2611670565b8484611843565b6001905092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610d98611670565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1c906137e5565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9f90613845565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610f35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2c90613765565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561100957610fc5600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546105e4565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6110cf611670565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461115c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611153906137e5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156111cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c390613725565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611291611670565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461131e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611315906137e5565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166113aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a190613765565b60405180910390fd5b60005b60068054905081101561166c578173ffffffffffffffffffffffffffffffffffffffff166006828154811061140b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561165957600660016006805490506114669190613b49565b8154811061149d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660068281548110611502577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600680548061161f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561166c565b808061166490613c05565b9150506113ad565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116df906136e5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174f90613885565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161183691906138a5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156118b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118aa906136c5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611923576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191a90613825565b60405180910390fd5b60008111611966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195d90613805565b60405180910390fd5b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611a0d5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611a615750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611a6b57600090505b80611a7957611a7861206a565b5b611a81610b62565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611aef5750611abf610b62565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611b5857600960ff16600a611b0591906139d1565b64174876e800611b159190613aef565b821115611b57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4e906137a5565b60405180910390fd5b5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611bfb5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c1057611c0b8484846120cc565b611e47565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611cb35750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611cc857611cc38484846121b7565b611e46565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611d6c5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d8157611d7c8484846122a2565b611e45565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611e235750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611e3857611e3384848461238c565b611e44565b611e438484846122a2565b5b5b5b5b80611e5557611e54612478565b5b50505050565b6000838311158290611ea3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9a91906136a3565b60405180910390fd5b5060008385611eb29190613b49565b9050809150509392505050565b6000806000611ecc612495565b91509150611ee38183611eea90919063ffffffff16565b9250505090565b6000611f2c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506127e0565b905092915050565b6000808284611f4391906138f7565b905083811015611f88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7f90613745565b60405180910390fd5b8091505092915050565b600080600080600080600080600080611fb38b600c54600d54600e54612843565b9250925092506000611fc78c858585612914565b90506000611fd3611ebf565b9050600080611fe38f8885612957565b915091506000611ff68383898988612998565b9050828183878b8b8b9e509e509e509e509e509e509e505050505050505050919395979092949650565b600061206283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e5b565b905092915050565b6000600c5414801561207e57506000600d54145b801561208c57506000600e54145b15612096576120ca565b600c54600f81905550600d54601081905550600e546011819055506000600c819055506000600d819055506000600e819055505b565b60006120d6611ebf565b905060008060008060008060006120ec89611f92565b9650965096509650965096509650600061210f8984612a1190919063ffffffff16565b905060006121268a84612a1190919063ffffffff16565b90506121358d8d8d8c8c612a8c565b612143878383888888612c52565b8b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef886040516121a091906138a5565b60405180910390a350505050505050505050505050565b60006121c1611ebf565b905060008060008060008060006121d789611f92565b965096509650965096509650965060006121fa8984612a1190919063ffffffff16565b905060006122118a84612a1190919063ffffffff16565b90506122208d8d888c8c612d05565b61222e878383888888612c52565b8b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8860405161228b91906138a5565b60405180910390a350505050505050505050505050565b60006122ac611ebf565b905060008060008060008060006122c289611f92565b965096509650965096509650965060006122e58984612a1190919063ffffffff16565b905060006122fc8a84612a1190919063ffffffff16565b905061230a8d8d8b8b612ecb565b612318878383888888612c52565b8b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8860405161237591906138a5565b60405180910390a350505050505050505050505050565b6000612396611ebf565b905060008060008060008060006123ac89611f92565b965096509650965096509650965060006123cf8984612a1190919063ffffffff16565b905060006123e68a84612a1190919063ffffffff16565b90506123f68d8d8d8c8a8d612ffb565b612404878383888888612c52565b8b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8860405161246191906138a5565b60405180910390a350505050505050505050505050565b600f54600c81905550601054600d81905550601154600e81905550565b600080600060085490506000600754905060005b6006805490508110156127a3578260016000600684815481106124f5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061260957508160026000600684815481106125a1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561262057600854600754945094505050506127dc565b6126d66001600060068481548110612661577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461202090919063ffffffff16565b925061278e6002600060068481548110612719577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361202090919063ffffffff16565b9150808061279b90613c05565b9150506124a9565b506127bb600754600854611eea90919063ffffffff16565b8210156127d3576008546007549350935050506127dc565b81819350935050505b9091565b60008083118290612827576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281e91906136a3565b60405180910390fd5b5060008385612836919061394d565b9050809150509392505050565b600080600080612882606461287460646128668b8d612a1190919063ffffffff16565b611eea90919063ffffffff16565b611eea90919063ffffffff16565b905060006128bf60646128b160646128a38b8e612a1190919063ffffffff16565b611eea90919063ffffffff16565b611eea90919063ffffffff16565b905060006128fc60646128ee60646128e08b8f612a1190919063ffffffff16565b611eea90919063ffffffff16565b611eea90919063ffffffff16565b90508282829550955095505050509450945094915050565b600061294d8261293f85612931888a61202090919063ffffffff16565b61202090919063ffffffff16565b61202090919063ffffffff16565b9050949350505050565b600080600061296f8487612a1190919063ffffffff16565b905060006129868587612a1190919063ffffffff16565b90508181935093505050935093915050565b6000806129ae8386612a1190919063ffffffff16565b905060006129c58486612a1190919063ffffffff16565b90506000612a00826129f2856129e48c8e61202090919063ffffffff16565b61202090919063ffffffff16565b61202090919063ffffffff16565b905080935050505095945050505050565b600080831415612a245760009050612a86565b60008284612a329190613aef565b9050828482612a41919061394d565b14612a81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a78906137c5565b60405180910390fd5b809150505b92915050565b612ade83600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202090919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b7382600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202090919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c0881600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f3490919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050565b612c8b84612c7d87612c6f8a60085461202090919063ffffffff16565b61202090919063ffffffff16565b61202090919063ffffffff16565b600881905550612ca683600954611f3490919063ffffffff16565b600981905550612cc182600a54611f3490919063ffffffff16565b600a81905550612cdc81600b54611f3490919063ffffffff16565b600b81905550612cf78260075461202090919063ffffffff16565b600781905550505050505050565b612d5782600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202090919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612dec83600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f3490919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e8181600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f3490919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050565b612f1d82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202090919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612fb281600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f3490919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050565b61304d84600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202090919063ffffffff16565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506130e283600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202090919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061317782600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f3490919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061320c81600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f3490919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050565b600081359050613266816140d3565b92915050565b60008135905061327b816140ea565b92915050565b60008135905061329081614101565b92915050565b6000602082840312156132a857600080fd5b60006132b684828501613257565b91505092915050565b600080604083850312156132d257600080fd5b60006132e085828601613257565b92505060206132f185828601613257565b9150509250929050565b60008060006060848603121561331057600080fd5b600061331e86828701613257565b935050602061332f86828701613257565b925050604061334086828701613281565b9150509250925092565b6000806040838503121561335d57600080fd5b600061336b85828601613257565b925050602061337c85828601613281565b9150509250929050565b60006020828403121561339857600080fd5b60006133a684828501613281565b91505092915050565b600080604083850312156133c257600080fd5b60006133d085828601613281565b92505060206133e18582860161326c565b9150509250929050565b6133f481613b7d565b82525050565b61340381613b8f565b82525050565b6000613414826138db565b61341e81856138e6565b935061342e818560208601613bd2565b61343781613cac565b840191505092915050565b600061344f6025836138e6565b915061345a82613cca565b604082019050919050565b60006134726024836138e6565b915061347d82613d19565b604082019050919050565b6000613495602a836138e6565b91506134a082613d68565b604082019050919050565b60006134b86026836138e6565b91506134c382613db7565b604082019050919050565b60006134db601b836138e6565b91506134e682613e06565b602082019050919050565b60006134fe601b836138e6565b915061350982613e2f565b602082019050919050565b6000613521601f836138e6565b915061352c82613e58565b602082019050919050565b60006135446028836138e6565b915061354f82613e81565b604082019050919050565b60006135676021836138e6565b915061357282613ed0565b604082019050919050565b600061358a6020836138e6565b915061359582613f1f565b602082019050919050565b60006135ad6029836138e6565b91506135b882613f48565b604082019050919050565b60006135d06023836138e6565b91506135db82613f97565b604082019050919050565b60006135f36022836138e6565b91506135fe82613fe6565b604082019050919050565b6000613616602c836138e6565b915061362182614035565b604082019050919050565b60006136396022836138e6565b915061364482614084565b604082019050919050565b61365881613bbb565b82525050565b61366781613bc5565b82525050565b600060208201905061368260008301846133eb565b92915050565b600060208201905061369d60008301846133fa565b92915050565b600060208201905081810360008301526136bd8184613409565b905092915050565b600060208201905081810360008301526136de81613442565b9050919050565b600060208201905081810360008301526136fe81613465565b9050919050565b6000602082019050818103600083015261371e81613488565b9050919050565b6000602082019050818103600083015261373e816134ab565b9050919050565b6000602082019050818103600083015261375e816134ce565b9050919050565b6000602082019050818103600083015261377e816134f1565b9050919050565b6000602082019050818103600083015261379e81613514565b9050919050565b600060208201905081810360008301526137be81613537565b9050919050565b600060208201905081810360008301526137de8161355a565b9050919050565b600060208201905081810360008301526137fe8161357d565b9050919050565b6000602082019050818103600083015261381e816135a0565b9050919050565b6000602082019050818103600083015261383e816135c3565b9050919050565b6000602082019050818103600083015261385e816135e6565b9050919050565b6000602082019050818103600083015261387e81613609565b9050919050565b6000602082019050818103600083015261389e8161362c565b9050919050565b60006020820190506138ba600083018461364f565b92915050565b60006020820190506138d5600083018461365e565b92915050565b600081519050919050565b600082825260208201905092915050565b600061390282613bbb565b915061390d83613bbb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561394257613941613c4e565b5b828201905092915050565b600061395882613bbb565b915061396383613bbb565b92508261397357613972613c7d565b5b828204905092915050565b6000808291508390505b60018511156139c8578086048111156139a4576139a3613c4e565b5b60018516156139b35780820291505b80810290506139c185613cbd565b9450613988565b94509492505050565b60006139dc82613bbb565b91506139e783613bbb565b9250613a147fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613a1c565b905092915050565b600082613a2c5760019050613ae8565b81613a3a5760009050613ae8565b8160018114613a505760028114613a5a57613a89565b6001915050613ae8565b60ff841115613a6c57613a6b613c4e565b5b8360020a915084821115613a8357613a82613c4e565b5b50613ae8565b5060208310610133831016604e8410600b8410161715613abe5782820a905083811115613ab957613ab8613c4e565b5b613ae8565b613acb848484600161397e565b92509050818404811115613ae257613ae1613c4e565b5b81810290505b9392505050565b6000613afa82613bbb565b9150613b0583613bbb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b3e57613b3d613c4e565b5b828202905092915050565b6000613b5482613bbb565b9150613b5f83613bbb565b925082821015613b7257613b71613c4e565b5b828203905092915050565b6000613b8882613b9b565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015613bf0578082015181840152602081019050613bd5565b83811115613bff576000848401525b50505050565b6000613c1082613bbb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613c4357613c42613c4e565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f42455032303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f42455032303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f42455032303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f57652063616e206e6f74206578636c75646520556e697377617020726f75746560008201527f722e000000000000000000000000000000000000000000000000000000000000602082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b7f42455032303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6140dc81613b7d565b81146140e757600080fd5b50565b6140f381613b8f565b81146140fe57600080fd5b50565b61410a81613bbb565b811461411557600080fd5b5056fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220712037f167d8cc5df8cc3537e2064075c02dc78d0c0cdf4550c97eebf833440b64736f6c63430008020033
Deployed Bytecode Sourcemap
16827:15635:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18434:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19346:161;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20469:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18711:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19515:313;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21502:253;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32251:85;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18620:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19836:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20670:378;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20568:88;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21056:438;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18814:198;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16273:148;;;:::i;:::-;;15631:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18525:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20062:269;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19020:167;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20339:110;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19195:143;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21763:443;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16576:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22214:478;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18434:83;18471:13;18504:5;;;;;;;;;;;;;;;;;18497:12;;18434:83;:::o;19346:161::-;19421:4;19438:39;19447:12;:10;:12::i;:::-;19461:7;19470:6;19438:8;:39::i;:::-;19495:4;19488:11;;19346:161;;;;:::o;20469:87::-;20511:7;20538:10;;20531:17;;20469:87;:::o;18711:95::-;18764:7;18791;;18784:14;;18711:95;:::o;19515:313::-;19613:4;19630:36;19640:6;19648:9;19659:6;19630:9;:36::i;:::-;19677:121;19686:6;19694:12;:10;:12::i;:::-;19708:89;19746:6;19708:89;;;;;;;;;;;;;;;;;:11;:19;19720:6;19708:19;;;;;;;;;;;;;;;:33;19728:12;:10;:12::i;:::-;19708:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;19677:8;:121::i;:::-;19816:4;19809:11;;19515:313;;;;;:::o;21502:253::-;21568:7;21607;;21596;:18;;21588:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;21672:19;21695:10;:8;:10::i;:::-;21672:33;;21723:24;21735:11;21723:7;:11;;:24;;;;:::i;:::-;21716:31;;;21502:253;;;:::o;32251:85::-;32293:7;32320:8;;32313:15;;32251:85;:::o;18620:83::-;18661:5;17402:1;18679:16;;18620:83;:::o;19836:218::-;19924:4;19941:83;19950:12;:10;:12::i;:::-;19964:7;19973:50;20012:10;19973:11;:25;19985:12;:10;:12::i;:::-;19973:25;;;;;;;;;;;;;;;:34;19999:7;19973:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;19941:8;:83::i;:::-;20042:4;20035:11;;19836:218;;;;:::o;20670:378::-;20722:14;20739:12;:10;:12::i;:::-;20722:29;;20771:11;:19;20783:6;20771:19;;;;;;;;;;;;;;;;;;;;;;;;;20770:20;20762:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;20851:15;20876:19;20887:7;20876:10;:19::i;:::-;20850:45;;;;;;;;20924:28;20944:7;20924;:15;20932:6;20924:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;20906:7;:15;20914:6;20906:15;;;;;;;;;;;;;;;:46;;;;20973:20;20985:7;20973;;:11;;:20;;;;:::i;:::-;20963:7;:30;;;;21017:23;21032:7;21017:10;;:14;;:23;;;;:::i;:::-;21004:10;:36;;;;20670:378;;;:::o;20568:88::-;20610:7;20637:11;;20630:18;;20568:88;:::o;21056:438::-;21146:7;21185;;21174;:18;;21166:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;21244:17;21239:248;;21279:15;21304:19;21315:7;21304:10;:19::i;:::-;21278:45;;;;;;;;21345:7;21338:14;;;;;21239:248;21387:23;21419:19;21430:7;21419:10;:19::i;:::-;21385:53;;;;;;;;21460:15;21453:22;;;21056:438;;;;;:::o;18814:198::-;18880:7;18904:11;:20;18916:7;18904:20;;;;;;;;;;;;;;;;;;;;;;;;;18900:49;;;18933:7;:16;18941:7;18933:16;;;;;;;;;;;;;;;;18926:23;;;;18900:49;18967:37;18987:7;:16;18995:7;18987:16;;;;;;;;;;;;;;;;18967:19;:37::i;:::-;18960:44;;18814:198;;;;:::o;16273:148::-;15853:12;:10;:12::i;:::-;15843:22;;:6;;;;;;;;;;:22;;;15835:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16380:1:::1;16343:40;;16364:6;::::0;::::1;;;;;;;;16343:40;;;;;;;;;;;;16411:1;16394:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;16273:148::o:0;15631:79::-;15669:7;15696:6;;;;;;;;;;;15689:13;;15631:79;:::o;18525:87::-;18564:13;18597:7;;;;;;;;;;;;;;;;;18590:14;;18525:87;:::o;20062:269::-;20155:4;20172:129;20181:12;:10;:12::i;:::-;20195:7;20204:96;20243:15;20204:96;;;;;;;;;;;;;;;;;:11;:25;20216:12;:10;:12::i;:::-;20204:25;;;;;;;;;;;;;;;:34;20230:7;20204:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;20172:8;:129::i;:::-;20319:4;20312:11;;20062:269;;;;:::o;19020:167::-;19098:4;19115:42;19125:12;:10;:12::i;:::-;19139:9;19150:6;19115:9;:42::i;:::-;19175:4;19168:11;;19020:167;;;;:::o;20339:110::-;20397:4;20421:11;:20;20433:7;20421:20;;;;;;;;;;;;;;;;;;;;;;;;;20414:27;;20339:110;;;:::o;19195:143::-;19276:7;19303:11;:18;19315:5;19303:18;;;;;;;;;;;;;;;:27;19322:7;19303:27;;;;;;;;;;;;;;;;19296:34;;19195:143;;;;:::o;21763:443::-;15853:12;:10;:12::i;:::-;15843:22;;:6;;;;;;;;;;:22;;;15835:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21855:42:::1;21844:53;;:7;:53;;;;21836:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;21956:11;:20;21968:7;21956:20;;;;;;;;;;;;;;;;;;;;;;;;;21955:21;21947:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;22041:1;22022:7;:16;22030:7;22022:16;;;;;;;;;;;;;;;;:20;22019:108;;;22078:37;22098:7;:16;22106:7;22098:16;;;;;;;;;;;;;;;;22078:19;:37::i;:::-;22059:7;:16;22067:7;22059:16;;;;;;;;;;;;;;;:56;;;;22019:108;22160:4;22137:11;:20;22149:7;22137:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;22175:9;22190:7;22175:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21763:443:::0;:::o;16576:244::-;15853:12;:10;:12::i;:::-;15843:22;;:6;;;;;;;;;;:22;;;15835:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16685:1:::1;16665:22;;:8;:22;;;;16657:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;16775:8;16746:38;;16767:6;::::0;::::1;;;;;;;;16746:38;;;;;;;;;;;;16804:8;16795:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;16576:244:::0;:::o;22214:478::-;15853:12;:10;:12::i;:::-;15843:22;;:6;;;;;;;;;;:22;;;15835:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22295:11:::1;:20;22307:7;22295:20;;;;;;;;;;;;;;;;;;;;;;;;;22287:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;22363:9;22358:327;22382:9;:16;;;;22378:1;:20;22358:327;;;22440:7;22424:23;;:9;22434:1;22424:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;22420:254;;;22483:9;22512:1;22493:9;:16;;;;:20;;;;:::i;:::-;22483:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22468:9;22478:1;22468:12;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;22552:1;22533:7;:16;22541:7;22533:16;;;;;;;;;;;;;;;:20;;;;22595:5;22572:11;:20;22584:7;22572:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;22619:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22653:5;;22420:254;22400:3;;;;;:::i;:::-;;;;22358:327;;;;22214:478:::0;:::o;97:115::-;150:15;193:10;178:26;;97:115;:::o;22707:337::-;22817:1;22800:19;;:5;:19;;;;22792:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22898:1;22879:21;;:7;:21;;;;22871:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22982:6;22952:11;:18;22964:5;22952:18;;;;;;;;;;;;;;;:27;22971:7;22952:27;;;;;;;;;;;;;;;:36;;;;23020:7;23004:32;;23013:5;23004:32;;;23029:6;23004:32;;;;;;:::i;:::-;;;;;;;;22707:337;;;:::o;23052:1428::-;23167:1;23149:20;;:6;:20;;;;23141:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;23251:1;23230:23;;:9;:23;;;;23222:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;23321:1;23312:6;:10;23304:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23470:12;23485:4;23470:19;;23504:10;:18;23515:6;23504:18;;;;;;;;;;;;;;;;;;;;;;;;;:43;;;;23526:10;:21;23537:9;23526:21;;;;;;;;;;;;;;;;;;;;;;;;;23504:43;:69;;;;23551:11;:22;23563:9;23551:22;;;;;;;;;;;;;;;;;;;;;;;;;23504:69;23500:117;;;23600:5;23590:15;;23500:117;23634:7;23629:28;;23643:14;:12;:14::i;:::-;23629:28;23692:7;:5;:7::i;:::-;23682:17;;:6;:17;;;;:41;;;;;23716:7;:5;:7::i;:::-;23703:20;;:9;:20;;;;23682:41;23678:135;;;17402:1;17513:18;;17507:2;:24;;;;:::i;:::-;18039:12;:29;;;;:::i;:::-;23746:6;:22;;23738:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;23678:135;23838:11;:19;23850:6;23838:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;23862:11;:22;23874:9;23862:22;;;;;;;;;;;;;;;;;;;;;;;;;23861:23;23838:46;23834:597;;;23901:48;23923:6;23931:9;23942:6;23901:21;:48::i;:::-;23834:597;;;23972:11;:19;23984:6;23972:19;;;;;;;;;;;;;;;;;;;;;;;;;23971:20;:46;;;;;23995:11;:22;24007:9;23995:22;;;;;;;;;;;;;;;;;;;;;;;;;23971:46;23967:464;;;24034:46;24054:6;24062:9;24073:6;24034:19;:46::i;:::-;23967:464;;;24103:11;:19;24115:6;24103:19;;;;;;;;;;;;;;;;;;;;;;;;;24102:20;:47;;;;;24127:11;:22;24139:9;24127:22;;;;;;;;;;;;;;;;;;;;;;;;;24126:23;24102:47;24098:333;;;24166:44;24184:6;24192:9;24203:6;24166:17;:44::i;:::-;24098:333;;;24232:11;:19;24244:6;24232:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;24255:11;:22;24267:9;24255:22;;;;;;;;;;;;;;;;;;;;;;;;;24232:45;24228:203;;;24294:48;24316:6;24324:9;24335:6;24294:21;:48::i;:::-;24228:203;;;24375:44;24393:6;24401:9;24412:6;24375:17;:44::i;:::-;24228:203;24098:333;23967:464;23834:597;24448:7;24443:29;;24457:15;:13;:15::i;:::-;24443:29;23052:1428;;;;:::o;4916:192::-;5002:7;5035:1;5030;:6;;5038:12;5022:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5062:9;5078:1;5074;:5;;;;:::i;:::-;5062:17;;5099:1;5092:8;;;4916:192;;;;;:::o;31006:163::-;31047:7;31068:15;31085;31104:19;:17;:19::i;:::-;31067:56;;;;31141:20;31153:7;31141;:11;;:20;;;;:::i;:::-;31134:27;;;;31006:163;:::o;6314:132::-;6372:7;6399:39;6403:1;6406;6399:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;6392:46;;6314:132;;;;:::o;4013:181::-;4071:7;4091:9;4107:1;4103;:5;;;;:::i;:::-;4091:17;;4132:1;4127;:6;;4119:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;4185:1;4178:8;;;4013:181;;;;:::o;29057:652::-;29116:7;29125;29134;29143;29152;29161;29170;29191:12;29205:13;29220:16;29240:55;29252:7;29261:8;;29271:9;;29282:12;;29240:11;:55::i;:::-;29190:105;;;;;;29306:23;29332:50;29351:7;29360:4;29366:5;29373:8;29332:18;:50::i;:::-;29306:76;;29393:19;29416:10;:8;:10::i;:::-;29393:33;;29438:15;29455:12;29471:39;29483:7;29492:4;29498:11;29471;:39::i;:::-;29437:73;;;;29521:23;29547:64;29567:7;29576:4;29582:5;29589:8;29599:11;29547:19;:64::i;:::-;29521:90;;29630:7;29639:15;29656:4;29662:15;29679:4;29685:5;29692:8;29622:79;;;;;;;;;;;;;;;;;;;;;;29057:652;;;;;;;;;:::o;4477:136::-;4535:7;4562:43;4566:1;4569;4562:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4555:50;;4477:136;;;;:::o;31754:320::-;31812:1;31800:8;;:13;:31;;;;;31830:1;31817:9;;:14;31800:31;:52;;;;;31851:1;31835:12;;:17;31800:52;31797:64;;;31854:7;;31797:64;31896:8;;31881:12;:23;;;;31931:9;;31915:13;:25;;;;31970:12;;31951:16;:31;;;;32014:1;32003:8;:12;;;;32038:1;32026:9;:13;;;;32065:1;32050:12;:16;;;;31754:320;:::o;26504:673::-;26606:19;26629:10;:8;:10::i;:::-;26606:33;;26651:15;26668:23;26693:12;26707:23;26732:12;26746:13;26761:16;26781:19;26792:7;26781:10;:19::i;:::-;26650:150;;;;;;;;;;;;;;26811:13;26828:22;26838:11;26828:5;:9;;:22;;;;:::i;:::-;26811:39;;26861:16;26880:25;26893:11;26880:8;:12;;:25;;;;:::i;:::-;26861:44;;26916:80;26943:6;26951:9;26962:7;26971;26980:15;26916:26;:80::i;:::-;27052:57;27064:4;27070:5;27077:8;27087:4;27093:5;27100:8;27052:11;:57::i;:::-;27142:9;27125:44;;27134:6;27125:44;;;27153:15;27125:44;;;;;;:::i;:::-;;;;;;;;26504:673;;;;;;;;;;;;;:::o;25430:689::-;25530:19;25553:10;:8;:10::i;:::-;25530:33;;25575:15;25592:23;25617:12;25631:23;25656:12;25670:13;25685:16;25705:19;25716:7;25705:10;:19::i;:::-;25574:150;;;;;;;;;;;;;;25735:13;25752:22;25762:11;25752:5;:9;;:22;;;;:::i;:::-;25735:39;;25785:16;25804:25;25817:11;25804:8;:12;;:25;;;;:::i;:::-;25785:44;;25840:90;25869:6;25877:9;25888:15;25905:7;25914:15;25840:28;:90::i;:::-;25994:57;26006:4;26012:5;26019:8;26029:4;26035:5;26042:8;25994:11;:57::i;:::-;26084:9;26067:44;;26076:6;26067:44;;;26095:15;26067:44;;;;;;:::i;:::-;;;;;;;;25430:689;;;;;;;;;;;;;:::o;24488:663::-;24586:19;24609:10;:8;:10::i;:::-;24586:33;;24631:15;24648:23;24673:12;24687:23;24712:12;24726:13;24741:16;24761:19;24772:7;24761:10;:19::i;:::-;24630:150;;;;;;;;;;;;;;24791:13;24808:22;24818:11;24808:5;:9;;:22;;;;:::i;:::-;24791:39;;24841:16;24860:25;24873:11;24860:8;:12;;:25;;;;:::i;:::-;24841:44;;24901:69;24926:6;24934:9;24945:7;24954:15;24901:24;:69::i;:::-;25026:57;25038:4;25044:5;25051:8;25061:4;25067:5;25074:8;25026:11;:57::i;:::-;25116:9;25099:44;;25108:6;25099:44;;;25127:15;25099:44;;;;;;:::i;:::-;;;;;;;;24488:663;;;;;;;;;;;;;:::o;27530:690::-;27632:19;27655:10;:8;:10::i;:::-;27632:33;;27677:15;27694:23;27719:12;27733:23;27758:12;27772:13;27787:16;27807:19;27818:7;27807:10;:19::i;:::-;27676:150;;;;;;;;;;;;;;27837:13;27854:22;27864:11;27854:5;:9;;:22;;;;:::i;:::-;27837:39;;27887:16;27906:25;27919:11;27906:8;:12;;:25;;;;:::i;:::-;27887:44;;27946:91;27967:6;27975:9;27986:7;27995;28004:15;28021;27946:20;:91::i;:::-;28095:57;28107:4;28113:5;28120:8;28130:4;28136:5;28143:8;28095:11;:57::i;:::-;28185:9;28168:44;;28177:6;28168:44;;;28196:15;28168:44;;;;;;:::i;:::-;;;;;;;;27530:690;;;;;;;;;;;;;:::o;32086:153::-;32141:12;;32130:8;:23;;;;32176:13;;32164:9;:25;;;;32215:16;;32200:12;:31;;;;32086:153::o;31177:561::-;31227:7;31236;31256:15;31274:7;;31256:25;;31292:15;31310:7;;31292:25;;31339:9;31334:289;31358:9;:16;;;;31354:1;:20;31334:289;;;31424:7;31400;:21;31408:9;31418:1;31408:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31400:21;;;;;;;;;;;;;;;;:31;:66;;;;31459:7;31435;:21;31443:9;31453:1;31443:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31435:21;;;;;;;;;;;;;;;;:31;31400:66;31396:97;;;31476:7;;31485;;31468:25;;;;;;;;;31396:97;31518:34;31530:7;:21;31538:9;31548:1;31538:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31530:21;;;;;;;;;;;;;;;;31518:7;:11;;:34;;;;:::i;:::-;31508:44;;31577:34;31589:7;:21;31597:9;31607:1;31597:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31589:21;;;;;;;;;;;;;;;;31577:7;:11;;:34;;;;:::i;:::-;31567:44;;31376:3;;;;;:::i;:::-;;;;31334:289;;;;31647:20;31659:7;;31647;;:11;;:20;;;;:::i;:::-;31637:7;:30;31633:61;;;31677:7;;31686;;31669:25;;;;;;;;31633:61;31713:7;31722;31705:25;;;;;;31177:561;;;:::o;6942:278::-;7028:7;7060:1;7056;:5;7063:12;7048:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;7087:9;7103:1;7099;:5;;;;:::i;:::-;7087:17;;7211:1;7204:8;;;6942:278;;;;;:::o;29721:427::-;29834:7;29843;29852;29872:12;29887:50;29933:3;29888:39;17578:3;29889:19;29901:6;29889:7;:11;;:19;;;;:::i;:::-;29888:25;;:39;;;;:::i;:::-;29887:45;;:50;;;;:::i;:::-;29872:65;;29948:13;29964:51;30011:3;29965:40;17578:3;29966:20;29978:7;29966;:11;;:20;;;;:::i;:::-;29965:26;;:40;;;;:::i;:::-;29964:46;;:51;;;;:::i;:::-;29948:67;;30026:16;30045:54;30095:3;30046:43;17578:3;30047:23;30059:10;30047:7;:11;;:23;;;;:::i;:::-;30046:29;;:43;;;;:::i;:::-;30045:49;;:54;;;;:::i;:::-;30026:73;;30118:4;30124:5;30131:8;30110:30;;;;;;;;;29721:427;;;;;;;;:::o;30160:191::-;30274:7;30301:42;30334:8;30301:28;30323:5;30301:17;30313:4;30301:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;:32;;:42;;;;:::i;:::-;30294:49;;30160:191;;;;;;:::o;30363:254::-;30458:7;30467;30487:15;30505:24;30517:11;30505:7;:11;;:24;;;;:::i;:::-;30487:42;;30540:12;30555:21;30564:11;30555:4;:8;;:21;;;;:::i;:::-;30540:36;;30595:7;30604:4;30587:22;;;;;;30363:254;;;;;;:::o;30629:369::-;30765:7;30785:13;30801:22;30811:11;30801:5;:9;;:22;;;;:::i;:::-;30785:38;;30834:16;30853:25;30866:11;30853:8;:12;;:25;;;;:::i;:::-;30834:44;;30889:23;30915:42;30948:8;30915:28;30937:5;30915:17;30927:4;30915:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;:32;;:42;;;;:::i;:::-;30889:68;;30975:15;30968:22;;;;;30629:369;;;;;;;:::o;5367:471::-;5425:7;5675:1;5670;:6;5666:47;;;5700:1;5693:8;;;;5666:47;5725:9;5741:1;5737;:5;;;;:::i;:::-;5725:17;;5770:1;5765;5761;:5;;;;:::i;:::-;:10;5753:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;5829:1;5822:8;;;5367:471;;;;;:::o;27189:333::-;27356:28;27376:7;27356;:15;27364:6;27356:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;27338:7;:15;27346:6;27338:15;;;;;;;;;;;;;;;:46;;;;27413:28;27433:7;27413;:15;27421:6;27413:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;27395:7;:15;27403:6;27395:15;;;;;;;;;;;;;;;:46;;;;27473:39;27496:15;27473:7;:18;27481:9;27473:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;27452:7;:18;27460:9;27452:18;;;;;;;;;;;;;;;:60;;;;27189:333;;;;;:::o;28663:380::-;28807:42;28840:8;28807:28;28829:5;28807:17;28819:4;28807:7;;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;:32;;:42;;;;:::i;:::-;28797:7;:52;;;;28873:20;28888:4;28873:10;;:14;;:20;;;;:::i;:::-;28860:10;:33;;;;28918:22;28934:5;28918:11;;:15;;:22;;;;:::i;:::-;28904:11;:36;;;;28968:28;28987:8;28968:14;;:18;;:28;;;;:::i;:::-;28951:14;:45;;;;29017:18;29029:5;29017:7;;:11;;:18;;;;:::i;:::-;29007:7;:28;;;;28663:380;;;;;;:::o;26131:359::-;26308:28;26328:7;26308;:15;26316:6;26308:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;26290:7;:15;26298:6;26290:15;;;;;;;;;;;;;;;:46;;;;26368:39;26391:15;26368:7;:18;26376:9;26368:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;26347:7;:18;26355:9;26347:18;;;;;;;;;;;;;;;:60;;;;26439:39;26462:15;26439:7;:18;26447:9;26439:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;26418:7;:18;26426:9;26418:18;;;;;;;;;;;;;;;:60;;;;26131:359;;;;;:::o;25163:255::-;25311:28;25331:7;25311;:15;25319:6;25311:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;25293:7;:15;25301:6;25293:15;;;;;;;;;;;;;;;:46;;;;25371:39;25394:15;25371:7;:18;25379:9;25371:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;25350:7;:18;25358:9;25350:18;;;;;;;;;;;;;;;:60;;;;25163:255;;;;:::o;28232:423::-;28418:28;28438:7;28418;:15;28426:6;28418:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;28400:7;:15;28408:6;28400:15;;;;;;;;;;;;;;;:46;;;;28475:28;28495:7;28475;:15;28483:6;28475:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;28457:7;:15;28465:6;28457:15;;;;;;;;;;;;;;;:46;;;;28535:39;28558:15;28535:7;:18;28543:9;28535:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;28514:7;:18;28522:9;28514:18;;;;;;;;;;;;;;;:60;;;;28606:39;28629:15;28606:7;:18;28614:9;28606:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;28585:7;:18;28593:9;28585:18;;;;;;;;;;;;;;;:60;;;;28232:423;;;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:133::-;;233:6;220:20;211:29;;249:30;273:5;249:30;:::i;:::-;201:84;;;;:::o;291:139::-;;375:6;362:20;353:29;;391:33;418:5;391:33;:::i;:::-;343:87;;;;:::o;436:262::-;;544:2;532:9;523:7;519:23;515:32;512:2;;;560:1;557;550:12;512:2;603:1;628:53;673:7;664:6;653:9;649:22;628:53;:::i;:::-;618:63;;574:117;502:196;;;;:::o;704:407::-;;;829:2;817:9;808:7;804:23;800:32;797:2;;;845:1;842;835:12;797:2;888:1;913:53;958:7;949:6;938:9;934:22;913:53;:::i;:::-;903:63;;859:117;1015:2;1041:53;1086:7;1077:6;1066:9;1062:22;1041:53;:::i;:::-;1031:63;;986:118;787:324;;;;;:::o;1117:552::-;;;;1259:2;1247:9;1238:7;1234:23;1230:32;1227:2;;;1275:1;1272;1265:12;1227:2;1318:1;1343:53;1388:7;1379:6;1368:9;1364:22;1343:53;:::i;:::-;1333:63;;1289:117;1445:2;1471:53;1516:7;1507:6;1496:9;1492:22;1471:53;:::i;:::-;1461:63;;1416:118;1573:2;1599:53;1644:7;1635:6;1624:9;1620:22;1599:53;:::i;:::-;1589:63;;1544:118;1217:452;;;;;:::o;1675:407::-;;;1800:2;1788:9;1779:7;1775:23;1771:32;1768:2;;;1816:1;1813;1806:12;1768:2;1859:1;1884:53;1929:7;1920:6;1909:9;1905:22;1884:53;:::i;:::-;1874:63;;1830:117;1986:2;2012:53;2057:7;2048:6;2037:9;2033:22;2012:53;:::i;:::-;2002:63;;1957:118;1758:324;;;;;:::o;2088:262::-;;2196:2;2184:9;2175:7;2171:23;2167:32;2164:2;;;2212:1;2209;2202:12;2164:2;2255:1;2280:53;2325:7;2316:6;2305:9;2301:22;2280:53;:::i;:::-;2270:63;;2226:117;2154:196;;;;:::o;2356:401::-;;;2478:2;2466:9;2457:7;2453:23;2449:32;2446:2;;;2494:1;2491;2484:12;2446:2;2537:1;2562:53;2607:7;2598:6;2587:9;2583:22;2562:53;:::i;:::-;2552:63;;2508:117;2664:2;2690:50;2732:7;2723:6;2712:9;2708:22;2690:50;:::i;:::-;2680:60;;2635:115;2436:321;;;;;:::o;2763:118::-;2850:24;2868:5;2850:24;:::i;:::-;2845:3;2838:37;2828:53;;:::o;2887:109::-;2968:21;2983:5;2968:21;:::i;:::-;2963:3;2956:34;2946:50;;:::o;3002:364::-;;3118:39;3151:5;3118:39;:::i;:::-;3173:71;3237:6;3232:3;3173:71;:::i;:::-;3166:78;;3253:52;3298:6;3293:3;3286:4;3279:5;3275:16;3253:52;:::i;:::-;3330:29;3352:6;3330:29;:::i;:::-;3325:3;3321:39;3314:46;;3094:272;;;;;:::o;3372:366::-;;3535:67;3599:2;3594:3;3535:67;:::i;:::-;3528:74;;3611:93;3700:3;3611:93;:::i;:::-;3729:2;3724:3;3720:12;3713:19;;3518:220;;;:::o;3744:366::-;;3907:67;3971:2;3966:3;3907:67;:::i;:::-;3900:74;;3983:93;4072:3;3983:93;:::i;:::-;4101:2;4096:3;4092:12;4085:19;;3890:220;;;:::o;4116:366::-;;4279:67;4343:2;4338:3;4279:67;:::i;:::-;4272:74;;4355:93;4444:3;4355:93;:::i;:::-;4473:2;4468:3;4464:12;4457:19;;4262:220;;;:::o;4488:366::-;;4651:67;4715:2;4710:3;4651:67;:::i;:::-;4644:74;;4727:93;4816:3;4727:93;:::i;:::-;4845:2;4840:3;4836:12;4829:19;;4634:220;;;:::o;4860:366::-;;5023:67;5087:2;5082:3;5023:67;:::i;:::-;5016:74;;5099:93;5188:3;5099:93;:::i;:::-;5217:2;5212:3;5208:12;5201:19;;5006:220;;;:::o;5232:366::-;;5395:67;5459:2;5454:3;5395:67;:::i;:::-;5388:74;;5471:93;5560:3;5471:93;:::i;:::-;5589:2;5584:3;5580:12;5573:19;;5378:220;;;:::o;5604:366::-;;5767:67;5831:2;5826:3;5767:67;:::i;:::-;5760:74;;5843:93;5932:3;5843:93;:::i;:::-;5961:2;5956:3;5952:12;5945:19;;5750:220;;;:::o;5976:366::-;;6139:67;6203:2;6198:3;6139:67;:::i;:::-;6132:74;;6215:93;6304:3;6215:93;:::i;:::-;6333:2;6328:3;6324:12;6317:19;;6122:220;;;:::o;6348:366::-;;6511:67;6575:2;6570:3;6511:67;:::i;:::-;6504:74;;6587:93;6676:3;6587:93;:::i;:::-;6705:2;6700:3;6696:12;6689:19;;6494:220;;;:::o;6720:366::-;;6883:67;6947:2;6942:3;6883:67;:::i;:::-;6876:74;;6959:93;7048:3;6959:93;:::i;:::-;7077:2;7072:3;7068:12;7061:19;;6866:220;;;:::o;7092:366::-;;7255:67;7319:2;7314:3;7255:67;:::i;:::-;7248:74;;7331:93;7420:3;7331:93;:::i;:::-;7449:2;7444:3;7440:12;7433:19;;7238:220;;;:::o;7464:366::-;;7627:67;7691:2;7686:3;7627:67;:::i;:::-;7620:74;;7703:93;7792:3;7703:93;:::i;:::-;7821:2;7816:3;7812:12;7805:19;;7610:220;;;:::o;7836:366::-;;7999:67;8063:2;8058:3;7999:67;:::i;:::-;7992:74;;8075:93;8164:3;8075:93;:::i;:::-;8193:2;8188:3;8184:12;8177:19;;7982:220;;;:::o;8208:366::-;;8371:67;8435:2;8430:3;8371:67;:::i;:::-;8364:74;;8447:93;8536:3;8447:93;:::i;:::-;8565:2;8560:3;8556:12;8549:19;;8354:220;;;:::o;8580:366::-;;8743:67;8807:2;8802:3;8743:67;:::i;:::-;8736:74;;8819:93;8908:3;8819:93;:::i;:::-;8937:2;8932:3;8928:12;8921:19;;8726:220;;;:::o;8952:118::-;9039:24;9057:5;9039:24;:::i;:::-;9034:3;9027:37;9017:53;;:::o;9076:112::-;9159:22;9175:5;9159:22;:::i;:::-;9154:3;9147:35;9137:51;;:::o;9194:222::-;;9325:2;9314:9;9310:18;9302:26;;9338:71;9406:1;9395:9;9391:17;9382:6;9338:71;:::i;:::-;9292:124;;;;:::o;9422:210::-;;9547:2;9536:9;9532:18;9524:26;;9560:65;9622:1;9611:9;9607:17;9598:6;9560:65;:::i;:::-;9514:118;;;;:::o;9638:313::-;;9789:2;9778:9;9774:18;9766:26;;9838:9;9832:4;9828:20;9824:1;9813:9;9809:17;9802:47;9866:78;9939:4;9930:6;9866:78;:::i;:::-;9858:86;;9756:195;;;;:::o;9957:419::-;;10161:2;10150:9;10146:18;10138:26;;10210:9;10204:4;10200:20;10196:1;10185:9;10181:17;10174:47;10238:131;10364:4;10238:131;:::i;:::-;10230:139;;10128:248;;;:::o;10382:419::-;;10586:2;10575:9;10571:18;10563:26;;10635:9;10629:4;10625:20;10621:1;10610:9;10606:17;10599:47;10663:131;10789:4;10663:131;:::i;:::-;10655:139;;10553:248;;;:::o;10807:419::-;;11011:2;11000:9;10996:18;10988:26;;11060:9;11054:4;11050:20;11046:1;11035:9;11031:17;11024:47;11088:131;11214:4;11088:131;:::i;:::-;11080:139;;10978:248;;;:::o;11232:419::-;;11436:2;11425:9;11421:18;11413:26;;11485:9;11479:4;11475:20;11471:1;11460:9;11456:17;11449:47;11513:131;11639:4;11513:131;:::i;:::-;11505:139;;11403:248;;;:::o;11657:419::-;;11861:2;11850:9;11846:18;11838:26;;11910:9;11904:4;11900:20;11896:1;11885:9;11881:17;11874:47;11938:131;12064:4;11938:131;:::i;:::-;11930:139;;11828:248;;;:::o;12082:419::-;;12286:2;12275:9;12271:18;12263:26;;12335:9;12329:4;12325:20;12321:1;12310:9;12306:17;12299:47;12363:131;12489:4;12363:131;:::i;:::-;12355:139;;12253:248;;;:::o;12507:419::-;;12711:2;12700:9;12696:18;12688:26;;12760:9;12754:4;12750:20;12746:1;12735:9;12731:17;12724:47;12788:131;12914:4;12788:131;:::i;:::-;12780:139;;12678:248;;;:::o;12932:419::-;;13136:2;13125:9;13121:18;13113:26;;13185:9;13179:4;13175:20;13171:1;13160:9;13156:17;13149:47;13213:131;13339:4;13213:131;:::i;:::-;13205:139;;13103:248;;;:::o;13357:419::-;;13561:2;13550:9;13546:18;13538:26;;13610:9;13604:4;13600:20;13596:1;13585:9;13581:17;13574:47;13638:131;13764:4;13638:131;:::i;:::-;13630:139;;13528:248;;;:::o;13782:419::-;;13986:2;13975:9;13971:18;13963:26;;14035:9;14029:4;14025:20;14021:1;14010:9;14006:17;13999:47;14063:131;14189:4;14063:131;:::i;:::-;14055:139;;13953:248;;;:::o;14207:419::-;;14411:2;14400:9;14396:18;14388:26;;14460:9;14454:4;14450:20;14446:1;14435:9;14431:17;14424:47;14488:131;14614:4;14488:131;:::i;:::-;14480:139;;14378:248;;;:::o;14632:419::-;;14836:2;14825:9;14821:18;14813:26;;14885:9;14879:4;14875:20;14871:1;14860:9;14856:17;14849:47;14913:131;15039:4;14913:131;:::i;:::-;14905:139;;14803:248;;;:::o;15057:419::-;;15261:2;15250:9;15246:18;15238:26;;15310:9;15304:4;15300:20;15296:1;15285:9;15281:17;15274:47;15338:131;15464:4;15338:131;:::i;:::-;15330:139;;15228:248;;;:::o;15482:419::-;;15686:2;15675:9;15671:18;15663:26;;15735:9;15729:4;15725:20;15721:1;15710:9;15706:17;15699:47;15763:131;15889:4;15763:131;:::i;:::-;15755:139;;15653:248;;;:::o;15907:419::-;;16111:2;16100:9;16096:18;16088:26;;16160:9;16154:4;16150:20;16146:1;16135:9;16131:17;16124:47;16188:131;16314:4;16188:131;:::i;:::-;16180:139;;16078:248;;;:::o;16332:222::-;;16463:2;16452:9;16448:18;16440:26;;16476:71;16544:1;16533:9;16529:17;16520:6;16476:71;:::i;:::-;16430:124;;;;:::o;16560:214::-;;16687:2;16676:9;16672:18;16664:26;;16700:67;16764:1;16753:9;16749:17;16740:6;16700:67;:::i;:::-;16654:120;;;;:::o;16780:99::-;;16866:5;16860:12;16850:22;;16839:40;;;:::o;16885:169::-;;17003:6;16998:3;16991:19;17043:4;17038:3;17034:14;17019:29;;16981:73;;;;:::o;17060:305::-;;17119:20;17137:1;17119:20;:::i;:::-;17114:25;;17153:20;17171:1;17153:20;:::i;:::-;17148:25;;17307:1;17239:66;17235:74;17232:1;17229:81;17226:2;;;17313:18;;:::i;:::-;17226:2;17357:1;17354;17350:9;17343:16;;17104:261;;;;:::o;17371:185::-;;17428:20;17446:1;17428:20;:::i;:::-;17423:25;;17462:20;17480:1;17462:20;:::i;:::-;17457:25;;17501:1;17491:2;;17506:18;;:::i;:::-;17491:2;17548:1;17545;17541:9;17536:14;;17413:143;;;;:::o;17562:848::-;;;17654:6;17645:15;;17678:5;17669:14;;17692:712;17713:1;17703:8;17700:15;17692:712;;;17808:4;17803:3;17799:14;17793:4;17790:24;17787:2;;;17817:18;;:::i;:::-;17787:2;17867:1;17857:8;17853:16;17850:2;;;18282:4;18275:5;18271:16;18262:25;;17850:2;18332:4;18326;18322:15;18314:23;;18362:32;18385:8;18362:32;:::i;:::-;18350:44;;17692:712;;;17635:775;;;;;;;:::o;18416:285::-;;18500:23;18518:4;18500:23;:::i;:::-;18492:31;;18544:27;18562:8;18544:27;:::i;:::-;18532:39;;18590:104;18627:66;18617:8;18611:4;18590:104;:::i;:::-;18581:113;;18482:219;;;;:::o;18707:1073::-;;18952:8;18942:2;;18973:1;18964:10;;18975:5;;18942:2;19001:4;18991:2;;19018:1;19009:10;;19020:5;;18991:2;19087:4;19135:1;19130:27;;;;19171:1;19166:191;;;;19080:277;;19130:27;19148:1;19139:10;;19150:5;;;19166:191;19211:3;19201:8;19198:17;19195:2;;;19218:18;;:::i;:::-;19195:2;19267:8;19264:1;19260:16;19251:25;;19302:3;19295:5;19292:14;19289:2;;;19309:18;;:::i;:::-;19289:2;19342:5;;;19080:277;;19466:2;19456:8;19453:16;19447:3;19441:4;19438:13;19434:36;19416:2;19406:8;19403:16;19398:2;19392:4;19389:12;19385:35;19369:111;19366:2;;;19522:8;19516:4;19512:19;19503:28;;19557:3;19550:5;19547:14;19544:2;;;19564:18;;:::i;:::-;19544:2;19597:5;;19366:2;19637:42;19675:3;19665:8;19659:4;19656:1;19637:42;:::i;:::-;19622:57;;;;19711:4;19706:3;19702:14;19695:5;19692:25;19689:2;;;19720:18;;:::i;:::-;19689:2;19769:4;19762:5;19758:16;19749:25;;18767:1013;;;;;;:::o;19786:348::-;;19849:20;19867:1;19849:20;:::i;:::-;19844:25;;19883:20;19901:1;19883:20;:::i;:::-;19878:25;;20071:1;20003:66;19999:74;19996:1;19993:81;19988:1;19981:9;19974:17;19970:105;19967:2;;;20078:18;;:::i;:::-;19967:2;20126:1;20123;20119:9;20108:20;;19834:300;;;;:::o;20140:191::-;;20200:20;20218:1;20200:20;:::i;:::-;20195:25;;20234:20;20252:1;20234:20;:::i;:::-;20229:25;;20273:1;20270;20267:8;20264:2;;;20278:18;;:::i;:::-;20264:2;20323:1;20320;20316:9;20308:17;;20185:146;;;;:::o;20337:96::-;;20403:24;20421:5;20403:24;:::i;:::-;20392:35;;20382:51;;;:::o;20439:90::-;;20516:5;20509:13;20502:21;20491:32;;20481:48;;;:::o;20535:126::-;;20612:42;20605:5;20601:54;20590:65;;20580:81;;;:::o;20667:77::-;;20733:5;20722:16;;20712:32;;;:::o;20750:86::-;;20825:4;20818:5;20814:16;20803:27;;20793:43;;;:::o;20842:307::-;20910:1;20920:113;20934:6;20931:1;20928:13;20920:113;;;21019:1;21014:3;21010:11;21004:18;21000:1;20995:3;20991:11;20984:39;20956:2;20953:1;20949:10;20944:15;;20920:113;;;21051:6;21048:1;21045:13;21042:2;;;21131:1;21122:6;21117:3;21113:16;21106:27;21042:2;20891:258;;;;:::o;21155:233::-;;21217:24;21235:5;21217:24;:::i;:::-;21208:33;;21263:66;21256:5;21253:77;21250:2;;;21333:18;;:::i;:::-;21250:2;21380:1;21373:5;21369:13;21362:20;;21198:190;;;:::o;21394:180::-;21442:77;21439:1;21432:88;21539:4;21536:1;21529:15;21563:4;21560:1;21553:15;21580:180;21628:77;21625:1;21618:88;21725:4;21722:1;21715:15;21749:4;21746:1;21739:15;21766:102;;21858:2;21854:7;21849:2;21842:5;21838:14;21834:28;21824:38;;21814:54;;;:::o;21874:102::-;;21963:5;21960:1;21956:13;21935:34;;21925:51;;;:::o;21982:224::-;22122:34;22118:1;22110:6;22106:14;22099:58;22191:7;22186:2;22178:6;22174:15;22167:32;22088:118;:::o;22212:223::-;22352:34;22348:1;22340:6;22336:14;22329:58;22421:6;22416:2;22408:6;22404:15;22397:31;22318:117;:::o;22441:229::-;22581:34;22577:1;22569:6;22565:14;22558:58;22650:12;22645:2;22637:6;22633:15;22626:37;22547:123;:::o;22676:225::-;22816:34;22812:1;22804:6;22800:14;22793:58;22885:8;22880:2;22872:6;22868:15;22861:33;22782:119;:::o;22907:177::-;23047:29;23043:1;23035:6;23031:14;23024:53;23013:71;:::o;23090:177::-;23230:29;23226:1;23218:6;23214:14;23207:53;23196:71;:::o;23273:181::-;23413:33;23409:1;23401:6;23397:14;23390:57;23379:75;:::o;23460:227::-;23600:34;23596:1;23588:6;23584:14;23577:58;23669:10;23664:2;23656:6;23652:15;23645:35;23566:121;:::o;23693:220::-;23833:34;23829:1;23821:6;23817:14;23810:58;23902:3;23897:2;23889:6;23885:15;23878:28;23799:114;:::o;23919:182::-;24059:34;24055:1;24047:6;24043:14;24036:58;24025:76;:::o;24107:228::-;24247:34;24243:1;24235:6;24231:14;24224:58;24316:11;24311:2;24303:6;24299:15;24292:36;24213:122;:::o;24341:222::-;24481:34;24477:1;24469:6;24465:14;24458:58;24550:5;24545:2;24537:6;24533:15;24526:30;24447:116;:::o;24569:221::-;24709:34;24705:1;24697:6;24693:14;24686:58;24778:4;24773:2;24765:6;24761:15;24754:29;24675:115;:::o;24796:231::-;24936:34;24932:1;24924:6;24920:14;24913:58;25005:14;25000:2;24992:6;24988:15;24981:39;24902:125;:::o;25033:221::-;25173:34;25169:1;25161:6;25157:14;25150:58;25242:4;25237:2;25229:6;25225:15;25218:29;25139:115;:::o;25260:122::-;25333:24;25351:5;25333:24;:::i;:::-;25326:5;25323:35;25313:2;;25372:1;25369;25362:12;25313:2;25303:79;:::o;25388:116::-;25458:21;25473:5;25458:21;:::i;:::-;25451:5;25448:32;25438:2;;25494:1;25491;25484:12;25438:2;25428:76;:::o;25510:122::-;25583:24;25601:5;25583:24;:::i;:::-;25576:5;25573:35;25563:2;;25622:1;25619;25612:12;25563:2;25553:79;:::o
Swarm Source
ipfs://712037f167d8cc5df8cc3537e2064075c02dc78d0c0cdf4550c97eebf833440b
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.