BEP-20
Overview
Max Total Supply
100,000,000GIFT
Holders
3,262
Total Transfers
-
Market
Price
$0.00 @ 0.000000 BNB
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
GIFT
Compiler Version
v0.7.4+commit.3f05b770
Contract Source Code (Solidity)
/** *Submitted for verification at BscScan.com on 2021-04-21 */ /* ██████████ ██ ████████ ██████████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ████ ██ ████████ ██ ██ ██ ██ ██ ██ ██████████ ██ ██ ██ ███████████████████████████████████████████ The gift that keeps on giving */ // SPDX-License-Identifier: MIT pragma solidity 0.7.4; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return 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 ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @dev 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) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } /** * @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"); require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { 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. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () internal { 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 GIFT is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; string private constant NAME = "Gift Coin"; string private constant SYMBOL = "GIFT"; uint8 private constant DECIMALS = 18; mapping(address => uint256) private rewards; mapping(address => uint256) private actual; mapping(address => mapping(address => uint256)) private allowances; mapping(address => bool) private excludedFromFees; mapping(address => bool) private excludedFromRewards; address[] private rewardExcluded; uint256 private constant MAX = ~uint256(0); uint256 private constant ACTUAL_TOTAL = 100_000_000 * 1e18; uint256 private rewardsTotal = (MAX - (MAX % ACTUAL_TOTAL)); uint256 private holderFeeTotal; uint256 private marketingFeeTotal; uint256 private lpFeeTotal; uint256 private merchantFeeTotal; uint256 public taxPercentage = 3; uint256 public holderTaxAlloc = 10; uint256 public marketingTaxAlloc = 5; uint256 public lpTaxAlloc; uint256 public merchantTaxAlloc; uint256 public totalTaxAlloc = marketingTaxAlloc.add(holderTaxAlloc).add(lpTaxAlloc).add(merchantTaxAlloc); address public marketingAddress; address public lpStakingAddress; address public merchantStakingAddress; constructor(address _marketingAddress) { rewards[_marketingAddress] = rewardsTotal; emit Transfer(address(0), _marketingAddress, ACTUAL_TOTAL); marketingAddress = _marketingAddress; excludeFromRewards(_msgSender()); excludeFromFees(_marketingAddress); if (_marketingAddress != _msgSender()) { excludeFromRewards(_marketingAddress); excludeFromFees(_msgSender()); } excludeFromFees(address(0x000000000000000000000000000000000000dEaD)); } function name() external pure returns (string memory) { return NAME; } function symbol() external pure returns (string memory) { return SYMBOL; } function decimals() external pure returns (uint8) { return DECIMALS; } function totalSupply() external pure override returns (uint256) { return ACTUAL_TOTAL; } function balanceOf(address _account) public view override returns (uint256) { if (excludedFromRewards[_account]) { return actual[_account]; } return tokenWithRewards(rewards[_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, "ERC20: 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, "ERC20: decreased allowance below zero") ); return true; } function isExcludedFromRewards(address _account) external view returns (bool) { return excludedFromRewards[_account]; } function isExcludedFromFees(address _account) external view returns (bool) { return excludedFromFees[_account]; } function totalFees() external view returns (uint256) { return holderFeeTotal.add(marketingFeeTotal).add(lpFeeTotal).add(merchantFeeTotal); } function totalHolderFees() external view returns (uint256) { return holderFeeTotal; } function totalMarketingFees() external view returns (uint256) { return marketingFeeTotal; } function totalLpFees() external view returns (uint256) { return lpFeeTotal; } function totalMerchantFees() external view returns (uint256) { return merchantFeeTotal; } function distribute(uint256 _actualAmount) public { address sender = _msgSender(); require(!excludedFromRewards[sender], "Excluded addresses cannot call this function"); (uint256 rewardAmount, , , , ) = _getValues(_actualAmount); rewards[sender] = rewards[sender].sub(rewardAmount); rewardsTotal = rewardsTotal.sub(rewardAmount); holderFeeTotal = holderFeeTotal.add(_actualAmount); } function excludeFromFees(address _account) public onlyOwner() { require(!excludedFromFees[_account], "Account is already excluded from fee"); excludedFromFees[_account] = true; } function includeInFees(address _account) public onlyOwner() { require(excludedFromFees[_account], "Account is already included in fee"); excludedFromFees[_account] = false; } function excludeFromRewards(address _account) public onlyOwner() { require(!excludedFromRewards[_account], "Account is already excluded from reward"); if (rewards[_account] > 0) { actual[_account] = tokenWithRewards(rewards[_account]); } excludedFromRewards[_account] = true; rewardExcluded.push(_account); } function includeInRewards(address _account) public onlyOwner() { require(excludedFromRewards[_account], "Account is already included in rewards"); for (uint256 i = 0; i < rewardExcluded.length; i++) { if (rewardExcluded[i] == _account) { rewardExcluded[i] = rewardExcluded[rewardExcluded.length - 1]; actual[_account] = 0; excludedFromRewards[_account] = false; rewardExcluded.pop(); break; } } } function _approve( address _owner, address _spender, uint256 _amount ) private { require(_owner != address(0), "ERC20: approve from the zero address"); require(_spender != address(0), "ERC20: approve to the zero address"); allowances[_owner][_spender] = _amount; emit Approval(_owner, _spender, _amount); } function _transfer( address _sender, address _recipient, uint256 _amount ) private { require(_sender != address(0), "ERC20: transfer from the zero address"); require(_recipient != address(0), "ERC20: transfer to the zero address"); require(_amount > 0, "Transfer amount must be greater than zero"); uint256 currentTaxPercentage = taxPercentage; if (excludedFromFees[_sender] || excludedFromFees[_recipient]) { taxPercentage = 0; } else { uint256 fee = _getFee(_amount); uint256 marketingFee = _getMarketingFee(fee); uint256 lpFee = _getLpFee(fee); uint256 merchantFee = _getMerchantFee(fee); _updateMarketingFee(marketingFee); _updateLpFee(lpFee); _updateMerchantFee(merchantFee); } if (excludedFromRewards[_sender] && !excludedFromRewards[_recipient]) { _transferWithoutSenderRewards(_sender, _recipient, _amount); } else if (!excludedFromRewards[_sender] && excludedFromRewards[_recipient]) { _transferWithRecipientRewards(_sender, _recipient, _amount); } else if (!excludedFromRewards[_sender] && !excludedFromRewards[_recipient]) { _transferWithRewards(_sender, _recipient, _amount); } else if (excludedFromRewards[_sender] && excludedFromRewards[_recipient]) { _transferWithoutRewards(_sender, _recipient, _amount); } else { _transferWithRewards(_sender, _recipient, _amount); } if (currentTaxPercentage != taxPercentage) { taxPercentage = currentTaxPercentage; } } function _transferWithRewards( address _sender, address _recipient, uint256 _actualAmount ) private { ( uint256 rewardAmount, uint256 rewardTransferAmount, uint256 rewardFee, uint256 actualTransferAmount, uint256 actualFee ) = _getValues(_actualAmount); rewards[_sender] = rewards[_sender].sub(rewardAmount); rewards[_recipient] = rewards[_recipient].add(rewardTransferAmount); _updateHolderFee(rewardFee, actualFee); emit Transfer(_sender, _recipient, actualTransferAmount); } function _transferWithRecipientRewards( address _sender, address _recipient, uint256 _actualAmount ) private { ( uint256 rewardAmount, uint256 rewardTransferAmount, uint256 rewardFee, uint256 actualTransferAmount, uint256 actualFee ) = _getValues(_actualAmount); rewards[_sender] = rewards[_sender].sub(rewardAmount); actual[_recipient] = actual[_recipient].add(actualTransferAmount); rewards[_recipient] = rewards[_recipient].add(rewardTransferAmount); _updateHolderFee(rewardFee, actualFee); emit Transfer(_sender, _recipient, actualTransferAmount); } function _transferWithoutSenderRewards( address _sender, address _recipient, uint256 _actualAmount ) private { ( uint256 rewardAmount, uint256 rewardTransferAmount, uint256 rewardFee, uint256 actualTransferAmount, uint256 actualFee ) = _getValues(_actualAmount); actual[_sender] = actual[_sender].sub(_actualAmount); rewards[_sender] = rewards[_sender].sub(rewardAmount); rewards[_recipient] = rewards[_recipient].add(rewardTransferAmount); _updateHolderFee(rewardFee, actualFee); emit Transfer(_sender, _recipient, actualTransferAmount); } function _transferWithoutRewards( address _sender, address _recipient, uint256 _actualAmount ) private { ( uint256 rewardAmount, uint256 rewardTransferAmount, uint256 rewardFee, uint256 actualTransferAmount, uint256 actualFee ) = _getValues(_actualAmount); actual[_sender] = actual[_sender].sub(_actualAmount); rewards[_sender] = rewards[_sender].sub(rewardAmount); actual[_recipient] = actual[_recipient].add(actualTransferAmount); rewards[_recipient] = rewards[_recipient].add(rewardTransferAmount); _updateHolderFee(rewardFee, actualFee); emit Transfer(_sender, _recipient, actualTransferAmount); } function _updateHolderFee(uint256 _rewardFee, uint256 _actualFee) private { rewardsTotal = rewardsTotal.sub(_rewardFee); holderFeeTotal = holderFeeTotal.add(_actualFee); } function _updateMarketingFee(uint256 _marketingFee) private { if (marketingAddress == address(0)) { return; } uint256 rewardsRate = _getRewardsRate(); uint256 rewardMarketingFee = _marketingFee.mul(rewardsRate); marketingFeeTotal = marketingFeeTotal.add(_marketingFee); rewards[marketingAddress] = rewards[marketingAddress].add(rewardMarketingFee); if (excludedFromRewards[marketingAddress]) { actual[marketingAddress] = actual[marketingAddress].add(_marketingFee); } } function _updateLpFee(uint256 _lpFee) private { if (lpStakingAddress == address(0)) { return; } uint256 rewardsRate = _getRewardsRate(); uint256 rewardLpFee = _lpFee.mul(rewardsRate); lpFeeTotal = lpFeeTotal.add(_lpFee); rewards[lpStakingAddress] = rewards[lpStakingAddress].add(rewardLpFee); if (excludedFromRewards[lpStakingAddress]) { actual[lpStakingAddress] = actual[lpStakingAddress].add(_lpFee); } } function _updateMerchantFee(uint256 _merchantFee) private { if (merchantStakingAddress == address(0)) { return; } uint256 rewardsRate = _getRewardsRate(); uint256 rewardMerchantFee = _merchantFee.mul(rewardsRate); merchantFeeTotal = merchantFeeTotal.add(_merchantFee); rewards[merchantStakingAddress] = rewards[merchantStakingAddress].add(rewardMerchantFee); if (excludedFromRewards[merchantStakingAddress]) { actual[merchantStakingAddress] = actual[merchantStakingAddress].add(_merchantFee); } } function rewardsFromToken(uint256 _actualAmount, bool _deductTransferFee) public view returns (uint256) { require(_actualAmount <= ACTUAL_TOTAL, "Amount must be less than supply"); if (!_deductTransferFee) { (uint256 rewardAmount, , , , ) = _getValues(_actualAmount); return rewardAmount; } else { (, uint256 rewardTransferAmount, , , ) = _getValues(_actualAmount); return rewardTransferAmount; } } function tokenWithRewards(uint256 _rewardAmount) public view returns (uint256) { require(_rewardAmount <= rewardsTotal, "Amount must be less than total rewards"); uint256 rewardsRate = _getRewardsRate(); return _rewardAmount.div(rewardsRate); } function _getValues(uint256 _actualAmount) private view returns ( uint256, uint256, uint256, uint256, uint256 ) { (uint256 actualTransferAmount, uint256 actualFee) = _getActualValues(_actualAmount); uint256 rewardsRate = _getRewardsRate(); ( uint256 rewardAmount, uint256 rewardTransferAmount, uint256 rewardFee ) = _getRewardValues(_actualAmount, actualFee, rewardsRate); return (rewardAmount, rewardTransferAmount, rewardFee, actualTransferAmount, actualFee); } function _getActualValues(uint256 _actualAmount) private view returns (uint256, uint256) { uint256 actualFee = _getFee(_actualAmount); uint256 actualHolderFee = _getHolderFee(actualFee); uint256 actualTransferAmount = _actualAmount.sub(actualFee); return (actualTransferAmount, actualHolderFee); } function _getRewardValues( uint256 _actualAmount, uint256 _actualHolderFee, uint256 _rewardsRate ) private view returns ( uint256, uint256, uint256 ) { uint256 actualFee = _getFee(_actualAmount).mul(_rewardsRate); uint256 rewardAmount = _actualAmount.mul(_rewardsRate); uint256 rewardTransferAmount = rewardAmount.sub(actualFee); uint256 rewardFee = _actualHolderFee.mul(_rewardsRate); return (rewardAmount, rewardTransferAmount, rewardFee); } function _getRewardsRate() private view returns (uint256) { (uint256 rewardsSupply, uint256 actualSupply) = _getCurrentSupply(); return rewardsSupply.div(actualSupply); } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rewardsSupply = rewardsTotal; uint256 actualSupply = ACTUAL_TOTAL; for (uint256 i = 0; i < rewardExcluded.length; i++) { if (rewards[rewardExcluded[i]] > rewardsSupply || actual[rewardExcluded[i]] > actualSupply) { return (rewardsTotal, ACTUAL_TOTAL); } rewardsSupply = rewardsSupply.sub(rewards[rewardExcluded[i]]); actualSupply = actualSupply.sub(actual[rewardExcluded[i]]); } if (rewardsSupply < rewardsTotal.div(ACTUAL_TOTAL)) { return (rewardsTotal, ACTUAL_TOTAL); } return (rewardsSupply, actualSupply); } function _getFee(uint256 _amount) private view returns (uint256) { return _amount.mul(taxPercentage).div(100); } function _getHolderFee(uint256 _tax) private view returns (uint256) { return _tax.mul(holderTaxAlloc).div(totalTaxAlloc); } function _getMarketingFee(uint256 _tax) private view returns (uint256) { return _tax.mul(marketingTaxAlloc).div(totalTaxAlloc); } function _getLpFee(uint256 _tax) private view returns (uint256) { return _tax.mul(lpTaxAlloc).div(totalTaxAlloc); } function _getMerchantFee(uint256 _tax) private view returns (uint256) { return _tax.mul(merchantTaxAlloc).div(totalTaxAlloc); } function setTaxPercentage(uint256 _taxPercentage) external onlyOwner { require(_taxPercentage >= 1 && _taxPercentage <= 5, "Value is outside of range 1-5"); taxPercentage = _taxPercentage; } function setTaxAllocations( uint256 _holderTaxAlloc, uint256 _marketingTaxAlloc, uint256 _lpTaxAlloc, uint256 _merchantTaxAlloc ) external onlyOwner { totalTaxAlloc = _holderTaxAlloc.add(_marketingTaxAlloc).add(_lpTaxAlloc).add(_merchantTaxAlloc); require(_holderTaxAlloc >= 5 && _holderTaxAlloc <= 10, "_holderTaxAlloc is outside of range 5-10"); require(_lpTaxAlloc <= 10, "_lpTaxAlloc is greater than 10"); require(_marketingTaxAlloc <= 10, "_marketingTaxAlloc is greater than 10"); require(_merchantTaxAlloc <= 10, "_merchantTaxAlloc is greater than 10"); holderTaxAlloc = _holderTaxAlloc; marketingTaxAlloc = _marketingTaxAlloc; lpTaxAlloc = _lpTaxAlloc; merchantTaxAlloc = _merchantTaxAlloc; } function setMarketingAddress(address _marketingAddress) external onlyOwner { marketingAddress = _marketingAddress; } function setLpStakingAddress(address _lpStakingAddress) external onlyOwner { lpStakingAddress = _lpStakingAddress; } function setMerchantStakingAddress(address _merchantStakingAddress) external onlyOwner { merchantStakingAddress = _merchantStakingAddress; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_marketingAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"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":"_actualAmount","type":"uint256"}],"name":"distribute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"excludeFromRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"holderTaxAlloc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"includeInFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"includeInRewards","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":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"isExcludedFromRewards","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpStakingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpTaxAlloc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingTaxAlloc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"merchantStakingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"merchantTaxAlloc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_actualAmount","type":"uint256"},{"internalType":"bool","name":"_deductTransferFee","type":"bool"}],"name":"rewardsFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_lpStakingAddress","type":"address"}],"name":"setLpStakingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingAddress","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_merchantStakingAddress","type":"address"}],"name":"setMerchantStakingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_holderTaxAlloc","type":"uint256"},{"internalType":"uint256","name":"_marketingTaxAlloc","type":"uint256"},{"internalType":"uint256","name":"_lpTaxAlloc","type":"uint256"},{"internalType":"uint256","name":"_merchantTaxAlloc","type":"uint256"}],"name":"setTaxAllocations","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_taxPercentage","type":"uint256"}],"name":"setTaxPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rewardAmount","type":"uint256"}],"name":"tokenWithRewards","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":"totalHolderFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalLpFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalMarketingFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalMerchantFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalTaxAlloc","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
60806040526a52b7d2dcc80cd2e400000060001906600019036007556003600c55600a600d556005600e556200006a60105462000056600f5462000056600d54600e54620001ea60201b620017121790919060201c565b620001ea60201b620017121790919060201c565b6011553480156200007a57600080fd5b50604051620031913803806200319183398181016040526020811015620000a057600080fd5b50516000620000ae6200024c565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506007546001600160a01b03821660008181526001602090815260408083209490945583516a52b7d2dcc80cd2e400000081529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a3601280546001600160a01b0319166001600160a01b03831617905562000189620001836200024c565b62000250565b6200019481620003c9565b6200019e6200024c565b6001600160a01b0316816001600160a01b031614620001d657620001c28162000250565b620001d6620001d06200024c565b620003c9565b620001e361dead620003c9565b5062000898565b60008282018381101562000245576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b6200025a6200024c565b6000546001600160a01b03908116911614620002ac576040805162461bcd60e51b8152602060048201819052602482015260008051602062003127833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526005602052604090205460ff1615620003065760405162461bcd60e51b8152600401808060200182810382526027815260200180620031006027913960400191505060405180910390fd5b6001600160a01b0381166000908152600160205260409020541562000363576001600160a01b0381166000908152600160205260409020546200034990620004a3565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b620003d36200024c565b6000546001600160a01b0390811691161462000425576040805162461bcd60e51b8152602060048201819052602482015260008051602062003127833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526004602052604090205460ff16156200047f5760405162461bcd60e51b81526004018080602001828103825260248152602001806200316d6024913960400191505060405180910390fd5b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000600754821115620004e85760405162461bcd60e51b8152600401808060200182810382526026815260200180620031476026913960400191505060405180910390fd5b6000620004f462000510565b90506200024581846200054360201b6200176c1790919060201c565b600080806200051e6200058d565b915091506200053c81836200054360201b6200176c1790919060201c565b9250505090565b60006200024583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200074a60201b60201c565b60075460009081906a52b7d2dcc80cd2e4000000825b600654811015620006f557826001600060068481548110620005c157fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806200062857508160026000600684815481106200060157fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156200064a576007546a52b7d2dcc80cd2e40000009450945050505062000746565b6200069960016000600684815481106200066057fe5b60009182526020808320909101546001600160a01b031683528281019390935260409091019020548591620017ae620007f1821b17901c565b9250620006ea6002600060068481548110620006b157fe5b60009182526020808320909101546001600160a01b031683528281019390935260409091019020548491620017ae620007f1821b17901c565b9150600101620005a3565b506200071d6a52b7d2dcc80cd2e40000006007546200054360201b6200176c1790919060201c565b82101562000740576007546a52b7d2dcc80cd2e400000093509350505062000746565b90925090505b9091565b60008183620007da5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156200079e57818101518382015260200162000784565b50505050905090810190601f168015620007cc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581620007e757fe5b0495945050505050565b60006200024583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506200083b60201b60201c565b60008184841115620008905760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156200079e57818101518382015260200162000784565b505050900390565b61285880620008a86000396000f3fe608060405234801561001057600080fd5b50600436106102dd5760003560e01c8063715018a611610186578063a457c2d7116100e3578063ca24295c11610097578063dd62ed3e11610071578063dd62ed3e14610738578063e57f14e114610766578063f2fde38b1461078c576102dd565b8063ca24295c146106f9578063d71eb4b514610701578063d84bf7a814610730576102dd565b8063a9059cbb116100c8578063a9059cbb1461069f578063ae7b6d16146106cb578063b609995e146106d3576102dd565b8063a457c2d71461066b578063a5ece94114610697576102dd565b80638da05f8f1161013a578063906e9dd01161011f578063906e9dd01461062057806391c05b0b1461064657806395d89b4114610663576102dd565b80638da05f8f146105f25780638da5cb5b14610618576102dd565b806375edd5f21161016b57806375edd5f2146105c55780637c31efb1146105cd5780638baa3fd4146105d5576102dd565b8063715018a6146105b557806374e47a1e146105bd576102dd565b806323b872dd1161023f5780634fbee193116101f35780636740b9c6116101cd5780636740b9c61461056a578063699abb3c1461057257806370a082311461058f576102dd565b80634fbee19314610534578063509207591461055a578063595f052e14610562576102dd565b80633557ee77116102245780633557ee77146104db578063395093511461050057806340e7bdf41461052c576102dd565b806323b872dd14610487578063313ce567146104bd576102dd565b8063111e037611610296578063143d4acf1161027b578063143d4acf1461043357806316a2f82a1461045957806318160ddd1461047f576102dd565b8063111e03761461040357806313114a9d1461042b576102dd565b8063077faa21116102c7578063077faa2114610383578063095ea7b31461039d5780630e832273146103dd576102dd565b8062897ad3146102e257806306fdde0314610306575b600080fd5b6102ea6107b2565b604080516001600160a01b039092168252519081900360200190f35b61030e6107c1565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610348578181015183820152602001610330565b50505050905090810190601f1680156103755780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61038b6107f8565b60408051918252519081900360200190f35b6103c9600480360360408110156103b357600080fd5b506001600160a01b0381351690602001356107fe565b604080519115158252519081900360200190f35b6103c9600480360360208110156103f357600080fd5b50356001600160a01b031661081c565b6104296004803603602081101561041957600080fd5b50356001600160a01b031661083e565b005b61038b6109ae565b6104296004803603602081101561044957600080fd5b50356001600160a01b03166109de565b6104296004803603602081101561046f57600080fd5b50356001600160a01b0316610a58565b61038b610b28565b6103c96004803603606081101561049d57600080fd5b506001600160a01b03813581169160208101359091169060400135610b37565b6104c5610bbe565b6040805160ff9092168252519081900360200190f35b61038b600480360360408110156104f157600080fd5b50803590602001351515610bc3565b6103c96004803603604081101561051657600080fd5b506001600160a01b038135169060200135610c5c565b61038b610caa565b6103c96004803603602081101561054a57600080fd5b50356001600160a01b0316610cb0565b61038b610cce565b61038b610cd4565b61038b610cda565b6104296004803603602081101561058857600080fd5b5035610ce0565b61038b600480360360208110156105a557600080fd5b50356001600160a01b0316610da0565b610429610e02565b61038b610ea4565b61038b610eaa565b61038b610eb0565b61038b600480360360208110156105eb57600080fd5b5035610eb6565b6104296004803603602081101561060857600080fd5b50356001600160a01b0316610f16565b6102ea610f90565b6104296004803603602081101561063657600080fd5b50356001600160a01b0316610f9f565b6104296004803603602081101561065c57600080fd5b5035611019565b61030e6110f1565b6103c96004803603604081101561068157600080fd5b506001600160a01b038135169060200135611128565b6102ea611190565b6103c9600480360360408110156106b557600080fd5b506001600160a01b03813516906020013561119f565b61038b6111b3565b610429600480360360208110156106e957600080fd5b50356001600160a01b03166111b9565b6102ea611364565b6104296004803603608081101561071757600080fd5b5080359060208101359060408101359060600135611373565b61038b611515565b61038b6004803603604081101561074e57600080fd5b506001600160a01b038135811691602001351661151b565b6104296004803603602081101561077c57600080fd5b50356001600160a01b0316611546565b610429600480360360208110156107a257600080fd5b50356001600160a01b031661161a565b6013546001600160a01b031681565b60408051808201909152600981527f4769667420436f696e0000000000000000000000000000000000000000000000602082015290565b600b5490565b600061081261080b6117f0565b84846117f4565b5060015b92915050565b6001600160a01b03811660009081526005602052604090205460ff165b919050565b6108466117f0565b6000546001600160a01b03908116911614610896576040805162461bcd60e51b815260206004820181905260248201526000805160206126ad833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526005602052604090205460ff16156108ee5760405162461bcd60e51b81526004018080602001828103825260278152602001806125ad6027913960400191505060405180910390fd5b6001600160a01b03811660009081526001602052604090205415610948576001600160a01b03811660009081526001602052604090205461092e90610eb6565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b60006109d9600b546109d3600a546109d360095460085461171290919063ffffffff16565b90611712565b905090565b6109e66117f0565b6000546001600160a01b03908116911614610a36576040805162461bcd60e51b815260206004820181905260248201526000805160206126ad833981519152604482015290519081900360640190fd5b601480546001600160a01b0319166001600160a01b0392909216919091179055565b610a606117f0565b6000546001600160a01b03908116911614610ab0576040805162461bcd60e51b815260206004820181905260248201526000805160206126ad833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526004602052604090205460ff16610b075760405162461bcd60e51b81526004018080602001828103825260228152602001806125fa6022913960400191505060405180910390fd5b6001600160a01b03166000908152600460205260409020805460ff19169055565b6a52b7d2dcc80cd2e400000090565b6000610b448484846118e0565b610bb484610b506117f0565b610baf85604051806060016040528060288152602001612685602891396001600160a01b038a16600090815260036020526040812090610b8e6117f0565b6001600160a01b031681526020810191909152604001600020549190611bb7565b6117f4565b5060019392505050565b601290565b60006a52b7d2dcc80cd2e4000000831115610c25576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b81610c43576000610c3584611c4e565b509294506108169350505050565b6000610c4e84611c4e565b509194506108169350505050565b6000610812610c696117f0565b84610baf8560036000610c7a6117f0565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611712565b60115481565b6001600160a01b031660009081526004602052604090205460ff1690565b60105481565b600f5481565b600a5490565b610ce86117f0565b6000546001600160a01b03908116911614610d38576040805162461bcd60e51b815260206004820181905260248201526000805160206126ad833981519152604482015290519081900360640190fd5b60018110158015610d4a575060058111155b610d9b576040805162461bcd60e51b815260206004820152601d60248201527f56616c7565206973206f757473696465206f662072616e676520312d35000000604482015290519081900360640190fd5b600c55565b6001600160a01b03811660009081526005602052604081205460ff1615610de057506001600160a01b038116600090815260026020526040902054610839565b6001600160a01b03821660009081526001602052604090205461081690610eb6565b610e0a6117f0565b6000546001600160a01b03908116911614610e5a576040805162461bcd60e51b815260206004820181905260248201526000805160206126ad833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600d5481565b600e5481565b60085490565b6000600754821115610ef95760405162461bcd60e51b81526004018080602001828103825260268152602001806127636026913960400191505060405180910390fd5b6000610f03611c9a565b9050610f0f838261176c565b9392505050565b610f1e6117f0565b6000546001600160a01b03908116911614610f6e576040805162461bcd60e51b815260206004820181905260248201526000805160206126ad833981519152604482015290519081900360640190fd5b601380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031690565b610fa76117f0565b6000546001600160a01b03908116911614610ff7576040805162461bcd60e51b815260206004820181905260248201526000805160206126ad833981519152604482015290519081900360640190fd5b601280546001600160a01b0319166001600160a01b0392909216919091179055565b60006110236117f0565b6001600160a01b03811660009081526005602052604090205490915060ff161561107e5760405162461bcd60e51b815260040180806020018281038252602c8152602001806127ad602c913960400191505060405180910390fd5b600061108983611c4e565b505050506001600160a01b0383166000908152600160205260409020549091506110b390826117ae565b6001600160a01b0383166000908152600160205260409020556007546110d990826117ae565b6007556008546110e99084611712565b600855505050565b60408051808201909152600481527f4749465400000000000000000000000000000000000000000000000000000000602082015290565b60006108126111356117f0565b84610baf856040518060600160405280602581526020016127fe602591396003600061115f6117f0565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611bb7565b6012546001600160a01b031681565b60006108126111ac6117f0565b84846118e0565b600c5481565b6111c16117f0565b6000546001600160a01b03908116911614611211576040805162461bcd60e51b815260206004820181905260248201526000805160206126ad833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526005602052604090205460ff166112685760405162461bcd60e51b81526004018080602001828103825260268152602001806125d46026913960400191505060405180910390fd5b60005b60065481101561136057816001600160a01b03166006828154811061128c57fe5b6000918252602090912001546001600160a01b03161415611358576006805460001981019081106112b957fe5b600091825260209091200154600680546001600160a01b0390921691839081106112df57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff19169055600680548061133157fe5b600082815260209020810160001990810180546001600160a01b0319169055019055611360565b60010161126b565b5050565b6014546001600160a01b031681565b61137b6117f0565b6000546001600160a01b039081169116146113cb576040805162461bcd60e51b815260206004820181905260248201526000805160206126ad833981519152604482015290519081900360640190fd5b6113db816109d384818888611712565b601155600584108015906113f05750600a8411155b61142b5760405162461bcd60e51b81526004018080602001828103825260288152602001806125856028913960400191505060405180910390fd5b600a821115611481576040805162461bcd60e51b815260206004820152601e60248201527f5f6c70546178416c6c6f632069732067726561746572207468616e2031300000604482015290519081900360640190fd5b600a8311156114c15760405162461bcd60e51b81526004018080602001828103825260258152602001806127d96025913960400191505060405180910390fd5b600a8111156115015760405162461bcd60e51b815260040180806020018281038252602481526020018061273f6024913960400191505060405180910390fd5b600d93909355600e91909155600f55601055565b60095490565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b61154e6117f0565b6000546001600160a01b0390811691161461159e576040805162461bcd60e51b815260206004820181905260248201526000805160206126ad833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526004602052604090205460ff16156115f65760405162461bcd60e51b81526004018080602001828103825260248152602001806127896024913960400191505060405180910390fd5b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6116226117f0565b6000546001600160a01b03908116911614611672576040805162461bcd60e51b815260206004820181905260248201526000805160206126ad833981519152604482015290519081900360640190fd5b6001600160a01b0381166116b75760405162461bcd60e51b815260040180806020018281038252602681526020018061261c6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600082820183811015610f0f576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000610f0f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611cbd565b6000610f0f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611bb7565b3390565b6001600160a01b0383166118395760405162461bcd60e51b815260040180806020018281038252602481526020018061271b6024913960400191505060405180910390fd5b6001600160a01b03821661187e5760405162461bcd60e51b81526004018080602001828103825260228152602001806126426022913960400191505060405180910390fd5b6001600160a01b03808416600081815260036020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166119255760405162461bcd60e51b81526004018080602001828103825260258152602001806126f66025913960400191505060405180910390fd5b6001600160a01b03821661196a5760405162461bcd60e51b81526004018080602001828103825260238152602001806125626023913960400191505060405180910390fd5b600081116119a95760405162461bcd60e51b81526004018080602001828103825260298152602001806126cd6029913960400191505060405180910390fd5b600c546001600160a01b03841660009081526004602052604090205460ff16806119eb57506001600160a01b03831660009081526004602052604090205460ff165b156119fa576000600c55611a4e565b6000611a0583611d22565b90506000611a1282611d44565b90506000611a1f83611d61565b90506000611a2c84611d7e565b9050611a3783611d9b565b611a4082611e81565b611a4981611f65565b505050505b6001600160a01b03841660009081526005602052604090205460ff168015611a8f57506001600160a01b03831660009081526005602052604090205460ff16155b15611aa457611a9f848484612049565b611ba2565b6001600160a01b03841660009081526005602052604090205460ff16158015611ae557506001600160a01b03831660009081526005602052604090205460ff165b15611af557611a9f848484612160565b6001600160a01b03841660009081526005602052604090205460ff16158015611b3757506001600160a01b03831660009081526005602052604090205460ff16155b15611b4757611a9f848484612206565b6001600160a01b03841660009081526005602052604090205460ff168015611b8757506001600160a01b03831660009081526005602052604090205460ff165b15611b9757611a9f848484612247565b611ba2848484612206565b600c548114611bb157600c8190555b50505050565b60008184841115611c465760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611c0b578181015183820152602001611bf3565b50505050905090810190601f168015611c385780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000806000806000806000611c62886122b7565b915091506000611c70611c9a565b90506000806000611c828c86866122ec565b919e909d50909b509599509397509395505050505050565b6000806000611ca7612340565b9092509050611cb6828261176c565b9250505090565b60008183611d0c5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611c0b578181015183820152602001611bf3565b506000838581611d1857fe5b0495945050505050565b60006108166064611d3e600c54856124c790919063ffffffff16565b9061176c565b6000610816601154611d3e600e54856124c790919063ffffffff16565b6000610816601154611d3e600f54856124c790919063ffffffff16565b6000610816601154611d3e601054856124c790919063ffffffff16565b6012546001600160a01b0316611db057611e7e565b6000611dba611c9a565b90506000611dc883836124c7565b600954909150611dd89084611712565b6009556012546001600160a01b0316600090815260016020526040902054611e009082611712565b601280546001600160a01b03908116600090815260016020908152604080832095909555925490911681526005909152205460ff1615611e7b576012546001600160a01b0316600090815260026020526040902054611e5f9084611712565b6012546001600160a01b03166000908152600260205260409020555b50505b50565b6013546001600160a01b0316611e9657611e7e565b6000611ea0611c9a565b90506000611eae83836124c7565b600a54909150611ebe9084611712565b600a556013546001600160a01b0316600090815260016020526040902054611ee69082611712565b601380546001600160a01b03908116600090815260016020908152604080832095909555925490911681526005909152205460ff1615611e7b576013546001600160a01b0316600090815260026020526040902054611f459084611712565b6013546001600160a01b0316600090815260026020526040902055505050565b6014546001600160a01b0316611f7a57611e7e565b6000611f84611c9a565b90506000611f9283836124c7565b600b54909150611fa29084611712565b600b556014546001600160a01b0316600090815260016020526040902054611fca9082611712565b601480546001600160a01b03908116600090815260016020908152604080832095909555925490911681526005909152205460ff1615611e7b576014546001600160a01b03166000908152600260205260409020546120299084611712565b6014546001600160a01b0316600090815260026020526040902055505050565b600080600080600061205a86611c4e565b6001600160a01b038d166000908152600260205260409020549499509297509095509350915061208a90876117ae565b6001600160a01b0389166000908152600260209081526040808320939093556001905220546120b990866117ae565b6001600160a01b03808a1660009081526001602052604080822093909355908916815220546120e89085611712565b6001600160a01b03881660009081526001602052604090205561210b8382612520565b866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35050505050505050565b600080600080600061217186611c4e565b6001600160a01b038d16600090815260016020526040902054949950929750909550935091506121a190866117ae565b6001600160a01b03808a16600090815260016020908152604080832094909455918a168152600290915220546121d79083611712565b6001600160a01b0388166000908152600260209081526040808320939093556001905220546120e89085611712565b600080600080600061221786611c4e565b6001600160a01b038d16600090815260016020526040902054949950929750909550935091506120b990866117ae565b600080600080600061225886611c4e565b6001600160a01b038d166000908152600260205260409020549499509297509095509350915061228890876117ae565b6001600160a01b0389166000908152600260209081526040808320939093556001905220546121a190866117ae565b60008060006122c584611d22565b905060006122d282612544565b905060006122e086846117ae565b94509092505050915091565b600080600080612305856122ff89611d22565b906124c7565b9050600061231388876124c7565b9050600061232182846117ae565b9050600061232f89896124c7565b929a91995091975095505050505050565b60075460009081906a52b7d2dcc80cd2e4000000825b6006548110156124835782600160006006848154811061237257fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806123d757508160026000600684815481106123b057fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156123f7576007546a52b7d2dcc80cd2e4000000945094505050506124c3565b612437600160006006848154811061240b57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205484906117ae565b9250612479600260006006848154811061244d57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205483906117ae565b9150600101612356565b5060075461249c906a52b7d2dcc80cd2e400000061176c565b8210156124bd576007546a52b7d2dcc80cd2e40000009350935050506124c3565b90925090505b9091565b6000826124d657506000610816565b828202828482816124e357fe5b0414610f0f5760405162461bcd60e51b81526004018080602001828103825260218152602001806126646021913960400191505060405180910390fd5b60075461252d90836117ae565b60075560085461253d9082611712565b6008555050565b6000610816601154611d3e600d54856124c790919063ffffffff1656fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573735f686f6c646572546178416c6c6f63206973206f757473696465206f662072616e676520352d31304163636f756e7420697320616c7265616479206578636c756465642066726f6d207265776172644163636f756e7420697320616c726561647920696e636c7564656420696e20726577617264734163636f756e7420697320616c726561647920696e636c7564656420696e206665654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735f6d65726368616e74546178416c6c6f632069732067726561746572207468616e203130416d6f756e74206d757374206265206c657373207468616e20746f74616c20726577617264734163636f756e7420697320616c7265616479206578636c756465642066726f6d206665654578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e5f6d61726b6574696e67546178416c6c6f632069732067726561746572207468616e20313045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220c979ddbd56b41082302fb916423be8c4ea191e60b8c0704a59c120f28665f98364736f6c634300070400334163636f756e7420697320616c7265616479206578636c756465642066726f6d207265776172644f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572416d6f756e74206d757374206265206c657373207468616e20746f74616c20726577617264734163636f756e7420697320616c7265616479206578636c756465642066726f6d20666565000000000000000000000000fa9e5d40ca259e17d9aa181a7bb89bb9dc28fa49
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102dd5760003560e01c8063715018a611610186578063a457c2d7116100e3578063ca24295c11610097578063dd62ed3e11610071578063dd62ed3e14610738578063e57f14e114610766578063f2fde38b1461078c576102dd565b8063ca24295c146106f9578063d71eb4b514610701578063d84bf7a814610730576102dd565b8063a9059cbb116100c8578063a9059cbb1461069f578063ae7b6d16146106cb578063b609995e146106d3576102dd565b8063a457c2d71461066b578063a5ece94114610697576102dd565b80638da05f8f1161013a578063906e9dd01161011f578063906e9dd01461062057806391c05b0b1461064657806395d89b4114610663576102dd565b80638da05f8f146105f25780638da5cb5b14610618576102dd565b806375edd5f21161016b57806375edd5f2146105c55780637c31efb1146105cd5780638baa3fd4146105d5576102dd565b8063715018a6146105b557806374e47a1e146105bd576102dd565b806323b872dd1161023f5780634fbee193116101f35780636740b9c6116101cd5780636740b9c61461056a578063699abb3c1461057257806370a082311461058f576102dd565b80634fbee19314610534578063509207591461055a578063595f052e14610562576102dd565b80633557ee77116102245780633557ee77146104db578063395093511461050057806340e7bdf41461052c576102dd565b806323b872dd14610487578063313ce567146104bd576102dd565b8063111e037611610296578063143d4acf1161027b578063143d4acf1461043357806316a2f82a1461045957806318160ddd1461047f576102dd565b8063111e03761461040357806313114a9d1461042b576102dd565b8063077faa21116102c7578063077faa2114610383578063095ea7b31461039d5780630e832273146103dd576102dd565b8062897ad3146102e257806306fdde0314610306575b600080fd5b6102ea6107b2565b604080516001600160a01b039092168252519081900360200190f35b61030e6107c1565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610348578181015183820152602001610330565b50505050905090810190601f1680156103755780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61038b6107f8565b60408051918252519081900360200190f35b6103c9600480360360408110156103b357600080fd5b506001600160a01b0381351690602001356107fe565b604080519115158252519081900360200190f35b6103c9600480360360208110156103f357600080fd5b50356001600160a01b031661081c565b6104296004803603602081101561041957600080fd5b50356001600160a01b031661083e565b005b61038b6109ae565b6104296004803603602081101561044957600080fd5b50356001600160a01b03166109de565b6104296004803603602081101561046f57600080fd5b50356001600160a01b0316610a58565b61038b610b28565b6103c96004803603606081101561049d57600080fd5b506001600160a01b03813581169160208101359091169060400135610b37565b6104c5610bbe565b6040805160ff9092168252519081900360200190f35b61038b600480360360408110156104f157600080fd5b50803590602001351515610bc3565b6103c96004803603604081101561051657600080fd5b506001600160a01b038135169060200135610c5c565b61038b610caa565b6103c96004803603602081101561054a57600080fd5b50356001600160a01b0316610cb0565b61038b610cce565b61038b610cd4565b61038b610cda565b6104296004803603602081101561058857600080fd5b5035610ce0565b61038b600480360360208110156105a557600080fd5b50356001600160a01b0316610da0565b610429610e02565b61038b610ea4565b61038b610eaa565b61038b610eb0565b61038b600480360360208110156105eb57600080fd5b5035610eb6565b6104296004803603602081101561060857600080fd5b50356001600160a01b0316610f16565b6102ea610f90565b6104296004803603602081101561063657600080fd5b50356001600160a01b0316610f9f565b6104296004803603602081101561065c57600080fd5b5035611019565b61030e6110f1565b6103c96004803603604081101561068157600080fd5b506001600160a01b038135169060200135611128565b6102ea611190565b6103c9600480360360408110156106b557600080fd5b506001600160a01b03813516906020013561119f565b61038b6111b3565b610429600480360360208110156106e957600080fd5b50356001600160a01b03166111b9565b6102ea611364565b6104296004803603608081101561071757600080fd5b5080359060208101359060408101359060600135611373565b61038b611515565b61038b6004803603604081101561074e57600080fd5b506001600160a01b038135811691602001351661151b565b6104296004803603602081101561077c57600080fd5b50356001600160a01b0316611546565b610429600480360360208110156107a257600080fd5b50356001600160a01b031661161a565b6013546001600160a01b031681565b60408051808201909152600981527f4769667420436f696e0000000000000000000000000000000000000000000000602082015290565b600b5490565b600061081261080b6117f0565b84846117f4565b5060015b92915050565b6001600160a01b03811660009081526005602052604090205460ff165b919050565b6108466117f0565b6000546001600160a01b03908116911614610896576040805162461bcd60e51b815260206004820181905260248201526000805160206126ad833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526005602052604090205460ff16156108ee5760405162461bcd60e51b81526004018080602001828103825260278152602001806125ad6027913960400191505060405180910390fd5b6001600160a01b03811660009081526001602052604090205415610948576001600160a01b03811660009081526001602052604090205461092e90610eb6565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b60006109d9600b546109d3600a546109d360095460085461171290919063ffffffff16565b90611712565b905090565b6109e66117f0565b6000546001600160a01b03908116911614610a36576040805162461bcd60e51b815260206004820181905260248201526000805160206126ad833981519152604482015290519081900360640190fd5b601480546001600160a01b0319166001600160a01b0392909216919091179055565b610a606117f0565b6000546001600160a01b03908116911614610ab0576040805162461bcd60e51b815260206004820181905260248201526000805160206126ad833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526004602052604090205460ff16610b075760405162461bcd60e51b81526004018080602001828103825260228152602001806125fa6022913960400191505060405180910390fd5b6001600160a01b03166000908152600460205260409020805460ff19169055565b6a52b7d2dcc80cd2e400000090565b6000610b448484846118e0565b610bb484610b506117f0565b610baf85604051806060016040528060288152602001612685602891396001600160a01b038a16600090815260036020526040812090610b8e6117f0565b6001600160a01b031681526020810191909152604001600020549190611bb7565b6117f4565b5060019392505050565b601290565b60006a52b7d2dcc80cd2e4000000831115610c25576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b81610c43576000610c3584611c4e565b509294506108169350505050565b6000610c4e84611c4e565b509194506108169350505050565b6000610812610c696117f0565b84610baf8560036000610c7a6117f0565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611712565b60115481565b6001600160a01b031660009081526004602052604090205460ff1690565b60105481565b600f5481565b600a5490565b610ce86117f0565b6000546001600160a01b03908116911614610d38576040805162461bcd60e51b815260206004820181905260248201526000805160206126ad833981519152604482015290519081900360640190fd5b60018110158015610d4a575060058111155b610d9b576040805162461bcd60e51b815260206004820152601d60248201527f56616c7565206973206f757473696465206f662072616e676520312d35000000604482015290519081900360640190fd5b600c55565b6001600160a01b03811660009081526005602052604081205460ff1615610de057506001600160a01b038116600090815260026020526040902054610839565b6001600160a01b03821660009081526001602052604090205461081690610eb6565b610e0a6117f0565b6000546001600160a01b03908116911614610e5a576040805162461bcd60e51b815260206004820181905260248201526000805160206126ad833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600d5481565b600e5481565b60085490565b6000600754821115610ef95760405162461bcd60e51b81526004018080602001828103825260268152602001806127636026913960400191505060405180910390fd5b6000610f03611c9a565b9050610f0f838261176c565b9392505050565b610f1e6117f0565b6000546001600160a01b03908116911614610f6e576040805162461bcd60e51b815260206004820181905260248201526000805160206126ad833981519152604482015290519081900360640190fd5b601380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031690565b610fa76117f0565b6000546001600160a01b03908116911614610ff7576040805162461bcd60e51b815260206004820181905260248201526000805160206126ad833981519152604482015290519081900360640190fd5b601280546001600160a01b0319166001600160a01b0392909216919091179055565b60006110236117f0565b6001600160a01b03811660009081526005602052604090205490915060ff161561107e5760405162461bcd60e51b815260040180806020018281038252602c8152602001806127ad602c913960400191505060405180910390fd5b600061108983611c4e565b505050506001600160a01b0383166000908152600160205260409020549091506110b390826117ae565b6001600160a01b0383166000908152600160205260409020556007546110d990826117ae565b6007556008546110e99084611712565b600855505050565b60408051808201909152600481527f4749465400000000000000000000000000000000000000000000000000000000602082015290565b60006108126111356117f0565b84610baf856040518060600160405280602581526020016127fe602591396003600061115f6117f0565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611bb7565b6012546001600160a01b031681565b60006108126111ac6117f0565b84846118e0565b600c5481565b6111c16117f0565b6000546001600160a01b03908116911614611211576040805162461bcd60e51b815260206004820181905260248201526000805160206126ad833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526005602052604090205460ff166112685760405162461bcd60e51b81526004018080602001828103825260268152602001806125d46026913960400191505060405180910390fd5b60005b60065481101561136057816001600160a01b03166006828154811061128c57fe5b6000918252602090912001546001600160a01b03161415611358576006805460001981019081106112b957fe5b600091825260209091200154600680546001600160a01b0390921691839081106112df57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff19169055600680548061133157fe5b600082815260209020810160001990810180546001600160a01b0319169055019055611360565b60010161126b565b5050565b6014546001600160a01b031681565b61137b6117f0565b6000546001600160a01b039081169116146113cb576040805162461bcd60e51b815260206004820181905260248201526000805160206126ad833981519152604482015290519081900360640190fd5b6113db816109d384818888611712565b601155600584108015906113f05750600a8411155b61142b5760405162461bcd60e51b81526004018080602001828103825260288152602001806125856028913960400191505060405180910390fd5b600a821115611481576040805162461bcd60e51b815260206004820152601e60248201527f5f6c70546178416c6c6f632069732067726561746572207468616e2031300000604482015290519081900360640190fd5b600a8311156114c15760405162461bcd60e51b81526004018080602001828103825260258152602001806127d96025913960400191505060405180910390fd5b600a8111156115015760405162461bcd60e51b815260040180806020018281038252602481526020018061273f6024913960400191505060405180910390fd5b600d93909355600e91909155600f55601055565b60095490565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b61154e6117f0565b6000546001600160a01b0390811691161461159e576040805162461bcd60e51b815260206004820181905260248201526000805160206126ad833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526004602052604090205460ff16156115f65760405162461bcd60e51b81526004018080602001828103825260248152602001806127896024913960400191505060405180910390fd5b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6116226117f0565b6000546001600160a01b03908116911614611672576040805162461bcd60e51b815260206004820181905260248201526000805160206126ad833981519152604482015290519081900360640190fd5b6001600160a01b0381166116b75760405162461bcd60e51b815260040180806020018281038252602681526020018061261c6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600082820183811015610f0f576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000610f0f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611cbd565b6000610f0f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611bb7565b3390565b6001600160a01b0383166118395760405162461bcd60e51b815260040180806020018281038252602481526020018061271b6024913960400191505060405180910390fd5b6001600160a01b03821661187e5760405162461bcd60e51b81526004018080602001828103825260228152602001806126426022913960400191505060405180910390fd5b6001600160a01b03808416600081815260036020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166119255760405162461bcd60e51b81526004018080602001828103825260258152602001806126f66025913960400191505060405180910390fd5b6001600160a01b03821661196a5760405162461bcd60e51b81526004018080602001828103825260238152602001806125626023913960400191505060405180910390fd5b600081116119a95760405162461bcd60e51b81526004018080602001828103825260298152602001806126cd6029913960400191505060405180910390fd5b600c546001600160a01b03841660009081526004602052604090205460ff16806119eb57506001600160a01b03831660009081526004602052604090205460ff165b156119fa576000600c55611a4e565b6000611a0583611d22565b90506000611a1282611d44565b90506000611a1f83611d61565b90506000611a2c84611d7e565b9050611a3783611d9b565b611a4082611e81565b611a4981611f65565b505050505b6001600160a01b03841660009081526005602052604090205460ff168015611a8f57506001600160a01b03831660009081526005602052604090205460ff16155b15611aa457611a9f848484612049565b611ba2565b6001600160a01b03841660009081526005602052604090205460ff16158015611ae557506001600160a01b03831660009081526005602052604090205460ff165b15611af557611a9f848484612160565b6001600160a01b03841660009081526005602052604090205460ff16158015611b3757506001600160a01b03831660009081526005602052604090205460ff16155b15611b4757611a9f848484612206565b6001600160a01b03841660009081526005602052604090205460ff168015611b8757506001600160a01b03831660009081526005602052604090205460ff165b15611b9757611a9f848484612247565b611ba2848484612206565b600c548114611bb157600c8190555b50505050565b60008184841115611c465760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611c0b578181015183820152602001611bf3565b50505050905090810190601f168015611c385780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000806000806000806000611c62886122b7565b915091506000611c70611c9a565b90506000806000611c828c86866122ec565b919e909d50909b509599509397509395505050505050565b6000806000611ca7612340565b9092509050611cb6828261176c565b9250505090565b60008183611d0c5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611c0b578181015183820152602001611bf3565b506000838581611d1857fe5b0495945050505050565b60006108166064611d3e600c54856124c790919063ffffffff16565b9061176c565b6000610816601154611d3e600e54856124c790919063ffffffff16565b6000610816601154611d3e600f54856124c790919063ffffffff16565b6000610816601154611d3e601054856124c790919063ffffffff16565b6012546001600160a01b0316611db057611e7e565b6000611dba611c9a565b90506000611dc883836124c7565b600954909150611dd89084611712565b6009556012546001600160a01b0316600090815260016020526040902054611e009082611712565b601280546001600160a01b03908116600090815260016020908152604080832095909555925490911681526005909152205460ff1615611e7b576012546001600160a01b0316600090815260026020526040902054611e5f9084611712565b6012546001600160a01b03166000908152600260205260409020555b50505b50565b6013546001600160a01b0316611e9657611e7e565b6000611ea0611c9a565b90506000611eae83836124c7565b600a54909150611ebe9084611712565b600a556013546001600160a01b0316600090815260016020526040902054611ee69082611712565b601380546001600160a01b03908116600090815260016020908152604080832095909555925490911681526005909152205460ff1615611e7b576013546001600160a01b0316600090815260026020526040902054611f459084611712565b6013546001600160a01b0316600090815260026020526040902055505050565b6014546001600160a01b0316611f7a57611e7e565b6000611f84611c9a565b90506000611f9283836124c7565b600b54909150611fa29084611712565b600b556014546001600160a01b0316600090815260016020526040902054611fca9082611712565b601480546001600160a01b03908116600090815260016020908152604080832095909555925490911681526005909152205460ff1615611e7b576014546001600160a01b03166000908152600260205260409020546120299084611712565b6014546001600160a01b0316600090815260026020526040902055505050565b600080600080600061205a86611c4e565b6001600160a01b038d166000908152600260205260409020549499509297509095509350915061208a90876117ae565b6001600160a01b0389166000908152600260209081526040808320939093556001905220546120b990866117ae565b6001600160a01b03808a1660009081526001602052604080822093909355908916815220546120e89085611712565b6001600160a01b03881660009081526001602052604090205561210b8382612520565b866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35050505050505050565b600080600080600061217186611c4e565b6001600160a01b038d16600090815260016020526040902054949950929750909550935091506121a190866117ae565b6001600160a01b03808a16600090815260016020908152604080832094909455918a168152600290915220546121d79083611712565b6001600160a01b0388166000908152600260209081526040808320939093556001905220546120e89085611712565b600080600080600061221786611c4e565b6001600160a01b038d16600090815260016020526040902054949950929750909550935091506120b990866117ae565b600080600080600061225886611c4e565b6001600160a01b038d166000908152600260205260409020549499509297509095509350915061228890876117ae565b6001600160a01b0389166000908152600260209081526040808320939093556001905220546121a190866117ae565b60008060006122c584611d22565b905060006122d282612544565b905060006122e086846117ae565b94509092505050915091565b600080600080612305856122ff89611d22565b906124c7565b9050600061231388876124c7565b9050600061232182846117ae565b9050600061232f89896124c7565b929a91995091975095505050505050565b60075460009081906a52b7d2dcc80cd2e4000000825b6006548110156124835782600160006006848154811061237257fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806123d757508160026000600684815481106123b057fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156123f7576007546a52b7d2dcc80cd2e4000000945094505050506124c3565b612437600160006006848154811061240b57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205484906117ae565b9250612479600260006006848154811061244d57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205483906117ae565b9150600101612356565b5060075461249c906a52b7d2dcc80cd2e400000061176c565b8210156124bd576007546a52b7d2dcc80cd2e40000009350935050506124c3565b90925090505b9091565b6000826124d657506000610816565b828202828482816124e357fe5b0414610f0f5760405162461bcd60e51b81526004018080602001828103825260218152602001806126646021913960400191505060405180910390fd5b60075461252d90836117ae565b60075560085461253d9082611712565b6008555050565b6000610816601154611d3e600d54856124c790919063ffffffff1656fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573735f686f6c646572546178416c6c6f63206973206f757473696465206f662072616e676520352d31304163636f756e7420697320616c7265616479206578636c756465642066726f6d207265776172644163636f756e7420697320616c726561647920696e636c7564656420696e20726577617264734163636f756e7420697320616c726561647920696e636c7564656420696e206665654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735f6d65726368616e74546178416c6c6f632069732067726561746572207468616e203130416d6f756e74206d757374206265206c657373207468616e20746f74616c20726577617264734163636f756e7420697320616c7265616479206578636c756465642066726f6d206665654578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e5f6d61726b6574696e67546178416c6c6f632069732067726561746572207468616e20313045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220c979ddbd56b41082302fb916423be8c4ea191e60b8c0704a59c120f28665f98364736f6c63430007040033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000fa9e5d40ca259e17d9aa181a7bb89bb9dc28fa49
-----Decoded View---------------
Arg [0] : _marketingAddress (address): 0xFa9e5D40Ca259e17D9AA181a7bB89bB9dc28fa49
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000fa9e5d40ca259e17d9aa181a7bb89bb9dc28fa49
Deployed Bytecode Sourcemap
18320:19172:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19583:31;;;:::i;:::-;;;;-1:-1:-1;;;;;19583:31:0;;;;;;;;;;;;;;20222:84;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23089:103;;;:::i;:::-;;;;;;;;;;;;;;;;21185:165;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;21185:165:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;22332:133;;;;;;;;;;;;;;;;-1:-1:-1;22332:133:0;-1:-1:-1;;;;;22332:133:0;;:::i;24067:375::-;;;;;;;;;;;;;;;;-1:-1:-1;24067:375:0;-1:-1:-1;;;;;24067:375:0;;:::i;:::-;;22608:154;;;:::i;37335:::-;;;;;;;;;;;;;;;;-1:-1:-1;37335:154:0;-1:-1:-1;;;;;37335:154:0;;:::i;23862:197::-;;;;;;;;;;;;;;;;-1:-1:-1;23862:197:0;-1:-1:-1;;;;;23862:197:0;;:::i;20502:102::-;;;:::i;21358:405::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;21358:405:0;;;;;;;;;;;;;;;;;:::i;20410:84::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31917:491;;;;;;;;;;;;;;;;-1:-1:-1;31917:491:0;;;;;;;;;:::i;21771:222::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;21771:222:0;;;;;;;;:::i;19430:106::-;;;:::i;22473:127::-;;;;;;;;;;;;;;;;-1:-1:-1;22473:127:0;-1:-1:-1;;;;;22473:127:0;;:::i;19392:31::-;;;:::i;19360:25::-;;;:::i;22990:91::-;;;:::i;36000:213::-;;;;;;;;;;;;;;;;-1:-1:-1;36000:213:0;;:::i;20612:232::-;;;;;;;;;;;;;;;;-1:-1:-1;20612:232:0;-1:-1:-1;;;;;20612:232:0;;:::i;17766:148::-;;;:::i;19276:34::-;;;:::i;19317:36::-;;;:::i;22770:99::-;;;:::i;32416:276::-;;;;;;;;;;;;;;;;-1:-1:-1;32416:276:0;;:::i;37197:130::-;;;;;;;;;;;;;;;;-1:-1:-1;37197:130:0;-1:-1:-1;;;;;37197:130:0;;:::i;17124:79::-;;;:::i;37059:130::-;;;;;;;;;;;;;;;;-1:-1:-1;37059:130:0;-1:-1:-1;;;;;37059:130:0;;:::i;23200:444::-;;;;;;;;;;;;;;;;-1:-1:-1;23200:444:0;;:::i;20314:88::-;;;:::i;22001:323::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22001:323:0;;;;;;;;:::i;19545:31::-;;;:::i;20852:171::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;20852:171:0;;;;;;;;:::i;19237:32::-;;;:::i;24450:541::-;;;;;;;;;;;;;;;;-1:-1:-1;24450:541:0;-1:-1:-1;;;;;24450:541:0;;:::i;19621:37::-;;;:::i;36221:830::-;;;;;;;;;;;;;;;;-1:-1:-1;36221:830:0;;;;;;;;;;;;;;;;;:::i;22877:105::-;;;:::i;21031:146::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;21031:146:0;;;;;;;;;;:::i;23652:202::-;;;;;;;;;;;;;;;;-1:-1:-1;23652:202:0;-1:-1:-1;;;;;23652:202:0;;:::i;18069:244::-;;;;;;;;;;;;;;;;-1:-1:-1;18069:244:0;-1:-1:-1;;;;;18069:244:0;;:::i;19583:31::-;;;-1:-1:-1;;;;;19583:31:0;;:::o;20222:84::-;20294:4;;;;;;;;;;;;;;;;;20222:84;:::o;23089:103::-;23168:16;;23089:103;:::o;21185:165::-;21262:4;21279:41;21288:12;:10;:12::i;:::-;21302:8;21312:7;21279:8;:41::i;:::-;-1:-1:-1;21338:4:0;21185:165;;;;;:::o;22332:133::-;-1:-1:-1;;;;;22428:29:0;;22404:4;22428:29;;;:19;:29;;;;;;;;22332:133;;;;:::o;24067:375::-;17346:12;:10;:12::i;:::-;17336:6;;-1:-1:-1;;;;;17336:6:0;;;:22;;;17328:67;;;;;-1:-1:-1;;;17328:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17328:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;24152:29:0;::::1;;::::0;;;:19:::1;:29;::::0;;;;;::::1;;24151:30;24143:82;;;;-1:-1:-1::0;;;24143:82:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;24242:17:0;::::1;24262:1;24242:17:::0;;;:7:::1;:17;::::0;;;;;:21;24238:108:::1;;-1:-1:-1::0;;;;;24316:17:0;::::1;;::::0;;;:7:::1;:17;::::0;;;;;24299:35:::1;::::0;:16:::1;:35::i;:::-;-1:-1:-1::0;;;;;24280:16:0;::::1;;::::0;;;:6:::1;:16;::::0;;;;:54;24238:108:::1;-1:-1:-1::0;;;;;24358:29:0::1;;::::0;;;:19:::1;:29;::::0;;;;:36;;-1:-1:-1;;24358:36:0::1;24390:4;24358:36:::0;;::::1;::::0;;;24405:14:::1;:29:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;24405:29:0::1;::::0;;::::1;::::0;;24067:375::o;22608:154::-;22652:7;22679:75;22737:16;;22679:53;22721:10;;22679:37;22698:17;;22679:14;;:18;;:37;;;;:::i;:::-;:41;;:53::i;:75::-;22672:82;;22608:154;:::o;37335:::-;17346:12;:10;:12::i;:::-;17336:6;;-1:-1:-1;;;;;17336:6:0;;;:22;;;17328:67;;;;;-1:-1:-1;;;17328:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17328:67:0;;;;;;;;;;;;;;;37433:22:::1;:48:::0;;-1:-1:-1;;;;;;37433:48:0::1;-1:-1:-1::0;;;;;37433:48:0;;;::::1;::::0;;;::::1;::::0;;37335:154::o;23862:197::-;17346:12;:10;:12::i;:::-;17336:6;;-1:-1:-1;;;;;17336:6:0;;;:22;;;17328:67;;;;;-1:-1:-1;;;17328:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17328:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;23941:26:0;::::1;;::::0;;;:16:::1;:26;::::0;;;;;::::1;;23933:73;;;;-1:-1:-1::0;;;23933:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;24017:26:0::1;24046:5;24017:26:::0;;;:16:::1;:26;::::0;;;;:34;;-1:-1:-1;;24017:34:0::1;::::0;;23862:197::o;20502:102::-;18995:18;20502:102;:::o;21358:405::-;21493:4;21510:39;21520:7;21529:10;21541:7;21510:9;:39::i;:::-;21562:169;21581:7;21603:12;:10;:12::i;:::-;21630:90;21668:7;21630:90;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21630:19:0;;;;;;:10;:19;;;;;;21650:12;:10;:12::i;:::-;-1:-1:-1;;;;;21630:33:0;;;;;;;;;;;;-1:-1:-1;21630:33:0;;;:90;:37;:90::i;:::-;21562:8;:169::i;:::-;-1:-1:-1;21751:4:0;21358:405;;;;;:::o;20410:84::-;18565:2;20410:84;:::o;31917:491::-;32012:7;18995:18;32040:13;:29;;32032:73;;;;;-1:-1:-1;;;32032:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;32121:18;32116:285;;32157:20;32189:25;32200:13;32189:10;:25::i;:::-;-1:-1:-1;32156:58:0;;-1:-1:-1;32229:19:0;;-1:-1:-1;;;;32229:19:0;32116:285;32284:28;32322:25;32333:13;32322:10;:25::i;:::-;-1:-1:-1;32281:66:0;;-1:-1:-1;32362:27:0;;-1:-1:-1;;;;32362:27:0;21771:222;21861:4;21878:85;21887:12;:10;:12::i;:::-;21901:8;21911:51;21950:11;21911:10;:24;21922:12;:10;:12::i;:::-;-1:-1:-1;;;;;21911:24:0;;;;;;;;;;;;;;;;;-1:-1:-1;21911:24:0;;;:34;;;;;;;;;;;:38;:51::i;19430:106::-;;;;:::o;22473:127::-;-1:-1:-1;;;;;22566:26:0;22542:4;22566:26;;;:16;:26;;;;;;;;;22473:127::o;19392:31::-;;;;:::o;19360:25::-;;;;:::o;22990:91::-;23063:10;;22990:91;:::o;36000:213::-;17346:12;:10;:12::i;:::-;17336:6;;-1:-1:-1;;;;;17336:6:0;;;:22;;;17328:67;;;;;-1:-1:-1;;;17328:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17328:67:0;;;;;;;;;;;;;;;36106:1:::1;36088:14;:19;;:42;;;;;36129:1;36111:14;:19;;36088:42;36080:84;;;::::0;;-1:-1:-1;;;36080:84:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;36175:13;:30:::0;36000:213::o;20612:232::-;-1:-1:-1;;;;;20703:29:0;;20679:7;20703:29;;;:19;:29;;;;;;;;20699:85;;;-1:-1:-1;;;;;;20756:16:0;;;;;;:6;:16;;;;;;20749:23;;20699:85;-1:-1:-1;;;;;20818:17:0;;;;;;:7;:17;;;;;;20801:35;;:16;:35::i;17766:148::-;17346:12;:10;:12::i;:::-;17336:6;;-1:-1:-1;;;;;17336:6:0;;;:22;;;17328:67;;;;;-1:-1:-1;;;17328:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17328:67:0;;;;;;;;;;;;;;;17873:1:::1;17857:6:::0;;17836:40:::1;::::0;-1:-1:-1;;;;;17857:6:0;;::::1;::::0;17836:40:::1;::::0;17873:1;;17836:40:::1;17904:1;17887:19:::0;;-1:-1:-1;;;;;;17887:19:0::1;::::0;;17766:148::o;19276:34::-;;;;:::o;19317:36::-;;;;:::o;22770:99::-;22847:14;;22770:99;:::o;32416:276::-;32486:7;32531:12;;32514:13;:29;;32506:80;;;;-1:-1:-1;;;32506:80:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32597:19;32619:17;:15;:17::i;:::-;32597:39;-1:-1:-1;32654:30:0;:13;32597:39;32654:17;:30::i;:::-;32647:37;32416:276;-1:-1:-1;;;32416:276:0:o;37197:130::-;17346:12;:10;:12::i;:::-;17336:6;;-1:-1:-1;;;;;17336:6:0;;;:22;;;17328:67;;;;;-1:-1:-1;;;17328:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17328:67:0;;;;;;;;;;;;;;;37283:16:::1;:36:::0;;-1:-1:-1;;;;;;37283:36:0::1;-1:-1:-1::0;;;;;37283:36:0;;;::::1;::::0;;;::::1;::::0;;37197:130::o;17124:79::-;17162:7;17189:6;-1:-1:-1;;;;;17189:6:0;17124:79;:::o;37059:130::-;17346:12;:10;:12::i;:::-;17336:6;;-1:-1:-1;;;;;17336:6:0;;;:22;;;17328:67;;;;;-1:-1:-1;;;17328:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17328:67:0;;;;;;;;;;;;;;;37145:16:::1;:36:::0;;-1:-1:-1;;;;;;37145:36:0::1;-1:-1:-1::0;;;;;37145:36:0;;;::::1;::::0;;;::::1;::::0;;37059:130::o;23200:444::-;23261:14;23278:12;:10;:12::i;:::-;-1:-1:-1;;;;;23310:27:0;;;;;;:19;:27;;;;;;23261:29;;-1:-1:-1;23310:27:0;;23309:28;23301:85;;;;-1:-1:-1;;;23301:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23400:20;23432:25;23443:13;23432:10;:25::i;:::-;-1:-1:-1;;;;;;;;;23486:15:0;;;;;;:7;:15;;;;;;23399:58;;-1:-1:-1;23486:33:0;;23399:58;23486:19;:33::i;:::-;-1:-1:-1;;;;;23468:15:0;;;;;;:7;:15;;;;;:51;23545:12;;:30;;23562:12;23545:16;:30::i;:::-;23530:12;:45;23603:14;;:33;;23622:13;23603:18;:33::i;:::-;23586:14;:50;-1:-1:-1;;;23200:444:0:o;20314:88::-;20388:6;;;;;;;;;;;;;;;;;20314:88;:::o;22001:323::-;22096:4;22113:181;22136:12;:10;:12::i;:::-;22163:8;22186:97;22225:16;22186:97;;;;;;;;;;;;;;;;;:10;:24;22197:12;:10;:12::i;:::-;-1:-1:-1;;;;;22186:24:0;;;;;;;;;;;;;;;;;-1:-1:-1;22186:24:0;;;:34;;;;;;;;;;;:97;:38;:97::i;19545:31::-;;;-1:-1:-1;;;;;19545:31:0;;:::o;20852:171::-;20932:4;20949:44;20959:12;:10;:12::i;:::-;20973:10;20985:7;20949:9;:44::i;19237:32::-;;;;:::o;24450:541::-;17346:12;:10;:12::i;:::-;17336:6;;-1:-1:-1;;;;;17336:6:0;;;:22;;;17328:67;;;;;-1:-1:-1;;;17328:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17328:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;24532:29:0;::::1;;::::0;;;:19:::1;:29;::::0;;;;;::::1;;24524:80;;;;-1:-1:-1::0;;;24524:80:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24622:9;24617:367;24641:14;:21:::0;24637:25;::::1;24617:367;;;24709:8;-1:-1:-1::0;;;;;24688:29:0::1;:14;24703:1;24688:17;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;24688:17:0::1;:29;24684:289;;;24758:14;24773:21:::0;;-1:-1:-1;;24773:25:0;;;24758:41;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;24738:14:::1;:17:::0;;-1:-1:-1;;;;;24758:41:0;;::::1;::::0;24753:1;;24738:17;::::1;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:61:::0;;-1:-1:-1;;;;;;24738:61:0::1;-1:-1:-1::0;;;;;24738:61:0;;::::1;;::::0;;24818:16;;::::1;::::0;;:6:::1;:16:::0;;;;;;:20;;;24857:19:::1;:29:::0;;;;:37;;-1:-1:-1;;24857:37:0::1;::::0;;24913:14:::1;:20:::0;;;::::1;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;24913:20:0;;;;;-1:-1:-1;;;;;;24913:20:0::1;::::0;;;;;24952:5:::1;;24684:289;24664:3;;24617:367;;;;24450:541:::0;:::o;19621:37::-;;;-1:-1:-1;;;;;19621:37:0;;:::o;36221:830::-;17346:12;:10;:12::i;:::-;17336:6;;-1:-1:-1;;;;;17336:6:0;;;:22;;;17328:67;;;;;-1:-1:-1;;;17328:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17328:67:0;;;;;;;;;;;;;;;36438:79:::1;36499:17:::0;36438:56:::1;36482:11:::0;36438:56;:15;36458:18;36438:19:::1;:39::i;:79::-;36422:13;:95:::0;36557:1:::1;36538:20:::0;::::1;::::0;::::1;::::0;:45:::1;;;36581:2;36562:15;:21;;36538:45;36530:98;;;;-1:-1:-1::0;;;36530:98:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36662:2;36647:11;:17;;36639:60;;;::::0;;-1:-1:-1;;;36639:60:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;36740:2;36718:18;:24;;36710:74;;;;-1:-1:-1::0;;;36710:74:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36824:2;36803:17;:23;;36795:72;;;;-1:-1:-1::0;;;36795:72:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36880:14;:32:::0;;;;36923:17:::1;:38:::0;;;;36972:10:::1;:24:::0;37007:16:::1;:36:::0;36221:830::o;22877:105::-;22957:17;;22877:105;:::o;21031:146::-;-1:-1:-1;;;;;21141:18:0;;;21114:7;21141:18;;;:10;:18;;;;;;;;:28;;;;;;;;;;;;;21031:146::o;23652:202::-;17346:12;:10;:12::i;:::-;17336:6;;-1:-1:-1;;;;;17336:6:0;;;:22;;;17328:67;;;;;-1:-1:-1;;;17328:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17328:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;23734:26:0;::::1;;::::0;;;:16:::1;:26;::::0;;;;;::::1;;23733:27;23725:76;;;;-1:-1:-1::0;;;23725:76:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;23812:26:0::1;;::::0;;;:16:::1;:26;::::0;;;;:33;;-1:-1:-1;;23812:33:0::1;23841:4;23812:33;::::0;;23652:202::o;18069:244::-;17346:12;:10;:12::i;:::-;17336:6;;-1:-1:-1;;;;;17336:6:0;;;:22;;;17328:67;;;;;-1:-1:-1;;;17328:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17328:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;18158:22:0;::::1;18150:73;;;;-1:-1:-1::0;;;18150:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18260:6;::::0;;18239:38:::1;::::0;-1:-1:-1;;;;;18239:38:0;;::::1;::::0;18260:6;::::1;::::0;18239:38:::1;::::0;::::1;18288:6;:17:::0;;-1:-1:-1;;;;;;18288:17:0::1;-1:-1:-1::0;;;;;18288:17:0;;;::::1;::::0;;;::::1;::::0;;18069:244::o;4711:181::-;4769:7;4801:5;;;4825:6;;;;4817:46;;;;;-1:-1:-1;;;4817:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;7012:132;7070:7;7097:39;7101:1;7104;7097:39;;;;;;;;;;;;;;;;;:3;:39::i;5175:136::-;5233:7;5260:43;5264:1;5267;5260:43;;;;;;;;;;;;;;;;;:3;:43::i;804:106::-;892:10;804:106;:::o;24999:381::-;-1:-1:-1;;;;;25129:20:0;;25121:69;;;;-1:-1:-1;;;25121:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25209:22:0;;25201:69;;;;-1:-1:-1;;;25201:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25283:18:0;;;;;;;:10;:18;;;;;;;;:28;;;;;;;;;;;;;:38;;;25337:35;;;;;;;;;;;;;;;;;24999:381;;;:::o;25388:1732::-;-1:-1:-1;;;;;25522:21:0;;25514:71;;;;-1:-1:-1;;;25514:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25604:24:0;;25596:72;;;;-1:-1:-1;;;25596:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25697:1;25687:7;:11;25679:65;;;;-1:-1:-1;;;25679:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25788:13;;-1:-1:-1;;;;;25816:25:0;;25757:28;25816:25;;;:16;:25;;;;;;;;;:57;;-1:-1:-1;;;;;;25845:28:0;;;;;;:16;:28;;;;;;;;25816:57;25812:461;;;25906:1;25890:13;:17;25812:461;;;25940:11;25954:16;25962:7;25954;:16::i;:::-;25940:30;;25985:20;26008:21;26025:3;26008:16;:21::i;:::-;25985:44;;26044:13;26060:14;26070:3;26060:9;:14::i;:::-;26044:30;;26089:19;26111:20;26127:3;26111:15;:20::i;:::-;26089:42;;26148:33;26168:12;26148:19;:33::i;:::-;26196:19;26209:5;26196:12;:19::i;:::-;26230:31;26249:11;26230:18;:31::i;:::-;25812:461;;;;;-1:-1:-1;;;;;26289:28:0;;;;;;:19;:28;;;;;;;;:64;;;;-1:-1:-1;;;;;;26322:31:0;;;;;;:19;:31;;;;;;;;26321:32;26289:64;26285:710;;;26370:59;26400:7;26409:10;26421:7;26370:29;:59::i;:::-;26285:710;;;-1:-1:-1;;;;;26452:28:0;;;;;;:19;:28;;;;;;;;26451:29;:64;;;;-1:-1:-1;;;;;;26484:31:0;;;;;;:19;:31;;;;;;;;26451:64;26447:548;;;26532:59;26562:7;26571:10;26583:7;26532:29;:59::i;26447:548::-;-1:-1:-1;;;;;26614:28:0;;;;;;:19;:28;;;;;;;;26613:29;:65;;;;-1:-1:-1;;;;;;26647:31:0;;;;;;:19;:31;;;;;;;;26646:32;26613:65;26609:386;;;26695:50;26716:7;26725:10;26737:7;26695:20;:50::i;26609:386::-;-1:-1:-1;;;;;26767:28:0;;;;;;:19;:28;;;;;;;;:63;;;;-1:-1:-1;;;;;;26799:31:0;;;;;;:19;:31;;;;;;;;26767:63;26763:232;;;26847:53;26871:7;26880:10;26892:7;26847:23;:53::i;26763:232::-;26933:50;26954:7;26963:10;26975:7;26933:20;:50::i;:::-;27035:13;;27011:20;:37;27007:106;;27065:13;:36;;;27007:106;25388:1732;;;;:::o;5614:192::-;5700:7;5736:12;5728:6;;;;5720:29;;;;-1:-1:-1;;;5720:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5772:5:0;;;5614:192::o;32700:660::-;32806:7;32828;32850;32872;32894;32930:28;32960:17;32981:31;32998:13;32981:16;:31::i;:::-;32929:83;;;;33023:19;33045:17;:15;:17::i;:::-;33023:39;;33088:20;33123:28;33166:17;33197:55;33214:13;33229:9;33240:11;33197:16;:55::i;:::-;33073:179;;;;-1:-1:-1;33073:179:0;;-1:-1:-1;33320:20:0;;-1:-1:-1;33342:9:0;;-1:-1:-1;32700:660:0;;-1:-1:-1;;;;;;32700:660:0:o;34327:193::-;34376:7;34397:21;34420:20;34444:19;:17;:19::i;:::-;34396:67;;-1:-1:-1;34396:67:0;-1:-1:-1;34481:31:0;34396:67;;34481:17;:31::i;:::-;34474:38;;;;34327:193;:::o;7640:278::-;7726:7;7761:12;7754:5;7746:28;;;;-1:-1:-1;;;7746:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7785:9;7801:1;7797;:5;;;;;;;7640:278;-1:-1:-1;;;;;7640:278:0:o;35284:126::-;35340:7;35367:35;35398:3;35367:26;35379:13;;35367:7;:11;;:26;;;;:::i;:::-;:30;;:35::i;35563:143::-;35625:7;35652:46;35684:13;;35652:27;35661:17;;35652:4;:8;;:27;;;;:::i;35714:129::-;35769:7;35796:39;35821:13;;35796:20;35805:10;;35796:4;:8;;:20;;;;:::i;35851:141::-;35912:7;35939:45;35970:13;;35939:26;35948:16;;35939:4;:8;;:26;;;;:::i;30201:576::-;30276:16;;-1:-1:-1;;;;;30276:16:0;30272:69;;30323:7;;30272:69;30353:19;30375:17;:15;:17::i;:::-;30353:39;-1:-1:-1;30403:26:0;30432:30;:13;30353:39;30432:17;:30::i;:::-;30493:17;;30403:59;;-1:-1:-1;30493:36:0;;30515:13;30493:21;:36::i;:::-;30473:17;:56;30578:16;;-1:-1:-1;;;;;30578:16:0;30570:25;;;;:7;:25;;;;;;:49;;30600:18;30570:29;:49::i;:::-;30550:16;;;-1:-1:-1;;;;;30550:16:0;;;30542:25;;;;:7;:25;;;;;;;;:77;;;;30654:16;;;;;30634:37;;:19;:37;;;;;;;30630:140;;;30722:16;;-1:-1:-1;;;;;30722:16:0;30715:24;;;;:6;:24;;;;;;:43;;30744:13;30715:28;:43::i;:::-;30695:16;;-1:-1:-1;;;;;30695:16:0;30688:24;;;;:6;:24;;;;;:70;30630:140;30201:576;;;;:::o;30785:513::-;30846:16;;-1:-1:-1;;;;;30846:16:0;30842:69;;30893:7;;30842:69;30923:19;30945:17;:15;:17::i;:::-;30923:39;-1:-1:-1;30973:19:0;30995:23;:6;30923:39;30995:10;:23::i;:::-;31042:10;;30973:45;;-1:-1:-1;31042:22:0;;31057:6;31042:14;:22::i;:::-;31029:10;:35;31113:16;;-1:-1:-1;;;;;31113:16:0;31105:25;;;;:7;:25;;;;;;:42;;31135:11;31105:29;:42::i;:::-;31085:16;;;-1:-1:-1;;;;;31085:16:0;;;31077:25;;;;:7;:25;;;;;;;;:70;;;;31182:16;;;;;31162:37;;:19;:37;;;;;;;31158:133;;;31250:16;;-1:-1:-1;;;;;31250:16:0;31243:24;;;;:6;:24;;;;;;:36;;31272:6;31243:28;:36::i;:::-;31223:16;;-1:-1:-1;;;;;31223:16:0;31216:24;;;;:6;:24;;;;;:63;30785:513;;;:::o;31306:603::-;31379:22;;-1:-1:-1;;;;;31379:22:0;31375:75;;31432:7;;31375:75;31462:19;31484:17;:15;:17::i;:::-;31462:39;-1:-1:-1;31512:25:0;31540:29;:12;31462:39;31540:16;:29::i;:::-;31599:16;;31512:57;;-1:-1:-1;31599:34:0;;31620:12;31599:20;:34::i;:::-;31580:16;:53;31688:22;;-1:-1:-1;;;;;31688:22:0;31680:31;;;;:7;:31;;;;;;:54;;31716:17;31680:35;:54::i;:::-;31654:22;;;-1:-1:-1;;;;;31654:22:0;;;31646:31;;;;:7;:31;;;;;;;;:88;;;;31769:22;;;;;31749:43;;:19;:43;;;;;;;31745:157;;;31849:22;;-1:-1:-1;;;;;31849:22:0;31842:30;;;;:6;:30;;;;;;:48;;31877:12;31842:34;:48::i;:::-;31816:22;;-1:-1:-1;;;;;31816:22:0;31809:30;;;;:6;:30;;;;;:81;31306:603;;;:::o;28499:707::-;28666:20;28701:28;28744:17;28776:28;28819:17;28850:25;28861:13;28850:10;:25::i;:::-;-1:-1:-1;;;;;28906:15:0;;;;;;:6;:15;;;;;;28651:224;;-1:-1:-1;28651:224:0;;-1:-1:-1;28651:224:0;;-1:-1:-1;28651:224:0;-1:-1:-1;28651:224:0;-1:-1:-1;28906:34:0;;28926:13;28906:19;:34::i;:::-;-1:-1:-1;;;;;28888:15:0;;;;;;:6;:15;;;;;;;;:52;;;;28970:7;:16;;;;:34;;28991:12;28970:20;:34::i;:::-;-1:-1:-1;;;;;28951:16:0;;;;;;;:7;:16;;;;;;:53;;;;29037:19;;;;;;;:45;;29061:20;29037:23;:45::i;:::-;-1:-1:-1;;;;;29015:19:0;;;;;;:7;:19;;;;;:67;29093:38;29110:9;29121;29093:16;:38::i;:::-;29165:10;-1:-1:-1;;;;;29147:51:0;29156:7;-1:-1:-1;;;;;29147:51:0;;29177:20;29147:51;;;;;;;;;;;;;;;;;;28499:707;;;;;;;;:::o;27771:720::-;27938:20;27973:28;28016:17;28048:28;28091:17;28122:25;28133:13;28122:10;:25::i;:::-;-1:-1:-1;;;;;28179:16:0;;;;;;:7;:16;;;;;;27923:224;;-1:-1:-1;27923:224:0;;-1:-1:-1;27923:224:0;;-1:-1:-1;27923:224:0;-1:-1:-1;27923:224:0;-1:-1:-1;28179:34:0;;27923:224;28179:20;:34::i;:::-;-1:-1:-1;;;;;28160:16:0;;;;;;;:7;:16;;;;;;;;:53;;;;28245:18;;;;;:6;:18;;;;;:44;;28268:20;28245:22;:44::i;:::-;-1:-1:-1;;;;;28224:18:0;;;;;;:6;:18;;;;;;;;:65;;;;28322:7;:19;;;;:45;;28346:20;28322:23;:45::i;27128:635::-;27286:20;27321:28;27364:17;27396:28;27439:17;27470:25;27481:13;27470:10;:25::i;:::-;-1:-1:-1;;;;;27527:16:0;;;;;;:7;:16;;;;;;27271:224;;-1:-1:-1;27271:224:0;;-1:-1:-1;27271:224:0;;-1:-1:-1;27271:224:0;-1:-1:-1;27271:224:0;-1:-1:-1;27527:34:0;;27271:224;27527:20;:34::i;29214:777::-;29375:20;29410:28;29453:17;29485:28;29528:17;29559:25;29570:13;29559:10;:25::i;:::-;-1:-1:-1;;;;;29615:15:0;;;;;;:6;:15;;;;;;29360:224;;-1:-1:-1;29360:224:0;;-1:-1:-1;29360:224:0;;-1:-1:-1;29360:224:0;-1:-1:-1;29360:224:0;-1:-1:-1;29615:34:0;;29635:13;29615:19;:34::i;:::-;-1:-1:-1;;;;;29597:15:0;;;;;;:6;:15;;;;;;;;:52;;;;29679:7;:16;;;;:34;;29700:12;29679:20;:34::i;33368:338::-;33439:7;33448;33468:17;33488:22;33496:13;33488:7;:22::i;:::-;33468:42;;33521:23;33547:24;33561:9;33547:13;:24::i;:::-;33521:50;-1:-1:-1;33582:28:0;33613;:13;33631:9;33613:17;:28::i;:::-;33582:59;-1:-1:-1;33682:15:0;;-1:-1:-1;;;33368:338:0;;;:::o;33714:605::-;33908:7;33930;33952;33987:17;34007:40;34034:12;34007:22;34015:13;34007:7;:22::i;:::-;:26;;:40::i;:::-;33987:60;-1:-1:-1;34058:20:0;34081:31;:13;34099:12;34081:17;:31::i;:::-;34058:54;-1:-1:-1;34123:28:0;34154:27;34058:54;34171:9;34154:16;:27::i;:::-;34123:58;-1:-1:-1;34192:17:0;34212:34;:16;34233:12;34212:20;:34::i;:::-;34265:12;;34279:20;;-1:-1:-1;34265:12:0;;-1:-1:-1;33714:605:0;-1:-1:-1;;;;;;33714:605:0:o;34528:748::-;34632:12;;34579:7;;;;18995:18;34579:7;34703:391;34727:14;:21;34723:25;;34703:391;;;34803:13;34774:7;:26;34782:14;34797:1;34782:17;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;34782:17:0;34774:26;;;;;;;;;;;;;:42;;:86;;;34848:12;34820:6;:25;34827:14;34842:1;34827:17;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;34827:17:0;34820:25;;;;;;;;;;;;;:40;34774:86;34770:162;;;34889:12;;18995:18;34881:35;;;;;;;;;34770:162;34964:45;34982:7;:26;34990:14;35005:1;34990:17;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;34990:17:0;34982:26;;;;;;;;;;;;;34964:13;;:17;:45::i;:::-;34948:61;;35039:43;35056:6;:25;35063:14;35078:1;35063:17;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;35063:17:0;35056:25;;;;;;;;;;;;;35039:12;;:16;:43::i;:::-;35024:58;-1:-1:-1;34750:3:0;;34703:391;;;-1:-1:-1;35126:12:0;;:30;;18995:18;35126:16;:30::i;:::-;35110:13;:46;35106:114;;;35181:12;;18995:18;35173:35;;;;;;;;35106:114;35240:13;;-1:-1:-1;35255:12:0;-1:-1:-1;34528:748:0;;;:::o;6065:471::-;6123:7;6368:6;6364:47;;-1:-1:-1;6398:1:0;6391:8;;6364:47;6435:5;;;6439:1;6435;:5;:1;6459:5;;;;;:10;6451:56;;;;-1:-1:-1;;;6451:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29999:194;30099:12;;:28;;30116:10;30099:16;:28::i;:::-;30084:12;:43;30155:14;;:30;;30174:10;30155:18;:30::i;:::-;30138:14;:47;-1:-1:-1;;29999:194:0:o;35418:137::-;35477:7;35504:43;35533:13;;35504:24;35513:14;;35504:4;:8;;:24;;;;:::i
Swarm Source
ipfs://c979ddbd56b41082302fb916423be8c4ea191e60b8c0704a59c120f28665f983
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.