ERC-20
Overview
Max Total Supply
4,000,000,000 AENS
Holders
8,871
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 8 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
AENSToken
Compiler Version
v0.5.17+commit.d19bba13
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-06-08 */ pragma solidity ^0.5.17; // @notice SECURITY TOKEN CONTRACT // @dev ERC-1404 with ERC-20 with ERC-223 protection Token Standard Compliant // @author Geoffrey Tipton at AEN // ---------------------------------------------------------------------------- // Deployed by : Geoffrey Tipton // Reviewed by : Aaron Regala // Symbol : AENS // Name : AEN Smart Token // Total supply: 4,000,000,000 // Decimals : 8 // // (c) AENSmart. The MIT Licence. // ---------------------------------------------------------------------------- // THE TOKENS HAVE NOT BEEN REGISTERED UNDER THE U.S. SECURITIES ACT OF // 1933, AS AMENDED (THE “SECURITIES ACT”). THE TOKENS WERE ISSUED IN // A TRANSACTION EXEMPT FROM THE REGISTRATION REQUIREMENTS OF THE SECURITIES // ACT PURSUANT TO REGULATION S PROMULGATED UNDER IT. THE TOKENS MAY NOT // BE OFFERED OR SOLD IN THE UNITED STATES UNLESS REGISTERED UNDER THE SECURITIES // ACT OR AN EXEMPTION FROM REGISTRATION IS AVAILABLE. TRANSFERS OF THE // TOKENS MAY NOT BE MADE EXCEPT IN ACCORDANCE WITH THE PROVISIONS OF REGULATION S, // PURSUANT TO REGISTRATION UNDER THE SECURITIES ACT, OR PURSUANT TO AN AVAILABLE // EXEMPTION FROM REGISTRATION. FURTHER, HEDGING TRANSACTIONS WITH REGARD TO THE // TOKENS MAY NOT BE CONDUCTED UNLESS IN COMPLIANCE WITH THE SECURITIES ACT. // ---------------------------------------------------------------------------- library SafeMath { function add(uint a, uint b) internal pure returns (uint c) { c = a + b; require(c >= a,"Can not add negative values"); } function sub(uint a, uint b) internal pure returns (uint c) { require(b <= a, "Result can not be negative"); c = a - b; } function mul(uint a, uint b) internal pure returns (uint c) { c = a * b; require(a == 0 || c / a == b,"Divide by zero protection"); } function div(uint a, uint b) internal pure returns (uint c) { require(b > 0,"Divide by zero protection"); c = a / b; } } // ---------------------------------------------------------------------------- // ERC Token Standard #20 Interface // https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md // ---------------------------------------------------------------------------- contract ERC20Interface { function totalSupply() external view returns (uint); function balanceOf(address owner) public view returns (uint256 balance); function allowance(address owner, address spender) public view returns (uint remaining); function transfer(address to, uint value) public returns (bool success); function approve(address spender, uint value) public returns (bool success); function transferFrom(address from, address to, uint value) public returns (bool success); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } // ---------------------------------------------------------------------------- // Open Standard ERC Token Standard #1404 Interface // https://erc1404.org // ---------------------------------------------------------------------------- contract ERC1404 is ERC20Interface { function detectTransferRestriction (address from, address to, uint256 value) public view returns (uint8); function messageForTransferRestriction (uint8 restrictionCode) public view returns (string memory); } contract Owned { address public owner; address internal newOwner; event OwnershipTransferred(address indexed _from, address indexed _to); constructor() public { owner = msg.sender; emit OwnershipTransferred(address(0), owner); } modifier onlyOwner() { require(msg.sender == owner, "Only the contract owner can execute this function"); _; } function transferOwnership(address _newOwner) external onlyOwner { newOwner = _newOwner; } // Prevent accidental false ownership change function acceptOwnership() external { require(msg.sender == newOwner); owner = newOwner; newOwner = address(0); emit OwnershipTransferred(owner, newOwner); } function getOwner() external view returns (address) { return owner; } } contract Managed is Owned { mapping(address => bool) public managers; modifier onlyManager() { require(managers[msg.sender], "Only managers can perform this action"); _; } function addManager(address managerAddress) external onlyOwner { managers[managerAddress] = true; } function removeManager(address managerAddress) external onlyOwner { managers[managerAddress] = false; } } /* ---------------------------------------------------------------------------- * Contract function to manage the white list * Byte operation to control function of the whitelist, * and prevent duplicate address entries. simple example * whiteList[add] = 0000 = 0x00 = Not allowed to do either * whiteList[add] = 0001 = 0x01 = Allowed to receive * whiteList[add] = 0010 = 0x02 = Allowed to send * whiteList[add] = 0011 = 0x03 = Allowed to send and receive * whiteList[add] = 0100 = 0x04 = Frozen not allowed to do either * whiteList[add] = 1000 = 0x08 = Paused No one can transfer any tokens *---------------------------------------------------------------------------- */ contract Whitelist is Managed { mapping(address => bytes1) public whiteList; bytes1 internal listRule; bytes1 internal constant WHITELISTED_CAN_RX_CODE = 0x01; // binary for 0001 bytes1 internal constant WHITELISTED_CAN_TX_CODE = 0x02; // binary for 0010 bytes1 internal constant WHITELISTED_FREEZE_CODE = 0x04; // binary for 0100 Always applies bytes1 internal constant WHITELISTED_PAUSED_CODE = 0x08; // binary for 1000 Always applies function isFrozen(address _account) public view returns (bool) { return (WHITELISTED_FREEZE_CODE == (whiteList[_account] & WHITELISTED_FREEZE_CODE)); // 10 & 11 = True } function addToSendAllowed(address _to) external onlyManager { whiteList[_to] = whiteList[_to] | WHITELISTED_CAN_TX_CODE; // just add the code 1 } function addToReceiveAllowed(address _to) external onlyManager { whiteList[_to] = whiteList[_to] | WHITELISTED_CAN_RX_CODE; // just add the code 2 } function removeFromSendAllowed(address _to) public onlyManager { if (WHITELISTED_CAN_TX_CODE == (whiteList[_to] & WHITELISTED_CAN_TX_CODE)) { // check code 4 so it does toggle when recalled whiteList[_to] = whiteList[_to] ^ WHITELISTED_CAN_TX_CODE; // xor the code to remove the flag } } function removeFromReceiveAllowed(address _to) public onlyManager { if (WHITELISTED_CAN_RX_CODE == (whiteList[_to] & WHITELISTED_CAN_RX_CODE)) { whiteList[_to] = whiteList[_to] ^ WHITELISTED_CAN_RX_CODE; } } function removeFromBothSendAndReceiveAllowed (address _to) external onlyManager { removeFromSendAllowed(_to); removeFromReceiveAllowed(_to); } /* this overrides the individual whitelisting and manager positions so a frozen account can not be unfrozen by a lower level manager */ function freeze(address _to) external onlyOwner { whiteList[_to] = whiteList[_to] | WHITELISTED_FREEZE_CODE; // 4 [0100] } function unFreeze(address _to) external onlyOwner { if (WHITELISTED_FREEZE_CODE == (whiteList[_to] & WHITELISTED_FREEZE_CODE )) { // Already Unfrozen whiteList[_to] = whiteList[_to] ^ WHITELISTED_FREEZE_CODE; // 4 [0100] } } function pause() external onlyOwner { listRule = WHITELISTED_PAUSED_CODE; // 8 [1000] } function resume() external onlyOwner { if (WHITELISTED_PAUSED_CODE == listRule ) { // Already Unfrozen listRule = listRule ^ WHITELISTED_PAUSED_CODE; // 4 [0100] } } /* Whitelist Rule defines what the rules are for the whitelisting 0x00 = No rule 0x01 = Receiver must be whitelisted 0x10 = Sender must be whitelisted 0x11 = Both must be whitelisted */ function setWhitelistRule(byte _newRule) external onlyOwner { listRule = _newRule; } function getWhitelistRule() external view returns (byte){ return listRule; } } // ---------------------------------------------------------------------------- // ERC20 Token, with the addition of symbol, name and decimals and an initial fixed supply // ---------------------------------------------------------------------------- contract AENSToken is ERC1404, Owned, Whitelist { using SafeMath for uint; string public symbol; string public name; uint8 public decimals; uint public _totalSupply; uint8 internal restrictionCheck; mapping(address => uint) public balances; mapping(address => mapping(address => uint)) allowed; constructor() public { symbol = "AENS"; name = "AEN Smart Token"; decimals = 8; _totalSupply = 4000000000 * 10**uint(decimals); balances[msg.sender] = _totalSupply; managers[msg.sender] = true; listRule = 0x00; // Receiver does not need to be whitelisted emit Transfer(address(0), msg.sender, _totalSupply); } modifier transferAllowed(address _from, address _to, uint256 _amount ) { require(!isFrozen(_to) && !isFrozen(_from), "One of the accounts are frozen"); // If not frozen go check if ((listRule & WHITELISTED_CAN_TX_CODE) != 0) { // If whitelist send rule applies then must be set require(WHITELISTED_CAN_TX_CODE == (whiteList[_from] & WHITELISTED_CAN_TX_CODE), "Sending account is not whitelisted"); // 10 & 11 = true } if ((listRule & WHITELISTED_CAN_RX_CODE) != 0) { // If whitelist to receive is required, then check, require(WHITELISTED_CAN_RX_CODE == (whiteList[_to] & WHITELISTED_CAN_RX_CODE),"Receiving account is not whitelisted"); // 01 & 11 = True } _; } // ------------------------------------------------------------------------ // Total supply minus any lost tokens to the zero address (Potential burn) function totalSupply() external view returns (uint) { return _totalSupply.sub(balances[address(0)]); } // ------------------------------------------------------------------------ // Get the token balance for account `tokenOwner` function balanceOf(address owner) public view returns (uint256) { return balances[owner]; } // ------------------------------------------------------------------------ // Transfer the balance from token owner's account to `to` account // - Owner's account must have sufficient balance to transfer // - 0 value transfers are allowed // function transfer(address _to, uint _tokens) public receiveAllowed(_to) returns (bool success) { function transfer(address _to, uint _value) public transferAllowed(msg.sender, _to, _value) returns (bool) { require((_to != address(0)) && (_to != address(this))); // Do not allow transfer to 0x0 or the token contract itself balances[msg.sender] = balances[msg.sender].sub(_value); balances[_to] = balances[_to].add(_value); emit Transfer(msg.sender, _to, _value); return true; } // ------------------------------------------------------------------------ // Token owner can approve for `spender` to transferFrom(...) `tokens` // from the token owner's account function approve(address spender, uint value) public transferAllowed(msg.sender, spender, value) returns (bool) { allowed[msg.sender][spender] = value; emit Approval(msg.sender, spender, value); return true; } // ------------------------------------------------------------------------ // Transfer `tokens` from the `from` account to the `to` account function transferFrom(address _from, address _to, uint _value) public transferAllowed(_from, _to, _value) returns (bool) { // function transferFrom(address _from, address _to, uint _value) public returns (bool success) { require((_to != address(0)) && (_to != address(this))); // Do not allow transfer to 0x0 or the token contract itself balances[_from] = balances[_from].sub(_value); allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value); balances[_to] = balances[_to].add(_value); emit Transfer(_from, _to, _value); return true; } /* ------------------------------------------------------------------------ * Returns the amount of tokens approved by the owner that can be * transferred to the spender's account */ function allowance(address owner, address spender) public view returns (uint) { return allowed[owner][spender]; } /* ---------------------------------------------------------------------------------------- * @dev Creates `amount` tokens and assigns them to `account`, increasing the total supply. * Emits a `Transfer` event with `from` set to the zero address. * Requirements * - `to` cannot be the zero address. */ function mint(address account, uint256 amount) public onlyOwner { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply = _totalSupply.add(amount); balances[account] = balances[account].add(amount); emit Transfer(address(0), account, amount); } /* ------------------------------------------------------------------------ * @dev Destroys `amount` tokens from `account`, reducing the total supply. * Emits a `Transfer` event with `to` set to the zero address. * Requirements * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function burn(address account, uint256 value) public onlyOwner { require(account != address(0), "ERC20: prevent burn from a zero address"); balances[account] = balances[account].sub(value); _totalSupply = _totalSupply.sub(value); emit Transfer(account, address(0), value); } /* ------------------------------------------------------------------------ * don't accept ETH */ function() payable external { revert(); } /* ------------------------------------------------------------------------ * This function prevents accidentally sent tokens to the contract */ function transferAnyERC20Token(address tokenAddress, uint tokens) public onlyOwner returns (bool success) { return ERC20Interface(tokenAddress).transfer(owner, tokens); } /* ------------------------------------------------------------------------ * The following functions are for 1404 interface compliance, to detect * a transaction is allowed before sending, to save gas and obtain a clear Message */ function detectTransferRestriction (address _from, address _to, uint256 _value) public view returns (uint8 restrictionCode) { restrictionCode = 0; // No restrictions if ( WHITELISTED_CAN_TX_CODE == (listRule & WHITELISTED_CAN_TX_CODE) ) { //Can Send rule applies if (!(WHITELISTED_CAN_TX_CODE == (whiteList[_to] & WHITELISTED_CAN_TX_CODE)) ) { //True if allowed to send restrictionCode += 1; // Send is not allowed } } if (WHITELISTED_CAN_RX_CODE == (listRule & WHITELISTED_CAN_RX_CODE)){ // Can Receive Rule applied if (!(WHITELISTED_CAN_RX_CODE == (whiteList[_from] & WHITELISTED_CAN_RX_CODE))) { restrictionCode += 2; // Receive is not allowed } } if ((WHITELISTED_FREEZE_CODE == (whiteList[_from] & WHITELISTED_FREEZE_CODE)) ) { // Added to Frozen restrictionCode += 4; // Sender is Frozen } if ((WHITELISTED_FREEZE_CODE == (whiteList[_to] & WHITELISTED_FREEZE_CODE)) ) { // Added to Frozen restrictionCode += 8; // Receiver is Frozen } if (balanceOf(_from) < _value) { restrictionCode += 16; // Send has insufficient balance } if (listRule == (listRule & WHITELISTED_PAUSED_CODE) ) { restrictionCode += 32; // Send has insufficient balance } return restrictionCode; } /* ------------------------------------------------------------------------------------ * helper function to return a human readable message for the detectTransferRestriction */ function messageForTransferRestriction (uint8 _restrictionCode) public view returns (string memory _message) { _message = "Transfer Allowed"; // default and when is zero if (_restrictionCode >= 32) { _message = "Contract Token is Paused for all transfers"; } else if (_restrictionCode >= 16) { _message = "Insufficient Balance to send"; } else if (_restrictionCode >= 8) { _message = "To Account is Frozen, contact provider"; } else if (_restrictionCode >= 4) { _message = "From Account is Frozen, contact provider"; } else if (_restrictionCode >= 3) { _message = "Both Sending and receiving address has not been KYC Approved"; } else if (_restrictionCode >= 2) { _message = "Receiving address has not been KYC Approved"; } else if (_restrictionCode >= 1) { _message = "Sending address has not been KYC Approved"; } return _message; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"payable":false,"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":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","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"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"managerAddress","type":"address"}],"name":"addManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_to","type":"address"}],"name":"addToReceiveAllowed","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_to","type":"address"}],"name":"addToSendAllowed","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"detectTransferRestriction","outputs":[{"internalType":"uint8","name":"restrictionCode","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_to","type":"address"}],"name":"freeze","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getWhitelistRule","outputs":[{"internalType":"bytes1","name":"","type":"bytes1"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"isFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"managers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint8","name":"_restrictionCode","type":"uint8"}],"name":"messageForTransferRestriction","outputs":[{"internalType":"string","name":"_message","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_to","type":"address"}],"name":"removeFromBothSendAndReceiveAllowed","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_to","type":"address"}],"name":"removeFromReceiveAllowed","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_to","type":"address"}],"name":"removeFromSendAllowed","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"managerAddress","type":"address"}],"name":"removeManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"resume","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes1","name":"_newRule","type":"bytes1"}],"name":"setWhitelistRule","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"transferAnyERC20Token","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_to","type":"address"}],"name":"unFreeze","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whiteList","outputs":[{"internalType":"bytes1","name":"","type":"bytes1"}],"payable":false,"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b50600080546001600160a01b03191633178082556040516001600160a01b039190911691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36040805180820190915260048082526341454e5360e01b602090920191825262000088916005916200014f565b5060408051808201909152600f8082526e20a2a71029b6b0b93a102a37b5b2b760891b6020909201918252620000c1916006916200014f565b5060078054600860ff1991821681179283905560ff909216600a90810a63ee6b280002808455336000818152602093845260408082209390935560028452828120805486166001179055600480549095169094559354815190815290517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a3620001f4565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200019257805160ff1916838001178555620001c2565b82800160010185558215620001c2579182015b82811115620001c2578251825591602001919060010190620001a5565b50620001d0929150620001d4565b5090565b620001f191905b80821115620001d05760008155600101620001db565b90565b6120c780620002046000396000f3fe60806040526004361061020f5760003560e01c80637f4ab1dd11610118578063ac18de43116100a0578063e00a1e8b1161006f578063e00a1e8b14610824578063e583983614610857578063f2fde38b1461088a578063f8465534146108bd578063fdff9b4d146108f05761020f565b8063ac18de431461073a578063d4ce14151461076d578063dc39d06d146107b0578063dd62ed3e146107e95761020f565b80638d1fdf2f116100e75780638d1fdf2f1461066b5780638da5cb5b1461069e57806395d89b41146106b35780639dc29fac146106c8578063a9059cbb146107015761020f565b80637f4ab1dd146105c557806383cfab42146105f25780638456cb5914610625578063893d20e81461063a5761020f565b80632d06177a1161019b57806340c10f191161016a57806340c10f19146104fb57806340cb2de41461053457806346f5f09e1461056857806370a082311461057d57806379ba5097146105b05761020f565b80632d06177a14610438578063313ce5671461046b578063372c12b1146104965780633eaaf86b146104e65761020f565b806323b872dd116101e257806323b872dd146103295780632583cfef1461036c57806326a5a5541461039f57806327029357146103d257806327e235e3146104055761020f565b8063046f7da21461021457806306fdde031461022b578063095ea7b3146102b557806318160ddd14610302575b600080fd5b34801561022057600080fd5b50610229610923565b005b34801561023757600080fd5b506102406109a4565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561027a578181015183820152602001610262565b50505050905090810190601f1680156102a75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102c157600080fd5b506102ee600480360360408110156102d857600080fd5b506001600160a01b038135169060200135610a32565b604080519115158252519081900360200190f35b34801561030e57600080fd5b50610317610bf0565b60408051918252519081900360200190f35b34801561033557600080fd5b506102ee6004803603606081101561034c57600080fd5b506001600160a01b03813581169160208101359091169060400135610c33565b34801561037857600080fd5b506102296004803603602081101561038f57600080fd5b50356001600160a01b0316610ead565b3480156103ab57600080fd5b50610229600480360360208110156103c257600080fd5b50356001600160a01b0316610f10565b3480156103de57600080fd5b50610229600480360360208110156103f557600080fd5b50356001600160a01b0316610fb9565b34801561041157600080fd5b506103176004803603602081101561042857600080fd5b50356001600160a01b0316611038565b34801561044457600080fd5b506102296004803603602081101561045b57600080fd5b50356001600160a01b031661104a565b34801561047757600080fd5b506104806110b7565b6040805160ff9092168252519081900360200190f35b3480156104a257600080fd5b506104c9600480360360208110156104b957600080fd5b50356001600160a01b03166110c0565b604080516001600160f81b03199092168252519081900360200190f35b3480156104f257600080fd5b506103176110d5565b34801561050757600080fd5b506102296004803603604081101561051e57600080fd5b506001600160a01b0381351690602001356110db565b34801561054057600080fd5b506102296004803603602081101561055757600080fd5b50356001600160f81b031916611204565b34801561057457600080fd5b506104c9611263565b34801561058957600080fd5b50610317600480360360208110156105a057600080fd5b50356001600160a01b031661126c565b3480156105bc57600080fd5b50610229611287565b3480156105d157600080fd5b50610240600480360360208110156105e857600080fd5b503560ff166112f8565b3480156105fe57600080fd5b506102296004803603602081101561061557600080fd5b50356001600160a01b031661146d565b34801561063157600080fd5b50610229611511565b34801561064657600080fd5b5061064f611569565b604080516001600160a01b039092168252519081900360200190f35b34801561067757600080fd5b506102296004803603602081101561068e57600080fd5b50356001600160a01b0316611578565b3480156106aa57600080fd5b5061064f6115f2565b3480156106bf57600080fd5b50610240611601565b3480156106d457600080fd5b50610229600480360360408110156106eb57600080fd5b506001600160a01b03813516906020013561165c565b34801561070d57600080fd5b506102ee6004803603604081101561072457600080fd5b506001600160a01b038135169060200135611775565b34801561074657600080fd5b506102296004803603602081101561075d57600080fd5b50356001600160a01b0316611994565b34801561077957600080fd5b506104806004803603606081101561079057600080fd5b506001600160a01b038135811691602081013590911690604001356119fe565b3480156107bc57600080fd5b506102ee600480360360408110156107d357600080fd5b506001600160a01b038135169060200135611b22565b3480156107f557600080fd5b506103176004803603604081101561080c57600080fd5b506001600160a01b0381358116916020013516611bf8565b34801561083057600080fd5b506102296004803603602081101561084757600080fd5b50356001600160a01b0316611c23565b34801561086357600080fd5b506102ee6004803603602081101561087a57600080fd5b50356001600160a01b0316611ca2565b34801561089657600080fd5b50610229600480360360208110156108ad57600080fd5b50356001600160a01b0316611cc9565b3480156108c957600080fd5b50610229600480360360208110156108e057600080fd5b50356001600160a01b0316611d34565b3480156108fc57600080fd5b506102ee6004803603602081101561091357600080fd5b50356001600160a01b0316611ddd565b6000546001600160a01b0316331461096c5760405162461bcd60e51b815260040180806020018281038252603181526020018061203b6031913960400191505060405180910390fd5b60045460f81b6001600160f81b031916600160fb1b14156109a2576004805460f881811b600160fb1b18901c60ff199091161790555b565b6006805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610a2a5780601f106109ff57610100808354040283529160200191610a2a565b820191906000526020600020905b815481529060010190602001808311610a0d57829003601f168201915b505050505081565b6000338383610a4082611ca2565b158015610a535750610a5183611ca2565b155b610aa4576040805162461bcd60e51b815260206004820152601e60248201527f4f6e65206f6620746865206163636f756e7473206172652066726f7a656e0000604482015290519081900360640190fd5b60045460f81b600160f91b1615610b15576001600160a01b03831660009081526003602052604090205460f81b600160f91b90811614610b155760405162461bcd60e51b8152600401808060200182810382526022815260200180611f086022913960400191505060405180910390fd5b60045460f81b600160f81b1615610b86576001600160a01b03821660009081526003602052604090205460f81b600160f81b90811614610b865760405162461bcd60e51b8152600401808060200182810382526024815260200180611ea86024913960400191505060405180910390fd5b336000818152600b602090815260408083206001600160a01b038b1680855290835292819020899055805189815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600195945050505050565b6000808052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e354600854610c2e9163ffffffff611df216565b905090565b6000838383610c4182611ca2565b158015610c545750610c5283611ca2565b155b610ca5576040805162461bcd60e51b815260206004820152601e60248201527f4f6e65206f6620746865206163636f756e7473206172652066726f7a656e0000604482015290519081900360640190fd5b60045460f81b600160f91b1615610d16576001600160a01b03831660009081526003602052604090205460f81b600160f91b90811614610d165760405162461bcd60e51b8152600401808060200182810382526022815260200180611f086022913960400191505060405180910390fd5b60045460f81b600160f81b1615610d87576001600160a01b03821660009081526003602052604090205460f81b600160f81b90811614610d875760405162461bcd60e51b8152600401808060200182810382526024815260200180611ea86024913960400191505060405180910390fd5b6001600160a01b03861615801590610da857506001600160a01b0386163014155b610db157600080fd5b6001600160a01b0387166000908152600a6020526040902054610dda908663ffffffff611df216565b6001600160a01b0388166000908152600a6020908152604080832093909355600b815282822033835290522054610e17908663ffffffff611df216565b6001600160a01b038089166000908152600b602090815260408083203384528252808320949094559189168152600a9091522054610e5b908663ffffffff611e4f16565b6001600160a01b038088166000818152600a602090815260409182902094909455805189815290519193928b1692600080516020611ff283398151915292918290030190a35060019695505050505050565b3360009081526002602052604090205460ff16610efb5760405162461bcd60e51b8152600401808060200182810382526025815260200180611f7d6025913960400191505060405180910390fd5b610f0481611d34565b610f0d81610f10565b50565b3360009081526002602052604090205460ff16610f5e5760405162461bcd60e51b8152600401808060200182810382526025815260200180611f7d6025913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460f81b600160f81b9081161415610f0d576001600160a01b03166000908152600360205260409020805460ff198116600160f81b60f892831b1890911c179055565b3360009081526002602052604090205460ff166110075760405162461bcd60e51b8152600401808060200182810382526025815260200180611f7d6025913960400191505060405180910390fd5b6001600160a01b03166000908152600360205260409020805460f881811b600160f81b17901c60ff19909116179055565b600a6020526000908152604090205481565b6000546001600160a01b031633146110935760405162461bcd60e51b815260040180806020018281038252603181526020018061203b6031913960400191505060405180910390fd5b6001600160a01b03166000908152600260205260409020805460ff19166001179055565b60075460ff1681565b60036020526000908152604090205460f81b81565b60085481565b6000546001600160a01b031633146111245760405162461bcd60e51b815260040180806020018281038252603181526020018061203b6031913960400191505060405180910390fd5b6001600160a01b03821661117f576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600854611192908263ffffffff611e4f16565b6008556001600160a01b0382166000908152600a60205260409020546111be908263ffffffff611e4f16565b6001600160a01b0383166000818152600a60209081526040808320949094558351858152935192939192600080516020611ff28339815191529281900390910190a35050565b6000546001600160a01b0316331461124d5760405162461bcd60e51b815260040180806020018281038252603181526020018061203b6031913960400191505060405180910390fd5b6004805460ff191660f89290921c919091179055565b60045460f81b90565b6001600160a01b03166000908152600a602052604090205490565b6001546001600160a01b0316331461129e57600080fd5b60018054600080546001600160a01b038084166001600160a01b031992831617808455919093169093556040519092909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3565b60606040518060400160405280601081526020016f151c985b9cd9995c88105b1b1bddd95960821b815250905060208260ff1610611350576040518060600160405280602a8152602001611fc8602a91399050611468565b60108260ff1610611395575060408051808201909152601c81527f496e73756666696369656e742042616c616e636520746f2073656e64000000006020820152611468565b60088260ff16106113c057604051806060016040528060268152602001611fa2602691399050611468565b60048260ff16106113eb57604051806060016040528060288152602001611f55602891399050611468565b60038260ff1610611416576040518060600160405280603c8152602001611ecc603c91399050611468565b60028260ff1610611441576040518060600160405280602b8152602001611f2a602b91399050611468565b60018260ff1610611468576040518060600160405280602981526020016120126029913990505b919050565b6000546001600160a01b031633146114b65760405162461bcd60e51b815260040180806020018281038252603181526020018061203b6031913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460f81b600160fa1b9081161415610f0d576001600160a01b03166000908152600360205260409020805460ff198116600160fa1b60f892831b1890911c179055565b6000546001600160a01b0316331461155a5760405162461bcd60e51b815260040180806020018281038252603181526020018061203b6031913960400191505060405180910390fd5b6004805460ff19166008179055565b6000546001600160a01b031690565b6000546001600160a01b031633146115c15760405162461bcd60e51b815260040180806020018281038252603181526020018061203b6031913960400191505060405180910390fd5b6001600160a01b03166000908152600360205260409020805460f881811b600160fa1b17901c60ff19909116179055565b6000546001600160a01b031681565b6005805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610a2a5780601f106109ff57610100808354040283529160200191610a2a565b6000546001600160a01b031633146116a55760405162461bcd60e51b815260040180806020018281038252603181526020018061203b6031913960400191505060405180910390fd5b6001600160a01b0382166116ea5760405162461bcd60e51b815260040180806020018281038252602781526020018061206c6027913960400191505060405180910390fd5b6001600160a01b0382166000908152600a6020526040902054611713908263ffffffff611df216565b6001600160a01b0383166000908152600a602052604090205560085461173f908263ffffffff611df216565b6008556040805182815290516000916001600160a01b03851691600080516020611ff28339815191529181900360200190a35050565b600033838361178382611ca2565b158015611796575061179483611ca2565b155b6117e7576040805162461bcd60e51b815260206004820152601e60248201527f4f6e65206f6620746865206163636f756e7473206172652066726f7a656e0000604482015290519081900360640190fd5b60045460f81b600160f91b1615611858576001600160a01b03831660009081526003602052604090205460f81b600160f91b908116146118585760405162461bcd60e51b8152600401808060200182810382526022815260200180611f086022913960400191505060405180910390fd5b60045460f81b600160f81b16156118c9576001600160a01b03821660009081526003602052604090205460f81b600160f81b908116146118c95760405162461bcd60e51b8152600401808060200182810382526024815260200180611ea86024913960400191505060405180910390fd5b6001600160a01b038616158015906118ea57506001600160a01b0386163014155b6118f357600080fd5b336000908152600a6020526040902054611913908663ffffffff611df216565b336000908152600a6020526040808220929092556001600160a01b03881681522054611945908663ffffffff611e4f16565b6001600160a01b0387166000818152600a6020908152604091829020939093558051888152905191923392600080516020611ff28339815191529281900390910190a350600195945050505050565b6000546001600160a01b031633146119dd5760405162461bcd60e51b815260040180806020018281038252603181526020018061203b6031913960400191505060405180910390fd5b6001600160a01b03166000908152600260205260409020805460ff19169055565b60045460009060f81b600160f91b9081161415611a42576001600160a01b03831660009081526003602052604090205460f81b600160f91b90811614611a42576001015b60045460f81b600160f81b9081161415611a83576001600160a01b03841660009081526003602052604090205460f81b600160f81b90811614611a83576002015b6001600160a01b03841660009081526003602052604090205460f81b600160fa1b9081161415611ab1576004015b6001600160a01b03831660009081526003602052604090205460f81b600160fa1b9081161415611adf576008015b81611ae98561126c565b1015611af3576010015b6004546001600160f81b031960f89190911b908116600160fb1b919091161415611b1b576020015b9392505050565b600080546001600160a01b03163314611b6c5760405162461bcd60e51b815260040180806020018281038252603181526020018061203b6031913960400191505060405180910390fd5b600080546040805163a9059cbb60e01b81526001600160a01b0392831660048201526024810186905290519186169263a9059cbb926044808401936020939083900390910190829087803b158015611bc357600080fd5b505af1158015611bd7573d6000803e3d6000fd5b505050506040513d6020811015611bed57600080fd5b505190505b92915050565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205490565b3360009081526002602052604090205460ff16611c715760405162461bcd60e51b8152600401808060200182810382526025815260200180611f7d6025913960400191505060405180910390fd5b6001600160a01b03166000908152600360205260409020805460f881811b600160f91b17901c60ff19909116179055565b6001600160a01b031660009081526003602052604090205460f81b600160fa1b9081161490565b6000546001600160a01b03163314611d125760405162461bcd60e51b815260040180806020018281038252603181526020018061203b6031913960400191505060405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526002602052604090205460ff16611d825760405162461bcd60e51b8152600401808060200182810382526025815260200180611f7d6025913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460f81b600160f91b9081161415610f0d576001600160a01b03166000908152600360205260409020805460ff198116600160f91b60f892831b1890911c179055565b60026020526000908152604090205460ff1681565b600082821115611e49576040805162461bcd60e51b815260206004820152601a60248201527f526573756c742063616e206e6f74206265206e65676174697665000000000000604482015290519081900360640190fd5b50900390565b81810182811015611bf2576040805162461bcd60e51b815260206004820152601b60248201527f43616e206e6f7420616464206e656761746976652076616c7565730000000000604482015290519081900360640190fdfe526563656976696e67206163636f756e74206973206e6f742077686974656c6973746564426f74682053656e64696e6720616e6420726563656976696e67206164647265737320686173206e6f74206265656e204b594320417070726f76656453656e64696e67206163636f756e74206973206e6f742077686974656c6973746564526563656976696e67206164647265737320686173206e6f74206265656e204b594320417070726f76656446726f6d204163636f756e742069732046726f7a656e2c20636f6e746163742070726f76696465724f6e6c79206d616e61676572732063616e20706572666f726d207468697320616374696f6e546f204163636f756e742069732046726f7a656e2c20636f6e746163742070726f7669646572436f6e747261637420546f6b656e2069732050617573656420666f7220616c6c207472616e7366657273ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef53656e64696e67206164647265737320686173206e6f74206265656e204b594320417070726f7665644f6e6c792074686520636f6e7472616374206f776e65722063616e206578656375746520746869732066756e6374696f6e45524332303a2070726576656e74206275726e2066726f6d2061207a65726f2061646472657373a265627a7a7231582072452b3fd5473186b7cf6e20b851cfe37318740c69f167c3d8631e36ecb6d0ba64736f6c63430005110032
Deployed Bytecode
0x60806040526004361061020f5760003560e01c80637f4ab1dd11610118578063ac18de43116100a0578063e00a1e8b1161006f578063e00a1e8b14610824578063e583983614610857578063f2fde38b1461088a578063f8465534146108bd578063fdff9b4d146108f05761020f565b8063ac18de431461073a578063d4ce14151461076d578063dc39d06d146107b0578063dd62ed3e146107e95761020f565b80638d1fdf2f116100e75780638d1fdf2f1461066b5780638da5cb5b1461069e57806395d89b41146106b35780639dc29fac146106c8578063a9059cbb146107015761020f565b80637f4ab1dd146105c557806383cfab42146105f25780638456cb5914610625578063893d20e81461063a5761020f565b80632d06177a1161019b57806340c10f191161016a57806340c10f19146104fb57806340cb2de41461053457806346f5f09e1461056857806370a082311461057d57806379ba5097146105b05761020f565b80632d06177a14610438578063313ce5671461046b578063372c12b1146104965780633eaaf86b146104e65761020f565b806323b872dd116101e257806323b872dd146103295780632583cfef1461036c57806326a5a5541461039f57806327029357146103d257806327e235e3146104055761020f565b8063046f7da21461021457806306fdde031461022b578063095ea7b3146102b557806318160ddd14610302575b600080fd5b34801561022057600080fd5b50610229610923565b005b34801561023757600080fd5b506102406109a4565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561027a578181015183820152602001610262565b50505050905090810190601f1680156102a75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102c157600080fd5b506102ee600480360360408110156102d857600080fd5b506001600160a01b038135169060200135610a32565b604080519115158252519081900360200190f35b34801561030e57600080fd5b50610317610bf0565b60408051918252519081900360200190f35b34801561033557600080fd5b506102ee6004803603606081101561034c57600080fd5b506001600160a01b03813581169160208101359091169060400135610c33565b34801561037857600080fd5b506102296004803603602081101561038f57600080fd5b50356001600160a01b0316610ead565b3480156103ab57600080fd5b50610229600480360360208110156103c257600080fd5b50356001600160a01b0316610f10565b3480156103de57600080fd5b50610229600480360360208110156103f557600080fd5b50356001600160a01b0316610fb9565b34801561041157600080fd5b506103176004803603602081101561042857600080fd5b50356001600160a01b0316611038565b34801561044457600080fd5b506102296004803603602081101561045b57600080fd5b50356001600160a01b031661104a565b34801561047757600080fd5b506104806110b7565b6040805160ff9092168252519081900360200190f35b3480156104a257600080fd5b506104c9600480360360208110156104b957600080fd5b50356001600160a01b03166110c0565b604080516001600160f81b03199092168252519081900360200190f35b3480156104f257600080fd5b506103176110d5565b34801561050757600080fd5b506102296004803603604081101561051e57600080fd5b506001600160a01b0381351690602001356110db565b34801561054057600080fd5b506102296004803603602081101561055757600080fd5b50356001600160f81b031916611204565b34801561057457600080fd5b506104c9611263565b34801561058957600080fd5b50610317600480360360208110156105a057600080fd5b50356001600160a01b031661126c565b3480156105bc57600080fd5b50610229611287565b3480156105d157600080fd5b50610240600480360360208110156105e857600080fd5b503560ff166112f8565b3480156105fe57600080fd5b506102296004803603602081101561061557600080fd5b50356001600160a01b031661146d565b34801561063157600080fd5b50610229611511565b34801561064657600080fd5b5061064f611569565b604080516001600160a01b039092168252519081900360200190f35b34801561067757600080fd5b506102296004803603602081101561068e57600080fd5b50356001600160a01b0316611578565b3480156106aa57600080fd5b5061064f6115f2565b3480156106bf57600080fd5b50610240611601565b3480156106d457600080fd5b50610229600480360360408110156106eb57600080fd5b506001600160a01b03813516906020013561165c565b34801561070d57600080fd5b506102ee6004803603604081101561072457600080fd5b506001600160a01b038135169060200135611775565b34801561074657600080fd5b506102296004803603602081101561075d57600080fd5b50356001600160a01b0316611994565b34801561077957600080fd5b506104806004803603606081101561079057600080fd5b506001600160a01b038135811691602081013590911690604001356119fe565b3480156107bc57600080fd5b506102ee600480360360408110156107d357600080fd5b506001600160a01b038135169060200135611b22565b3480156107f557600080fd5b506103176004803603604081101561080c57600080fd5b506001600160a01b0381358116916020013516611bf8565b34801561083057600080fd5b506102296004803603602081101561084757600080fd5b50356001600160a01b0316611c23565b34801561086357600080fd5b506102ee6004803603602081101561087a57600080fd5b50356001600160a01b0316611ca2565b34801561089657600080fd5b50610229600480360360208110156108ad57600080fd5b50356001600160a01b0316611cc9565b3480156108c957600080fd5b50610229600480360360208110156108e057600080fd5b50356001600160a01b0316611d34565b3480156108fc57600080fd5b506102ee6004803603602081101561091357600080fd5b50356001600160a01b0316611ddd565b6000546001600160a01b0316331461096c5760405162461bcd60e51b815260040180806020018281038252603181526020018061203b6031913960400191505060405180910390fd5b60045460f81b6001600160f81b031916600160fb1b14156109a2576004805460f881811b600160fb1b18901c60ff199091161790555b565b6006805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610a2a5780601f106109ff57610100808354040283529160200191610a2a565b820191906000526020600020905b815481529060010190602001808311610a0d57829003601f168201915b505050505081565b6000338383610a4082611ca2565b158015610a535750610a5183611ca2565b155b610aa4576040805162461bcd60e51b815260206004820152601e60248201527f4f6e65206f6620746865206163636f756e7473206172652066726f7a656e0000604482015290519081900360640190fd5b60045460f81b600160f91b1615610b15576001600160a01b03831660009081526003602052604090205460f81b600160f91b90811614610b155760405162461bcd60e51b8152600401808060200182810382526022815260200180611f086022913960400191505060405180910390fd5b60045460f81b600160f81b1615610b86576001600160a01b03821660009081526003602052604090205460f81b600160f81b90811614610b865760405162461bcd60e51b8152600401808060200182810382526024815260200180611ea86024913960400191505060405180910390fd5b336000818152600b602090815260408083206001600160a01b038b1680855290835292819020899055805189815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600195945050505050565b6000808052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e354600854610c2e9163ffffffff611df216565b905090565b6000838383610c4182611ca2565b158015610c545750610c5283611ca2565b155b610ca5576040805162461bcd60e51b815260206004820152601e60248201527f4f6e65206f6620746865206163636f756e7473206172652066726f7a656e0000604482015290519081900360640190fd5b60045460f81b600160f91b1615610d16576001600160a01b03831660009081526003602052604090205460f81b600160f91b90811614610d165760405162461bcd60e51b8152600401808060200182810382526022815260200180611f086022913960400191505060405180910390fd5b60045460f81b600160f81b1615610d87576001600160a01b03821660009081526003602052604090205460f81b600160f81b90811614610d875760405162461bcd60e51b8152600401808060200182810382526024815260200180611ea86024913960400191505060405180910390fd5b6001600160a01b03861615801590610da857506001600160a01b0386163014155b610db157600080fd5b6001600160a01b0387166000908152600a6020526040902054610dda908663ffffffff611df216565b6001600160a01b0388166000908152600a6020908152604080832093909355600b815282822033835290522054610e17908663ffffffff611df216565b6001600160a01b038089166000908152600b602090815260408083203384528252808320949094559189168152600a9091522054610e5b908663ffffffff611e4f16565b6001600160a01b038088166000818152600a602090815260409182902094909455805189815290519193928b1692600080516020611ff283398151915292918290030190a35060019695505050505050565b3360009081526002602052604090205460ff16610efb5760405162461bcd60e51b8152600401808060200182810382526025815260200180611f7d6025913960400191505060405180910390fd5b610f0481611d34565b610f0d81610f10565b50565b3360009081526002602052604090205460ff16610f5e5760405162461bcd60e51b8152600401808060200182810382526025815260200180611f7d6025913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460f81b600160f81b9081161415610f0d576001600160a01b03166000908152600360205260409020805460ff198116600160f81b60f892831b1890911c179055565b3360009081526002602052604090205460ff166110075760405162461bcd60e51b8152600401808060200182810382526025815260200180611f7d6025913960400191505060405180910390fd5b6001600160a01b03166000908152600360205260409020805460f881811b600160f81b17901c60ff19909116179055565b600a6020526000908152604090205481565b6000546001600160a01b031633146110935760405162461bcd60e51b815260040180806020018281038252603181526020018061203b6031913960400191505060405180910390fd5b6001600160a01b03166000908152600260205260409020805460ff19166001179055565b60075460ff1681565b60036020526000908152604090205460f81b81565b60085481565b6000546001600160a01b031633146111245760405162461bcd60e51b815260040180806020018281038252603181526020018061203b6031913960400191505060405180910390fd5b6001600160a01b03821661117f576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600854611192908263ffffffff611e4f16565b6008556001600160a01b0382166000908152600a60205260409020546111be908263ffffffff611e4f16565b6001600160a01b0383166000818152600a60209081526040808320949094558351858152935192939192600080516020611ff28339815191529281900390910190a35050565b6000546001600160a01b0316331461124d5760405162461bcd60e51b815260040180806020018281038252603181526020018061203b6031913960400191505060405180910390fd5b6004805460ff191660f89290921c919091179055565b60045460f81b90565b6001600160a01b03166000908152600a602052604090205490565b6001546001600160a01b0316331461129e57600080fd5b60018054600080546001600160a01b038084166001600160a01b031992831617808455919093169093556040519092909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3565b60606040518060400160405280601081526020016f151c985b9cd9995c88105b1b1bddd95960821b815250905060208260ff1610611350576040518060600160405280602a8152602001611fc8602a91399050611468565b60108260ff1610611395575060408051808201909152601c81527f496e73756666696369656e742042616c616e636520746f2073656e64000000006020820152611468565b60088260ff16106113c057604051806060016040528060268152602001611fa2602691399050611468565b60048260ff16106113eb57604051806060016040528060288152602001611f55602891399050611468565b60038260ff1610611416576040518060600160405280603c8152602001611ecc603c91399050611468565b60028260ff1610611441576040518060600160405280602b8152602001611f2a602b91399050611468565b60018260ff1610611468576040518060600160405280602981526020016120126029913990505b919050565b6000546001600160a01b031633146114b65760405162461bcd60e51b815260040180806020018281038252603181526020018061203b6031913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460f81b600160fa1b9081161415610f0d576001600160a01b03166000908152600360205260409020805460ff198116600160fa1b60f892831b1890911c179055565b6000546001600160a01b0316331461155a5760405162461bcd60e51b815260040180806020018281038252603181526020018061203b6031913960400191505060405180910390fd5b6004805460ff19166008179055565b6000546001600160a01b031690565b6000546001600160a01b031633146115c15760405162461bcd60e51b815260040180806020018281038252603181526020018061203b6031913960400191505060405180910390fd5b6001600160a01b03166000908152600360205260409020805460f881811b600160fa1b17901c60ff19909116179055565b6000546001600160a01b031681565b6005805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610a2a5780601f106109ff57610100808354040283529160200191610a2a565b6000546001600160a01b031633146116a55760405162461bcd60e51b815260040180806020018281038252603181526020018061203b6031913960400191505060405180910390fd5b6001600160a01b0382166116ea5760405162461bcd60e51b815260040180806020018281038252602781526020018061206c6027913960400191505060405180910390fd5b6001600160a01b0382166000908152600a6020526040902054611713908263ffffffff611df216565b6001600160a01b0383166000908152600a602052604090205560085461173f908263ffffffff611df216565b6008556040805182815290516000916001600160a01b03851691600080516020611ff28339815191529181900360200190a35050565b600033838361178382611ca2565b158015611796575061179483611ca2565b155b6117e7576040805162461bcd60e51b815260206004820152601e60248201527f4f6e65206f6620746865206163636f756e7473206172652066726f7a656e0000604482015290519081900360640190fd5b60045460f81b600160f91b1615611858576001600160a01b03831660009081526003602052604090205460f81b600160f91b908116146118585760405162461bcd60e51b8152600401808060200182810382526022815260200180611f086022913960400191505060405180910390fd5b60045460f81b600160f81b16156118c9576001600160a01b03821660009081526003602052604090205460f81b600160f81b908116146118c95760405162461bcd60e51b8152600401808060200182810382526024815260200180611ea86024913960400191505060405180910390fd5b6001600160a01b038616158015906118ea57506001600160a01b0386163014155b6118f357600080fd5b336000908152600a6020526040902054611913908663ffffffff611df216565b336000908152600a6020526040808220929092556001600160a01b03881681522054611945908663ffffffff611e4f16565b6001600160a01b0387166000818152600a6020908152604091829020939093558051888152905191923392600080516020611ff28339815191529281900390910190a350600195945050505050565b6000546001600160a01b031633146119dd5760405162461bcd60e51b815260040180806020018281038252603181526020018061203b6031913960400191505060405180910390fd5b6001600160a01b03166000908152600260205260409020805460ff19169055565b60045460009060f81b600160f91b9081161415611a42576001600160a01b03831660009081526003602052604090205460f81b600160f91b90811614611a42576001015b60045460f81b600160f81b9081161415611a83576001600160a01b03841660009081526003602052604090205460f81b600160f81b90811614611a83576002015b6001600160a01b03841660009081526003602052604090205460f81b600160fa1b9081161415611ab1576004015b6001600160a01b03831660009081526003602052604090205460f81b600160fa1b9081161415611adf576008015b81611ae98561126c565b1015611af3576010015b6004546001600160f81b031960f89190911b908116600160fb1b919091161415611b1b576020015b9392505050565b600080546001600160a01b03163314611b6c5760405162461bcd60e51b815260040180806020018281038252603181526020018061203b6031913960400191505060405180910390fd5b600080546040805163a9059cbb60e01b81526001600160a01b0392831660048201526024810186905290519186169263a9059cbb926044808401936020939083900390910190829087803b158015611bc357600080fd5b505af1158015611bd7573d6000803e3d6000fd5b505050506040513d6020811015611bed57600080fd5b505190505b92915050565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205490565b3360009081526002602052604090205460ff16611c715760405162461bcd60e51b8152600401808060200182810382526025815260200180611f7d6025913960400191505060405180910390fd5b6001600160a01b03166000908152600360205260409020805460f881811b600160f91b17901c60ff19909116179055565b6001600160a01b031660009081526003602052604090205460f81b600160fa1b9081161490565b6000546001600160a01b03163314611d125760405162461bcd60e51b815260040180806020018281038252603181526020018061203b6031913960400191505060405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526002602052604090205460ff16611d825760405162461bcd60e51b8152600401808060200182810382526025815260200180611f7d6025913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460f81b600160f91b9081161415610f0d576001600160a01b03166000908152600360205260409020805460ff198116600160f91b60f892831b1890911c179055565b60026020526000908152604090205460ff1681565b600082821115611e49576040805162461bcd60e51b815260206004820152601a60248201527f526573756c742063616e206e6f74206265206e65676174697665000000000000604482015290519081900360640190fd5b50900390565b81810182811015611bf2576040805162461bcd60e51b815260206004820152601b60248201527f43616e206e6f7420616464206e656761746976652076616c7565730000000000604482015290519081900360640190fdfe526563656976696e67206163636f756e74206973206e6f742077686974656c6973746564426f74682053656e64696e6720616e6420726563656976696e67206164647265737320686173206e6f74206265656e204b594320417070726f76656453656e64696e67206163636f756e74206973206e6f742077686974656c6973746564526563656976696e67206164647265737320686173206e6f74206265656e204b594320417070726f76656446726f6d204163636f756e742069732046726f7a656e2c20636f6e746163742070726f76696465724f6e6c79206d616e61676572732063616e20706572666f726d207468697320616374696f6e546f204163636f756e742069732046726f7a656e2c20636f6e746163742070726f7669646572436f6e747261637420546f6b656e2069732050617573656420666f7220616c6c207472616e7366657273ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef53656e64696e67206164647265737320686173206e6f74206265656e204b594320417070726f7665644f6e6c792074686520636f6e7472616374206f776e65722063616e206578656375746520746869732066756e6374696f6e45524332303a2070726576656e74206275726e2066726f6d2061207a65726f2061646472657373a265627a7a7231582072452b3fd5473186b7cf6e20b851cfe37318740c69f167c3d8631e36ecb6d0ba64736f6c63430005110032
Deployed Bytecode Sourcemap
8847:9211:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14747:8;;;7938:201;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7938:201:0;;;:::i;:::-;;8961:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8961:19:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8961:19:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11880:241;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11880:241:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11880:241:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;10505:116;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10505:116:0;;;:::i;:::-;;;;;;;;;;;;;;;;12280:614;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12280:614:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12280:614:0;;;;;;;;;;;;;;;;;:::i;7088:165::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7088:165:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7088:165:0;-1:-1:-1;;;;;7088:165:0;;:::i;6836:244::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6836:244:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6836:244:0;-1:-1:-1;;;;;6836:244:0;;:::i;6334:162::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6334:162:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6334:162:0;-1:-1:-1;;;;;6334:162:0;;:::i;9086:40::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9086:40:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9086:40:0;-1:-1:-1;;;;;9086:40:0;;:::i;4557:113::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4557:113:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4557:113:0;-1:-1:-1;;;;;4557:113:0;;:::i;8987:21::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8987:21:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5535:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5535:43:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5535:43:0;-1:-1:-1;;;;;5535:43:0;;:::i;:::-;;;;-1:-1:-1;;;;;;5535:43:0;;;;;;;;;;;;;;9015:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9015:24:0;;;:::i;13581:313::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13581:313:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;13581:313:0;;;;;;;;:::i;8390:98::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8390:98:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8390:98:0;-1:-1:-1;;;;;;8390:98:0;;:::i;8496:90::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8496:90:0;;;:::i;10765:105::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10765:105:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10765:105:0;-1:-1:-1;;;;;10765:105:0;;:::i;4047:198::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4047:198:0;;;:::i;17032:1023::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17032:1023:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17032:1023:0;;;;:::i;7561:260::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7561:260:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7561:260:0;-1:-1:-1;;;;;7561:260:0;;:::i;7829:101::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7829:101:0;;;:::i;4253:83::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4253:83:0;;;:::i;:::-;;;;-1:-1:-1;;;;;4253:83:0;;;;;;;;;;;;;;7417:136;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7417:136:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7417:136:0;-1:-1:-1;;;;;7417:136:0;;:::i;3483:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3483:20:0;;;:::i;8934:::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8934:20:0;;;:::i;14266:317::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14266:317:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;14266:317:0;;;;;;;;:::i;11245:431::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11245:431:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11245:431:0;;;;;;;;:::i;4678:117::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4678:117:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4678:117:0;-1:-1:-1;;;;;4678:117:0;;:::i;15379:1452::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15379:1452:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;15379:1452:0;;;;;;;;;;;;;;;;;:::i;14933:184::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14933:184:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;14933:184:0;;;;;;;;:::i;13107:127::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13107:127:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;13107:127:0;;;;;;;;;;:::i;6167:159::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6167:159:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6167:159:0;-1:-1:-1;;;;;6167:159:0;;:::i;5976:183::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5976:183:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5976:183:0;-1:-1:-1;;;;;5976:183:0;;:::i;3885:104::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3885:104:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3885:104:0;-1:-1:-1;;;;;3885:104:0;;:::i;6504:324::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6504:324:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6504:324:0;-1:-1:-1;;;;;6504:324:0;;:::i;4376:40::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4376:40:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4376:40:0;-1:-1:-1;;;;;4376:40:0;;:::i;7938:201::-;3798:5;;-1:-1:-1;;;;;3798:5:0;3784:10;:19;3776:81;;;;-1:-1:-1;;;3776:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8017:8;;;;-1:-1:-1;;;;;;7990:35:0;-1:-1:-1;;;7990:35:0;7986:146;;;8074:8;;;8085:23;8074:8;;;-1:-1:-1;;;8074:34:0;8063:45;;-1:-1:-1;;8063:45:0;;;;;;7986:146;7938:201::o;8961:19::-;;;;;;;;;;;;;;;-1:-1:-1;;8961:19:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11880:241::-;11986:4;11949:10;11961:7;11970:5;9679:13;9688:3;9679:8;:13::i;:::-;9678:14;:34;;;;;9697:15;9706:5;9697:8;:15::i;:::-;9696:16;9678:34;9670:77;;;;;-1:-1:-1;;;9670:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9790:8;;9801:23;9790:8;-1:-1:-1;;;9790:34:0;9789:41;9785:261;;-1:-1:-1;;;;;9934:16:0;;;;;;:9;:16;;;;;;9953:23;9934:16;-1:-1:-1;;;9934:42:0;;;9906:71;9898:118;;;;-1:-1:-1;;;9898:118:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10061:8;;10072:23;10061:8;-1:-1:-1;;;10061:34:0;10060:41;10056:261;;-1:-1:-1;;;;;10206:14:0;;;;;;:9;:14;;;;;;10223:23;10206:14;-1:-1:-1;;;10206:40:0;;;10178:69;10170:117;;;;-1:-1:-1;;;10170:117:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12011:10;12003:19;;;;:7;:19;;;;;;;;-1:-1:-1;;;;;12003:28:0;;;;;;;;;;;;:36;;;12055;;;;;;;12003:28;;12011:10;12055:36;;;;;;;;;;;-1:-1:-1;12109:4:0;;11880:241;-1:-1:-1;;;;;11880:241:0:o;10505:116::-;10551:4;10592:20;;;:8;:20;;;;10575:12;;:38;;;:16;:38;:::i;:::-;10568:45;;10505:116;:::o;12280:614::-;12395:4;12366:5;12373:3;12378:6;9679:13;9688:3;9679:8;:13::i;:::-;9678:14;:34;;;;;9697:15;9706:5;9697:8;:15::i;:::-;9696:16;9678:34;9670:77;;;;;-1:-1:-1;;;9670:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9790:8;;9801:23;9790:8;-1:-1:-1;;;9790:34:0;9789:41;9785:261;;-1:-1:-1;;;;;9934:16:0;;;;;;:9;:16;;;;;;9953:23;9934:16;-1:-1:-1;;;9934:42:0;;;9906:71;9898:118;;;;-1:-1:-1;;;9898:118:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10061:8;;10072:23;10061:8;-1:-1:-1;;;10061:34:0;10060:41;10056:261;;-1:-1:-1;;;;;10206:14:0;;;;;;:9;:14;;;;;;10223:23;10206:14;-1:-1:-1;;;10206:40:0;;;10178:69;10170:117;;;;-1:-1:-1;;;10170:117:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12528:17:0;;;;;;12527:45;;-1:-1:-1;;;;;;12551:20:0;;12566:4;12551:20;;12527:45;12519:54;;;;;;-1:-1:-1;;;;;12663:15:0;;;;;;:8;:15;;;;;;:27;;12683:6;12663:27;:19;:27;:::i;:::-;-1:-1:-1;;;;;12645:15:0;;;;;;:8;:15;;;;;;;;:45;;;;12730:7;:14;;;;;12745:10;12730:26;;;;;;:38;;12761:6;12730:38;:30;:38;:::i;:::-;-1:-1:-1;;;;;12701:14:0;;;;;;;:7;:14;;;;;;;;12716:10;12701:26;;;;;;;:67;;;;12795:13;;;;;:8;:13;;;;;:25;;12813:6;12795:25;:17;:25;:::i;:::-;-1:-1:-1;;;;;12779:13:0;;;;;;;:8;:13;;;;;;;;;:41;;;;12836:28;;;;;;;12779:13;;12836:28;;;;-1:-1:-1;;;;;;;;;;;12836:28:0;;;;;;;;-1:-1:-1;12882:4:0;;12280:614;-1:-1:-1;;;;;;12280:614:0:o;7088:165::-;4476:10;4467:20;;;;:8;:20;;;;;;;;4459:70;;;;-1:-1:-1;;;4459:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7179:26;7201:3;7179:21;:26::i;:::-;7216:29;7241:3;7216:24;:29::i;:::-;7088:165;:::o;6836:244::-;4476:10;4467:20;;;;:8;:20;;;;;;;;4459:70;;;;-1:-1:-1;;;4459:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6945:14:0;;;;;;:9;:14;;;;;;6962:23;6945:14;-1:-1:-1;;;6945:40:0;;;6917:69;6913:160;;;-1:-1:-1;;;;;7021:14:0;;;;;:9;:14;;;;;;;-1:-1:-1;;7004:57:0;;-1:-1:-1;;;7038:23:0;7021:14;;;:40;7004:57;;;;;;6836:244::o;6334:162::-;4476:10;4467:20;;;;:8;:20;;;;;;;;4459:70;;;;-1:-1:-1;;;4459:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6425:14:0;;;;;:9;:14;;;;;;;6442:23;6425:14;;;-1:-1:-1;;;6425:40:0;6408:57;;-1:-1:-1;;6408:57:0;;;;;;6334:162::o;9086:40::-;;;;;;;;;;;;;:::o;4557:113::-;3798:5;;-1:-1:-1;;;;;3798:5:0;3784:10;:19;3776:81;;;;-1:-1:-1;;;3776:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4631:24:0;;;;;:8;:24;;;;;:31;;-1:-1:-1;;4631:31:0;4658:4;4631:31;;;4557:113::o;8987:21::-;;;;;;:::o;5535:43::-;;;;;;;;;;;;;;;:::o;9015:24::-;;;;:::o;13581:313::-;3798:5;;-1:-1:-1;;;;;3798:5:0;3784:10;:19;3776:81;;;;-1:-1:-1;;;3776:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13664:21:0;;13656:65;;;;;-1:-1:-1;;;13656:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13749:12;;:24;;13766:6;13749:24;:16;:24;:::i;:::-;13734:12;:39;-1:-1:-1;;;;;13804:17:0;;;;;;:8;:17;;;;;;:29;;13826:6;13804:29;:21;:29;:::i;:::-;-1:-1:-1;;;;;13784:17:0;;;;;;:8;:17;;;;;;;;:49;;;;13849:37;;;;;;;13784:17;;;;-1:-1:-1;;;;;;;;;;;13849:37:0;;;;;;;;;13581:313;;:::o;8390:98::-;3798:5;;-1:-1:-1;;;;;3798:5:0;3784:10;:19;3776:81;;;;-1:-1:-1;;;3776:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8461:8;:19;;-1:-1:-1;;8461:19:0;;;;;;;;;;;;8390:98::o;8496:90::-;8570:8;;;;8496:90;:::o;10765:105::-;-1:-1:-1;;;;;10847:15:0;10820:7;10847:15;;;:8;:15;;;;;;;10765:105::o;4047:198::-;4116:8;;-1:-1:-1;;;;;4116:8:0;4102:10;:22;4094:31;;;;;;4144:8;;;;4136:16;;-1:-1:-1;;;;;4144:8:0;;;-1:-1:-1;;;;;;4136:16:0;;;;;;;4163:21;;;;;;;4200:37;;4144:8;;4221:5;;;;4200:37;;4144:8;;4200:37;4047:198::o;17032:1023::-;17117:22;17152:29;;;;;;;;;;;;;-1:-1:-1;;;17152:29:0;;;;;17247:2;17227:16;:22;;;17223:799;;17266:55;;;;;;;;;;;;;;;;;;;17223:799;;;17363:2;17343:16;:22;;;17339:683;;-1:-1:-1;17382:41:0;;;;;;;;;;;;;;;;;17339:683;;;17465:1;17445:16;:21;;;17441:581;;17483:51;;;;;;;;;;;;;;;;;;;17441:581;;;17576:1;17556:16;:21;;;17552:470;;17594:53;;;;;;;;;;;;;;;;;;;17552:470;;;17689:1;17669:16;:21;;;17665:357;;17707:73;;;;;;;;;;;;;;;;;;;17665:357;;;17822:1;17802:16;:21;;;17798:224;;17840:56;;;;;;;;;;;;;;;;;;;17798:224;;;17938:1;17918:16;:21;;;17914:108;;17956:54;;;;;;;;;;;;;;;;;;;17914:108;17032:1023;;;:::o;7561:260::-;3798:5;;-1:-1:-1;;;;;3798:5:0;3784:10;:19;3776:81;;;;-1:-1:-1;;;3776:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7654:14:0;;;;;;:9;:14;;;;;;7671:23;7654:14;-1:-1:-1;;;7654:40:0;;;7626:70;7622:192;;;-1:-1:-1;;;;;7750:14:0;;;;;:9;:14;;;;;;;-1:-1:-1;;7733:57:0;;-1:-1:-1;;;7767:23:0;7750:14;;;:40;7733:57;;;;;;7561:260::o;7829:101::-;3798:5;;-1:-1:-1;;;;;3798:5:0;3784:10;:19;3776:81;;;;-1:-1:-1;;;3776:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7876:8;:34;;-1:-1:-1;;7876:34:0;5928:4;7876:34;;;7829:101::o;4253:83::-;4296:7;4323:5;-1:-1:-1;;;;;4323:5:0;4253:83;:::o;7417:136::-;3798:5;;-1:-1:-1;;;;;3798:5:0;3784:10;:19;3776:81;;;;-1:-1:-1;;;3776:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7493:14:0;;;;;:9;:14;;;;;;;7510:23;7493:14;;;-1:-1:-1;;;7493:40:0;7476:57;;-1:-1:-1;;7476:57:0;;;;;;7417:136::o;3483:20::-;;;-1:-1:-1;;;;;3483:20:0;;:::o;8934:::-;;;;;;;;;;;;;;;-1:-1:-1;;8934:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14266:317;3798:5;;-1:-1:-1;;;;;3798:5:0;3784:10;:19;3776:81;;;;-1:-1:-1;;;3776:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14348:21:0;;14340:73;;;;-1:-1:-1;;;14340:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14446:17:0;;;;;;:8;:17;;;;;;:28;;14468:5;14446:28;:21;:28;:::i;:::-;-1:-1:-1;;;;;14426:17:0;;;;;;:8;:17;;;;;:48;14500:12;;:23;;14517:5;14500:23;:16;:23;:::i;:::-;14485:12;:38;14539:36;;;;;;;;14565:1;;-1:-1:-1;;;;;14539:36:0;;;-1:-1:-1;;;;;;;;;;;14539:36:0;;;;;;;;14266:317;;:::o;11245:431::-;11347:4;11313:10;11325:3;11330:6;9679:13;9688:3;9679:8;:13::i;:::-;9678:14;:34;;;;;9697:15;9706:5;9697:8;:15::i;:::-;9696:16;9678:34;9670:77;;;;;-1:-1:-1;;;9670:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9790:8;;9801:23;9790:8;-1:-1:-1;;;9790:34:0;9789:41;9785:261;;-1:-1:-1;;;;;9934:16:0;;;;;;:9;:16;;;;;;9953:23;9934:16;-1:-1:-1;;;9934:42:0;;;9906:71;9898:118;;;;-1:-1:-1;;;9898:118:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10061:8;;10072:23;10061:8;-1:-1:-1;;;10061:34:0;10060:41;10056:261;;-1:-1:-1;;;;;10206:14:0;;;;;;:9;:14;;;;;;10223:23;10206:14;-1:-1:-1;;;10206:40:0;;;10178:69;10170:117;;;;-1:-1:-1;;;10170:117:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11373:17:0;;;;;;11372:45;;-1:-1:-1;;;;;;11396:20:0;;11411:4;11396:20;;11372:45;11364:54;;;;;;11522:10;11513:20;;;;:8;:20;;;;;;:32;;11538:6;11513:32;:24;:32;:::i;:::-;11499:10;11490:20;;;;:8;:20;;;;;;:55;;;;-1:-1:-1;;;;;11572:13:0;;;;;;:25;;11590:6;11572:25;:17;:25;:::i;:::-;-1:-1:-1;;;;;11556:13:0;;;;;;:8;:13;;;;;;;;;:41;;;;11613:33;;;;;;;11556:13;;11622:10;;-1:-1:-1;;;;;;;;;;;11613:33:0;;;;;;;;;-1:-1:-1;11664:4:0;;11245:431;-1:-1:-1;;;;;11245:431:0:o;4678:117::-;3798:5;;-1:-1:-1;;;;;3798:5:0;3784:10;:19;3776:81;;;;-1:-1:-1;;;3776:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4755:24:0;4782:5;4755:24;;;:8;:24;;;;;:32;;-1:-1:-1;;4755:32:0;;;4678:117::o;15379:1452::-;15601:8;;15480:21;;15612:23;15601:8;-1:-1:-1;;;15601:34:0;;;15573:63;15568:304;;;-1:-1:-1;;;;;15712:14:0;;;;;;:9;:14;;;;;;15729:23;15712:14;-1:-1:-1;;;15712:40:0;;;15684:69;15678:183;;15821:1;15802:20;15678:183;15914:8;;15925:23;15914:8;-1:-1:-1;;;15914:34:0;;;15886:63;15882:283;;;-1:-1:-1;;;;;16027:16:0;;;;;;:9;:16;;;;;;16046:23;16027:16;-1:-1:-1;;;16027:42:0;;;15999:71;15993:161;;16111:1;16092:20;15993:161;-1:-1:-1;;;;;16208:16:0;;;;;;:9;:16;;;;;;16227:23;16208:16;-1:-1:-1;;;16208:42:0;;;16180:71;16175:166;;;16308:1;16289:20;16175:166;-1:-1:-1;;;;;16384:14:0;;;;;;:9;:14;;;;;;16401:23;16384:14;-1:-1:-1;;;16384:40:0;;;16356:69;16351:166;;;16482:1;16463:20;16351:166;16552:6;16533:16;16543:5;16533:9;:16::i;:::-;:25;16529:112;;;16594:2;16575:21;16529:112;16670:8;;-1:-1:-1;;;;;;16681:23:0;16670:8;;;;16657:48;;;-1:-1:-1;;;16670:34:0;;;;16657:48;16653:136;;;16742:2;16723:21;16653:136;15379:1452;;;;;:::o;14933:184::-;15025:12;3798:5;;-1:-1:-1;;;;;3798:5:0;3784:10;:19;3776:81;;;;-1:-1:-1;;;3776:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15095:5;;;15057:52;;;-1:-1:-1;;;15057:52:0;;-1:-1:-1;;;;;15095:5:0;;;15057:52;;;;;;;;;;;;:37;;;;;;:52;;;;;;;;;;;;;;;;;:37;:52;;;5:2:-1;;;;30:1;27;20:12;5:2;15057:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15057:52:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15057:52:0;;-1:-1:-1;3868:1:0;14933:184;;;;:::o;13107:127::-;-1:-1:-1;;;;;13203:14:0;;;13179:4;13203:14;;;:7;:14;;;;;;;;:23;;;;;;;;;;;;;13107:127::o;6167:159::-;4476:10;4467:20;;;;:8;:20;;;;;;;;4459:70;;;;-1:-1:-1;;;4459:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6255:14:0;;;;;:9;:14;;;;;;;6272:23;6255:14;;;-1:-1:-1;;;6255:40:0;6238:57;;-1:-1:-1;;6238:57:0;;;;;;6167:159::o;5976:183::-;-1:-1:-1;;;;;6086:19:0;6033:4;6086:19;;;:9;:19;;;;;;6108:23;6086:19;-1:-1:-1;;;6086:45:0;;;6058:74;;5976:183::o;3885:104::-;3798:5;;-1:-1:-1;;;;;3798:5:0;3784:10;:19;3776:81;;;;-1:-1:-1;;;3776:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3961:8;:20;;-1:-1:-1;;;;;;3961:20:0;-1:-1:-1;;;;;3961:20:0;;;;;;;;;;3885:104::o;6504:324::-;4476:10;4467:20;;;;:8;:20;;;;;;;;4459:70;;;;-1:-1:-1;;;4459:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6610:14:0;;;;;;:9;:14;;;;;;6627:23;6610:14;-1:-1:-1;;;6610:40:0;;;6582:69;6578:243;;;-1:-1:-1;;;;;6734:14:0;;;;;:9;:14;;;;;;;-1:-1:-1;;6717:57:0;;-1:-1:-1;;;6751:23:0;6734:14;;;:40;6717:57;;;;;;6504:324::o;4376:40::-;;;;;;;;;;;;;;;:::o;1584:131::-;1636:6;1668:1;1663;:6;;1655:45;;;;;-1:-1:-1;;;1655:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1706:5:0;;;1584:131::o;1448:130::-;1523:5;;;1538:6;;;;1530:45;;;;;-1:-1:-1;;;1530:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;
Swarm Source
bzzr://72452b3fd5473186b7cf6e20b851cfe37318740c69f167c3d8631e36ecb6d0ba
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.