Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
ERC20
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2022-12-29
*/
// SPDX-License-Identifier: MIT
// ----------------------------------------------------------------------------
// Token Standard
// By cyphersapiens
// Hello world
// ----------------------------------------------------------------------------
pragma solidity ^0.8.0;
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function allowance(address owner, address spender) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
interface IERC20Metadata is IERC20 {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
}
interface IERC165 {
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
abstract contract ERC165 is IERC165 {
function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
return interfaceId == type(IERC165).interfaceId;
}
}
library SafeMath {
function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
uint256 c = a + b;
if (c < a) return (false, 0);
return (true, c);
}
}
function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b > a) return (false, 0);
return (true, a - b);
}
}
function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (a == 0) return (true, 0);
uint256 c = a * b;
if (c / a != b) return (false, 0);
return (true, c);
}
}
function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a / b);
}
}
function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a % b);
}
}
function add(uint256 a, uint256 b) internal pure returns (uint256) {
return a + b;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return a - b;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
return a * b;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return a / b;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return a % b;
}
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
unchecked {
require(b <= a, errorMessage);
return a - b;
}
}
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a / b;
}
}
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a % b;
}
}
}
library UnsafeMath {
function unsafe_add(uint256 a, uint256 b) internal pure returns (uint256) {
unchecked {
return a + b;
}
}
function unsafe_sub(uint256 a, uint256 b) internal pure returns (uint256) {
unchecked {
return a - b;
}
}
function unsafe_div(uint256 a, uint256 b) internal pure returns (uint256) {
unchecked {
uint256 result;
assembly {
result := div(a, b)
}
return result;
}
}
function unsafe_mul(uint256 a, uint256 b) internal pure returns (uint256) {
unchecked {
return a * b;
}
}
function unsafe_increment(uint256 a) internal pure returns (uint256) {
unchecked {
return ++a;
}
}
function unsafe_decrement(uint256 a) internal pure returns (uint256) {
unchecked {
return --a;
}
}
}
library Address {
function isContract(address account) internal view returns (bool) {
bytes32 codehash;
bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
assembly { codehash := extcodehash(account) }
return (codehash != accountHash && codehash != 0x0);
}
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
(bool success, ) = recipient.call{ value: amount }("");
require(success, "Address: unable to send value, recipient may have reverted");
}
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
return _functionCallWithValue(target, data, 0, errorMessage);
}
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");
}
function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
return _functionCallWithValue(target, data, value, errorMessage);
}
function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
require(isContract(target), "Address: call to non-contract");
(bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
if (success) {
return returndata;
} else {
if (returndata.length > 0) {
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
library SafeERC20 {
using Address for address;
function safeTransfer(IERC20 token, address to, uint value) internal {
callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
}
function safeTransferFrom(IERC20 token, address from, address to, uint value) internal {
callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
}
function safeApprove(IERC20 token, address spender, uint value) internal {
require((value == 0) || (token.allowance(address(this), spender) == 0),
"SafeERC20: approve from non-zero to non-zero allowance"
);
callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
}
function callOptionalReturn(IERC20 token, bytes memory data) private {
require(address(token).isContract(), "SafeERC20: call to non-contract");
(bool success, bytes memory returndata) = address(token).call(data);
require(success, "SafeERC20: low-level call failed");
if (returndata.length > 0) {
require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
}
}
}
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
contract Ownable is Context {
address private _owner;
address private _previousOwner;
uint256 private _lockTime;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor () {
address msgSender = _msgSender();
_owner = msg.sender;
emit OwnershipTransferred(address(0), msgSender);
}
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
abstract contract Pausable is Context {
event Paused(address account);
event Unpaused(address account);
bool private _paused;
constructor() {
_paused = false;
}
modifier whenNotPaused() {
_requireNotPaused();
_;
}
modifier whenPaused() {
_requirePaused();
_;
}
function paused() public view virtual returns (bool) {
return _paused;
}
function _requireNotPaused() internal view virtual {
require(!paused(), "Pausable: paused");
}
function _requirePaused() internal view virtual {
require(paused(), "Pausable: not paused");
}
function _pause() internal virtual whenNotPaused {
_paused = true;
emit Paused(_msgSender());
}
function _unpause() internal virtual whenPaused {
_paused = false;
emit Unpaused(_msgSender());
}
}
contract ERC20 is IERC20, IERC20Metadata, ERC165, Context, Ownable {
using SafeMath for uint256;
using UnsafeMath for uint256;
using Address for address;
using SafeERC20 for IERC20;
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
string private _name = "Krohtcoin";
string private _symbol = "KRTC";
uint8 private _decimals = 9;
uint256 private _totalSupply = 1618033988000000000;
uint256 private _s_foobar;
constructor() {
_balances[msg.sender] = _totalSupply;
}
function safeDecrement(uint256 count) public {
for (uint256 i = count; i > 0; --i) {
_s_foobar = i;
}
}
function safeIncrement(uint256 count) public {
for (uint256 i = 0; i < count; ++i) {
_s_foobar = i;
}
}
function unsafeDecrement(uint256 count) public {
for (uint256 i = count; i > 0; i = i.unsafe_decrement()) {
_s_foobar = i;
}
}
function unsafeIncrement(uint256 count) public {
for (uint256 i = 0; i < count; i = i.unsafe_increment()) {
_s_foobar = i;
}
}
function name() public view virtual override returns (string memory) {
return _name;
}
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
function decimals() public view virtual override returns (uint8) {
return _decimals;
}
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
function balanceOf(address account) public view virtual override returns (uint256) {
return _balances[account];
}
function transfer(address to, uint256 amount) public virtual override returns (bool) {
address owner = _msgSender();
_transfer(owner, to, amount);
return true;
}
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount) public virtual override returns (bool) {
address owner = _msgSender();
_approve(owner, spender, amount);
return true;
}
function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
address spender = _msgSender();
_spendAllowance(from, spender, amount);
_transfer(from, to, amount);
return true;
}
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
address owner = _msgSender();
_approve(owner, spender, allowance(owner, spender) + addedValue);
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
address owner = _msgSender();
uint256 currentAllowance = allowance(owner, spender);
require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
unchecked {
_approve(owner, spender, currentAllowance - subtractedValue);
}
return true;
}
function _transfer(address from, address to, uint256 amount) internal virtual {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
_beforeTokenTransfer(from, to, amount);
uint256 fromBalance = _balances[from];
require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
unchecked {
_balances[from] = fromBalance - amount;
_balances[to] += amount;
}
emit Transfer(from, to, amount);
_afterTokenTransfer(from, to, amount);
}
function _approve(address owner, address spender, uint256 amount) internal virtual {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
uint256 currentAllowance = allowance(owner, spender);
if (currentAllowance != type(uint256).max) {
require(currentAllowance >= amount, "ERC20: insufficient allowance");
unchecked {
_approve(owner, spender, currentAllowance - amount);
}
}
}
function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}
function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}
function _mint(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
_beforeTokenTransfer(address(0), account, amount);
_totalSupply += amount;
unchecked {
_balances[account] += amount;
}
emit Transfer(address(0), account, amount);
_afterTokenTransfer(address(0), account, amount);
}
function _burn(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: burn from the zero address");
_beforeTokenTransfer(account, address(0), amount);
uint256 accountBalance = _balances[account];
require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
unchecked {
_balances[account] = accountBalance - amount;
_totalSupply -= amount;
}
emit Transfer(account, address(0), amount);
_afterTokenTransfer(account, address(0), amount);
}
}
abstract contract ERC20Burnable is Context, ERC20 {
function burn(uint256 amount) internal virtual {
_burn(_msgSender(), amount);
}
function burnFrom(address account, uint256 amount) internal virtual {
_spendAllowance(account, _msgSender(), amount);
_burn(account, amount);
}
}
abstract contract ERC20Capped is ERC20 {
uint256 private immutable _cap;
constructor(uint256 cap_) {
require(cap_ > 0, "ERC20Capped: cap is 0");
_cap = cap_;
}
function cap() public view virtual returns (uint256) {
return _cap;
}
function _mint(address account, uint256 amount) internal virtual override {
require(ERC20.totalSupply() + amount <= cap(), "ERC20Capped: cap exceeded");
super._mint(account, amount);
}
}
abstract contract ERC20Pausable is ERC20, Pausable {
function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual override {
super._beforeTokenTransfer(from, to, amount);
require(!paused(), "ERC20Pausable: token transfer while paused");
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":"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":[{"internalType":"uint256","name":"count","type":"uint256"}],"name":"safeDecrement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"count","type":"uint256"}],"name":"safeIncrement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"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":"uint256","name":"count","type":"uint256"}],"name":"unsafeDecrement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"count","type":"uint256"}],"name":"unsafeIncrement","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60806040526040518060400160405280600981526020017f4b726f6874636f696e00000000000000000000000000000000000000000000008152506005908051906020019062000051929190620001da565b506040518060400160405280600481526020017f4b52544300000000000000000000000000000000000000000000000000000000815250600690805190602001906200009f929190620001da565b506009600760006101000a81548160ff021916908360ff1602179055506716746956e13fa800600855348015620000d557600080fd5b506000620000e8620001d260201b60201c565b9050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600854600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620002ef565b600033905090565b828054620001e8906200028a565b90600052602060002090601f0160209004810192826200020c576000855562000258565b82601f106200022757805160ff191683800117855562000258565b8280016001018555821562000258579182015b82811115620002575782518255916020019190600101906200023a565b5b5090506200026791906200026b565b5090565b5b80821115620002865760008160009055506001016200026c565b5090565b60006002820490506001821680620002a357607f821691505b60208210811415620002ba57620002b9620002c0565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6119fc80620002ff6000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806370a08231116100ad578063a457c2d711610071578063a457c2d71461030a578063a9059cbb1461033a578063d21af1471461036a578063dd62ed3e14610386578063f2fde38b146103b657610121565b806370a0823114610278578063715018a6146102a85780638da5cb5b146102b25780638de03d52146102d057806395d89b41146102ec57610121565b806323b872dd116100f457806323b872dd146101c2578063313ce567146101f2578063395093511461021057806340f1dc4214610240578063690016c91461025c57610121565b806301ffc9a71461012657806306fdde0314610156578063095ea7b31461017457806318160ddd146101a4575b600080fd5b610140600480360381019061013b9190611188565b6103d2565b60405161014d91906115b4565b60405180910390f35b61015e61043c565b60405161016b91906115cf565b60405180910390f35b61018e6004803603810190610189919061114c565b6104ce565b60405161019b91906115b4565b60405180910390f35b6101ac6104f1565b6040516101b99190611711565b60405180910390f35b6101dc60048036038101906101d791906110fd565b6104fb565b6040516101e991906115b4565b60405180910390f35b6101fa61052a565b604051610207919061172c565b60405180910390f35b61022a6004803603810190610225919061114c565b610541565b60405161023791906115b4565b60405180910390f35b61025a600480360381019061025591906111b1565b610578565b005b610276600480360381019061027191906111b1565b61059f565b005b610292600480360381019061028d9190611098565b6105c9565b60405161029f9190611711565b60405180910390f35b6102b0610612565b005b6102ba610765565b6040516102c79190611599565b60405180910390f35b6102ea60048036038101906102e591906111b1565b61078e565b005b6102f46107b4565b60405161030191906115cf565b60405180910390f35b610324600480360381019061031f919061114c565b610846565b60405161033191906115b4565b60405180910390f35b610354600480360381019061034f919061114c565b6108bd565b60405161036191906115b4565b60405180910390f35b610384600480360381019061037f91906111b1565b6108e0565b005b6103a0600480360381019061039b91906110c1565b61090b565b6040516103ad9190611711565b60405180910390f35b6103d060048036038101906103cb9190611098565b610992565b005b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60606005805461044b90611897565b80601f016020809104026020016040519081016040528092919081815260200182805461047790611897565b80156104c45780601f10610499576101008083540402835291602001916104c4565b820191906000526020600020905b8154815290600101906020018083116104a757829003601f168201915b5050505050905090565b6000806104d9610b54565b90506104e6818585610b5c565b600191505092915050565b6000600854905090565b600080610506610b54565b9050610513858285610d27565b61051e858585610db3565b60019150509392505050565b6000600760009054906101000a900460ff16905090565b60008061054c610b54565b905061056d81858561055e858961090b565b6105689190611763565b610b5c565b600191505092915050565b60005b8181101561059b578060098190555080610594906118c9565b905061057b565b5050565b60008190505b60008111156105c557806009819055506105be8161102e565b90506105a5565b5050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61061a610b54565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069e90611691565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60005b818110156107b057806009819055506107a98161103f565b9050610791565b5050565b6060600680546107c390611897565b80601f01602080910402602001604051908101604052809291908181526020018280546107ef90611897565b801561083c5780601f106108115761010080835404028352916020019161083c565b820191906000526020600020905b81548152906001019060200180831161081f57829003601f168201915b5050505050905090565b600080610851610b54565b9050600061085f828661090b565b9050838110156108a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089b906116f1565b60405180910390fd5b6108b18286868403610b5c565b60019250505092915050565b6000806108c8610b54565b90506108d5818585610db3565b600191505092915050565b60008190505b60008111156109075780600981905550806109009061186d565b90506108e6565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61099a610b54565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1e90611691565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610a97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8e90611611565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610bcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc3906116d1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3390611631565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610d1a9190611711565b60405180910390a3505050565b6000610d33848461090b565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610dad5781811015610d9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9690611651565b60405180910390fd5b610dac8484848403610b5c565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1a906116b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8a906115f1565b60405180910390fd5b610e9e83838361104f565b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610f25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1c90611671565b60405180910390fd5b818103600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110159190611711565b60405180910390a3611028848484611054565b50505050565b600081600190039150819050919050565b6000816001019150819050919050565b505050565b505050565b60008135905061106881611981565b92915050565b60008135905061107d81611998565b92915050565b600081359050611092816119af565b92915050565b6000602082840312156110aa57600080fd5b60006110b884828501611059565b91505092915050565b600080604083850312156110d457600080fd5b60006110e285828601611059565b92505060206110f385828601611059565b9150509250929050565b60008060006060848603121561111257600080fd5b600061112086828701611059565b935050602061113186828701611059565b925050604061114286828701611083565b9150509250925092565b6000806040838503121561115f57600080fd5b600061116d85828601611059565b925050602061117e85828601611083565b9150509250929050565b60006020828403121561119a57600080fd5b60006111a88482850161106e565b91505092915050565b6000602082840312156111c357600080fd5b60006111d184828501611083565b91505092915050565b6111e3816117b9565b82525050565b6111f2816117cb565b82525050565b600061120382611747565b61120d8185611752565b935061121d81856020860161183a565b61122681611970565b840191505092915050565b600061123e602383611752565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006112a4602683611752565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061130a602283611752565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611370601d83611752565b91507f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006000830152602082019050919050565b60006113b0602683611752565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611416602083611752565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000611456602583611752565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006114bc602483611752565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611522602583611752565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b61158481611823565b82525050565b6115938161182d565b82525050565b60006020820190506115ae60008301846111da565b92915050565b60006020820190506115c960008301846111e9565b92915050565b600060208201905081810360008301526115e981846111f8565b905092915050565b6000602082019050818103600083015261160a81611231565b9050919050565b6000602082019050818103600083015261162a81611297565b9050919050565b6000602082019050818103600083015261164a816112fd565b9050919050565b6000602082019050818103600083015261166a81611363565b9050919050565b6000602082019050818103600083015261168a816113a3565b9050919050565b600060208201905081810360008301526116aa81611409565b9050919050565b600060208201905081810360008301526116ca81611449565b9050919050565b600060208201905081810360008301526116ea816114af565b9050919050565b6000602082019050818103600083015261170a81611515565b9050919050565b6000602082019050611726600083018461157b565b92915050565b6000602082019050611741600083018461158a565b92915050565b600081519050919050565b600082825260208201905092915050565b600061176e82611823565b915061177983611823565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156117ae576117ad611912565b5b828201905092915050565b60006117c482611803565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561185857808201518184015260208101905061183d565b83811115611867576000848401525b50505050565b600061187882611823565b9150600082141561188c5761188b611912565b5b600182039050919050565b600060028204905060018216806118af57607f821691505b602082108114156118c3576118c2611941565b5b50919050565b60006118d482611823565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561190757611906611912565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b61198a816117b9565b811461199557600080fd5b50565b6119a1816117d7565b81146119ac57600080fd5b50565b6119b881611823565b81146119c357600080fd5b5056fea264697066735822122003475b7efc99bcabf1d96f919f77f60a2d51db34d079add928963e2345449f8864736f6c63430008000033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101215760003560e01c806370a08231116100ad578063a457c2d711610071578063a457c2d71461030a578063a9059cbb1461033a578063d21af1471461036a578063dd62ed3e14610386578063f2fde38b146103b657610121565b806370a0823114610278578063715018a6146102a85780638da5cb5b146102b25780638de03d52146102d057806395d89b41146102ec57610121565b806323b872dd116100f457806323b872dd146101c2578063313ce567146101f2578063395093511461021057806340f1dc4214610240578063690016c91461025c57610121565b806301ffc9a71461012657806306fdde0314610156578063095ea7b31461017457806318160ddd146101a4575b600080fd5b610140600480360381019061013b9190611188565b6103d2565b60405161014d91906115b4565b60405180910390f35b61015e61043c565b60405161016b91906115cf565b60405180910390f35b61018e6004803603810190610189919061114c565b6104ce565b60405161019b91906115b4565b60405180910390f35b6101ac6104f1565b6040516101b99190611711565b60405180910390f35b6101dc60048036038101906101d791906110fd565b6104fb565b6040516101e991906115b4565b60405180910390f35b6101fa61052a565b604051610207919061172c565b60405180910390f35b61022a6004803603810190610225919061114c565b610541565b60405161023791906115b4565b60405180910390f35b61025a600480360381019061025591906111b1565b610578565b005b610276600480360381019061027191906111b1565b61059f565b005b610292600480360381019061028d9190611098565b6105c9565b60405161029f9190611711565b60405180910390f35b6102b0610612565b005b6102ba610765565b6040516102c79190611599565b60405180910390f35b6102ea60048036038101906102e591906111b1565b61078e565b005b6102f46107b4565b60405161030191906115cf565b60405180910390f35b610324600480360381019061031f919061114c565b610846565b60405161033191906115b4565b60405180910390f35b610354600480360381019061034f919061114c565b6108bd565b60405161036191906115b4565b60405180910390f35b610384600480360381019061037f91906111b1565b6108e0565b005b6103a0600480360381019061039b91906110c1565b61090b565b6040516103ad9190611711565b60405180910390f35b6103d060048036038101906103cb9190611098565b610992565b005b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60606005805461044b90611897565b80601f016020809104026020016040519081016040528092919081815260200182805461047790611897565b80156104c45780601f10610499576101008083540402835291602001916104c4565b820191906000526020600020905b8154815290600101906020018083116104a757829003601f168201915b5050505050905090565b6000806104d9610b54565b90506104e6818585610b5c565b600191505092915050565b6000600854905090565b600080610506610b54565b9050610513858285610d27565b61051e858585610db3565b60019150509392505050565b6000600760009054906101000a900460ff16905090565b60008061054c610b54565b905061056d81858561055e858961090b565b6105689190611763565b610b5c565b600191505092915050565b60005b8181101561059b578060098190555080610594906118c9565b905061057b565b5050565b60008190505b60008111156105c557806009819055506105be8161102e565b90506105a5565b5050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61061a610b54565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069e90611691565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60005b818110156107b057806009819055506107a98161103f565b9050610791565b5050565b6060600680546107c390611897565b80601f01602080910402602001604051908101604052809291908181526020018280546107ef90611897565b801561083c5780601f106108115761010080835404028352916020019161083c565b820191906000526020600020905b81548152906001019060200180831161081f57829003601f168201915b5050505050905090565b600080610851610b54565b9050600061085f828661090b565b9050838110156108a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089b906116f1565b60405180910390fd5b6108b18286868403610b5c565b60019250505092915050565b6000806108c8610b54565b90506108d5818585610db3565b600191505092915050565b60008190505b60008111156109075780600981905550806109009061186d565b90506108e6565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61099a610b54565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1e90611691565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610a97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8e90611611565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610bcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc3906116d1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3390611631565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610d1a9190611711565b60405180910390a3505050565b6000610d33848461090b565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610dad5781811015610d9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9690611651565b60405180910390fd5b610dac8484848403610b5c565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1a906116b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8a906115f1565b60405180910390fd5b610e9e83838361104f565b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610f25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1c90611671565b60405180910390fd5b818103600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110159190611711565b60405180910390a3611028848484611054565b50505050565b600081600190039150819050919050565b6000816001019150819050919050565b505050565b505050565b60008135905061106881611981565b92915050565b60008135905061107d81611998565b92915050565b600081359050611092816119af565b92915050565b6000602082840312156110aa57600080fd5b60006110b884828501611059565b91505092915050565b600080604083850312156110d457600080fd5b60006110e285828601611059565b92505060206110f385828601611059565b9150509250929050565b60008060006060848603121561111257600080fd5b600061112086828701611059565b935050602061113186828701611059565b925050604061114286828701611083565b9150509250925092565b6000806040838503121561115f57600080fd5b600061116d85828601611059565b925050602061117e85828601611083565b9150509250929050565b60006020828403121561119a57600080fd5b60006111a88482850161106e565b91505092915050565b6000602082840312156111c357600080fd5b60006111d184828501611083565b91505092915050565b6111e3816117b9565b82525050565b6111f2816117cb565b82525050565b600061120382611747565b61120d8185611752565b935061121d81856020860161183a565b61122681611970565b840191505092915050565b600061123e602383611752565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006112a4602683611752565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061130a602283611752565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611370601d83611752565b91507f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006000830152602082019050919050565b60006113b0602683611752565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611416602083611752565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000611456602583611752565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006114bc602483611752565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611522602583611752565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b61158481611823565b82525050565b6115938161182d565b82525050565b60006020820190506115ae60008301846111da565b92915050565b60006020820190506115c960008301846111e9565b92915050565b600060208201905081810360008301526115e981846111f8565b905092915050565b6000602082019050818103600083015261160a81611231565b9050919050565b6000602082019050818103600083015261162a81611297565b9050919050565b6000602082019050818103600083015261164a816112fd565b9050919050565b6000602082019050818103600083015261166a81611363565b9050919050565b6000602082019050818103600083015261168a816113a3565b9050919050565b600060208201905081810360008301526116aa81611409565b9050919050565b600060208201905081810360008301526116ca81611449565b9050919050565b600060208201905081810360008301526116ea816114af565b9050919050565b6000602082019050818103600083015261170a81611515565b9050919050565b6000602082019050611726600083018461157b565b92915050565b6000602082019050611741600083018461158a565b92915050565b600081519050919050565b600082825260208201905092915050565b600061176e82611823565b915061177983611823565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156117ae576117ad611912565b5b828201905092915050565b60006117c482611803565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561185857808201518184015260208101905061183d565b83811115611867576000848401525b50505050565b600061187882611823565b9150600082141561188c5761188b611912565b5b600182039050919050565b600060028204905060018216806118af57607f821691505b602082108114156118c3576118c2611941565b5b50919050565b60006118d482611823565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561190757611906611912565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b61198a816117b9565b811461199557600080fd5b50565b6119a1816117d7565b81146119ac57600080fd5b50565b6119b881611823565b81146119c357600080fd5b5056fea264697066735822122003475b7efc99bcabf1d96f919f77f60a2d51db34d079add928963e2345449f8864736f6c63430008000033
Deployed Bytecode Sourcemap
10664:6042:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1352:157;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11929:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12868:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12257:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13077:261;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12149:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13346:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11440:139;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11588:162;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12373:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9304:148;;;:::i;:::-;;9090:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11759:162;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12037:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13592:436;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12508:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11292:139;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12709:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9460:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1352:157;1437:4;1476:25;1461:40;;;:11;:40;;;;1454:47;;1352:157;;;:::o;11929:100::-;11983:13;12016:5;12009:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11929:100;:::o;12868:201::-;12951:4;12968:13;12984:12;:10;:12::i;:::-;12968:28;;13007:32;13016:5;13023:7;13032:6;13007:8;:32::i;:::-;13057:4;13050:11;;;12868:201;;;;:::o;12257:108::-;12318:7;12345:12;;12338:19;;12257:108;:::o;13077:261::-;13174:4;13191:15;13209:12;:10;:12::i;:::-;13191:30;;13232:38;13248:4;13254:7;13263:6;13232:15;:38::i;:::-;13281:27;13291:4;13297:2;13301:6;13281:9;:27::i;:::-;13326:4;13319:11;;;13077:261;;;;;:::o;12149:100::-;12207:5;12232:9;;;;;;;;;;;12225:16;;12149:100;:::o;13346:238::-;13434:4;13451:13;13467:12;:10;:12::i;:::-;13451:28;;13490:64;13499:5;13506:7;13543:10;13515:25;13525:5;13532:7;13515:9;:25::i;:::-;:38;;;;:::i;:::-;13490:8;:64::i;:::-;13572:4;13565:11;;;13346:238;;;;:::o;11440:139::-;11501:9;11496:76;11520:5;11516:1;:9;11496:76;;;11559:1;11547:9;:13;;;;11527:3;;;;:::i;:::-;;;11496:76;;;;11440:139;:::o;11588:162::-;11651:9;11663:5;11651:17;;11646:97;11674:1;11670;:5;11646:97;;;11730:1;11718:9;:13;;;;11681:20;:1;:18;:20::i;:::-;11677:24;;11646:97;;;;11588:162;:::o;12373:127::-;12447:7;12474:9;:18;12484:7;12474:18;;;;;;;;;;;;;;;;12467:25;;12373:127;;;:::o;9304:148::-;9227:12;:10;:12::i;:::-;9217:22;;:6;;;;;;;;;;:22;;;9209:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9411:1:::1;9374:40;;9395:6;::::0;::::1;;;;;;;;9374:40;;;;;;;;;;;;9442:1;9425:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;9304:148::o:0;9090:79::-;9128:7;9155:6;;;;;;;;;;;9148:13;;9090:79;:::o;11759:162::-;11822:9;11817:97;11841:5;11837:1;:9;11817:97;;;11901:1;11889:9;:13;;;;11852:20;:1;:18;:20::i;:::-;11848:24;;11817:97;;;;11759:162;:::o;12037:104::-;12093:13;12126:7;12119:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12037:104;:::o;13592:436::-;13685:4;13702:13;13718:12;:10;:12::i;:::-;13702:28;;13741:24;13768:25;13778:5;13785:7;13768:9;:25::i;:::-;13741:52;;13832:15;13812:16;:35;;13804:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13925:60;13934:5;13941:7;13969:15;13950:16;:34;13925:8;:60::i;:::-;14016:4;14009:11;;;;13592:436;;;;:::o;12508:193::-;12587:4;12604:13;12620:12;:10;:12::i;:::-;12604:28;;12643;12653:5;12660:2;12664:6;12643:9;:28::i;:::-;12689:4;12682:11;;;12508:193;;;;:::o;11292:139::-;11353:9;11365:5;11353:17;;11348:76;11376:1;11372;:5;11348:76;;;11411:1;11399:9;:13;;;;11379:3;;;;:::i;:::-;;;11348:76;;;;11292:139;:::o;12709:151::-;12798:7;12825:11;:18;12837:5;12825:18;;;;;;;;;;;;;;;:27;12844:7;12825:27;;;;;;;;;;;;;;;;12818:34;;12709:151;;;;:::o;9460:244::-;9227:12;:10;:12::i;:::-;9217:22;;:6;;;;;;;;;;:22;;;9209:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9569:1:::1;9549:22;;:8;:22;;;;9541:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;9659:8;9630:38;;9651:6;::::0;::::1;;;;;;;;9630:38;;;;;;;;;;;;9688:8;9679:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;9460:244:::0;:::o;8484:98::-;8537:7;8564:10;8557:17;;8484:98;:::o;14685:346::-;14804:1;14787:19;;:5;:19;;;;14779:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14885:1;14866:21;;:7;:21;;;;14858:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14969:6;14939:11;:18;14951:5;14939:18;;;;;;;;;;;;;;;:27;14958:7;14939:27;;;;;;;;;;;;;;;:36;;;;15007:7;14991:32;;15000:5;14991:32;;;15016:6;14991:32;;;;;;:::i;:::-;;;;;;;;14685:346;;;:::o;15039:419::-;15140:24;15167:25;15177:5;15184:7;15167:9;:25::i;:::-;15140:52;;15227:17;15207:16;:37;15203:248;;15289:6;15269:16;:26;;15261:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15373:51;15382:5;15389:7;15417:6;15398:16;:25;15373:8;:51::i;:::-;15203:248;15039:419;;;;:::o;14036:641::-;14149:1;14133:18;;:4;:18;;;;14125:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14226:1;14212:16;;:2;:16;;;;14204:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14281:38;14302:4;14308:2;14312:6;14281:20;:38::i;:::-;14332:19;14354:9;:15;14364:4;14354:15;;;;;;;;;;;;;;;;14332:37;;14403:6;14388:11;:21;;14380:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;14520:6;14506:11;:20;14488:9;:15;14498:4;14488:15;;;;;;;;;;;;;;;:38;;;;14558:6;14541:9;:13;14551:2;14541:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;14608:2;14593:26;;14602:4;14593:26;;;14612:6;14593:26;;;;;;:::i;:::-;;;;;;;;14632:37;14652:4;14658:2;14662:6;14632:19;:37::i;:::-;14036:641;;;;:::o;4706:134::-;4766:7;4818:3;;;;;;;4811:10;;4706:134;;;:::o;4563:::-;4623:7;4675:3;;;;;;4668:10;;4563:134;;;:::o;15466:91::-;;;;:::o;15565:90::-;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:137::-;;235:6;222:20;213:29;;251:32;277:5;251:32;:::i;:::-;203:86;;;;:::o;295:139::-;;379:6;366:20;357:29;;395:33;422:5;395:33;:::i;:::-;347:87;;;;:::o;440:262::-;;548:2;536:9;527:7;523:23;519:32;516:2;;;564:1;561;554:12;516:2;607:1;632:53;677:7;668:6;657:9;653:22;632:53;:::i;:::-;622:63;;578:117;506:196;;;;:::o;708:407::-;;;833:2;821:9;812:7;808:23;804:32;801:2;;;849:1;846;839:12;801:2;892:1;917:53;962:7;953:6;942:9;938:22;917:53;:::i;:::-;907:63;;863:117;1019:2;1045:53;1090:7;1081:6;1070:9;1066:22;1045:53;:::i;:::-;1035:63;;990:118;791:324;;;;;:::o;1121:552::-;;;;1263:2;1251:9;1242:7;1238:23;1234:32;1231:2;;;1279:1;1276;1269:12;1231:2;1322:1;1347:53;1392:7;1383:6;1372:9;1368:22;1347:53;:::i;:::-;1337:63;;1293:117;1449:2;1475:53;1520:7;1511:6;1500:9;1496:22;1475:53;:::i;:::-;1465:63;;1420:118;1577:2;1603:53;1648:7;1639:6;1628:9;1624:22;1603:53;:::i;:::-;1593:63;;1548:118;1221:452;;;;;:::o;1679:407::-;;;1804:2;1792:9;1783:7;1779:23;1775:32;1772:2;;;1820:1;1817;1810:12;1772:2;1863:1;1888:53;1933:7;1924:6;1913:9;1909:22;1888:53;:::i;:::-;1878:63;;1834:117;1990:2;2016:53;2061:7;2052:6;2041:9;2037:22;2016:53;:::i;:::-;2006:63;;1961:118;1762:324;;;;;:::o;2092:260::-;;2199:2;2187:9;2178:7;2174:23;2170:32;2167:2;;;2215:1;2212;2205:12;2167:2;2258:1;2283:52;2327:7;2318:6;2307:9;2303:22;2283:52;:::i;:::-;2273:62;;2229:116;2157:195;;;;:::o;2358:262::-;;2466:2;2454:9;2445:7;2441:23;2437:32;2434:2;;;2482:1;2479;2472:12;2434:2;2525:1;2550:53;2595:7;2586:6;2575:9;2571:22;2550:53;:::i;:::-;2540:63;;2496:117;2424:196;;;;:::o;2626:118::-;2713:24;2731:5;2713:24;:::i;:::-;2708:3;2701:37;2691:53;;:::o;2750:109::-;2831:21;2846:5;2831:21;:::i;:::-;2826:3;2819:34;2809:50;;:::o;2865:364::-;;2981:39;3014:5;2981:39;:::i;:::-;3036:71;3100:6;3095:3;3036:71;:::i;:::-;3029:78;;3116:52;3161:6;3156:3;3149:4;3142:5;3138:16;3116:52;:::i;:::-;3193:29;3215:6;3193:29;:::i;:::-;3188:3;3184:39;3177:46;;2957:272;;;;;:::o;3235:367::-;;3398:67;3462:2;3457:3;3398:67;:::i;:::-;3391:74;;3495:34;3491:1;3486:3;3482:11;3475:55;3561:5;3556:2;3551:3;3547:12;3540:27;3593:2;3588:3;3584:12;3577:19;;3381:221;;;:::o;3608:370::-;;3771:67;3835:2;3830:3;3771:67;:::i;:::-;3764:74;;3868:34;3864:1;3859:3;3855:11;3848:55;3934:8;3929:2;3924:3;3920:12;3913:30;3969:2;3964:3;3960:12;3953:19;;3754:224;;;:::o;3984:366::-;;4147:67;4211:2;4206:3;4147:67;:::i;:::-;4140:74;;4244:34;4240:1;4235:3;4231:11;4224:55;4310:4;4305:2;4300:3;4296:12;4289:26;4341:2;4336:3;4332:12;4325:19;;4130:220;;;:::o;4356:327::-;;4519:67;4583:2;4578:3;4519:67;:::i;:::-;4512:74;;4616:31;4612:1;4607:3;4603:11;4596:52;4674:2;4669:3;4665:12;4658:19;;4502:181;;;:::o;4689:370::-;;4852:67;4916:2;4911:3;4852:67;:::i;:::-;4845:74;;4949:34;4945:1;4940:3;4936:11;4929:55;5015:8;5010:2;5005:3;5001:12;4994:30;5050:2;5045:3;5041:12;5034:19;;4835:224;;;:::o;5065:330::-;;5228:67;5292:2;5287:3;5228:67;:::i;:::-;5221:74;;5325:34;5321:1;5316:3;5312:11;5305:55;5386:2;5381:3;5377:12;5370:19;;5211:184;;;:::o;5401:369::-;;5564:67;5628:2;5623:3;5564:67;:::i;:::-;5557:74;;5661:34;5657:1;5652:3;5648:11;5641:55;5727:7;5722:2;5717:3;5713:12;5706:29;5761:2;5756:3;5752:12;5745:19;;5547:223;;;:::o;5776:368::-;;5939:67;6003:2;5998:3;5939:67;:::i;:::-;5932:74;;6036:34;6032:1;6027:3;6023:11;6016:55;6102:6;6097:2;6092:3;6088:12;6081:28;6135:2;6130:3;6126:12;6119:19;;5922:222;;;:::o;6150:369::-;;6313:67;6377:2;6372:3;6313:67;:::i;:::-;6306:74;;6410:34;6406:1;6401:3;6397:11;6390:55;6476:7;6471:2;6466:3;6462:12;6455:29;6510:2;6505:3;6501:12;6494:19;;6296:223;;;:::o;6525:118::-;6612:24;6630:5;6612:24;:::i;:::-;6607:3;6600:37;6590:53;;:::o;6649:112::-;6732:22;6748:5;6732:22;:::i;:::-;6727:3;6720:35;6710:51;;:::o;6767:222::-;;6898:2;6887:9;6883:18;6875:26;;6911:71;6979:1;6968:9;6964:17;6955:6;6911:71;:::i;:::-;6865:124;;;;:::o;6995:210::-;;7120:2;7109:9;7105:18;7097:26;;7133:65;7195:1;7184:9;7180:17;7171:6;7133:65;:::i;:::-;7087:118;;;;:::o;7211:313::-;;7362:2;7351:9;7347:18;7339:26;;7411:9;7405:4;7401:20;7397:1;7386:9;7382:17;7375:47;7439:78;7512:4;7503:6;7439:78;:::i;:::-;7431:86;;7329:195;;;;:::o;7530:419::-;;7734:2;7723:9;7719:18;7711:26;;7783:9;7777:4;7773:20;7769:1;7758:9;7754:17;7747:47;7811:131;7937:4;7811:131;:::i;:::-;7803:139;;7701:248;;;:::o;7955:419::-;;8159:2;8148:9;8144:18;8136:26;;8208:9;8202:4;8198:20;8194:1;8183:9;8179:17;8172:47;8236:131;8362:4;8236:131;:::i;:::-;8228:139;;8126:248;;;:::o;8380:419::-;;8584:2;8573:9;8569:18;8561:26;;8633:9;8627:4;8623:20;8619:1;8608:9;8604:17;8597:47;8661:131;8787:4;8661:131;:::i;:::-;8653:139;;8551:248;;;:::o;8805:419::-;;9009:2;8998:9;8994:18;8986:26;;9058:9;9052:4;9048:20;9044:1;9033:9;9029:17;9022:47;9086:131;9212:4;9086:131;:::i;:::-;9078:139;;8976:248;;;:::o;9230:419::-;;9434:2;9423:9;9419:18;9411:26;;9483:9;9477:4;9473:20;9469:1;9458:9;9454:17;9447:47;9511:131;9637:4;9511:131;:::i;:::-;9503:139;;9401:248;;;:::o;9655:419::-;;9859:2;9848:9;9844:18;9836:26;;9908:9;9902:4;9898:20;9894:1;9883:9;9879:17;9872:47;9936:131;10062:4;9936:131;:::i;:::-;9928:139;;9826:248;;;:::o;10080:419::-;;10284:2;10273:9;10269:18;10261:26;;10333:9;10327:4;10323:20;10319:1;10308:9;10304:17;10297:47;10361:131;10487:4;10361:131;:::i;:::-;10353:139;;10251:248;;;:::o;10505:419::-;;10709:2;10698:9;10694:18;10686:26;;10758:9;10752:4;10748:20;10744:1;10733:9;10729:17;10722:47;10786:131;10912:4;10786:131;:::i;:::-;10778:139;;10676:248;;;:::o;10930:419::-;;11134:2;11123:9;11119:18;11111:26;;11183:9;11177:4;11173:20;11169:1;11158:9;11154:17;11147:47;11211:131;11337:4;11211:131;:::i;:::-;11203:139;;11101:248;;;:::o;11355:222::-;;11486:2;11475:9;11471:18;11463:26;;11499:71;11567:1;11556:9;11552:17;11543:6;11499:71;:::i;:::-;11453:124;;;;:::o;11583:214::-;;11710:2;11699:9;11695:18;11687:26;;11723:67;11787:1;11776:9;11772:17;11763:6;11723:67;:::i;:::-;11677:120;;;;:::o;11803:99::-;;11889:5;11883:12;11873:22;;11862:40;;;:::o;11908:169::-;;12026:6;12021:3;12014:19;12066:4;12061:3;12057:14;12042:29;;12004:73;;;;:::o;12083:305::-;;12142:20;12160:1;12142:20;:::i;:::-;12137:25;;12176:20;12194:1;12176:20;:::i;:::-;12171:25;;12330:1;12262:66;12258:74;12255:1;12252:81;12249:2;;;12336:18;;:::i;:::-;12249:2;12380:1;12377;12373:9;12366:16;;12127:261;;;;:::o;12394:96::-;;12460:24;12478:5;12460:24;:::i;:::-;12449:35;;12439:51;;;:::o;12496:90::-;;12573:5;12566:13;12559:21;12548:32;;12538:48;;;:::o;12592:149::-;;12668:66;12661:5;12657:78;12646:89;;12636:105;;;:::o;12747:126::-;;12824:42;12817:5;12813:54;12802:65;;12792:81;;;:::o;12879:77::-;;12945:5;12934:16;;12924:32;;;:::o;12962:86::-;;13037:4;13030:5;13026:16;13015:27;;13005:43;;;:::o;13054:307::-;13122:1;13132:113;13146:6;13143:1;13140:13;13132:113;;;13231:1;13226:3;13222:11;13216:18;13212:1;13207:3;13203:11;13196:39;13168:2;13165:1;13161:10;13156:15;;13132:113;;;13263:6;13260:1;13257:13;13254:2;;;13343:1;13334:6;13329:3;13325:16;13318:27;13254:2;13103:258;;;;:::o;13367:171::-;;13429:24;13447:5;13429:24;:::i;:::-;13420:33;;13475:4;13468:5;13465:15;13462:2;;;13483:18;;:::i;:::-;13462:2;13530:1;13523:5;13519:13;13512:20;;13410:128;;;:::o;13544:320::-;;13625:1;13619:4;13615:12;13605:22;;13672:1;13666:4;13662:12;13693:18;13683:2;;13749:4;13741:6;13737:17;13727:27;;13683:2;13811;13803:6;13800:14;13780:18;13777:38;13774:2;;;13830:18;;:::i;:::-;13774:2;13595:269;;;;:::o;13870:233::-;;13932:24;13950:5;13932:24;:::i;:::-;13923:33;;13978:66;13971:5;13968:77;13965:2;;;14048:18;;:::i;:::-;13965:2;14095:1;14088:5;14084:13;14077:20;;13913:190;;;:::o;14109:180::-;14157:77;14154:1;14147:88;14254:4;14251:1;14244:15;14278:4;14275:1;14268:15;14295:180;14343:77;14340:1;14333:88;14440:4;14437:1;14430:15;14464:4;14461:1;14454:15;14481:102;;14573:2;14569:7;14564:2;14557:5;14553:14;14549:28;14539:38;;14529:54;;;:::o;14589:122::-;14662:24;14680:5;14662:24;:::i;:::-;14655:5;14652:35;14642:2;;14701:1;14698;14691:12;14642:2;14632:79;:::o;14717:120::-;14789:23;14806:5;14789:23;:::i;:::-;14782:5;14779:34;14769:2;;14827:1;14824;14817:12;14769:2;14759:78;:::o;14843:122::-;14916:24;14934:5;14916:24;:::i;:::-;14909:5;14906:35;14896:2;;14955:1;14952;14945:12;14896:2;14886:79;:::o
Swarm Source
ipfs://03475b7efc99bcabf1d96f919f77f60a2d51db34d079add928963e2345449f88
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
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.