Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
DigiTap
Compiler Version
v0.8.27+commit.40a35a09
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2025-09-05
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.27;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
function _contextSuffixLength() internal view virtual returns (uint256) {
return 0;
}
}
/**
* @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.
*
* The initial owner is set to the address provided by the deployer. 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;
/**
* @dev The caller account is not authorized to perform an operation.
*/
error OwnableUnauthorizedAccount(address account);
/**
* @dev The owner is not a valid owner account. (eg. `address(0)`)
*/
error OwnableInvalidOwner(address owner);
event OwnershipTransferred(
address indexed previousOwner,
address indexed newOwner
);
/**
* @dev Initializes the contract setting the address provided by the deployer as the initial owner.
*/
constructor(address initialOwner) {
if (initialOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(initialOwner);
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
if (owner() != _msgSender()) {
revert OwnableUnauthorizedAccount(_msgSender());
}
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby disabling any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
if (newOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
/**
* @dev Interface of the ERC-20 standard as defined in the ERC.
*/
interface IERC20 {
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(
address indexed owner,
address indexed spender,
uint256 value
);
/**
* @dev Returns the value of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the value of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves a `value` amount of tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, uint256 value) 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 a `value` amount of tokens 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 value) external returns (bool);
/**
* @dev Moves a `value` amount of tokens from `from` to `to` using the
* allowance mechanism. `value` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(
address from,
address to,
uint256 value
) external returns (bool);
}
contract DigiTap is Context, IERC20, Ownable {
mapping(address => uint256) private accountBalances;
mapping(address => mapping(address => uint256)) private spendingAllowances;
mapping(address => bool) public isWhitelisted;
string private tokenName = "DigiTap";
string private tokenSymbol = "TAP";
uint8 private tokenDecimals = 18;
uint256 private tokenTotalSupply = 2_000_000_000 * 10**18;
bool public isTradingEnabled;
constructor() Ownable(_msgSender()) {
isWhitelisted[_msgSender()] = true;
accountBalances[owner()] = tokenTotalSupply;
emit Transfer(address(0), owner(), tokenTotalSupply);
}
receive() external payable {}
function name() public view returns (string memory) {
return tokenName;
}
function symbol() public view returns (string memory) {
return tokenSymbol;
}
function decimals() public view returns (uint8) {
return tokenDecimals;
}
function totalSupply() public view override returns (uint256) {
return tokenTotalSupply;
}
function balanceOf(address user) public view override returns (uint256) {
return accountBalances[user];
}
function transfer(address recipient, uint256 amount)
public
override
returns (bool)
{
executeTransfer(_msgSender(), recipient, amount);
return true;
}
function allowance(address ownerAddress, address spender)
public
view
override
returns (uint256)
{
return spendingAllowances[ownerAddress][spender];
}
function approve(address spender, uint256 amount)
public
override
returns (bool)
{
setApproval(_msgSender(), spender, amount);
return true;
}
function transferFrom(
address sender,
address recipient,
uint256 amount
) public override returns (bool) {
executeTransfer(sender, recipient, amount);
setApproval(
sender,
_msgSender(),
spendingAllowances[sender][_msgSender()] - amount
);
return true;
}
function increaseAllowance(address spender, uint256 addedValue)
public
returns (bool)
{
setApproval(
_msgSender(),
spender,
spendingAllowances[_msgSender()][spender] + addedValue
);
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue)
public
returns (bool)
{
uint256 currentAllowance = spendingAllowances[_msgSender()][spender];
require(
currentAllowance >= subtractedValue,
"DigiTap: cannot decrease allowance below zero"
);
setApproval(_msgSender(), spender, currentAllowance - subtractedValue);
return true;
}
function withdrawEther(address receiver) public onlyOwner {
require(
receiver != address(0),
"DigiTap: receiver cannot be zero address"
);
payable(receiver).transfer(address(this).balance);
}
function withdrawStuckTokens(
address tokenAddress,
address receiver,
uint256 amount
) public onlyOwner {
require(
tokenAddress != address(0),
"DigiTap: token address cannot be zero address"
);
require(
receiver != address(0),
"DigiTap: receiver cannot be zero address"
);
IERC20(tokenAddress).transfer(receiver, amount);
}
function enableTrading() external onlyOwner {
require(!isTradingEnabled, "DigiTap: trading is already enabled");
isTradingEnabled = true;
}
function updateWhitelist(address userAddress, bool status)
external
onlyOwner
{
require(
userAddress != address(0),
"DigiTap: user address cannot be zero address"
);
isWhitelisted[userAddress] = status;
}
function setApproval(
address ownerAddress,
address spender,
uint256 amount
) private {
require(
ownerAddress != address(0),
"DigiTap: approval from zero address not allowed"
);
require(
spender != address(0),
"DigiTap: approval to zero address not allowed"
);
spendingAllowances[ownerAddress][spender] = amount;
emit Approval(ownerAddress, spender, amount);
}
function executeTransfer(
address sender,
address recipient,
uint256 amount
) private {
require(
sender != address(0),
"DigiTap: transfer from zero address not allowed"
);
require(
recipient != address(0),
"DigiTap: transfer to zero address not allowed"
);
require(
amount > 0,
"DigiTap: transfer amount must be greater than zero"
);
if (!isWhitelisted[sender] && !isWhitelisted[recipient]) {
require(isTradingEnabled, "DigiTap: trading is currently disabled");
}
uint256 senderBalance = accountBalances[sender];
require(
senderBalance >= amount,
"DigiTap: sender has insufficient balance"
);
accountBalances[sender] = senderBalance - amount;
accountBalances[recipient] += amount;
emit Transfer(sender, recipient, amount);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"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":"ownerAddress","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":"user","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","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":[],"name":"isTradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"updateWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"withdrawEther","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60c060405260076080908152660446967695461760cc1b60a0526004906100269082610203565b5060408051808201909152600381526205441560ec1b602082015260059061004e9082610203565b506006805460ff191660121790556b06765c793fa10079d0000000600755348015610077575f5ffd5b50338061009d57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100a68161011c565b50335f908152600360209081526040808320805460ff1916600190811790915560075484546001600160a01b03908116865291845282852081905584549251908152911692917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36102bd565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061019357607f821691505b6020821081036101b157634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101fe57805f5260205f20601f840160051c810160208510156101dc5750805b601f840160051c820191505b818110156101fb575f81556001016101e8565b50505b505050565b81516001600160401b0381111561021c5761021c61016b565b6102308161022a845461017f565b846101b7565b6020601f821160018114610262575f831561024b5750848201515b5f19600385901b1c1916600184901b1784556101fb565b5f84815260208120601f198516915b828110156102915787850151825560209485019460019092019101610271565b50848210156102ae57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b610f94806102ca5f395ff3fe60806040526004361061011e575f3560e01c8063715018a61161009d578063a9059cbb11610062578063a9059cbb14610318578063af933b5714610337578063dd62ed3e14610356578063f2fde38b1461039a578063fdff785c146103b9575f5ffd5b8063715018a6146102975780638a8c523c146102ab5780638da5cb5b146102bf57806395d89b41146102e5578063a457c2d7146102f9575f5ffd5b806323b872dd116100e357806323b872dd146101d6578063313ce567146101f557806339509351146102165780633af32abf1461023557806370a0823114610263575f5ffd5b8063064a59d01461012957806306fdde0314610157578063095ea7b3146101785780630d392cd91461019757806318160ddd146101b8575f5ffd5b3661012557005b5f5ffd5b348015610134575f5ffd5b506008546101429060ff1681565b60405190151581526020015b60405180910390f35b348015610162575f5ffd5b5061016b6103d8565b60405161014e9190610d44565b348015610183575f5ffd5b50610142610192366004610d94565b610468565b3480156101a2575f5ffd5b506101b66101b1366004610dc9565b61047e565b005b3480156101c3575f5ffd5b506007545b60405190815260200161014e565b3480156101e1575f5ffd5b506101426101f0366004610dfe565b610520565b348015610200575f5ffd5b5060065460405160ff909116815260200161014e565b348015610221575f5ffd5b50610142610230366004610d94565b610570565b348015610240575f5ffd5b5061014261024f366004610e38565b60036020525f908152604090205460ff1681565b34801561026e575f5ffd5b506101c861027d366004610e38565b6001600160a01b03165f9081526001602052604090205490565b3480156102a2575f5ffd5b506101b66105a6565b3480156102b6575f5ffd5b506101b66105b9565b3480156102ca575f5ffd5b505f546040516001600160a01b03909116815260200161014e565b3480156102f0575f5ffd5b5061016b61062f565b348015610304575f5ffd5b50610142610313366004610d94565b61063e565b348015610323575f5ffd5b50610142610332366004610d94565b6106d6565b348015610342575f5ffd5b506101b6610351366004610e38565b6106e2565b348015610361575f5ffd5b506101c8610370366004610e58565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b3480156103a5575f5ffd5b506101b66103b4366004610e38565b610746565b3480156103c4575f5ffd5b506101b66103d3366004610dfe565b610783565b6060600480546103e790610e89565b80601f016020809104026020016040519081016040528092919081815260200182805461041390610e89565b801561045e5780601f106104355761010080835404028352916020019161045e565b820191905f5260205f20905b81548152906001019060200180831161044157829003601f168201915b5050505050905090565b5f610474338484610893565b5060015b92915050565b6104866109cd565b6001600160a01b0382166104f65760405162461bcd60e51b815260206004820152602c60248201527f446967695461703a207573657220616464726573732063616e6e6f742062652060448201526b7a65726f206164647265737360a01b60648201526084015b60405180910390fd5b6001600160a01b03919091165f908152600360205260409020805460ff1916911515919091179055565b5f61052c8484846109f9565b6001600160a01b0384165f90815260026020908152604080832033808552925290912054610566918691610561908690610ed5565b610893565b5060019392505050565b335f8181526002602090815260408083206001600160a01b03871684529091528120549091610474918590610561908690610ee8565b6105ae6109cd565b6105b75f610cf5565b565b6105c16109cd565b60085460ff16156106205760405162461bcd60e51b815260206004820152602360248201527f446967695461703a2074726164696e6720697320616c726561647920656e61626044820152621b195960ea1b60648201526084016104ed565b6008805460ff19166001179055565b6060600580546103e790610e89565b335f9081526002602090815260408083206001600160a01b0386168452909152812054828110156106c75760405162461bcd60e51b815260206004820152602d60248201527f446967695461703a2063616e6e6f7420646563726561736520616c6c6f77616e60448201526c63652062656c6f77207a65726f60981b60648201526084016104ed565b61056633856105618685610ed5565b5f6104743384846109f9565b6106ea6109cd565b6001600160a01b0381166107105760405162461bcd60e51b81526004016104ed90610efb565b6040516001600160a01b038216904780156108fc02915f818181858888f19350505050158015610742573d5f5f3e3d5ffd5b5050565b61074e6109cd565b6001600160a01b03811661077757604051631e4fbdf760e01b81525f60048201526024016104ed565b61078081610cf5565b50565b61078b6109cd565b6001600160a01b0383166107f75760405162461bcd60e51b815260206004820152602d60248201527f446967695461703a20746f6b656e20616464726573732063616e6e6f7420626560448201526c207a65726f206164647265737360981b60648201526084016104ed565b6001600160a01b03821661081d5760405162461bcd60e51b81526004016104ed90610efb565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303815f875af1158015610869573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061088d9190610f43565b50505050565b6001600160a01b0383166109015760405162461bcd60e51b815260206004820152602f60248201527f446967695461703a20617070726f76616c2066726f6d207a65726f206164647260448201526e195cdcc81b9bdd08185b1b1bddd959608a1b60648201526084016104ed565b6001600160a01b03821661096d5760405162461bcd60e51b815260206004820152602d60248201527f446967695461703a20617070726f76616c20746f207a65726f2061646472657360448201526c1cc81b9bdd08185b1b1bddd959609a1b60648201526084016104ed565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f546001600160a01b031633146105b75760405163118cdaa760e01b81523360048201526024016104ed565b6001600160a01b038316610a675760405162461bcd60e51b815260206004820152602f60248201527f446967695461703a207472616e736665722066726f6d207a65726f206164647260448201526e195cdcc81b9bdd08185b1b1bddd959608a1b60648201526084016104ed565b6001600160a01b038216610ad35760405162461bcd60e51b815260206004820152602d60248201527f446967695461703a207472616e7366657220746f207a65726f2061646472657360448201526c1cc81b9bdd08185b1b1bddd959609a1b60648201526084016104ed565b5f8111610b3d5760405162461bcd60e51b815260206004820152603260248201527f446967695461703a207472616e7366657220616d6f756e74206d7573742062656044820152712067726561746572207468616e207a65726f60701b60648201526084016104ed565b6001600160a01b0383165f9081526003602052604090205460ff16158015610b7d57506001600160a01b0382165f9081526003602052604090205460ff16155b15610be35760085460ff16610be35760405162461bcd60e51b815260206004820152602660248201527f446967695461703a2074726164696e672069732063757272656e746c792064696044820152651cd8589b195960d21b60648201526084016104ed565b6001600160a01b0383165f9081526001602052604090205481811015610c5c5760405162461bcd60e51b815260206004820152602860248201527f446967695461703a2073656e6465722068617320696e73756666696369656e746044820152672062616c616e636560c01b60648201526084016104ed565b610c668282610ed5565b6001600160a01b038086165f908152600160205260408082209390935590851681529081208054849290610c9b908490610ee8565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ce791815260200190565b60405180910390a350505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610d8f575f5ffd5b919050565b5f5f60408385031215610da5575f5ffd5b610dae83610d79565b946020939093013593505050565b8015158114610780575f5ffd5b5f5f60408385031215610dda575f5ffd5b610de383610d79565b91506020830135610df381610dbc565b809150509250929050565b5f5f5f60608486031215610e10575f5ffd5b610e1984610d79565b9250610e2760208501610d79565b929592945050506040919091013590565b5f60208284031215610e48575f5ffd5b610e5182610d79565b9392505050565b5f5f60408385031215610e69575f5ffd5b610e7283610d79565b9150610e8060208401610d79565b90509250929050565b600181811c90821680610e9d57607f821691505b602082108103610ebb57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561047857610478610ec1565b8082018082111561047857610478610ec1565b60208082526028908201527f446967695461703a2072656365697665722063616e6e6f74206265207a65726f604082015267206164647265737360c01b606082015260800190565b5f60208284031215610f53575f5ffd5b8151610e5181610dbc56fea264697066735822122008164d1eaec8e3bd89833b96960091570d2a983fcdf99199d17a7ee846c4f49264736f6c634300081b0033
Deployed Bytecode
0x60806040526004361061011e575f3560e01c8063715018a61161009d578063a9059cbb11610062578063a9059cbb14610318578063af933b5714610337578063dd62ed3e14610356578063f2fde38b1461039a578063fdff785c146103b9575f5ffd5b8063715018a6146102975780638a8c523c146102ab5780638da5cb5b146102bf57806395d89b41146102e5578063a457c2d7146102f9575f5ffd5b806323b872dd116100e357806323b872dd146101d6578063313ce567146101f557806339509351146102165780633af32abf1461023557806370a0823114610263575f5ffd5b8063064a59d01461012957806306fdde0314610157578063095ea7b3146101785780630d392cd91461019757806318160ddd146101b8575f5ffd5b3661012557005b5f5ffd5b348015610134575f5ffd5b506008546101429060ff1681565b60405190151581526020015b60405180910390f35b348015610162575f5ffd5b5061016b6103d8565b60405161014e9190610d44565b348015610183575f5ffd5b50610142610192366004610d94565b610468565b3480156101a2575f5ffd5b506101b66101b1366004610dc9565b61047e565b005b3480156101c3575f5ffd5b506007545b60405190815260200161014e565b3480156101e1575f5ffd5b506101426101f0366004610dfe565b610520565b348015610200575f5ffd5b5060065460405160ff909116815260200161014e565b348015610221575f5ffd5b50610142610230366004610d94565b610570565b348015610240575f5ffd5b5061014261024f366004610e38565b60036020525f908152604090205460ff1681565b34801561026e575f5ffd5b506101c861027d366004610e38565b6001600160a01b03165f9081526001602052604090205490565b3480156102a2575f5ffd5b506101b66105a6565b3480156102b6575f5ffd5b506101b66105b9565b3480156102ca575f5ffd5b505f546040516001600160a01b03909116815260200161014e565b3480156102f0575f5ffd5b5061016b61062f565b348015610304575f5ffd5b50610142610313366004610d94565b61063e565b348015610323575f5ffd5b50610142610332366004610d94565b6106d6565b348015610342575f5ffd5b506101b6610351366004610e38565b6106e2565b348015610361575f5ffd5b506101c8610370366004610e58565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b3480156103a5575f5ffd5b506101b66103b4366004610e38565b610746565b3480156103c4575f5ffd5b506101b66103d3366004610dfe565b610783565b6060600480546103e790610e89565b80601f016020809104026020016040519081016040528092919081815260200182805461041390610e89565b801561045e5780601f106104355761010080835404028352916020019161045e565b820191905f5260205f20905b81548152906001019060200180831161044157829003601f168201915b5050505050905090565b5f610474338484610893565b5060015b92915050565b6104866109cd565b6001600160a01b0382166104f65760405162461bcd60e51b815260206004820152602c60248201527f446967695461703a207573657220616464726573732063616e6e6f742062652060448201526b7a65726f206164647265737360a01b60648201526084015b60405180910390fd5b6001600160a01b03919091165f908152600360205260409020805460ff1916911515919091179055565b5f61052c8484846109f9565b6001600160a01b0384165f90815260026020908152604080832033808552925290912054610566918691610561908690610ed5565b610893565b5060019392505050565b335f8181526002602090815260408083206001600160a01b03871684529091528120549091610474918590610561908690610ee8565b6105ae6109cd565b6105b75f610cf5565b565b6105c16109cd565b60085460ff16156106205760405162461bcd60e51b815260206004820152602360248201527f446967695461703a2074726164696e6720697320616c726561647920656e61626044820152621b195960ea1b60648201526084016104ed565b6008805460ff19166001179055565b6060600580546103e790610e89565b335f9081526002602090815260408083206001600160a01b0386168452909152812054828110156106c75760405162461bcd60e51b815260206004820152602d60248201527f446967695461703a2063616e6e6f7420646563726561736520616c6c6f77616e60448201526c63652062656c6f77207a65726f60981b60648201526084016104ed565b61056633856105618685610ed5565b5f6104743384846109f9565b6106ea6109cd565b6001600160a01b0381166107105760405162461bcd60e51b81526004016104ed90610efb565b6040516001600160a01b038216904780156108fc02915f818181858888f19350505050158015610742573d5f5f3e3d5ffd5b5050565b61074e6109cd565b6001600160a01b03811661077757604051631e4fbdf760e01b81525f60048201526024016104ed565b61078081610cf5565b50565b61078b6109cd565b6001600160a01b0383166107f75760405162461bcd60e51b815260206004820152602d60248201527f446967695461703a20746f6b656e20616464726573732063616e6e6f7420626560448201526c207a65726f206164647265737360981b60648201526084016104ed565b6001600160a01b03821661081d5760405162461bcd60e51b81526004016104ed90610efb565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303815f875af1158015610869573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061088d9190610f43565b50505050565b6001600160a01b0383166109015760405162461bcd60e51b815260206004820152602f60248201527f446967695461703a20617070726f76616c2066726f6d207a65726f206164647260448201526e195cdcc81b9bdd08185b1b1bddd959608a1b60648201526084016104ed565b6001600160a01b03821661096d5760405162461bcd60e51b815260206004820152602d60248201527f446967695461703a20617070726f76616c20746f207a65726f2061646472657360448201526c1cc81b9bdd08185b1b1bddd959609a1b60648201526084016104ed565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f546001600160a01b031633146105b75760405163118cdaa760e01b81523360048201526024016104ed565b6001600160a01b038316610a675760405162461bcd60e51b815260206004820152602f60248201527f446967695461703a207472616e736665722066726f6d207a65726f206164647260448201526e195cdcc81b9bdd08185b1b1bddd959608a1b60648201526084016104ed565b6001600160a01b038216610ad35760405162461bcd60e51b815260206004820152602d60248201527f446967695461703a207472616e7366657220746f207a65726f2061646472657360448201526c1cc81b9bdd08185b1b1bddd959609a1b60648201526084016104ed565b5f8111610b3d5760405162461bcd60e51b815260206004820152603260248201527f446967695461703a207472616e7366657220616d6f756e74206d7573742062656044820152712067726561746572207468616e207a65726f60701b60648201526084016104ed565b6001600160a01b0383165f9081526003602052604090205460ff16158015610b7d57506001600160a01b0382165f9081526003602052604090205460ff16155b15610be35760085460ff16610be35760405162461bcd60e51b815260206004820152602660248201527f446967695461703a2074726164696e672069732063757272656e746c792064696044820152651cd8589b195960d21b60648201526084016104ed565b6001600160a01b0383165f9081526001602052604090205481811015610c5c5760405162461bcd60e51b815260206004820152602860248201527f446967695461703a2073656e6465722068617320696e73756666696369656e746044820152672062616c616e636560c01b60648201526084016104ed565b610c668282610ed5565b6001600160a01b038086165f908152600160205260408082209390935590851681529081208054849290610c9b908490610ee8565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ce791815260200190565b60405180910390a350505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610d8f575f5ffd5b919050565b5f5f60408385031215610da5575f5ffd5b610dae83610d79565b946020939093013593505050565b8015158114610780575f5ffd5b5f5f60408385031215610dda575f5ffd5b610de383610d79565b91506020830135610df381610dbc565b809150509250929050565b5f5f5f60608486031215610e10575f5ffd5b610e1984610d79565b9250610e2760208501610d79565b929592945050506040919091013590565b5f60208284031215610e48575f5ffd5b610e5182610d79565b9392505050565b5f5f60408385031215610e69575f5ffd5b610e7283610d79565b9150610e8060208401610d79565b90509250929050565b600181811c90821680610e9d57607f821691505b602082108103610ebb57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561047857610478610ec1565b8082018082111561047857610478610ec1565b60208082526028908201527f446967695461703a2072656365697665722063616e6e6f74206265207a65726f604082015267206164647265737360c01b606082015260800190565b5f60208284031215610f53575f5ffd5b8151610e5181610dbc56fea264697066735822122008164d1eaec8e3bd89833b96960091570d2a983fcdf99199d17a7ee846c4f49264736f6c634300081b0033
Deployed Bytecode Sourcemap
6788:5718:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7222:28;;;;;;;;;;-1:-1:-1;7222:28:0;;;;;;;;;;;179:14:1;;172:22;154:41;;142:2;127:18;7222:28:0;;;;;;;;7510:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;8464:196::-;;;;;;;;;;-1:-1:-1;8464:196:0;;;;;:::i;:::-;;:::i;10685:285::-;;;;;;;;;;-1:-1:-1;10685:285:0;;;;;:::i;:::-;;:::i;:::-;;7799:104;;;;;;;;;;-1:-1:-1;7879:16:0;;7799:104;;;1701:25:1;;;1689:2;1674:18;7799:104:0;1555:177:1;8668:366:0;;;;;;;;;;-1:-1:-1;8668:366:0;;;;;:::i;:::-;;:::i;7704:87::-;;;;;;;;;;-1:-1:-1;7770:13:0;;7704:87;;7770:13;;;;2258:36:1;;2246:2;2231:18;7704:87:0;2116:184:1;9042:290:0;;;;;;;;;;-1:-1:-1;9042:290:0;;;;;:::i;:::-;;:::i;6979:45::-;;;;;;;;;;-1:-1:-1;6979:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7911:119;;;;;;;;;;-1:-1:-1;7911:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;8001:21:0;7974:7;8001:21;;;:15;:21;;;;;;;7911:119;3133:103;;;;;;;;;;;;;:::i;10515:162::-;;;;;;;;;;;;;:::i;2458:87::-;;;;;;;;;;-1:-1:-1;2504:7:0;2531:6;2458:87;;-1:-1:-1;;;;;2531:6:0;;;2642:51:1;;2630:2;2615:18;2458:87:0;2496:203:1;7605:91:0;;;;;;;;;;;;;:::i;9340:445::-;;;;;;;;;;-1:-1:-1;9340:445:0;;;;;:::i;:::-;;:::i;8038:205::-;;;;;;;;;;-1:-1:-1;8038:205:0;;;;;:::i;:::-;;:::i;9793:249::-;;;;;;;;;;-1:-1:-1;9793:249:0;;;;;:::i;:::-;;:::i;8251:205::-;;;;;;;;;;-1:-1:-1;8251:205:0;;;;;:::i;:::-;-1:-1:-1;;;;;8407:32:0;;;8375:7;8407:32;;;:18;:32;;;;;;;;:41;;;;;;;;;;;;;8251:205;3391:220;;;;;;;;;;-1:-1:-1;3391:220:0;;;;;:::i;:::-;;:::i;10050:457::-;;;;;;;;;;-1:-1:-1;10050:457:0;;;;;:::i;:::-;;:::i;7510:87::-;7547:13;7580:9;7573:16;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7510:87;:::o;8464:196::-;8566:4;8588:42;681:10;8614:7;8623:6;8588:11;:42::i;:::-;-1:-1:-1;8648:4:0;8464:196;;;;;:::o;10685:285::-;2344:13;:11;:13::i;:::-;-1:-1:-1;;;;;10819:25:0;::::1;10797:119;;;::::0;-1:-1:-1;;;10797:119:0;;3556:2:1;10797:119:0::1;::::0;::::1;3538:21:1::0;3595:2;3575:18;;;3568:30;3634:34;3614:18;;;3607:62;-1:-1:-1;;;3685:18:1;;;3678:42;3737:19;;10797:119:0::1;;;;;;;;;-1:-1:-1::0;;;;;10927:26:0;;;::::1;;::::0;;;:13:::1;:26;::::0;;;;:35;;-1:-1:-1;;10927:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10685:285::o;8668:366::-;8800:4;8817:42;8833:6;8841:9;8852:6;8817:15;:42::i;:::-;-1:-1:-1;;;;;8944:26:0;;;;;;:18;:26;;;;;;;;681:10;8944:40;;;;;;;;;8870:134;;8896:6;;8944:49;;8987:6;;8944:49;:::i;:::-;8870:11;:134::i;:::-;-1:-1:-1;9022:4:0;8668:366;;;;;:::o;9042:290::-;681:10;9140:4;9237:32;;;:18;:32;;;;;;;;-1:-1:-1;;;;;9237:41:0;;;;;;;;;;9140:4;;9162:140;;9215:7;;9237:54;;9281:10;;9237:54;:::i;3133:103::-;2344:13;:11;:13::i;:::-;3198:30:::1;3225:1;3198:18;:30::i;:::-;3133:103::o:0;10515:162::-;2344:13;:11;:13::i;:::-;10579:16:::1;::::0;::::1;;10578:17;10570:65;;;::::0;-1:-1:-1;;;10570:65:0;;4364:2:1;10570:65:0::1;::::0;::::1;4346:21:1::0;4403:2;4383:18;;;4376:30;4442:34;4422:18;;;4415:62;-1:-1:-1;;;4493:18:1;;;4486:33;4536:19;;10570:65:0::1;4162:399:1::0;10570:65:0::1;10646:16;:23:::0;;-1:-1:-1;;10646:23:0::1;10665:4;10646:23;::::0;;10515:162::o;7605:91::-;7644:13;7677:11;7670:18;;;;;:::i;9340:445::-;681:10;9443:4;9492:32;;;:18;:32;;;;;;;;-1:-1:-1;;;;;9492:41:0;;;;;;;;;;9566:35;;;;9544:130;;;;-1:-1:-1;;;9544:130:0;;4768:2:1;9544:130:0;;;4750:21:1;4807:2;4787:18;;;4780:30;4846:34;4826:18;;;4819:62;-1:-1:-1;;;4897:18:1;;;4890:43;4950:19;;9544:130:0;4566:409:1;9544:130:0;9685:70;681:10;9711:7;9720:34;9739:15;9720:16;:34;:::i;8038:205::-;8143:4;8165:48;681:10;8195:9;8206:6;8165:15;:48::i;9793:249::-;2344:13;:11;:13::i;:::-;-1:-1:-1;;;;;9884:22:0;::::1;9862:112;;;;-1:-1:-1::0;;;9862:112:0::1;;;;;;;:::i;:::-;9985:49;::::0;-1:-1:-1;;;;;9985:26:0;::::1;::::0;10012:21:::1;9985:49:::0;::::1;;;::::0;::::1;::::0;;;10012:21;9985:26;:49;::::1;;;;;;;;;;;;;;;;;;;;9793:249:::0;:::o;3391:220::-;2344:13;:11;:13::i;:::-;-1:-1:-1;;;;;3476:22:0;::::1;3472:93;;3522:31;::::0;-1:-1:-1;;;3522:31:0;;3550:1:::1;3522:31;::::0;::::1;2642:51:1::0;2615:18;;3522:31:0::1;2496:203:1::0;3472:93:0::1;3575:28;3594:8;3575:18;:28::i;:::-;3391:220:::0;:::o;10050:457::-;2344:13;:11;:13::i;:::-;-1:-1:-1;;;;;10219:26:0;::::1;10197:121;;;::::0;-1:-1:-1;;;10197:121:0;;5591:2:1;10197:121:0::1;::::0;::::1;5573:21:1::0;5630:2;5610:18;;;5603:30;5669:34;5649:18;;;5642:62;-1:-1:-1;;;5720:18:1;;;5713:43;5773:19;;10197:121:0::1;5389:409:1::0;10197:121:0::1;-1:-1:-1::0;;;;;10351:22:0;::::1;10329:112;;;;-1:-1:-1::0;;;10329:112:0::1;;;;;;;:::i;:::-;10452:47;::::0;-1:-1:-1;;;10452:47:0;;-1:-1:-1;;;;;5995:32:1;;;10452:47:0::1;::::0;::::1;5977:51:1::0;6044:18;;;6037:34;;;10452:29:0;::::1;::::0;::::1;::::0;5950:18:1;;10452:47:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10050:457:::0;;;:::o;10978:505::-;-1:-1:-1;;;;;11129:26:0;;11107:123;;;;-1:-1:-1;;;11107:123:0;;6534:2:1;11107:123:0;;;6516:21:1;6573:2;6553:18;;;6546:30;6612:34;6592:18;;;6585:62;-1:-1:-1;;;6663:18:1;;;6656:45;6718:19;;11107:123:0;6332:411:1;11107:123:0;-1:-1:-1;;;;;11263:21:0;;11241:116;;;;-1:-1:-1;;;11241:116:0;;6950:2:1;11241:116:0;;;6932:21:1;6989:2;6969:18;;;6962:30;7028:34;7008:18;;;7001:62;-1:-1:-1;;;7079:18:1;;;7072:43;7132:19;;11241:116:0;6748:409:1;11241:116:0;-1:-1:-1;;;;;11370:32:0;;;;;;;:18;:32;;;;;;;;:41;;;;;;;;;;;;;:50;;;11436:39;;1701:25:1;;;11436:39:0;;1674:18:1;11436:39:0;;;;;;;10978:505;;;:::o;2623:166::-;2504:7;2531:6;-1:-1:-1;;;;;2531:6:0;681:10;2683:23;2679:103;;2730:40;;-1:-1:-1;;;2730:40:0;;681:10;2730:40;;;2642:51:1;2615:18;;2730:40:0;2496:203:1;11491:1012:0;-1:-1:-1;;;;;11642:20:0;;11620:117;;;;-1:-1:-1;;;11620:117:0;;7364:2:1;11620:117:0;;;7346:21:1;7403:2;7383:18;;;7376:30;7442:34;7422:18;;;7415:62;-1:-1:-1;;;7493:18:1;;;7486:45;7548:19;;11620:117:0;7162:411:1;11620:117:0;-1:-1:-1;;;;;11770:23:0;;11748:118;;;;-1:-1:-1;;;11748:118:0;;7780:2:1;11748:118:0;;;7762:21:1;7819:2;7799:18;;;7792:30;7858:34;7838:18;;;7831:62;-1:-1:-1;;;7909:18:1;;;7902:43;7962:19;;11748:118:0;7578:409:1;11748:118:0;11908:1;11899:6;:10;11877:110;;;;-1:-1:-1;;;11877:110:0;;8194:2:1;11877:110:0;;;8176:21:1;8233:2;8213:18;;;8206:30;8272:34;8252:18;;;8245:62;-1:-1:-1;;;8323:18:1;;;8316:48;8381:19;;11877:110:0;7992:414:1;11877:110:0;-1:-1:-1;;;;;12005:21:0;;;;;;:13;:21;;;;;;;;12004:22;:51;;;;-1:-1:-1;;;;;;12031:24:0;;;;;;:13;:24;;;;;;;;12030:25;12004:51;12000:151;;;12080:16;;;;12072:67;;;;-1:-1:-1;;;12072:67:0;;8613:2:1;12072:67:0;;;8595:21:1;8652:2;8632:18;;;8625:30;8691:34;8671:18;;;8664:62;-1:-1:-1;;;8742:18:1;;;8735:36;8788:19;;12072:67:0;8411:402:1;12072:67:0;-1:-1:-1;;;;;12187:23:0;;12163:21;12187:23;;;:15;:23;;;;;;12243;;;;12221:113;;;;-1:-1:-1;;;12221:113:0;;9020:2:1;12221:113:0;;;9002:21:1;9059:2;9039:18;;;9032:30;9098:34;9078:18;;;9071:62;-1:-1:-1;;;9149:18:1;;;9142:38;9197:19;;12221:113:0;8818:404:1;12221:113:0;12373:22;12389:6;12373:13;:22;:::i;:::-;-1:-1:-1;;;;;12347:23:0;;;;;;;:15;:23;;;;;;:48;;;;12406:26;;;;;;;;:36;;12436:6;;12347:23;12406:36;;12436:6;;12406:36;:::i;:::-;;;;;;;;12477:9;-1:-1:-1;;;;;12460:35:0;12469:6;-1:-1:-1;;;;;12460:35:0;;12488:6;12460:35;;;;1701:25:1;;1689:2;1674:18;;1555:177;12460:35:0;;;;;;;;11609:894;11491:1012;;;:::o;3771:191::-;3845:16;3864:6;;-1:-1:-1;;;;;3881:17:0;;;-1:-1:-1;;;;;;3881:17:0;;;;;;3914:40;;3864:6;;;;;;;3914:40;;3845:16;3914:40;3834:128;3771:191;:::o;206:418:1:-;355:2;344:9;337:21;318:4;387:6;381:13;430:6;425:2;414:9;410:18;403:34;489:6;484:2;476:6;472:15;467:2;456:9;452:18;446:50;545:1;540:2;531:6;520:9;516:22;512:31;505:42;615:2;608;604:7;599:2;591:6;587:15;583:29;572:9;568:45;564:54;556:62;;;206:418;;;;:::o;629:173::-;697:20;;-1:-1:-1;;;;;746:31:1;;736:42;;726:70;;792:1;789;782:12;726:70;629:173;;;:::o;807:300::-;875:6;883;936:2;924:9;915:7;911:23;907:32;904:52;;;952:1;949;942:12;904:52;975:29;994:9;975:29;:::i;:::-;965:39;1073:2;1058:18;;;;1045:32;;-1:-1:-1;;;807:300:1:o;1112:118::-;1198:5;1191:13;1184:21;1177:5;1174:32;1164:60;;1220:1;1217;1210:12;1235:315;1300:6;1308;1361:2;1349:9;1340:7;1336:23;1332:32;1329:52;;;1377:1;1374;1367:12;1329:52;1400:29;1419:9;1400:29;:::i;:::-;1390:39;;1479:2;1468:9;1464:18;1451:32;1492:28;1514:5;1492:28;:::i;:::-;1539:5;1529:15;;;1235:315;;;;;:::o;1737:374::-;1814:6;1822;1830;1883:2;1871:9;1862:7;1858:23;1854:32;1851:52;;;1899:1;1896;1889:12;1851:52;1922:29;1941:9;1922:29;:::i;:::-;1912:39;;1970:38;2004:2;1993:9;1989:18;1970:38;:::i;:::-;1737:374;;1960:48;;-1:-1:-1;;;2077:2:1;2062:18;;;;2049:32;;1737:374::o;2305:186::-;2364:6;2417:2;2405:9;2396:7;2392:23;2388:32;2385:52;;;2433:1;2430;2423:12;2385:52;2456:29;2475:9;2456:29;:::i;:::-;2446:39;2305:186;-1:-1:-1;;;2305:186:1:o;2704:260::-;2772:6;2780;2833:2;2821:9;2812:7;2808:23;2804:32;2801:52;;;2849:1;2846;2839:12;2801:52;2872:29;2891:9;2872:29;:::i;:::-;2862:39;;2920:38;2954:2;2943:9;2939:18;2920:38;:::i;:::-;2910:48;;2704:260;;;;;:::o;2969:380::-;3048:1;3044:12;;;;3091;;;3112:61;;3166:4;3158:6;3154:17;3144:27;;3112:61;3219:2;3211:6;3208:14;3188:18;3185:38;3182:161;;3265:10;3260:3;3256:20;3253:1;3246:31;3300:4;3297:1;3290:15;3328:4;3325:1;3318:15;3182:161;;2969:380;;;:::o;3767:127::-;3828:10;3823:3;3819:20;3816:1;3809:31;3859:4;3856:1;3849:15;3883:4;3880:1;3873:15;3899:128;3966:9;;;3987:11;;;3984:37;;;4001:18;;:::i;4032:125::-;4097:9;;;4118:10;;;4115:36;;;4131:18;;:::i;4980:404::-;5182:2;5164:21;;;5221:2;5201:18;;;5194:30;5260:34;5255:2;5240:18;;5233:62;-1:-1:-1;;;5326:2:1;5311:18;;5304:38;5374:3;5359:19;;4980:404::o;6082:245::-;6149:6;6202:2;6190:9;6181:7;6177:23;6173:32;6170:52;;;6218:1;6215;6208:12;6170:52;6250:9;6244:16;6269:28;6291:5;6269:28;:::i
Swarm Source
ipfs://08164d1eaec8e3bd89833b96960091570d2a983fcdf99199d17a7ee846c4f492
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.