ERC-20
Overview
Max Total Supply
500,000,000 AIOW
Holders
63
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
102,218.988438397874517952 AIOWValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
AIOW
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-09-02 */ // Sources flattened with hardhat v2.6.0 https://hardhat.org // File contracts/helpers/Ownable.sol pragma solidity 0.8.7; contract Ownable { address internal _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _owner = msg.sender; emit OwnershipTransferred(address(0), msg.sender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == msg.sender, "caller is not the owner"); _; } function renounceOwnership() public onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // File contracts/token/AIOW.sol // SPDX-License-Identifier: MIT pragma solidity 0.8.7; contract AIOW is Ownable { mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; uint256 public totalSupply; string public name; string public symbol; uint8 public decimals; uint256 constant PERC_BASE = 10000; // = 100.00 % uint256 public constant SECONDS_IN_ONE_DAY = 86400; mapping(address => TransferRuleOutbound) public transferRulesOutbound; mapping(address => TransferRuleInbound[]) public transferRulesInbound; enum TransferRuleType { inbound, outbound } uint256 private ruleIdCounter; struct TransferRuleOutbound { uint8 id; uint32 timelockUntil; uint16 vestingDurationDays; uint16 vestingStartsAfterDays; uint16 percUnlockedAtTimeUnlock; } struct TransferRuleInbound { uint8 id; uint32 timelockUntil; uint16 vestingDurationDays; uint16 vestingStartsAfterDays; uint16 percUnlockedAtTimeUnlock; uint96 tokens; bool isPool; } event TransferRuleInboundRegistered(address addr, TransferRuleInbound rule); event TransferRuleOutboundRegistered(address addr, TransferRuleOutbound rule); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); constructor(uint256 totalSupply_) { name = "AIOW"; symbol = "AIOW"; decimals = 18; // mint the total supply to the deployer totalSupply += totalSupply_; _balances[msg.sender] += totalSupply_; emit Transfer(address(0), msg.sender, totalSupply_); } function _beforeTokenTransfer(address from_, address to_, uint256 amount_) internal virtual { // apply all the rules to verify the transferred amount is not above the total amount of unlocked tokens require(amount_ <= calcBalanceUnlocked(from_), "insufficient unlocked tokens"); // if the recipient is a pool, transfer the tokens to the inbound rule of the pool if (transferRulesInbound[to_].length >= 1 && transferRulesInbound[to_][0].isPool) { transferRulesInbound[to_][0].tokens += uint96(amount_); return; } // if there is an outbound rule we need to apply the outbound rule if (transferRulesOutbound[from_].id != 0) { TransferRuleOutbound memory trFromOutbound = transferRulesOutbound[from_]; bool foundMatchingToRule = false; // check if this outbound rule already exists inside the inbound rules of the recipient for (uint256 i = 0; i < transferRulesInbound[to_].length; i++) { if (trFromOutbound.id == transferRulesInbound[to_][i].id) { // if so increment the balance inside that rule foundMatchingToRule = true; transferRulesInbound[to_][i].tokens += uint96(amount_); break; } } // if we didnt find a matching rule, create it for the recipient if (!foundMatchingToRule) { transferRulesInbound[to_].push(TransferRuleInbound({ id: trFromOutbound.id, timelockUntil: trFromOutbound.timelockUntil, vestingStartsAfterDays: trFromOutbound.vestingStartsAfterDays, vestingDurationDays: trFromOutbound.vestingDurationDays, percUnlockedAtTimeUnlock: trFromOutbound.percUnlockedAtTimeUnlock, tokens: uint96(amount_), isPool: false })); } } } function calcBalanceUnlocked(address account_) public view returns (uint) { return _balances[account_] - calcBalanceLocked(account_); } function calcBalanceLockedOfInboundRule(TransferRuleInbound memory trInbound) internal view returns (uint) { if (trInbound.timelockUntil > uint32(block.timestamp)) { // the tokens of this rule are still all locked return trInbound.tokens; } if (trInbound.percUnlockedAtTimeUnlock > 0) { // deduct the immediately unlocked amount of tokens from the rule's amount of locked tokens trInbound.tokens -= uint96(trInbound.tokens * trInbound.percUnlockedAtTimeUnlock / PERC_BASE); } if (trInbound.vestingDurationDays > 0) { uint256 daysPassedSinceUnlock = (uint32(block.timestamp) - trInbound.timelockUntil) / SECONDS_IN_ONE_DAY; if (daysPassedSinceUnlock <= trInbound.vestingStartsAfterDays) { // vesting didnt yet start return trInbound.tokens; } uint256 daysPassedSinceVestingStart = daysPassedSinceUnlock - trInbound.vestingStartsAfterDays; if (daysPassedSinceVestingStart >= trInbound.vestingDurationDays) { // the entire vesting period has ended, so all tokens of this rule are unlocked // this also ensures the last day's tokens pays out all the remaining tokens // since due to integer floor division the per day amount might be slightly less than the // total amount return 0; } // calculate how many of the tokens are still locked uint256 amountUnlockedPerDay = trInbound.tokens / trInbound.vestingDurationDays; uint256 totalUnlocked = daysPassedSinceVestingStart * amountUnlockedPerDay; return trInbound.tokens - totalUnlocked; } // this can only mean there is no vesting, and the timelock already passed, so all tokens are unlocked return 0; } function calcBalanceLocked(address account_) public view returns (uint) { uint256 lockedTokens = 0; // check the amount of locked tokens for each of the inbound rules on this account for (uint256 i = 0; i < transferRulesInbound[account_].length; i++) { TransferRuleInbound memory trFromInbound = transferRulesInbound[account_][i]; lockedTokens += calcBalanceLockedOfInboundRule(trFromInbound); } return lockedTokens; } function registerTransferRule( address account_, TransferRuleType ruleType, uint32 timelockUntil_, uint16 vestingStartsAfterDays_, uint16 vestingDurationDays_, uint16 percUnlockedAtTimeUnlock_, bool isPool_ ) public onlyOwner { require(account_ != address(0), 'account is address zero'); require(timelockUntil_ > uint32(block.timestamp), 'timelockUntil already passed'); require(percUnlockedAtTimeUnlock_ > 0 || vestingDurationDays_ > 0, 'percUnlockedAtTimeUnlock and vestingDurationDays are zero'); require(percUnlockedAtTimeUnlock_ <= uint16(PERC_BASE), 'percUnlockedAtTimeUnlock above 100%'); if (ruleType == TransferRuleType.outbound) { require(transferRulesOutbound[account_].id == 0, 'account already has outbound rule'); transferRulesOutbound[account_] = TransferRuleOutbound({ id: uint8(++ruleIdCounter), // first rule will get id 1 timelockUntil: timelockUntil_, vestingDurationDays: vestingDurationDays_, vestingStartsAfterDays: vestingStartsAfterDays_, percUnlockedAtTimeUnlock: percUnlockedAtTimeUnlock_ }); emit TransferRuleOutboundRegistered(account_, transferRulesOutbound[account_]); } else { // ruleType == TransferRuleType.inbound transferRulesInbound[account_].push(TransferRuleInbound({ id: uint8(++ruleIdCounter), // first rule will get id 1 timelockUntil: timelockUntil_, vestingDurationDays: vestingDurationDays_, vestingStartsAfterDays: vestingStartsAfterDays_, percUnlockedAtTimeUnlock: percUnlockedAtTimeUnlock_, tokens: 0, isPool: isPool_ })); emit TransferRuleInboundRegistered(account_, transferRulesInbound[account_][transferRulesInbound[account_].length - 1]); } } function balanceOf(address account_) public view returns (uint256) { return _balances[account_]; } function allowance(address owner_, address spender_) public view returns (uint256) { return _allowances[owner_][spender_]; } function transfer(address recipient_, uint256 amount_) public returns (bool) { _transfer(msg.sender, recipient_, amount_); return true; } function transferFrom(address sender_, address recipient_, uint256 amount_) public returns (bool) { _transfer(sender_, recipient_, amount_); uint256 currentAllowance = _allowances[sender_][msg.sender]; require(currentAllowance >= amount_, "ERC20: transfer amount exceeds allowance"); _approve(sender_, msg.sender, currentAllowance - amount_); return true; } function _transfer(address sender_, address recipient_, uint256 amount_) internal { require(sender_ != address(0), "ERC20: transfer from the zero address"); require(recipient_ != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender_, recipient_, amount_); uint256 senderBalance = _balances[sender_]; require(senderBalance >= amount_, "ERC20: transfer amount exceeds balance"); _balances[sender_] = senderBalance - amount_; _balances[recipient_] += amount_; emit Transfer(sender_, recipient_, amount_); } function approve(address spender_, uint256 amount_) public returns (bool) { _approve(msg.sender, spender_, amount_); return true; } function increaseAllowance(address spender_, uint256 addedValue_) public returns (bool) { _approve(msg.sender, spender_, _allowances[msg.sender][spender_] + addedValue_); return true; } function decreaseAllowance(address spender_, uint256 subtractedValue_) public returns (bool) { uint256 currentAllowance = _allowances[msg.sender][spender_]; require(currentAllowance >= subtractedValue_, "ERC20: decreased allowance below zero"); _approve(msg.sender, spender_, currentAllowance - subtractedValue_); return true; } function _approve(address owner_, address spender_, uint256 amount_) internal { 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 balanceStatsOf(address account_) public view returns ( uint256 balanceTotal, uint256 balanceLocked, uint256 balanceUnlocked ) { return ( _balances[account_], calcBalanceLocked(account_), calcBalanceUnlocked(account_) ); } // gives incorrect results if percUnlockedAtUnlock > 0, i.e. do not use if percUnlockedAtUnlock > 0 function inboundRuleStatsOf(address account_, uint256 ruleId_) public view returns ( uint256 ruleBalanceTotal, uint256 ruleBalanceLocked, uint256 ruleBalanceUnlocked ) { for (uint256 i = 0; i < transferRulesInbound[account_].length; i++) { if (transferRulesInbound[account_][i].id == ruleId_) { TransferRuleInbound memory trFromInbound = transferRulesInbound[account_][i]; uint lockedTokens = calcBalanceLockedOfInboundRule(trFromInbound); uint unlockedTokens = trFromInbound.tokens - lockedTokens; return (trFromInbound.tokens, lockedTokens, unlockedTokens); } } revert('didnt find matching rule'); } function getInboundTransferRules(address _a) external view returns (TransferRuleInbound[] memory) { return transferRulesInbound[_a]; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"uint256","name":"totalSupply_","type":"uint256"}],"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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"addr","type":"address"},{"components":[{"internalType":"uint8","name":"id","type":"uint8"},{"internalType":"uint32","name":"timelockUntil","type":"uint32"},{"internalType":"uint16","name":"vestingDurationDays","type":"uint16"},{"internalType":"uint16","name":"vestingStartsAfterDays","type":"uint16"},{"internalType":"uint16","name":"percUnlockedAtTimeUnlock","type":"uint16"},{"internalType":"uint96","name":"tokens","type":"uint96"},{"internalType":"bool","name":"isPool","type":"bool"}],"indexed":false,"internalType":"struct AIOW.TransferRuleInbound","name":"rule","type":"tuple"}],"name":"TransferRuleInboundRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"addr","type":"address"},{"components":[{"internalType":"uint8","name":"id","type":"uint8"},{"internalType":"uint32","name":"timelockUntil","type":"uint32"},{"internalType":"uint16","name":"vestingDurationDays","type":"uint16"},{"internalType":"uint16","name":"vestingStartsAfterDays","type":"uint16"},{"internalType":"uint16","name":"percUnlockedAtTimeUnlock","type":"uint16"}],"indexed":false,"internalType":"struct AIOW.TransferRuleOutbound","name":"rule","type":"tuple"}],"name":"TransferRuleOutboundRegistered","type":"event"},{"inputs":[],"name":"SECONDS_IN_ONE_DAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"address","name":"spender_","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account_","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account_","type":"address"}],"name":"balanceStatsOf","outputs":[{"internalType":"uint256","name":"balanceTotal","type":"uint256"},{"internalType":"uint256","name":"balanceLocked","type":"uint256"},{"internalType":"uint256","name":"balanceUnlocked","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account_","type":"address"}],"name":"calcBalanceLocked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account_","type":"address"}],"name":"calcBalanceUnlocked","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":"_a","type":"address"}],"name":"getInboundTransferRules","outputs":[{"components":[{"internalType":"uint8","name":"id","type":"uint8"},{"internalType":"uint32","name":"timelockUntil","type":"uint32"},{"internalType":"uint16","name":"vestingDurationDays","type":"uint16"},{"internalType":"uint16","name":"vestingStartsAfterDays","type":"uint16"},{"internalType":"uint16","name":"percUnlockedAtTimeUnlock","type":"uint16"},{"internalType":"uint96","name":"tokens","type":"uint96"},{"internalType":"bool","name":"isPool","type":"bool"}],"internalType":"struct AIOW.TransferRuleInbound[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account_","type":"address"},{"internalType":"uint256","name":"ruleId_","type":"uint256"}],"name":"inboundRuleStatsOf","outputs":[{"internalType":"uint256","name":"ruleBalanceTotal","type":"uint256"},{"internalType":"uint256","name":"ruleBalanceLocked","type":"uint256"},{"internalType":"uint256","name":"ruleBalanceUnlocked","type":"uint256"}],"stateMutability":"view","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":[{"internalType":"address","name":"account_","type":"address"},{"internalType":"enum AIOW.TransferRuleType","name":"ruleType","type":"uint8"},{"internalType":"uint32","name":"timelockUntil_","type":"uint32"},{"internalType":"uint16","name":"vestingStartsAfterDays_","type":"uint16"},{"internalType":"uint16","name":"vestingDurationDays_","type":"uint16"},{"internalType":"uint16","name":"percUnlockedAtTimeUnlock_","type":"uint16"},{"internalType":"bool","name":"isPool_","type":"bool"}],"name":"registerTransferRule","outputs":[],"stateMutability":"nonpayable","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":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"transferRulesInbound","outputs":[{"internalType":"uint8","name":"id","type":"uint8"},{"internalType":"uint32","name":"timelockUntil","type":"uint32"},{"internalType":"uint16","name":"vestingDurationDays","type":"uint16"},{"internalType":"uint16","name":"vestingStartsAfterDays","type":"uint16"},{"internalType":"uint16","name":"percUnlockedAtTimeUnlock","type":"uint16"},{"internalType":"uint96","name":"tokens","type":"uint96"},{"internalType":"bool","name":"isPool","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"transferRulesOutbound","outputs":[{"internalType":"uint8","name":"id","type":"uint8"},{"internalType":"uint32","name":"timelockUntil","type":"uint32"},{"internalType":"uint16","name":"vestingDurationDays","type":"uint16"},{"internalType":"uint16","name":"vestingStartsAfterDays","type":"uint16"},{"internalType":"uint16","name":"percUnlockedAtTimeUnlock","type":"uint16"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040516200283c3803806200283c833981016040819052620000349162000201565b600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36040805180820190915260048082526341494f5760e01b60209092019182526200009e91816200015b565b506040805180820190915260048082526341494f5760e01b6020909201918252620000cc916005916200015b565b506006805460ff1916601217905560038054829190600090620000f19084906200021b565b90915550503360009081526001602052604081208054839290620001179084906200021b565b909155505060405181815233906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3506200027f565b828054620001699062000242565b90600052602060002090601f0160209004810192826200018d5760008555620001d8565b82601f10620001a857805160ff1916838001178555620001d8565b82800160010185558215620001d8579182015b82811115620001d8578251825591602001919060010190620001bb565b50620001e6929150620001ea565b5090565b5b80821115620001e65760008155600101620001eb565b6000602082840312156200021457600080fd5b5051919050565b600082198211156200023d57634e487b7160e01b600052601160045260246000fd5b500190565b600181811c908216806200025757607f821691505b602082108114156200027957634e487b7160e01b600052602260045260246000fd5b50919050565b6125ad806200028f6000396000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806395d89b41116100e3578063c712943c1161008c578063dd62ed3e11610066578063dd62ed3e1461043e578063f2fde38b14610477578063fca0a2da1461048a57600080fd5b8063c712943c14610401578063cc8fab6e14610421578063cef898661461043457600080fd5b8063a457c2d7116100bd578063a457c2d7146103c8578063a9059cbb146103db578063aae4d17a146103ee57600080fd5b806395d89b41146103425780639a6693461461034a5780639d9207031461035d57600080fd5b8063313ce56711610145578063715018a61161011f578063715018a6146102ef57806387cb8bcc146102f95780638da5cb5b1461032757600080fd5b8063313ce5671461029457806339509351146102b357806370a08231146102c657600080fd5b80630c6876fd116101765780630c6876fd146101d357806318160ddd1461026a57806323b872dd1461028157600080fd5b806306fdde0314610192578063095ea7b3146101b0575b600080fd5b61019a61049d565b6040516101a79190612262565b60405180910390f35b6101c36101be366004612192565b61052b565b60405190151581526020016101a7565b6102306101e1366004612061565b60076020526000908152604090205460ff81169063ffffffff6101008204169061ffff650100000000008204811691670100000000000000810482169169010000000000000000009091041685565b6040805160ff909616865263ffffffff909416602086015261ffff928316938501939093528116606084015216608082015260a0016101a7565b61027360035481565b6040519081526020016101a7565b6101c361028f3660046120b6565b610541565b6006546102a19060ff1681565b60405160ff90911681526020016101a7565b6101c36102c1366004612192565b61060c565b6102736102d4366004612061565b6001600160a01b031660009081526001602052604090205490565b6102f7610643565b005b61030c610307366004612061565b6106ff565b604080519384526020840192909252908201526060016101a7565b6000546040516001600160a01b0390911681526020016101a7565b61019a61073b565b610273610358366004612061565b610748565b61037061036b366004612192565b610880565b6040805160ff909816885263ffffffff909616602088015261ffff9485169587019590955291831660608601529190911660808401526bffffffffffffffffffffffff1660a0830152151560c082015260e0016101a7565b6101c36103d6366004612192565b610927565b6101c36103e9366004612192565b6109da565b6102f76103fc3660046120f2565b6109e7565b61041461040f366004612061565b61119e565b6040516101a791906121bc565b61030c61042f366004612192565b6112a7565b6102736201518081565b61027361044c366004612083565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6102f7610485366004612061565b6114a0565b610273610498366004612061565b6115c3565b600480546104aa9061242e565b80601f01602080910402602001604051908101604052809291908181526020018280546104d69061242e565b80156105235780601f106104f857610100808354040283529160200191610523565b820191906000526020600020905b81548152906001019060200180831161050657829003601f168201915b505050505081565b60006105383384846115f7565b50600192915050565b600061054e84848461174f565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156105ed5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61060185336105fc86856123cd565b6115f7565b506001949350505050565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916105389185906105fc9086906122d5565b6000546001600160a01b0316331461069d5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016105e4565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6001600160a01b0381166000908152600160205260408120548190819061072585610748565b61072e866115c3565b9250925092509193909250565b600580546104aa9061242e565b600080805b6001600160a01b038416600090815260086020526040902054811015610879576001600160a01b038416600090815260086020526040812080548390811061079757610797612548565b60009182526020918290206040805160e081018252919092015460ff808216835263ffffffff6101008304169483019490945261ffff6501000000000082048116938301939093526701000000000000008104831660608301526901000000000000000000810490921660808201526bffffffffffffffffffffffff6b01000000000000000000000083041660a082015277010000000000000000000000000000000000000000000000909104909116151560c082015290506108598161197b565b61086390846122d5565b925050808061087190612482565b91505061074d565b5092915050565b6008602052816000526040600020818154811061089c57600080fd5b60009182526020909120015460ff808216935063ffffffff610100830416925061ffff650100000000008304811692670100000000000000810482169269010000000000000000008204909216916bffffffffffffffffffffffff6b010000000000000000000000830416917701000000000000000000000000000000000000000000000090041687565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156109c15760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016105e4565b6109d033856105fc86856123cd565b5060019392505050565b600061053833848461174f565b6000546001600160a01b03163314610a415760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016105e4565b6001600160a01b038716610a975760405162461bcd60e51b815260206004820152601760248201527f6163636f756e742069732061646472657373207a65726f00000000000000000060448201526064016105e4565b4263ffffffff168563ffffffff1611610af25760405162461bcd60e51b815260206004820152601c60248201527f74696d656c6f636b556e74696c20616c7265616479207061737365640000000060448201526064016105e4565b60008261ffff161180610b09575060008361ffff16115b610b7b5760405162461bcd60e51b815260206004820152603960248201527f70657263556e6c6f636b6564417454696d65556e6c6f636b20616e642076657360448201527f74696e674475726174696f6e4461797320617265207a65726f0000000000000060648201526084016105e4565b61271061ffff83161115610bf75760405162461bcd60e51b815260206004820152602360248201527f70657263556e6c6f636b6564417454696d65556e6c6f636b2061626f7665203160448201527f303025000000000000000000000000000000000000000000000000000000000060648201526084016105e4565b6001866001811115610c0b57610c0b612519565b1415610e8d576001600160a01b03871660009081526007602052604090205460ff1615610ca05760405162461bcd60e51b815260206004820152602160248201527f6163636f756e7420616c726561647920686173206f7574626f756e642072756c60448201527f650000000000000000000000000000000000000000000000000000000000000060648201526084016105e4565b6040518060a00160405280600960008154610cba90612482565b918290555060ff908116825263ffffffff80891660208085019190915261ffff8089166040808701919091528a82166060808801919091528983166080978801526001600160a01b038f1660009081526007855282902088518154958a01518a850151938b01519a9099015185166901000000000000000000027fffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff9a8616670100000000000000027fffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffff949096166501000000000002939093167fffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffff99909716610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000009096169716969096179390931795909516929092179190911793909316929092178255517fa26ffc0b8158269074d1c4e5b8678a8a2cc656cc1031283a86a2aad4516e34bc91610e80918a91906001600160a01b039290921682525460ff81166020830152600881901c63ffffffff166040830152602881901c61ffff9081166060840152603882901c8116608084015260489190911c1660a082015260c00190565b60405180910390a1611195565b6001600160a01b038716600090815260086020526040808220815160e081019092526009805491938392610ec090612482565b918290555060ff908116825263ffffffff808a1660208085019190915261ffff808a166040808701919091528b82166060808801919091528a8316608080890191909152600060a0808a018290528c151560c09a8b01528b5460018181018e559c83528783208c51910180548d8a01518e890151978f0151968f0151948f01519e909d0151151577010000000000000000000000000000000000000000000000027fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff6bffffffffffffffffffffffff9f909f166b010000000000000000000000027fffffffffffffffffff000000000000000000000000ffffffffffffffffffffff958b16690100000000000000000002959095167fffffffffffffffffff0000000000000000000000000000ffffffffffffffffff978b16670100000000000000027fffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffff99909b166501000000000002989098167fffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffff9e909c16610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000090921693909c1692909217919091179a909a16979097179490941716179390931795909516929092179092556001600160a01b038b16835260089052902080547e8b6a988fa1a717f86b6c8faef75645cdf58e0d916f619d5b95e0753f608c9d928a92916110ec91906123cd565b815481106110fc576110fc612548565b9060005260206000200160405161118c9291906001600160a01b039290921682525460ff8082166020840152600882901c63ffffffff166040840152602882901c61ffff9081166060850152603883901c81166080850152604883901c1660a08401526bffffffffffffffffffffffff605883901c1660c084015260b89190911c16151560e08201526101000190565b60405180910390a15b50505050505050565b6001600160a01b0381166000908152600860209081526040808320805482518185028101850190935280835260609492939192909184015b8282101561129c5760008481526020908190206040805160e0810182529185015460ff808216845263ffffffff6101008304168486015261ffff6501000000000083048116938501939093526701000000000000008204831660608501526901000000000000000000820490921660808401526bffffffffffffffffffffffff6b01000000000000000000000082041660a084015277010000000000000000000000000000000000000000000000900416151560c08201528252600190920191016111d6565b505050509050919050565b60008080805b6001600160a01b038616600090815260086020526040902054811015611450576001600160a01b03861660009081526008602052604090208054869190839081106112fa576112fa612548565b60009182526020909120015460ff16141561143e576001600160a01b038616600090815260086020526040812080548390811061133957611339612548565b600091825260208083206040805160e081018252919093015460ff808216835263ffffffff6101008304169383019390935261ffff6501000000000082048116948301949094526701000000000000008104841660608301526901000000000000000000810490931660808201526bffffffffffffffffffffffff6b01000000000000000000000084041660a08201527701000000000000000000000000000000000000000000000090920416151560c082015291506113f88261197b565b90506000818360a001516bffffffffffffffffffffffff1661141a91906123cd565b60a0909301516bffffffffffffffffffffffff169650909450909250611499915050565b8061144881612482565b9150506112ad565b5060405162461bcd60e51b815260206004820152601860248201527f6469646e742066696e64206d61746368696e672072756c65000000000000000060448201526064016105e4565b9250925092565b6000546001600160a01b031633146114fa5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016105e4565b6001600160a01b0381166115505760405162461bcd60e51b815260206004820152601d60248201527f6e6577206f776e657220697320746865207a65726f206164647265737300000060448201526064016105e4565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60006115ce82610748565b6001600160a01b0383166000908152600160205260409020546115f191906123cd565b92915050565b6001600160a01b0383166116725760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105e4565b6001600160a01b0382166116ee5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105e4565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166117cb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105e4565b6001600160a01b0382166118475760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105e4565b611852838383611b04565b6001600160a01b038316600090815260016020526040902054818110156118e15760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105e4565b6118eb82826123cd565b6001600160a01b0380861660009081526001602052604080822093909355908516815290812080548492906119219084906122d5565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161196d91815260200190565b60405180910390a350505050565b60004263ffffffff16826020015163ffffffff1611156119ab575060a001516bffffffffffffffffffffffff1690565b608082015161ffff1615611a0f57612710826080015161ffff168360a001516119d49190612399565b6bffffffffffffffffffffffff166119ec919061231d565b8260a0018181516119fd9190612409565b6bffffffffffffffffffffffff169052505b604082015161ffff1615611afc57600062015180836020015142611a3391906123e4565b63ffffffff16611a43919061231d565b9050826060015161ffff168111611a6b57505060a001516bffffffffffffffffffffffff1690565b6000836060015161ffff1682611a8191906123cd565b9050836040015161ffff168110611a9c575060009392505050565b6000846040015161ffff168560a00151611ab69190612331565b6bffffffffffffffffffffffff1690506000611ad2828461235c565b9050808660a001516bffffffffffffffffffffffff16611af291906123cd565b9695505050505050565b506000919050565b611b0d836115c3565b811115611b5c5760405162461bcd60e51b815260206004820152601c60248201527f696e73756666696369656e7420756e6c6f636b656420746f6b656e730000000060448201526064016105e4565b6001600160a01b038216600090815260086020526040902054600111801590611bd457506001600160a01b03821660009081526008602052604081208054909190611ba957611ba9612548565b60009182526020909120015477010000000000000000000000000000000000000000000000900460ff165b15611c6d576001600160a01b03821660009081526008602052604081208054839290611c0257611c02612548565b60009182526020909120018054600b90611c3a9084906b01000000000000000000000090046bffffffffffffffffffffffff166122ed565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550505050565b6001600160a01b03831660009081526007602052604090205460ff161561202e576001600160a01b0383166000908152600760209081526040808320815160a081018352905460ff8116825263ffffffff6101008204169382019390935261ffff650100000000008404811692820192909252670100000000000000830482166060820152690100000000000000000090920416608082015290805b6001600160a01b038516600090815260086020526040902054811015611e1c576001600160a01b0385166000908152600860205260409020805482908110611d5357611d53612548565b600091825260209091200154835160ff90811691161415611e0a576001600160a01b038516600090815260086020526040902080546001935085919083908110611d9f57611d9f612548565b60009182526020909120018054600b90611dd79084906b01000000000000000000000090046bffffffffffffffffffffffff166122ed565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550611e1c565b80611e1481612482565b915050611d09565b508061202b576001600160a01b0384166000908152600860209081526040808320815160e081018352865160ff90811682528785015163ffffffff9081168387019081528986015161ffff9081169685019687526060808c015182169086019081526080808d015183169087019081526bffffffffffffffffffffffff808f1660a0890190815260c089018d81528a54600181018c559a8e529b909c20975197909801805494519951925191519b519a51151577010000000000000000000000000000000000000000000000027fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff9b9099166b010000000000000000000000027fffffffffffffffffff000000000000000000000000ffffffffffffffffffffff9c85166901000000000000000000029c909c167fffffffffffffffffff0000000000000000000000000000ffffffffffffffffff928516670100000000000000027fffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffff949095166501000000000002939093167fffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffff9a909616610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000909516979096169690961792909217969096169190911794909417919091169290921793909317919091169190911790555b50505b505050565b80356001600160a01b038116811461204a57600080fd5b919050565b803561ffff8116811461204a57600080fd5b60006020828403121561207357600080fd5b61207c82612033565b9392505050565b6000806040838503121561209657600080fd5b61209f83612033565b91506120ad60208401612033565b90509250929050565b6000806000606084860312156120cb57600080fd5b6120d484612033565b92506120e260208501612033565b9150604084013590509250925092565b600080600080600080600060e0888a03121561210d57600080fd5b61211688612033565b965060208801356002811061212a57600080fd5b9550604088013563ffffffff8116811461214357600080fd5b94506121516060890161204f565b935061215f6080890161204f565b925061216d60a0890161204f565b915060c0880135801515811461218257600080fd5b8091505092959891949750929550565b600080604083850312156121a557600080fd5b6121ae83612033565b946020939093013593505050565b602080825282518282018190526000919060409081850190868401855b82811015612255578151805160ff1685528681015163ffffffff16878601528581015161ffff908116878701526060808301518216908701526080808301519091169086015260a0808201516bffffffffffffffffffffffff169086015260c09081015115159085015260e090930192908501906001016121d9565b5091979650505050505050565b600060208083528351808285015260005b8181101561228f57858101830151858201604001528201612273565b818111156122a1576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b600082198211156122e8576122e86124bb565b500190565b60006bffffffffffffffffffffffff808316818516808303821115612314576123146124bb565b01949350505050565b60008261232c5761232c6124ea565b500490565b60006bffffffffffffffffffffffff80841680612350576123506124ea565b92169190910492915050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612394576123946124bb565b500290565b60006bffffffffffffffffffffffff808316818516818304811182151516156123c4576123c46124bb565b02949350505050565b6000828210156123df576123df6124bb565b500390565b600063ffffffff83811690831681811015612401576124016124bb565b039392505050565b60006bffffffffffffffffffffffff83811690831681811015612401576124016124bb565b600181811c9082168061244257607f821691505b6020821081141561247c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156124b4576124b46124bb565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220ff17f2975cab8cfa42cd30bdae6633ee9d9134cf301bd6a1088cbbfde6b62a7d64736f6c634300080700330000000000000000000000000000000000000000019d971e4fe8401e74000000
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061018d5760003560e01c806395d89b41116100e3578063c712943c1161008c578063dd62ed3e11610066578063dd62ed3e1461043e578063f2fde38b14610477578063fca0a2da1461048a57600080fd5b8063c712943c14610401578063cc8fab6e14610421578063cef898661461043457600080fd5b8063a457c2d7116100bd578063a457c2d7146103c8578063a9059cbb146103db578063aae4d17a146103ee57600080fd5b806395d89b41146103425780639a6693461461034a5780639d9207031461035d57600080fd5b8063313ce56711610145578063715018a61161011f578063715018a6146102ef57806387cb8bcc146102f95780638da5cb5b1461032757600080fd5b8063313ce5671461029457806339509351146102b357806370a08231146102c657600080fd5b80630c6876fd116101765780630c6876fd146101d357806318160ddd1461026a57806323b872dd1461028157600080fd5b806306fdde0314610192578063095ea7b3146101b0575b600080fd5b61019a61049d565b6040516101a79190612262565b60405180910390f35b6101c36101be366004612192565b61052b565b60405190151581526020016101a7565b6102306101e1366004612061565b60076020526000908152604090205460ff81169063ffffffff6101008204169061ffff650100000000008204811691670100000000000000810482169169010000000000000000009091041685565b6040805160ff909616865263ffffffff909416602086015261ffff928316938501939093528116606084015216608082015260a0016101a7565b61027360035481565b6040519081526020016101a7565b6101c361028f3660046120b6565b610541565b6006546102a19060ff1681565b60405160ff90911681526020016101a7565b6101c36102c1366004612192565b61060c565b6102736102d4366004612061565b6001600160a01b031660009081526001602052604090205490565b6102f7610643565b005b61030c610307366004612061565b6106ff565b604080519384526020840192909252908201526060016101a7565b6000546040516001600160a01b0390911681526020016101a7565b61019a61073b565b610273610358366004612061565b610748565b61037061036b366004612192565b610880565b6040805160ff909816885263ffffffff909616602088015261ffff9485169587019590955291831660608601529190911660808401526bffffffffffffffffffffffff1660a0830152151560c082015260e0016101a7565b6101c36103d6366004612192565b610927565b6101c36103e9366004612192565b6109da565b6102f76103fc3660046120f2565b6109e7565b61041461040f366004612061565b61119e565b6040516101a791906121bc565b61030c61042f366004612192565b6112a7565b6102736201518081565b61027361044c366004612083565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6102f7610485366004612061565b6114a0565b610273610498366004612061565b6115c3565b600480546104aa9061242e565b80601f01602080910402602001604051908101604052809291908181526020018280546104d69061242e565b80156105235780601f106104f857610100808354040283529160200191610523565b820191906000526020600020905b81548152906001019060200180831161050657829003601f168201915b505050505081565b60006105383384846115f7565b50600192915050565b600061054e84848461174f565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156105ed5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61060185336105fc86856123cd565b6115f7565b506001949350505050565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916105389185906105fc9086906122d5565b6000546001600160a01b0316331461069d5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016105e4565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6001600160a01b0381166000908152600160205260408120548190819061072585610748565b61072e866115c3565b9250925092509193909250565b600580546104aa9061242e565b600080805b6001600160a01b038416600090815260086020526040902054811015610879576001600160a01b038416600090815260086020526040812080548390811061079757610797612548565b60009182526020918290206040805160e081018252919092015460ff808216835263ffffffff6101008304169483019490945261ffff6501000000000082048116938301939093526701000000000000008104831660608301526901000000000000000000810490921660808201526bffffffffffffffffffffffff6b01000000000000000000000083041660a082015277010000000000000000000000000000000000000000000000909104909116151560c082015290506108598161197b565b61086390846122d5565b925050808061087190612482565b91505061074d565b5092915050565b6008602052816000526040600020818154811061089c57600080fd5b60009182526020909120015460ff808216935063ffffffff610100830416925061ffff650100000000008304811692670100000000000000810482169269010000000000000000008204909216916bffffffffffffffffffffffff6b010000000000000000000000830416917701000000000000000000000000000000000000000000000090041687565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156109c15760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016105e4565b6109d033856105fc86856123cd565b5060019392505050565b600061053833848461174f565b6000546001600160a01b03163314610a415760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016105e4565b6001600160a01b038716610a975760405162461bcd60e51b815260206004820152601760248201527f6163636f756e742069732061646472657373207a65726f00000000000000000060448201526064016105e4565b4263ffffffff168563ffffffff1611610af25760405162461bcd60e51b815260206004820152601c60248201527f74696d656c6f636b556e74696c20616c7265616479207061737365640000000060448201526064016105e4565b60008261ffff161180610b09575060008361ffff16115b610b7b5760405162461bcd60e51b815260206004820152603960248201527f70657263556e6c6f636b6564417454696d65556e6c6f636b20616e642076657360448201527f74696e674475726174696f6e4461797320617265207a65726f0000000000000060648201526084016105e4565b61271061ffff83161115610bf75760405162461bcd60e51b815260206004820152602360248201527f70657263556e6c6f636b6564417454696d65556e6c6f636b2061626f7665203160448201527f303025000000000000000000000000000000000000000000000000000000000060648201526084016105e4565b6001866001811115610c0b57610c0b612519565b1415610e8d576001600160a01b03871660009081526007602052604090205460ff1615610ca05760405162461bcd60e51b815260206004820152602160248201527f6163636f756e7420616c726561647920686173206f7574626f756e642072756c60448201527f650000000000000000000000000000000000000000000000000000000000000060648201526084016105e4565b6040518060a00160405280600960008154610cba90612482565b918290555060ff908116825263ffffffff80891660208085019190915261ffff8089166040808701919091528a82166060808801919091528983166080978801526001600160a01b038f1660009081526007855282902088518154958a01518a850151938b01519a9099015185166901000000000000000000027fffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff9a8616670100000000000000027fffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffff949096166501000000000002939093167fffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffff99909716610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000009096169716969096179390931795909516929092179190911793909316929092178255517fa26ffc0b8158269074d1c4e5b8678a8a2cc656cc1031283a86a2aad4516e34bc91610e80918a91906001600160a01b039290921682525460ff81166020830152600881901c63ffffffff166040830152602881901c61ffff9081166060840152603882901c8116608084015260489190911c1660a082015260c00190565b60405180910390a1611195565b6001600160a01b038716600090815260086020526040808220815160e081019092526009805491938392610ec090612482565b918290555060ff908116825263ffffffff808a1660208085019190915261ffff808a166040808701919091528b82166060808801919091528a8316608080890191909152600060a0808a018290528c151560c09a8b01528b5460018181018e559c83528783208c51910180548d8a01518e890151978f0151968f0151948f01519e909d0151151577010000000000000000000000000000000000000000000000027fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff6bffffffffffffffffffffffff9f909f166b010000000000000000000000027fffffffffffffffffff000000000000000000000000ffffffffffffffffffffff958b16690100000000000000000002959095167fffffffffffffffffff0000000000000000000000000000ffffffffffffffffff978b16670100000000000000027fffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffff99909b166501000000000002989098167fffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffff9e909c16610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000090921693909c1692909217919091179a909a16979097179490941716179390931795909516929092179092556001600160a01b038b16835260089052902080547e8b6a988fa1a717f86b6c8faef75645cdf58e0d916f619d5b95e0753f608c9d928a92916110ec91906123cd565b815481106110fc576110fc612548565b9060005260206000200160405161118c9291906001600160a01b039290921682525460ff8082166020840152600882901c63ffffffff166040840152602882901c61ffff9081166060850152603883901c81166080850152604883901c1660a08401526bffffffffffffffffffffffff605883901c1660c084015260b89190911c16151560e08201526101000190565b60405180910390a15b50505050505050565b6001600160a01b0381166000908152600860209081526040808320805482518185028101850190935280835260609492939192909184015b8282101561129c5760008481526020908190206040805160e0810182529185015460ff808216845263ffffffff6101008304168486015261ffff6501000000000083048116938501939093526701000000000000008204831660608501526901000000000000000000820490921660808401526bffffffffffffffffffffffff6b01000000000000000000000082041660a084015277010000000000000000000000000000000000000000000000900416151560c08201528252600190920191016111d6565b505050509050919050565b60008080805b6001600160a01b038616600090815260086020526040902054811015611450576001600160a01b03861660009081526008602052604090208054869190839081106112fa576112fa612548565b60009182526020909120015460ff16141561143e576001600160a01b038616600090815260086020526040812080548390811061133957611339612548565b600091825260208083206040805160e081018252919093015460ff808216835263ffffffff6101008304169383019390935261ffff6501000000000082048116948301949094526701000000000000008104841660608301526901000000000000000000810490931660808201526bffffffffffffffffffffffff6b01000000000000000000000084041660a08201527701000000000000000000000000000000000000000000000090920416151560c082015291506113f88261197b565b90506000818360a001516bffffffffffffffffffffffff1661141a91906123cd565b60a0909301516bffffffffffffffffffffffff169650909450909250611499915050565b8061144881612482565b9150506112ad565b5060405162461bcd60e51b815260206004820152601860248201527f6469646e742066696e64206d61746368696e672072756c65000000000000000060448201526064016105e4565b9250925092565b6000546001600160a01b031633146114fa5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016105e4565b6001600160a01b0381166115505760405162461bcd60e51b815260206004820152601d60248201527f6e6577206f776e657220697320746865207a65726f206164647265737300000060448201526064016105e4565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60006115ce82610748565b6001600160a01b0383166000908152600160205260409020546115f191906123cd565b92915050565b6001600160a01b0383166116725760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105e4565b6001600160a01b0382166116ee5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105e4565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166117cb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105e4565b6001600160a01b0382166118475760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105e4565b611852838383611b04565b6001600160a01b038316600090815260016020526040902054818110156118e15760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105e4565b6118eb82826123cd565b6001600160a01b0380861660009081526001602052604080822093909355908516815290812080548492906119219084906122d5565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161196d91815260200190565b60405180910390a350505050565b60004263ffffffff16826020015163ffffffff1611156119ab575060a001516bffffffffffffffffffffffff1690565b608082015161ffff1615611a0f57612710826080015161ffff168360a001516119d49190612399565b6bffffffffffffffffffffffff166119ec919061231d565b8260a0018181516119fd9190612409565b6bffffffffffffffffffffffff169052505b604082015161ffff1615611afc57600062015180836020015142611a3391906123e4565b63ffffffff16611a43919061231d565b9050826060015161ffff168111611a6b57505060a001516bffffffffffffffffffffffff1690565b6000836060015161ffff1682611a8191906123cd565b9050836040015161ffff168110611a9c575060009392505050565b6000846040015161ffff168560a00151611ab69190612331565b6bffffffffffffffffffffffff1690506000611ad2828461235c565b9050808660a001516bffffffffffffffffffffffff16611af291906123cd565b9695505050505050565b506000919050565b611b0d836115c3565b811115611b5c5760405162461bcd60e51b815260206004820152601c60248201527f696e73756666696369656e7420756e6c6f636b656420746f6b656e730000000060448201526064016105e4565b6001600160a01b038216600090815260086020526040902054600111801590611bd457506001600160a01b03821660009081526008602052604081208054909190611ba957611ba9612548565b60009182526020909120015477010000000000000000000000000000000000000000000000900460ff165b15611c6d576001600160a01b03821660009081526008602052604081208054839290611c0257611c02612548565b60009182526020909120018054600b90611c3a9084906b01000000000000000000000090046bffffffffffffffffffffffff166122ed565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550505050565b6001600160a01b03831660009081526007602052604090205460ff161561202e576001600160a01b0383166000908152600760209081526040808320815160a081018352905460ff8116825263ffffffff6101008204169382019390935261ffff650100000000008404811692820192909252670100000000000000830482166060820152690100000000000000000090920416608082015290805b6001600160a01b038516600090815260086020526040902054811015611e1c576001600160a01b0385166000908152600860205260409020805482908110611d5357611d53612548565b600091825260209091200154835160ff90811691161415611e0a576001600160a01b038516600090815260086020526040902080546001935085919083908110611d9f57611d9f612548565b60009182526020909120018054600b90611dd79084906b01000000000000000000000090046bffffffffffffffffffffffff166122ed565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550611e1c565b80611e1481612482565b915050611d09565b508061202b576001600160a01b0384166000908152600860209081526040808320815160e081018352865160ff90811682528785015163ffffffff9081168387019081528986015161ffff9081169685019687526060808c015182169086019081526080808d015183169087019081526bffffffffffffffffffffffff808f1660a0890190815260c089018d81528a54600181018c559a8e529b909c20975197909801805494519951925191519b519a51151577010000000000000000000000000000000000000000000000027fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff9b9099166b010000000000000000000000027fffffffffffffffffff000000000000000000000000ffffffffffffffffffffff9c85166901000000000000000000029c909c167fffffffffffffffffff0000000000000000000000000000ffffffffffffffffff928516670100000000000000027fffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffff949095166501000000000002939093167fffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffff9a909616610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000909516979096169690961792909217969096169190911794909417919091169290921793909317919091169190911790555b50505b505050565b80356001600160a01b038116811461204a57600080fd5b919050565b803561ffff8116811461204a57600080fd5b60006020828403121561207357600080fd5b61207c82612033565b9392505050565b6000806040838503121561209657600080fd5b61209f83612033565b91506120ad60208401612033565b90509250929050565b6000806000606084860312156120cb57600080fd5b6120d484612033565b92506120e260208501612033565b9150604084013590509250925092565b600080600080600080600060e0888a03121561210d57600080fd5b61211688612033565b965060208801356002811061212a57600080fd5b9550604088013563ffffffff8116811461214357600080fd5b94506121516060890161204f565b935061215f6080890161204f565b925061216d60a0890161204f565b915060c0880135801515811461218257600080fd5b8091505092959891949750929550565b600080604083850312156121a557600080fd5b6121ae83612033565b946020939093013593505050565b602080825282518282018190526000919060409081850190868401855b82811015612255578151805160ff1685528681015163ffffffff16878601528581015161ffff908116878701526060808301518216908701526080808301519091169086015260a0808201516bffffffffffffffffffffffff169086015260c09081015115159085015260e090930192908501906001016121d9565b5091979650505050505050565b600060208083528351808285015260005b8181101561228f57858101830151858201604001528201612273565b818111156122a1576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b600082198211156122e8576122e86124bb565b500190565b60006bffffffffffffffffffffffff808316818516808303821115612314576123146124bb565b01949350505050565b60008261232c5761232c6124ea565b500490565b60006bffffffffffffffffffffffff80841680612350576123506124ea565b92169190910492915050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612394576123946124bb565b500290565b60006bffffffffffffffffffffffff808316818516818304811182151516156123c4576123c46124bb565b02949350505050565b6000828210156123df576123df6124bb565b500390565b600063ffffffff83811690831681811015612401576124016124bb565b039392505050565b60006bffffffffffffffffffffffff83811690831681811015612401576124016124bb565b600181811c9082168061244257607f821691505b6020821081141561247c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156124b4576124b46124bb565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220ff17f2975cab8cfa42cd30bdae6633ee9d9134cf301bd6a1088cbbfde6b62a7d64736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000019d971e4fe8401e74000000
-----Decoded View---------------
Arg [0] : totalSupply_ (uint256): 500000000000000000000000000
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000019d971e4fe8401e74000000
Deployed Bytecode Sourcemap
1087:12700:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1287:18;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11296:154;;;;;;:::i;:::-;;:::i;:::-;;;6124:14:1;;6117:22;6099:41;;6087:2;6072:18;11296:154:0;5959:187:1;1487:69:0;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13985:4:1;13973:17;;;13955:36;;14039:10;14027:23;;;14022:2;14007:18;;14000:51;14070:6;14112:15;;;14092:18;;;14085:43;;;;14164:15;;14159:2;14144:18;;14137:43;14217:15;14211:3;14196:19;;14189:44;13942:3;13927:19;1487:69:0;13708:531:1;1254:26:0;;;;;;;;;13159:25:1;;;13147:2;13132:18;1254:26:0;13013:177:1;10262:407:0;;;;;;:::i;:::-;;:::i;1339:21::-;;;;;;;;;;;;13691:4:1;13679:17;;;13661:36;;13649:2;13634:18;1339:21:0;13519:184:1;11462:208:0;;;;;;:::i;:::-;;:::i;9816:112::-;;;;;;:::i;:::-;-1:-1:-1;;;;;9901:19:0;9874:7;9901:19;;;:9;:19;;;;;;;9816:112;602:140;;;:::i;:::-;;12418:326;;;;;;:::i;:::-;;:::i;:::-;;;;13397:25:1;;;13453:2;13438:18;;13431:34;;;;13481:18;;;13474:34;13385:2;13370:18;12418:326:0;13195:319:1;399:79:0;437:7;464:6;399:79;;-1:-1:-1;;;;;464:6:0;;;2795:74:1;;2783:2;2768:18;399:79:0;2649:226:1;1312:20:0;;;:::i;7198:506::-;;;;;;:::i;:::-;;:::i;1563:69::-;;;;;;:::i;:::-;;:::i;:::-;;;;14569:4:1;14557:17;;;14539:36;;14623:10;14611:23;;;14606:2;14591:18;;14584:51;14654:6;14696:15;;;14676:18;;;14669:43;;;;14748:15;;;14743:2;14728:18;;14721:43;14801:15;;;;14795:3;14780:19;;14773:44;14866:26;14854:39;14848:3;14833:19;;14826:68;14938:14;14931:22;14925:3;14910:19;;14903:51;14526:3;14511:19;1563:69:0;14244:716:1;11678:369:0;;;;;;:::i;:::-;;:::i;10090:160::-;;;;;;:::i;:::-;;:::i;7716:2084::-;;;;;;:::i;:::-;;:::i;13632:148::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;12861:759::-;;;;;;:::i;:::-;;:::i;1428:50::-;;1473:5;1428:50;;9940:138;;;;;;:::i;:::-;-1:-1:-1;;;;;10041:19:0;;;10014:7;10041:19;;;:11;:19;;;;;;;;:29;;;;;;;;;;;;;9940:138;750:235;;;;;;:::i;:::-;;:::i;5026:149::-;;;;;;:::i;:::-;;:::i;1287:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11296:154::-;11364:4;11381:39;11390:10;11402:8;11412:7;11381:8;:39::i;:::-;-1:-1:-1;11438:4:0;11296:154;;;;:::o;10262:407::-;10354:4;10371:39;10381:7;10390:10;10402:7;10371:9;:39::i;:::-;-1:-1:-1;;;;;10448:20:0;;10421:24;10448:20;;;:11;:20;;;;;;;;10469:10;10448:32;;;;;;;;10499:27;;;;10491:80;;;;-1:-1:-1;;;10491:80:0;;10811:2:1;10491:80:0;;;10793:21:1;10850:2;10830:18;;;10823:30;10889:34;10869:18;;;10862:62;10960:10;10940:18;;;10933:38;10988:19;;10491:80:0;;;;;;;;;10582:57;10591:7;10600:10;10612:26;10631:7;10612:16;:26;:::i;:::-;10582:8;:57::i;:::-;-1:-1:-1;10657:4:0;;10262:407;-1:-1:-1;;;;10262:407:0:o;11462:208::-;11570:10;11544:4;11592:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;11592:33:0;;;;;;;;;;11544:4;;11561:79;;11582:8;;11592:47;;11628:11;;11592:47;:::i;602:140::-;526:6;;-1:-1:-1;;;;;526:6:0;536:10;526:20;518:56;;;;-1:-1:-1;;;518:56:0;;11220:2:1;518:56:0;;;11202:21:1;11259:2;11239:18;;;11232:30;11298:25;11278:18;;;11271:53;11341:18;;518:56:0;11018:347:1;518:56:0;701:1:::1;685:6:::0;;664:40:::1;::::0;-1:-1:-1;;;;;685:6:0;;::::1;::::0;664:40:::1;::::0;701:1;;664:40:::1;732:1;715:19:::0;;;::::1;::::0;;602:140::o;12418:326::-;-1:-1:-1;;;;;12620:19:0;;12491:20;12620:19;;;:9;:19;;;;;;12491:20;;;;12654:27;12630:8;12654:17;:27::i;:::-;12696:29;12716:8;12696:19;:29::i;:::-;12598:138;;;;;;12418:326;;;;;:::o;1312:20::-;;;;;;;:::i;7198:506::-;7264:4;;;7418:247;-1:-1:-1;;;;;7442:30:0;;;;;;:20;:30;;;;;:37;7438:41;;7418:247;;;-1:-1:-1;;;;;7544:30:0;;7501:40;7544:30;;;:20;:30;;;;;:33;;7575:1;;7544:33;;;;;;:::i;:::-;;;;;;;;;;7501:76;;;;;;;;7544:33;;;;7501:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7608:45:0;7501:76;7608:30;:45::i;:::-;7592:61;;;;:::i;:::-;;;7486:179;7481:3;;;;;:::i;:::-;;;;7418:247;;;-1:-1:-1;7684:12:0;7198:506;-1:-1:-1;;7198:506:0:o;1563:69::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1563:69:0;;;;;;-1:-1:-1;1563:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11678:369::-;11821:10;11765:4;11809:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;11809:33:0;;;;;;;;;;11861:36;;;;11853:86;;;;-1:-1:-1;;;11853:86:0;;12809:2:1;11853:86:0;;;12791:21:1;12848:2;12828:18;;;12821:30;12887:34;12867:18;;;12860:62;12958:7;12938:18;;;12931:35;12983:19;;11853:86:0;12607:401:1;11853:86:0;11950:67;11959:10;11971:8;11981:35;12000:16;11981;:35;:::i;11950:67::-;-1:-1:-1;12035:4:0;;11678:369;-1:-1:-1;;;11678:369:0:o;10090:160::-;10161:4;10178:42;10188:10;10200;10212:7;10178:9;:42::i;7716:2084::-;526:6;;-1:-1:-1;;;;;526:6:0;536:10;526:20;518:56;;;;-1:-1:-1;;;518:56:0;;11220:2:1;518:56:0;;;11202:21:1;11259:2;11239:18;;;11232:30;11298:25;11278:18;;;11271:53;11341:18;;518:56:0;11018:347:1;518:56:0;-1:-1:-1;;;;;8034:22:0;::::1;8026:58;;;::::0;-1:-1:-1;;;8026:58:0;;8936:2:1;8026:58:0::1;::::0;::::1;8918:21:1::0;8975:2;8955:18;;;8948:30;9014:25;8994:18;;;8987:53;9057:18;;8026:58:0::1;8734:347:1::0;8026:58:0::1;8127:15;8103:40;;:14;:40;;;8095:81;;;::::0;-1:-1:-1;;;8095:81:0;;10097:2:1;8095:81:0::1;::::0;::::1;10079:21:1::0;10136:2;10116:18;;;10109:30;10175;10155:18;;;10148:58;10223:18;;8095:81:0::1;9895:352:1::0;8095:81:0::1;8223:1;8195:25;:29;;;:57;;;;8251:1;8228:20;:24;;;8195:57;8187:127;;;::::0;-1:-1:-1;;;8187:127:0;;11978:2:1;8187:127:0::1;::::0;::::1;11960:21:1::0;12017:2;11997:18;;;11990:30;12056:34;12036:18;;;12029:62;12127:27;12107:18;;;12100:55;12172:19;;8187:127:0::1;11776:421:1::0;8187:127:0::1;1402:5;8333:46;::::0;::::1;;;8325:94;;;::::0;-1:-1:-1;;;8325:94:0;;7771:2:1;8325:94:0::1;::::0;::::1;7753:21:1::0;7810:2;7790:18;;;7783:30;7849:34;7829:18;;;7822:62;7920:5;7900:18;;;7893:33;7943:19;;8325:94:0::1;7569:399:1::0;8325:94:0::1;8456:25;8444:8;:37;;;;;;;;:::i;:::-;;8440:1353;;;-1:-1:-1::0;;;;;8506:31:0;::::1;;::::0;;;:21:::1;:31;::::0;;;;:34;::::1;;:39:::0;8498:85:::1;;;::::0;-1:-1:-1;;;8498:85:0;;9695:2:1;8498:85:0::1;::::0;::::1;9677:21:1::0;9734:2;9714:18;;;9707:30;9773:34;9753:18;;;9746:62;9844:3;9824:18;;;9817:31;9865:19;;8498:85:0::1;9493:397:1::0;8498:85:0::1;8646:354;;;;;;;;8698:13;;8696:15;;;;;:::i;:::-;::::0;;;;-1:-1:-1;8646:354:0::1;::::0;;::::1;::::0;;::::1;::::0;;::::1;;::::0;;::::1;::::0;;;;::::1;::::0;;::::1;::::0;;;;;;;;;;::::1;::::0;;;;;;;;;;::::1;::::0;;;;;-1:-1:-1;;;;;8612:31:0;::::1;-1:-1:-1::0;8612:31:0;;;:21:::1;:31:::0;;;;;:388;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;::::1;::::0;::::1;::::0;;;;;;;;::::1;;;::::0;;;;;::::1;::::0;;;;;;;::::1;::::0;;;;;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;9022:73;::::1;::::0;::::1;::::0;8634:8;;8612:31;-1:-1:-1;;;;;4069:55:1;;;;4051:74;;4151:13;4215:4;4200:20;;4195:2;4180:18;;4173:48;4265:1;4261:17;;;4280:10;4257:34;4252:2;4237:18;;4230:62;4361:2;4357:18;;;4311:6;4353:27;;;4348:2;4333:18;;4326:55;4426:2;4422:18;;;4418:27;;4412:3;4397:19;;4390:56;4491:2;4487:18;;;;4483:27;4477:3;4462:19;;4455:56;4038:3;4023:19;;3805:712;9022:73:0::1;;;;;;;;8440:1353;;;-1:-1:-1::0;;;;;9177:30:0;::::1;;::::0;;;:20:::1;:30;::::0;;;;;9213:431;;::::1;::::0;::::1;::::0;;;9264:13:::1;9262:15:::0;;9177:30;;9213:431;;9262:15:::1;::::0;::::1;:::i;:::-;::::0;;;;-1:-1:-1;9213:431:0::1;::::0;;::::1;::::0;;::::1;::::0;;::::1;;::::0;;::::1;::::0;;;;::::1;::::0;;::::1;::::0;;;;;;;;;;::::1;::::0;;;;;;;;;;::::1;::::0;;;;;;;;-1:-1:-1;9213:431:0;;;;;;;;::::1;;::::0;;;;;9177:468;;::::1;::::0;;::::1;::::0;;;;;;;;;;;::::1;::::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;9213:431:::1;9177:468:::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;;;::::1;::::0;::::1;::::0;;;;::::1;::::0;::::1;::::0;;;;;;;;::::1;;;::::0;;;;;;;::::1;::::0;;;;;;;::::1;::::0;;;;;;;;;;;::::1;::::0;;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;;;;;9707:30:0;::::1;::::0;;:20:::1;:30:::0;;;;9738:37;;9667:114:::1;::::0;9697:8;;9707:30;9738:41:::1;::::0;9177:468;9738:41:::1;:::i;:::-;9707:73;;;;;;;;:::i;:::-;;;;;;;;9667:114;;;;;;-1:-1:-1::0;;;;;3142:55:1;;;;3124:74;;3224:13;3288:4;3273:20;;;3268:2;3253:18;;3246:48;3338:1;3334:17;;;3353:10;3330:34;3325:2;3310:18;;3303:62;3425:2;3421:18;;;3384:6;3417:27;;;3461:2;3446:18;;2492:31;3500:2;3496:18;;;3492:27;;3536:3;3521:19;;2492:31;3576:2;3572:18;;;3568:27;3612:3;3597:19;;2492:31;3668:26;3652:2;3648:18;;;3644:51;3712:3;3697:19;;2587:51;3750:3;3746:19;;;;3742:30;2413:13;2406:21;3789:3;3774:19;;2394:34;3111:3;3096:19;;2880:920;9667:114:0::1;;;;;;;;8440:1353;7716:2084:::0;;;;;;;:::o;13632:148::-;-1:-1:-1;;;;;13748:24:0;;;;;;:20;:24;;;;;;;;13741:31;;;;;;;;;;;;;;;;;13700:28;;13741:31;;13748:24;;13741:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13632:148;;;:::o;12861:759::-;12955:24;;;;13072:496;-1:-1:-1;;;;;13096:30:0;;;;;;:20;:30;;;;;:37;13092:41;;13072:496;;;-1:-1:-1;;;;;13159:30:0;;;;;;:20;:30;;;;;:33;;13199:7;;13159:30;13190:1;;13159:33;;;;;;:::i;:::-;;;;;;;;;;:36;;;:47;13155:402;;;-1:-1:-1;;;;;13270:30:0;;13227:40;13270:30;;;:20;:30;;;;;:33;;13301:1;;13270:33;;;;;;:::i;:::-;;;;;;;;;13227:76;;;;;;;;13270:33;;;;13227:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13342:45:0;13227:76;13342:30;:45::i;:::-;13322:65;;13406:19;13451:12;13428:13;:20;;;:35;;;;;;:::i;:::-;13490:20;;;;;13482:59;;;-1:-1:-1;13512:12:0;;-1:-1:-1;13406:57:0;;-1:-1:-1;13482:59:0;;-1:-1:-1;;13482:59:0;13155:402;13135:3;;;;:::i;:::-;;;;13072:496;;;-1:-1:-1;13578:34:0;;-1:-1:-1;;;13578:34:0;;7014:2:1;13578:34:0;;;6996:21:1;7053:2;7033:18;;;7026:30;7092:26;7072:18;;;7065:54;7136:18;;13578:34:0;6812:348:1;12861:759:0;;;;;;:::o;750:235::-;526:6;;-1:-1:-1;;;;;526:6:0;536:10;526:20;518:56;;;;-1:-1:-1;;;518:56:0;;11220:2:1;518:56:0;;;11202:21:1;11259:2;11239:18;;;11232:30;11298:25;11278:18;;;11271:53;11341:18;;518:56:0;11018:347:1;518:56:0;-1:-1:-1;;;;;839:22:0;::::1;831:64;;;::::0;-1:-1:-1;;;831:64:0;;8578:2:1;831:64:0::1;::::0;::::1;8560:21:1::0;8617:2;8597:18;;;8590:30;8656:31;8636:18;;;8629:59;8705:18;;831:64:0::1;8376:353:1::0;831:64:0::1;932:6;::::0;;911:38:::1;::::0;-1:-1:-1;;;;;911:38:0;;::::1;::::0;932:6;::::1;::::0;911:38:::1;::::0;::::1;960:6;:17:::0;;;::::1;-1:-1:-1::0;;;;;960:17:0;;;::::1;::::0;;;::::1;::::0;;750:235::o;5026:149::-;5094:4;5140:27;5158:8;5140:17;:27::i;:::-;-1:-1:-1;;;;;5118:19:0;;;;;;:9;:19;;;;;;:49;;;;:::i;:::-;5111:56;5026:149;-1:-1:-1;;5026:149:0:o;12059:347::-;-1:-1:-1;;;;;12156:20:0;;12148:69;;;;-1:-1:-1;;;12148:69:0;;12404:2:1;12148:69:0;;;12386:21:1;12443:2;12423:18;;;12416:30;12482:34;12462:18;;;12455:62;12553:6;12533:18;;;12526:34;12577:19;;12148:69:0;12202:400:1;12148:69:0;-1:-1:-1;;;;;12236:22:0;;12228:69;;;;-1:-1:-1;;;12228:69:0;;8175:2:1;12228:69:0;;;8157:21:1;8214:2;8194:18;;;8187:30;8253:34;8233:18;;;8226:62;8324:4;8304:18;;;8297:32;8346:19;;12228:69:0;7973:398:1;12228:69:0;-1:-1:-1;;;;;12308:19:0;;;;;;;:11;:19;;;;;;;;:29;;;;;;;;;;;;;:39;;;12363:35;;13159:25:1;;;12363:35:0;;13132:18:1;12363:35:0;;;;;;;12059:347;;;:::o;10677:607::-;-1:-1:-1;;;;;10778:21:0;;10770:71;;;;-1:-1:-1;;;10770:71:0;;11572:2:1;10770:71:0;;;11554:21:1;11611:2;11591:18;;;11584:30;11650:34;11630:18;;;11623:62;11721:7;11701:18;;;11694:35;11746:19;;10770:71:0;11370:401:1;10770:71:0;-1:-1:-1;;;;;10860:24:0;;10852:72;;;;-1:-1:-1;;;10852:72:0;;7367:2:1;10852:72:0;;;7349:21:1;7406:2;7386:18;;;7379:30;7445:34;7425:18;;;7418:62;7516:5;7496:18;;;7489:33;7539:19;;10852:72:0;7165:399:1;10852:72:0;10935:50;10956:7;10965:10;10977:7;10935:20;:50::i;:::-;-1:-1:-1;;;;;11020:18:0;;10996:21;11020:18;;;:9;:18;;;;;;11057:24;;;;11049:75;;;;-1:-1:-1;;;11049:75:0;;9288:2:1;11049:75:0;;;9270:21:1;9327:2;9307:18;;;9300:30;9366:34;9346:18;;;9339:62;9437:8;9417:18;;;9410:36;9463:19;;11049:75:0;9086:402:1;11049:75:0;11156:23;11172:7;11156:13;:23;:::i;:::-;-1:-1:-1;;;;;11135:18:0;;;;;;;:9;:18;;;;;;:44;;;;11190:21;;;;;;;;:32;;11215:7;;11135:18;11190:32;;11215:7;;11190:32;:::i;:::-;;;;;;;;11256:10;-1:-1:-1;;;;;11238:38:0;11247:7;-1:-1:-1;;;;;11238:38:0;;11268:7;11238:38;;;;13159:25:1;;13147:2;13132:18;;13013:177;11238:38:0;;;;;;;;10759:525;10677:607;;;:::o;5187:1999::-;5288:4;5342:15;5309:49;;:9;:23;;;:49;;;5305:166;;;-1:-1:-1;5443:16:0;;;5436:23;;;5187:1999::o;5305:166::-;5495:34;;;;:38;;;5491:269;;1402:5;5701:9;:34;;;5682:53;;:9;:16;;;:53;;;;:::i;:::-;:65;;;;;;:::i;:::-;5655:9;:16;;:93;;;;;;;:::i;:::-;;;;;-1:-1:-1;5491:269:0;5784:29;;;;:33;;;5780:1257;;5834:29;1473:5;5893:9;:23;;;5874:15;5867:49;;;;:::i;:::-;5866:72;;;;;;:::i;:::-;5834:104;;5982:9;:32;;;5957:57;;:21;:57;5953:165;;-1:-1:-1;;6086:16:0;;;6079:23;;;5187:1999::o;5953:165::-;6146:35;6208:9;:32;;;6184:56;;:21;:56;;;;:::i;:::-;6146:94;;6304:9;:29;;;6273:60;;:27;:60;6269:440;;-1:-1:-1;6692:1:0;;5187:1999;-1:-1:-1;;;5187:1999:0:o;6269:440::-;6803:28;6853:9;:29;;;6834:48;;:9;:16;;;:48;;;;:::i;:::-;6803:79;;;-1:-1:-1;6897:21:0;6921:50;6803:79;6921:27;:50;:::i;:::-;6897:74;;7012:13;6993:9;:16;;;:32;;;;;;:::i;:::-;6986:39;5187:1999;-1:-1:-1;;;;;;5187:1999:0:o;5780:1257::-;-1:-1:-1;7177:1:0;;5187:1999;-1:-1:-1;5187:1999:0:o;2887:2131::-;3123:26;3143:5;3123:19;:26::i;:::-;3112:7;:37;;3104:78;;;;-1:-1:-1;;;3104:78:0;;10454:2:1;3104:78:0;;;10436:21:1;10493:2;10473:18;;;10466:30;10532;10512:18;;;10505:58;10580:18;;3104:78:0;10252:352:1;3104:78:0;-1:-1:-1;;;;;3299:25:0;;;;;;:20;:25;;;;;:32;3335:1;-1:-1:-1;3299:37:0;;;:76;;-1:-1:-1;;;;;;3340:25:0;;;;;;:20;:25;;;;;:28;;:25;;;:28;;;;:::i;:::-;;;;;;;;;;:35;;;;;;3299:76;3295:184;;;-1:-1:-1;;;;;3392:25:0;;;;;;:20;:25;;;;;:28;;3438:7;;3392:25;:28;;;;:::i;:::-;;;;;;;;;;:54;;:35;;:54;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2887:2131;;;:::o;3295:184::-;-1:-1:-1;;;;;3579:28:0;;;;;;:21;:28;;;;;:31;;;:36;3575:1436;;-1:-1:-1;;;;;3687:28:0;;3642:42;3687:28;;;:21;:28;;;;;;;;3642:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:42;3918:398;-1:-1:-1;;;;;3942:25:0;;;;;;:20;:25;;;;;:32;3938:36;;3918:398;;;-1:-1:-1;;;;;4025:25:0;;;;;;:20;:25;;;;;:28;;4051:1;;4025:28;;;;;;:::i;:::-;;;;;;;;;;:31;4004:17;;4025:31;4004:52;;;4025:31;;4004:52;4000:301;;;-1:-1:-1;;;;;4199:25:0;;;;;;:20;:25;;;;;:28;;4172:4;;-1:-1:-1;4245:7:0;;4199:25;4225:1;;4199:28;;;;;;:::i;:::-;;;;;;;;;;:54;;:35;;:54;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4276:5;;4000:301;3976:3;;;;:::i;:::-;;;;3918:398;;;;4427:19;4422:576;;-1:-1:-1;;;;;4467:25:0;;;;;;:20;:25;;;;;;;;4498:482;;;;;;;4545:17;;4498:482;;;;;;4600:28;;;;4498:482;;;;;;;;;;4756:34;;;;4498:482;;;;;;;;;;;4675:37;;;;4498:482;;;;;;;;;4839:39;;;;4498:482;;;;;;;;;;;;;;;;;;;;;;;;4467:514;;4498:482;4467:514;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4422:576;3617:1394;;3575:1436;2887:2131;;;:::o;14:196:1:-;82:20;;-1:-1:-1;;;;;131:54:1;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:159::-;282:20;;342:6;331:18;;321:29;;311:57;;364:1;361;354:12;379:186;438:6;491:2;479:9;470:7;466:23;462:32;459:52;;;507:1;504;497:12;459:52;530:29;549:9;530:29;:::i;:::-;520:39;379:186;-1:-1:-1;;;379:186:1:o;570:260::-;638:6;646;699:2;687:9;678:7;674:23;670:32;667:52;;;715:1;712;705:12;667:52;738:29;757:9;738:29;:::i;:::-;728:39;;786:38;820:2;809:9;805:18;786:38;:::i;:::-;776:48;;570:260;;;;;:::o;835:328::-;912:6;920;928;981:2;969:9;960:7;956:23;952:32;949:52;;;997:1;994;987:12;949:52;1020:29;1039:9;1020:29;:::i;:::-;1010:39;;1068:38;1102:2;1091:9;1087:18;1068:38;:::i;:::-;1058:48;;1153:2;1142:9;1138:18;1125:32;1115:42;;835:328;;;;;:::o;1168:911::-;1294:6;1302;1310;1318;1326;1334;1342;1395:3;1383:9;1374:7;1370:23;1366:33;1363:53;;;1412:1;1409;1402:12;1363:53;1435:29;1454:9;1435:29;:::i;:::-;1425:39;;1514:2;1503:9;1499:18;1486:32;1547:1;1540:5;1537:12;1527:40;;1563:1;1560;1553:12;1527:40;1586:5;-1:-1:-1;1643:2:1;1628:18;;1615:32;1691:10;1678:24;;1666:37;;1656:65;;1717:1;1714;1707:12;1656:65;1740:7;-1:-1:-1;1766:37:1;1799:2;1784:18;;1766:37;:::i;:::-;1756:47;;1822:38;1855:3;1844:9;1840:19;1822:38;:::i;:::-;1812:48;;1879:38;1912:3;1901:9;1897:19;1879:38;:::i;:::-;1869:48;;1969:3;1958:9;1954:19;1941:33;2019:7;2012:15;2005:23;1996:7;1993:36;1983:64;;2043:1;2040;2033:12;1983:64;2066:7;2056:17;;;1168:911;;;;;;;;;;:::o;2084:254::-;2152:6;2160;2213:2;2201:9;2192:7;2188:23;2184:32;2181:52;;;2229:1;2226;2219:12;2181:52;2252:29;2271:9;2252:29;:::i;:::-;2242:39;2328:2;2313:18;;;;2300:32;;-1:-1:-1;;;2084:254:1:o;4522:1432::-;4765:2;4817:21;;;4887:13;;4790:18;;;4909:22;;;4736:4;;4765:2;4950;;4968:18;;;;5009:15;;;4736:4;5052:876;5066:6;5063:1;5060:13;5052:876;;;5125:13;;5167:9;;5178:4;5163:20;5151:33;;5228:11;;;5222:18;5242:10;5218:35;5204:12;;;5197:57;5293:11;;;5287:18;5328:6;5368:21;;;5354:12;;;5347:43;5413:4;5461:11;;;5455:18;5451:27;;5437:12;;;5430:49;5502:4;5550:11;;;5544:18;5540:27;;;5526:12;;;5519:49;5591:4;5636:11;;;5630:18;2610:26;2599:38;5695:12;;;2587:51;5731:4;5776:11;;;5770:18;2413:13;2406:21;5833:12;;;2394:34;5875:4;5866:14;;;;5903:15;;;;5088:1;5081:9;5052:876;;;-1:-1:-1;5945:3:1;;4522:1432;-1:-1:-1;;;;;;;4522:1432:1:o;6151:656::-;6263:4;6292:2;6321;6310:9;6303:21;6353:6;6347:13;6396:6;6391:2;6380:9;6376:18;6369:34;6421:1;6431:140;6445:6;6442:1;6439:13;6431:140;;;6540:14;;;6536:23;;6530:30;6506:17;;;6525:2;6502:26;6495:66;6460:10;;6431:140;;;6589:6;6586:1;6583:13;6580:91;;;6659:1;6654:2;6645:6;6634:9;6630:22;6626:31;6619:42;6580:91;-1:-1:-1;6723:2:1;6711:15;6728:66;6707:88;6692:104;;;;6798:2;6688:113;;6151:656;-1:-1:-1;;;6151:656:1:o;14965:128::-;15005:3;15036:1;15032:6;15029:1;15026:13;15023:39;;;15042:18;;:::i;:::-;-1:-1:-1;15078:9:1;;14965:128::o;15098:244::-;15137:3;15165:26;15218:2;15215:1;15211:10;15248:2;15245:1;15241:10;15279:3;15275:2;15271:12;15266:3;15263:21;15260:47;;;15287:18;;:::i;:::-;15323:13;;15098:244;-1:-1:-1;;;;15098:244:1:o;15347:120::-;15387:1;15413;15403:35;;15418:18;;:::i;:::-;-1:-1:-1;15452:9:1;;15347:120::o;15472:207::-;15511:1;15537:26;15590:2;15587:1;15583:10;15612:3;15602:37;;15619:18;;:::i;:::-;15657:10;;15653:20;;;;;15472:207;-1:-1:-1;;15472:207:1:o;15684:228::-;15724:7;15850:1;15782:66;15778:74;15775:1;15772:81;15767:1;15760:9;15753:17;15749:105;15746:131;;;15857:18;;:::i;:::-;-1:-1:-1;15897:9:1;;15684:228::o;15917:278::-;15956:7;15988:26;16041:2;16038:1;16034:10;16071:2;16068:1;16064:10;16127:3;16123:2;16119:12;16114:3;16111:21;16104:3;16097:11;16090:19;16086:47;16083:73;;;16136:18;;:::i;:::-;16176:13;;15917:278;-1:-1:-1;;;;15917:278:1:o;16200:125::-;16240:4;16268:1;16265;16262:8;16259:34;;;16273:18;;:::i;:::-;-1:-1:-1;16310:9:1;;16200:125::o;16330:221::-;16369:4;16398:10;16458;;;;16428;;16480:12;;;16477:38;;;16495:18;;:::i;:::-;16532:13;;16330:221;-1:-1:-1;;;16330:221:1:o;16556:237::-;16595:4;16624:26;16700:10;;;;16670;;16722:12;;;16719:38;;;16737:18;;:::i;16798:437::-;16877:1;16873:12;;;;16920;;;16941:61;;16995:4;16987:6;16983:17;16973:27;;16941:61;17048:2;17040:6;17037:14;17017:18;17014:38;17011:218;;;17085:77;17082:1;17075:88;17186:4;17183:1;17176:15;17214:4;17211:1;17204:15;17011:218;;16798:437;;;:::o;17240:195::-;17279:3;17310:66;17303:5;17300:77;17297:103;;;17380:18;;:::i;:::-;-1:-1:-1;17427:1:1;17416:13;;17240:195::o;17440:184::-;17492:77;17489:1;17482:88;17589:4;17586:1;17579:15;17613:4;17610:1;17603:15;17629:184;17681:77;17678:1;17671:88;17778:4;17775:1;17768:15;17802:4;17799:1;17792:15;17818:184;17870:77;17867:1;17860:88;17967:4;17964:1;17957:15;17991:4;17988:1;17981:15;18007:184;18059:77;18056:1;18049:88;18156:4;18153:1;18146:15;18180:4;18177:1;18170:15
Swarm Source
ipfs://ff17f2975cab8cfa42cd30bdae6633ee9d9134cf301bd6a1088cbbfde6b62a7d
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.