ETH Price: $3,405.04 (+4.72%)

Token

Deuterium (d2O)
 

Overview

Max Total Supply

107.29527946126799084 d2O

Holders

44

Market

Price

$0.78 @ 0.000229 ETH

Onchain Market Cap

$83.59

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.0156959328552 d2O

Value
$0.01 ( ~2.93682218655527E-06 Eth) [0.0146%]
0xe71f2708641fb72fb9926ddc4434bab9c6427570
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

d2o makes it easy to move liquidity between blockchain networks. It is pegged to USD via a redeemable stablecoin collateral pool. d2o can can be moved to other sovereign blockchains as a native token through a cross-chain messaging protocol.

Market

Volume (24H):$5.74
Market Capitalization:$0.00
Circulating Supply:0.00 d2O
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
d2O

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 2000 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2023-01-10
*/

// SPDX-License-Identifier: AGPL-3.0-or-later

/// d2O.sol -- d2O token

pragma solidity ^0.8.7;

contract d2O {
    address public ArchAdmin;
    mapping (address => uint256) public admins;

    // --- ERC20 Data ---
    string  public constant name     = "Deuterium";
    string  public constant symbol   = "d2O";
    string  public constant version  = "1";
    uint8   public constant decimals = 18;
    uint256 public totalSupply;
    uint256 public live;
    uint256 public transferBlockWait;           //Amount of blocks to wait before user can transfer d2O after minting cross-chain
    uint256 public lockupTriggerAmt;            //d2O amount where lockup will kick in after cross-chain transfer

    mapping (address => uint256)                        public balanceOf;
    mapping (address => mapping (address => uint256))   public allowance;
    mapping (address => uint256)                        public nonces;
    mapping (address => uint256)                        public transferBlockRelease;    //Block number after which user is able to transfer d2O

    // --- Events ---
    event Rely(address indexed usr);
    event Deny(address indexed usr);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event TransferBlockWait(uint256 blockWait);
    event TransferBlockUpdate(address indexed user, uint256 blockNumer);
    event LockupTriggerAmount(uint256 amount);
    event Cage(uint256 status);
    

    // --- EIP712 niceties ---
    uint256 public immutable deploymentChainId;
    bytes32 private immutable _DOMAIN_SEPARATOR;
    bytes32 public constant PERMIT_TYPEHASH = keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");

    modifier auth {
        require(admins[msg.sender] == 1, "d2O/not-authorized");
        _;
    }

    modifier alive {
        require(live == 1, "d2O/not-live");
        _;
    }

    constructor() {
        live = 1;
        admins[msg.sender] = 1;
        ArchAdmin = msg.sender;
        emit Rely(msg.sender);

        deploymentChainId = block.chainid;
        _DOMAIN_SEPARATOR = _calculateDomainSeparator(block.chainid);
    }

    function _calculateDomainSeparator(uint256 chainId) private view returns (bytes32) {
        return keccak256(
            abi.encode(
                keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"),
                keccak256(bytes(name)),
                keccak256(bytes(version)),
                chainId,
                address(this)
            )
        );
    }

    function DOMAIN_SEPARATOR() external view returns (bytes32) {
        return block.chainid == deploymentChainId ? _DOMAIN_SEPARATOR : _calculateDomainSeparator(block.chainid);
    }

    // --- Administration ---

    function setArchAdmin(address newArch) external auth {
        require(ArchAdmin == msg.sender && newArch != address(0), "d2O/Must be ArchAdmin");
        ArchAdmin = newArch;
        admins[ArchAdmin] = 1;
    }

    function rely(address usr) external auth {
        admins[usr] = 1;
        emit Rely(usr);
    }

    function deny(address usr) external auth {
        require(usr != ArchAdmin, "d2O/ArchAdmin cannot lose admin - update ArchAdmin to another address");
        admins[usr] = 0;
        emit Deny(usr);
    }

    function cage(uint256 _live) external auth {
        live = _live;
        emit Cage(_live);
    }

    function setTransferBlockWait(uint256 num) external auth {
        transferBlockWait = num;
        emit TransferBlockWait(transferBlockWait);
    }

    function setTransferBlockRelease(address user, uint256 blockNumber) external auth {
        transferBlockRelease[user] = blockNumber;
        emit TransferBlockUpdate(user, blockNumber);
    }

    function setLockupTriggerAmount(uint256 amount) external auth {
        lockupTriggerAmt = amount;
        emit LockupTriggerAmount(amount);
    }

    // --- ERC20 Mutations ---
    function transfer(address to, uint256 value) external alive returns (bool) {
        require(to != address(0) && to != address(this), "d2O/invalid-address");
        require(block.number > transferBlockRelease[msg.sender], "d2O/transfer too soon after cross-chain mint");
        uint256 balance = balanceOf[msg.sender];
        require(balance >= value, "d2O/insufficient-balance");

        unchecked {
            balanceOf[msg.sender] = balance - value;
            balanceOf[to] += value;
        }

        emit Transfer(msg.sender, to, value);

        return true;
    }

    function transferFrom(address from, address to, uint256 value) external alive returns (bool) {
        require(to != address(0) && to != address(this), "d2O/invalid-address");
        require(block.number > transferBlockRelease[from], "d2O/transfer too soon after cross-chain mint");
        uint256 balance = balanceOf[from];
        require(balance >= value, "d2O/insufficient-balance");

        if (from != msg.sender) {
            uint256 allowed = allowance[from][msg.sender];
            if (allowed != type(uint256).max) {
                require(allowed >= value, "d2O/insufficient-allowance");

                unchecked {
                    allowance[from][msg.sender] = allowed - value;
                }
            }
        }

        unchecked {
            balanceOf[from] = balance - value;
            balanceOf[to] += value;
        }

        emit Transfer(from, to, value);

        return true;
    }

    function approve(address spender, uint256 value) external returns (bool) {
        allowance[msg.sender][spender] = value;

        emit Approval(msg.sender, spender, value);

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) external returns (bool) {
        uint256 newValue = allowance[msg.sender][spender] + addedValue;
        allowance[msg.sender][spender] = newValue;

        emit Approval(msg.sender, spender, newValue);

        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) {
        return _decreaseAllowance(msg.sender, spender, subtractedValue);
    }
    
    function decreaseAllowanceAdmin(address owner, address spender, uint256 subtractedValue) external auth returns (bool) {
        return _decreaseAllowance(owner, spender, subtractedValue);
    } 

    function _decreaseAllowance(address owner, address spender, uint256 subtractedValue) internal returns (bool) {
        uint256 allowed = allowance[owner][spender];
        require(allowed >= subtractedValue, "d2O/insufficient-allowance");
        unchecked{
            allowed = allowed - subtractedValue;
        }
        allowance[owner][spender] = allowed;

        emit Approval(owner, spender, allowed);

        return true;
    }

    // --- Mint/Burn ---
    function mint(address to, uint256 value) external auth {
        _mint(to, value);
    }

    function mintAndDelay(address to, uint256 value) external auth {
        if(value > lockupTriggerAmt){
            transferBlockRelease[to] = block.number + transferBlockWait;
        }
        _mint(to, value);
    }

    function _mint(address to, uint256 value) internal alive {
        require(to != address(0) && to != address(this), "d2O/invalid-address");
        unchecked {
            balanceOf[to] = balanceOf[to] + value; // note: we don't need an overflow check here b/c balanceOf[to] <= totalSupply and there is an overflow check below
        }
        totalSupply = totalSupply + value;

        emit Transfer(address(0), to, value);
    }

    function burn(address from, uint256 value) external alive {
        uint256 balance = balanceOf[from];
        require(balance >= value, "d2O/insufficient-balance");
        require(block.number > transferBlockRelease[from] || admins[msg.sender] == 1, "d2O/burn too soon after cross-chain mint");

        if (from != msg.sender && admins[msg.sender] != 1) {
            uint256 allowed = allowance[from][msg.sender];
            if (allowed != type(uint256).max) {
                require(allowed >= value, "d2O/insufficient-allowance");

                unchecked {
                    allowance[from][msg.sender] = allowed - value;
                }
            }
        }

        unchecked {
            balanceOf[from] = balance - value; // note: we don't need overflow checks b/c require(balance >= value) and balance <= totalSupply
            totalSupply     = totalSupply - value;
        }

        emit Transfer(from, address(0), value);
    }

    // --- Approve by signature ---
    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external {
        require(block.timestamp <= deadline, "d2O/permit-expired");

        uint256 nonce;
        unchecked { nonce = nonces[owner]++; }

        bytes32 digest =
            keccak256(abi.encodePacked(
                "\x19\x01",
                block.chainid == deploymentChainId ? _DOMAIN_SEPARATOR : _calculateDomainSeparator(block.chainid),
                keccak256(abi.encode(
                    PERMIT_TYPEHASH,
                    owner,
                    spender,
                    value,
                    nonce,
                    deadline
                ))
            ));

        require(owner != address(0) && owner == ecrecover(digest, v, r, s), "d2O/invalid-permit");

        allowance[owner][spender] = value;
        emit Approval(owner, spender, value);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"status","type":"uint256"}],"name":"Cage","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Deny","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LockupTriggerAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Rely","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":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"blockNumer","type":"uint256"}],"name":"TransferBlockUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"blockWait","type":"uint256"}],"name":"TransferBlockWait","type":"event"},{"inputs":[],"name":"ArchAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"admins","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_live","type":"uint256"}],"name":"cage","outputs":[],"stateMutability":"nonpayable","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":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowanceAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"deny","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deploymentChainId","outputs":[{"internalType":"uint256","name":"","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":"live","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockupTriggerAmt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"mintAndDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"rely","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newArch","type":"address"}],"name":"setArchAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setLockupTriggerAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"setTransferBlockRelease","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"setTransferBlockWait","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":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"transferBlockRelease","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transferBlockWait","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"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"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]

60c060405234801561001057600080fd5b5060016003819055336000818152602083905260408082209390935580546001600160a01b03191682178155915190917fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a6091a2466080818152604080518082018252600981526844657574657269756d60b81b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527ff838ba4b5ae9a050396267e9a79ee03fc8b9660cce54859dec267079792101fd818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152928301939093523060a0808401919091528151808403909101815260c09092019052805191012060a05260805160a051611d93610173600039600081816109fa015261161e015260008181610520015281816108ed01526115120152611d936000f3fe608060405234801561001057600080fd5b50600436106102265760003560e01c80637ecebe001161012a578063a9059cbb116100bd578063cd0d00961161008c578063dd62ed3e11610071578063dd62ed3e14610555578063e2cc65c714610580578063f2bd4bbf1461059357600080fd5b8063cd0d00961461051b578063d505accf1461054257600080fd5b8063a9059cbb146104aa578063aac5185c146104bd578063babed4b1146104e8578063bb1c50ea146104fb57600080fd5b80639c52a7f1116100f95780639c52a7f11461045e5780639dc29fac14610471578063a2f91af214610484578063a457c2d71461049757600080fd5b80637ecebe00146103e65780639056cf5f14610406578063957aa58c1461041957806395d89b411461042257600080fd5b80633b2957f0116101bd57806354fd4d501161018c57806365fae35e1161017157806365fae35e146103aa57806370a08231146103bd5780637e13e9d7146103dd57600080fd5b806354fd4d5014610377578063622f08291461039757600080fd5b80633b2957f01461032657806340c10f191461032f578063429b62e5146103445780635314dc601461036457600080fd5b806330adf81f116101f957806330adf81f146102ca578063313ce567146102f15780633644e5151461030b578063395093511461031357600080fd5b806306fdde031461022b578063095ea7b31461027d57806318160ddd146102a057806323b872dd146102b7575b600080fd5b6102676040518060400160405280600981526020017f44657574657269756d000000000000000000000000000000000000000000000081525081565b6040516102749190611b79565b60405180910390f35b61029061028b366004611be3565b6105a6565b6040519015158152602001610274565b6102a960025481565b604051908152602001610274565b6102906102c5366004611c0d565b610613565b6102a97f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6102f9601281565b60405160ff9091168152602001610274565b6102a96108e9565b610290610321366004611be3565b610a1c565b6102a960045481565b61034261033d366004611be3565b610ab5565b005b6102a9610352366004611c49565b60016020526000908152604090205481565b610290610372366004611c0d565b610b18565b610267604051806040016040528060018152602001603160f81b81525081565b6103426103a5366004611c49565b610b7f565b6103426103b8366004611c49565b610c8b565b6102a96103cb366004611c49565b60066020526000908152604090205481565b6102a960055481565b6102a96103f4366004611c49565b60086020526000908152604090205481565b610342610414366004611c64565b610d27565b6102a960035481565b6102676040518060400160405280600381526020017f64324f000000000000000000000000000000000000000000000000000000000081525081565b61034261046c366004611c49565b610db8565b61034261047f366004611be3565b610efb565b610342610492366004611c64565b611184565b6102906104a5366004611be3565b61120e565b6102906104b8366004611be3565b611222565b6000546104d0906001600160a01b031681565b6040516001600160a01b039091168152602001610274565b6103426104f6366004611c64565b611413565b6102a9610509366004611c49565b60096020526000908152604090205481565b6102a97f000000000000000000000000000000000000000000000000000000000000000081565b610342610550366004611c7d565b61149d565b6102a9610563366004611cf0565b600760209081526000928352604080842090915290825290205481565b61034261058e366004611be3565b611844565b6103426105a1366004611be3565b6118d3565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106019086815260200190565b60405180910390a35060015b92915050565b600060035460011461065b5760405162461bcd60e51b815260206004820152600c60248201526b64324f2f6e6f742d6c69766560a01b60448201526064015b60405180910390fd5b6001600160a01b0383161580159061067c57506001600160a01b0383163014155b6106c85760405162461bcd60e51b815260206004820152601360248201527f64324f2f696e76616c69642d61646472657373000000000000000000000000006044820152606401610652565b6001600160a01b03841660009081526009602052604090205443116107555760405162461bcd60e51b815260206004820152602c60248201527f64324f2f7472616e7366657220746f6f20736f6f6e2061667465722063726f7360448201527f732d636861696e206d696e7400000000000000000000000000000000000000006064820152608401610652565b6001600160a01b038416600090815260066020526040902054828110156107be5760405162461bcd60e51b815260206004820152601860248201527f64324f2f696e73756666696369656e742d62616c616e636500000000000000006044820152606401610652565b6001600160a01b0385163314610876576001600160a01b03851660009081526007602090815260408083203384529091529020546000198114610874578381101561084b5760405162461bcd60e51b815260206004820152601a60248201527f64324f2f696e73756666696369656e742d616c6c6f77616e63650000000000006044820152606401610652565b6001600160a01b0386166000908152600760209081526040808320338452909152902084820390555b505b6001600160a01b0380861660008181526006602052604080822087860390559287168082529083902080548701905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906108d69087815260200190565b60405180910390a3506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146109f75750604080518082018252600981527f44657574657269756d00000000000000000000000000000000000000000000006020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527ff838ba4b5ae9a050396267e9a79ee03fc8b9660cce54859dec267079792101fd818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b507f000000000000000000000000000000000000000000000000000000000000000090565b3360009081526007602090815260408083206001600160a01b03861684529091528120548190610a4d908490611d23565b3360008181526007602090815260408083206001600160a01b038a16808552908352928190208590555184815293945090927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a35060019392505050565b3360009081526001602081905260409091205414610b0a5760405162461bcd60e51b8152602060048201526012602482015271190c93cbdb9bdd0b585d5d1a1bdc9a5e995960721b6044820152606401610652565b610b148282611981565b5050565b33600090815260016020819052604082205414610b6c5760405162461bcd60e51b8152602060048201526012602482015271190c93cbdb9bdd0b585d5d1a1bdc9a5e995960721b6044820152606401610652565b610b77848484611aa3565b949350505050565b3360009081526001602081905260409091205414610bd45760405162461bcd60e51b8152602060048201526012602482015271190c93cbdb9bdd0b585d5d1a1bdc9a5e995960721b6044820152606401610652565b6000546001600160a01b031633148015610bf657506001600160a01b03811615155b610c425760405162461bcd60e51b815260206004820152601560248201527f64324f2f4d757374206265204172636841646d696e00000000000000000000006044820152606401610652565b600080546001600160a01b039092167fffffffffffffffffffffffff00000000000000000000000000000000000000009092168217815590815260016020819052604090912055565b3360009081526001602081905260409091205414610ce05760405162461bcd60e51b8152602060048201526012602482015271190c93cbdb9bdd0b585d5d1a1bdc9a5e995960721b6044820152606401610652565b6001600160a01b038116600081815260016020819052604080832091909155517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b3360009081526001602081905260409091205414610d7c5760405162461bcd60e51b8152602060048201526012602482015271190c93cbdb9bdd0b585d5d1a1bdc9a5e995960721b6044820152606401610652565b60048190556040518181527f93e5b468f9da07b0db7acdc0da4dfd32eeadbbfb57e61629d428856ec9b22d7a906020015b60405180910390a150565b3360009081526001602081905260409091205414610e0d5760405162461bcd60e51b8152602060048201526012602482015271190c93cbdb9bdd0b585d5d1a1bdc9a5e995960721b6044820152606401610652565b6000546001600160a01b0390811690821603610eb75760405162461bcd60e51b815260206004820152604560248201527f64324f2f4172636841646d696e2063616e6e6f74206c6f73652061646d696e2060448201527f2d20757064617465204172636841646d696e20746f20616e6f7468657220616460648201527f6472657373000000000000000000000000000000000000000000000000000000608482015260a401610652565b6001600160a01b038116600081815260016020526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b600354600114610f3c5760405162461bcd60e51b815260206004820152600c60248201526b64324f2f6e6f742d6c69766560a01b6044820152606401610652565b6001600160a01b03821660009081526006602052604090205481811015610fa55760405162461bcd60e51b815260206004820152601860248201527f64324f2f696e73756666696369656e742d62616c616e636500000000000000006044820152606401610652565b6001600160a01b038316600090815260096020526040902054431180610fdb575033600090815260016020819052604090912054145b61104d5760405162461bcd60e51b815260206004820152602860248201527f64324f2f6275726e20746f6f20736f6f6e2061667465722063726f73732d636860448201527f61696e206d696e740000000000000000000000000000000000000000000000006064820152608401610652565b6001600160a01b038316331480159061107757503360009081526001602081905260409091205414155b15611124576001600160a01b0383166000908152600760209081526040808320338452909152902054600019811461112257828110156110f95760405162461bcd60e51b815260206004820152601a60248201527f64324f2f696e73756666696369656e742d616c6c6f77616e63650000000000006044820152606401610652565b6001600160a01b0384166000908152600760209081526040808320338452909152902083820390555b505b6001600160a01b03831660008181526006602090815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b33600090815260016020819052604090912054146111d95760405162461bcd60e51b8152602060048201526012602482015271190c93cbdb9bdd0b585d5d1a1bdc9a5e995960721b6044820152606401610652565b60038190556040518181527f8b2f35c645f75532175a00d9b4565154e45c8eb57ee0155e03d0958f3a4d4b8990602001610dad565b600061121b338484611aa3565b9392505050565b60006003546001146112655760405162461bcd60e51b815260206004820152600c60248201526b64324f2f6e6f742d6c69766560a01b6044820152606401610652565b6001600160a01b0383161580159061128657506001600160a01b0383163014155b6112d25760405162461bcd60e51b815260206004820152601360248201527f64324f2f696e76616c69642d61646472657373000000000000000000000000006044820152606401610652565b3360009081526009602052604090205443116113565760405162461bcd60e51b815260206004820152602c60248201527f64324f2f7472616e7366657220746f6f20736f6f6e2061667465722063726f7360448201527f732d636861696e206d696e7400000000000000000000000000000000000000006064820152608401610652565b33600090815260066020526040902054828110156113b65760405162461bcd60e51b815260206004820152601860248201527f64324f2f696e73756666696369656e742d62616c616e636500000000000000006044820152606401610652565b33600081815260066020908152604080832087860390556001600160a01b03881680845292819020805488019055518681529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610aa3565b33600090815260016020819052604090912054146114685760405162461bcd60e51b8152602060048201526012602482015271190c93cbdb9bdd0b585d5d1a1bdc9a5e995960721b6044820152606401610652565b60058190556040518181527f71b19fe37543f141c3074de019392d8a9eb84faa2ecb875434c706a07de38a9c90602001610dad565b834211156114ed5760405162461bcd60e51b815260206004820152601260248201527f64324f2f7065726d69742d6578706972656400000000000000000000000000006044820152606401610652565b6001600160a01b038716600090815260086020526040812080546001810190915590467f00000000000000000000000000000000000000000000000000000000000000001461161c57604080518082018252600981527f44657574657269756d00000000000000000000000000000000000000000000006020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527ff838ba4b5ae9a050396267e9a79ee03fc8b9660cce54859dec267079792101fd818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012061163e565b7f00000000000000000000000000000000000000000000000000000000000000005b604080517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960208201526001600160a01b03808d1692820192909252908a1660608201526080810189905260a0810184905260c0810188905260e001604051602081830303815290604052805190602001206040516020016116f29291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b60408051601f19818403018152919052805160209091012090506001600160a01b03891615801590611791575060408051600081526020810180835283905260ff871691810191909152606081018590526080810184905260019060a0016020604051602081039080840390855afa158015611772573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b0316145b6117dd5760405162461bcd60e51b815260206004820152601260248201527f64324f2f696e76616c69642d7065726d697400000000000000000000000000006044820152606401610652565b6001600160a01b038981166000818152600760209081526040808320948d16808452948252918290208b905590518a81527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050505050505050565b33600090815260016020819052604090912054146118995760405162461bcd60e51b8152602060048201526012602482015271190c93cbdb9bdd0b585d5d1a1bdc9a5e995960721b6044820152606401610652565b600554811115610b0a576004546118b09043611d23565b6001600160a01b038316600090815260096020526040902055610b148282611981565b33600090815260016020819052604090912054146119285760405162461bcd60e51b8152602060048201526012602482015271190c93cbdb9bdd0b585d5d1a1bdc9a5e995960721b6044820152606401610652565b6001600160a01b03821660008181526009602052604090819020839055517fdddba73c10478848936b4de3bb31b86169c4c4147c9e9f9f2699906c36b94298906119759084815260200190565b60405180910390a25050565b6003546001146119c25760405162461bcd60e51b815260206004820152600c60248201526b64324f2f6e6f742d6c69766560a01b6044820152606401610652565b6001600160a01b038216158015906119e357506001600160a01b0382163014155b611a2f5760405162461bcd60e51b815260206004820152601360248201527f64324f2f696e76616c69642d61646472657373000000000000000000000000006044820152606401610652565b6001600160a01b0382166000908152600660205260409020805482019055600254611a5b908290611d23565b6002556040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b03808416600090815260076020908152604080832093861683529290529081205482811015611b1b5760405162461bcd60e51b815260206004820152601a60248201527f64324f2f696e73756666696369656e742d616c6c6f77616e63650000000000006044820152606401610652565b6001600160a01b03858116600081815260076020908152604080832094891680845294825291829020948790039485905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591016108d6565b600060208083528351808285015260005b81811015611ba657858101830151858201604001528201611b8a565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611bde57600080fd5b919050565b60008060408385031215611bf657600080fd5b611bff83611bc7565b946020939093013593505050565b600080600060608486031215611c2257600080fd5b611c2b84611bc7565b9250611c3960208501611bc7565b9150604084013590509250925092565b600060208284031215611c5b57600080fd5b61121b82611bc7565b600060208284031215611c7657600080fd5b5035919050565b600080600080600080600060e0888a031215611c9857600080fd5b611ca188611bc7565b9650611caf60208901611bc7565b95506040880135945060608801359350608088013560ff81168114611cd357600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215611d0357600080fd5b611d0c83611bc7565b9150611d1a60208401611bc7565b90509250929050565b8082018082111561060d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220469673a87d0f5c5ea5325306c5df232ac7ff0eb2d797f44fd6070ae9ffadbb2664736f6c63430008110033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102265760003560e01c80637ecebe001161012a578063a9059cbb116100bd578063cd0d00961161008c578063dd62ed3e11610071578063dd62ed3e14610555578063e2cc65c714610580578063f2bd4bbf1461059357600080fd5b8063cd0d00961461051b578063d505accf1461054257600080fd5b8063a9059cbb146104aa578063aac5185c146104bd578063babed4b1146104e8578063bb1c50ea146104fb57600080fd5b80639c52a7f1116100f95780639c52a7f11461045e5780639dc29fac14610471578063a2f91af214610484578063a457c2d71461049757600080fd5b80637ecebe00146103e65780639056cf5f14610406578063957aa58c1461041957806395d89b411461042257600080fd5b80633b2957f0116101bd57806354fd4d501161018c57806365fae35e1161017157806365fae35e146103aa57806370a08231146103bd5780637e13e9d7146103dd57600080fd5b806354fd4d5014610377578063622f08291461039757600080fd5b80633b2957f01461032657806340c10f191461032f578063429b62e5146103445780635314dc601461036457600080fd5b806330adf81f116101f957806330adf81f146102ca578063313ce567146102f15780633644e5151461030b578063395093511461031357600080fd5b806306fdde031461022b578063095ea7b31461027d57806318160ddd146102a057806323b872dd146102b7575b600080fd5b6102676040518060400160405280600981526020017f44657574657269756d000000000000000000000000000000000000000000000081525081565b6040516102749190611b79565b60405180910390f35b61029061028b366004611be3565b6105a6565b6040519015158152602001610274565b6102a960025481565b604051908152602001610274565b6102906102c5366004611c0d565b610613565b6102a97f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6102f9601281565b60405160ff9091168152602001610274565b6102a96108e9565b610290610321366004611be3565b610a1c565b6102a960045481565b61034261033d366004611be3565b610ab5565b005b6102a9610352366004611c49565b60016020526000908152604090205481565b610290610372366004611c0d565b610b18565b610267604051806040016040528060018152602001603160f81b81525081565b6103426103a5366004611c49565b610b7f565b6103426103b8366004611c49565b610c8b565b6102a96103cb366004611c49565b60066020526000908152604090205481565b6102a960055481565b6102a96103f4366004611c49565b60086020526000908152604090205481565b610342610414366004611c64565b610d27565b6102a960035481565b6102676040518060400160405280600381526020017f64324f000000000000000000000000000000000000000000000000000000000081525081565b61034261046c366004611c49565b610db8565b61034261047f366004611be3565b610efb565b610342610492366004611c64565b611184565b6102906104a5366004611be3565b61120e565b6102906104b8366004611be3565b611222565b6000546104d0906001600160a01b031681565b6040516001600160a01b039091168152602001610274565b6103426104f6366004611c64565b611413565b6102a9610509366004611c49565b60096020526000908152604090205481565b6102a97f000000000000000000000000000000000000000000000000000000000000000181565b610342610550366004611c7d565b61149d565b6102a9610563366004611cf0565b600760209081526000928352604080842090915290825290205481565b61034261058e366004611be3565b611844565b6103426105a1366004611be3565b6118d3565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106019086815260200190565b60405180910390a35060015b92915050565b600060035460011461065b5760405162461bcd60e51b815260206004820152600c60248201526b64324f2f6e6f742d6c69766560a01b60448201526064015b60405180910390fd5b6001600160a01b0383161580159061067c57506001600160a01b0383163014155b6106c85760405162461bcd60e51b815260206004820152601360248201527f64324f2f696e76616c69642d61646472657373000000000000000000000000006044820152606401610652565b6001600160a01b03841660009081526009602052604090205443116107555760405162461bcd60e51b815260206004820152602c60248201527f64324f2f7472616e7366657220746f6f20736f6f6e2061667465722063726f7360448201527f732d636861696e206d696e7400000000000000000000000000000000000000006064820152608401610652565b6001600160a01b038416600090815260066020526040902054828110156107be5760405162461bcd60e51b815260206004820152601860248201527f64324f2f696e73756666696369656e742d62616c616e636500000000000000006044820152606401610652565b6001600160a01b0385163314610876576001600160a01b03851660009081526007602090815260408083203384529091529020546000198114610874578381101561084b5760405162461bcd60e51b815260206004820152601a60248201527f64324f2f696e73756666696369656e742d616c6c6f77616e63650000000000006044820152606401610652565b6001600160a01b0386166000908152600760209081526040808320338452909152902084820390555b505b6001600160a01b0380861660008181526006602052604080822087860390559287168082529083902080548701905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906108d69087815260200190565b60405180910390a3506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000146146109f75750604080518082018252600981527f44657574657269756d00000000000000000000000000000000000000000000006020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527ff838ba4b5ae9a050396267e9a79ee03fc8b9660cce54859dec267079792101fd818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b507fbd0201d3d0b5856904e1daad7a88df94d83d04a9663a09d28e1ea6afaf35312090565b3360009081526007602090815260408083206001600160a01b03861684529091528120548190610a4d908490611d23565b3360008181526007602090815260408083206001600160a01b038a16808552908352928190208590555184815293945090927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a35060019392505050565b3360009081526001602081905260409091205414610b0a5760405162461bcd60e51b8152602060048201526012602482015271190c93cbdb9bdd0b585d5d1a1bdc9a5e995960721b6044820152606401610652565b610b148282611981565b5050565b33600090815260016020819052604082205414610b6c5760405162461bcd60e51b8152602060048201526012602482015271190c93cbdb9bdd0b585d5d1a1bdc9a5e995960721b6044820152606401610652565b610b77848484611aa3565b949350505050565b3360009081526001602081905260409091205414610bd45760405162461bcd60e51b8152602060048201526012602482015271190c93cbdb9bdd0b585d5d1a1bdc9a5e995960721b6044820152606401610652565b6000546001600160a01b031633148015610bf657506001600160a01b03811615155b610c425760405162461bcd60e51b815260206004820152601560248201527f64324f2f4d757374206265204172636841646d696e00000000000000000000006044820152606401610652565b600080546001600160a01b039092167fffffffffffffffffffffffff00000000000000000000000000000000000000009092168217815590815260016020819052604090912055565b3360009081526001602081905260409091205414610ce05760405162461bcd60e51b8152602060048201526012602482015271190c93cbdb9bdd0b585d5d1a1bdc9a5e995960721b6044820152606401610652565b6001600160a01b038116600081815260016020819052604080832091909155517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b3360009081526001602081905260409091205414610d7c5760405162461bcd60e51b8152602060048201526012602482015271190c93cbdb9bdd0b585d5d1a1bdc9a5e995960721b6044820152606401610652565b60048190556040518181527f93e5b468f9da07b0db7acdc0da4dfd32eeadbbfb57e61629d428856ec9b22d7a906020015b60405180910390a150565b3360009081526001602081905260409091205414610e0d5760405162461bcd60e51b8152602060048201526012602482015271190c93cbdb9bdd0b585d5d1a1bdc9a5e995960721b6044820152606401610652565b6000546001600160a01b0390811690821603610eb75760405162461bcd60e51b815260206004820152604560248201527f64324f2f4172636841646d696e2063616e6e6f74206c6f73652061646d696e2060448201527f2d20757064617465204172636841646d696e20746f20616e6f7468657220616460648201527f6472657373000000000000000000000000000000000000000000000000000000608482015260a401610652565b6001600160a01b038116600081815260016020526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b600354600114610f3c5760405162461bcd60e51b815260206004820152600c60248201526b64324f2f6e6f742d6c69766560a01b6044820152606401610652565b6001600160a01b03821660009081526006602052604090205481811015610fa55760405162461bcd60e51b815260206004820152601860248201527f64324f2f696e73756666696369656e742d62616c616e636500000000000000006044820152606401610652565b6001600160a01b038316600090815260096020526040902054431180610fdb575033600090815260016020819052604090912054145b61104d5760405162461bcd60e51b815260206004820152602860248201527f64324f2f6275726e20746f6f20736f6f6e2061667465722063726f73732d636860448201527f61696e206d696e740000000000000000000000000000000000000000000000006064820152608401610652565b6001600160a01b038316331480159061107757503360009081526001602081905260409091205414155b15611124576001600160a01b0383166000908152600760209081526040808320338452909152902054600019811461112257828110156110f95760405162461bcd60e51b815260206004820152601a60248201527f64324f2f696e73756666696369656e742d616c6c6f77616e63650000000000006044820152606401610652565b6001600160a01b0384166000908152600760209081526040808320338452909152902083820390555b505b6001600160a01b03831660008181526006602090815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b33600090815260016020819052604090912054146111d95760405162461bcd60e51b8152602060048201526012602482015271190c93cbdb9bdd0b585d5d1a1bdc9a5e995960721b6044820152606401610652565b60038190556040518181527f8b2f35c645f75532175a00d9b4565154e45c8eb57ee0155e03d0958f3a4d4b8990602001610dad565b600061121b338484611aa3565b9392505050565b60006003546001146112655760405162461bcd60e51b815260206004820152600c60248201526b64324f2f6e6f742d6c69766560a01b6044820152606401610652565b6001600160a01b0383161580159061128657506001600160a01b0383163014155b6112d25760405162461bcd60e51b815260206004820152601360248201527f64324f2f696e76616c69642d61646472657373000000000000000000000000006044820152606401610652565b3360009081526009602052604090205443116113565760405162461bcd60e51b815260206004820152602c60248201527f64324f2f7472616e7366657220746f6f20736f6f6e2061667465722063726f7360448201527f732d636861696e206d696e7400000000000000000000000000000000000000006064820152608401610652565b33600090815260066020526040902054828110156113b65760405162461bcd60e51b815260206004820152601860248201527f64324f2f696e73756666696369656e742d62616c616e636500000000000000006044820152606401610652565b33600081815260066020908152604080832087860390556001600160a01b03881680845292819020805488019055518681529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610aa3565b33600090815260016020819052604090912054146114685760405162461bcd60e51b8152602060048201526012602482015271190c93cbdb9bdd0b585d5d1a1bdc9a5e995960721b6044820152606401610652565b60058190556040518181527f71b19fe37543f141c3074de019392d8a9eb84faa2ecb875434c706a07de38a9c90602001610dad565b834211156114ed5760405162461bcd60e51b815260206004820152601260248201527f64324f2f7065726d69742d6578706972656400000000000000000000000000006044820152606401610652565b6001600160a01b038716600090815260086020526040812080546001810190915590467f00000000000000000000000000000000000000000000000000000000000000011461161c57604080518082018252600981527f44657574657269756d00000000000000000000000000000000000000000000006020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527ff838ba4b5ae9a050396267e9a79ee03fc8b9660cce54859dec267079792101fd818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012061163e565b7fbd0201d3d0b5856904e1daad7a88df94d83d04a9663a09d28e1ea6afaf3531205b604080517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960208201526001600160a01b03808d1692820192909252908a1660608201526080810189905260a0810184905260c0810188905260e001604051602081830303815290604052805190602001206040516020016116f29291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b60408051601f19818403018152919052805160209091012090506001600160a01b03891615801590611791575060408051600081526020810180835283905260ff871691810191909152606081018590526080810184905260019060a0016020604051602081039080840390855afa158015611772573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b0316145b6117dd5760405162461bcd60e51b815260206004820152601260248201527f64324f2f696e76616c69642d7065726d697400000000000000000000000000006044820152606401610652565b6001600160a01b038981166000818152600760209081526040808320948d16808452948252918290208b905590518a81527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050505050505050565b33600090815260016020819052604090912054146118995760405162461bcd60e51b8152602060048201526012602482015271190c93cbdb9bdd0b585d5d1a1bdc9a5e995960721b6044820152606401610652565b600554811115610b0a576004546118b09043611d23565b6001600160a01b038316600090815260096020526040902055610b148282611981565b33600090815260016020819052604090912054146119285760405162461bcd60e51b8152602060048201526012602482015271190c93cbdb9bdd0b585d5d1a1bdc9a5e995960721b6044820152606401610652565b6001600160a01b03821660008181526009602052604090819020839055517fdddba73c10478848936b4de3bb31b86169c4c4147c9e9f9f2699906c36b94298906119759084815260200190565b60405180910390a25050565b6003546001146119c25760405162461bcd60e51b815260206004820152600c60248201526b64324f2f6e6f742d6c69766560a01b6044820152606401610652565b6001600160a01b038216158015906119e357506001600160a01b0382163014155b611a2f5760405162461bcd60e51b815260206004820152601360248201527f64324f2f696e76616c69642d61646472657373000000000000000000000000006044820152606401610652565b6001600160a01b0382166000908152600660205260409020805482019055600254611a5b908290611d23565b6002556040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b03808416600090815260076020908152604080832093861683529290529081205482811015611b1b5760405162461bcd60e51b815260206004820152601a60248201527f64324f2f696e73756666696369656e742d616c6c6f77616e63650000000000006044820152606401610652565b6001600160a01b03858116600081815260076020908152604080832094891680845294825291829020948790039485905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591016108d6565b600060208083528351808285015260005b81811015611ba657858101830151858201604001528201611b8a565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611bde57600080fd5b919050565b60008060408385031215611bf657600080fd5b611bff83611bc7565b946020939093013593505050565b600080600060608486031215611c2257600080fd5b611c2b84611bc7565b9250611c3960208501611bc7565b9150604084013590509250925092565b600060208284031215611c5b57600080fd5b61121b82611bc7565b600060208284031215611c7657600080fd5b5035919050565b600080600080600080600060e0888a031215611c9857600080fd5b611ca188611bc7565b9650611caf60208901611bc7565b95506040880135945060608801359350608088013560ff81168114611cd357600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215611d0357600080fd5b611d0c83611bc7565b9150611d1a60208401611bc7565b90509250929050565b8082018082111561060d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220469673a87d0f5c5ea5325306c5df232ac7ff0eb2d797f44fd6070ae9ffadbb2664736f6c63430008110033

Deployed Bytecode Sourcemap

104:9769:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;233:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;5732:208;;;;;;:::i;:::-;;:::i;:::-;;;1251:14:1;;1244:22;1226:41;;1214:2;1199:18;5732:208:0;1086:187:1;422:26:0;;;;;;;;;1424:25:1;;;1412:2;1397:18;422:26:0;1278:177:1;4774:950:0;;;;;;:::i;:::-;;:::i;1702:137::-;;1744:95;1702:137;;378:37;;413:2;378:37;;;;;2147:4:1;2135:17;;;2117:36;;2105:2;2090:18;378:37:0;1975:184:1;2741:183:0;;;:::i;5948:302::-;;;;;;:::i;:::-;;:::i;481:32::-;;;;;;7132:90;;;;;;:::i;:::-;;:::i;:::-;;155:42;;;;;;:::i;:::-;;;;;;;;;;;;;;6445:195;;;;;;:::i;:::-;;:::i;333:38::-;;;;;;;;;;;;;;;-1:-1:-1;;;333:38:0;;;;;2965:216;;;;;;:::i;:::-;;:::i;3189:100::-;;;;;;:::i;:::-;;:::i;729:68::-;;;;;;:::i;:::-;;;;;;;;;;;;;;612:31;;;;;;879:65;;;;;;:::i;:::-;;;;;;;;;;;;;;3623:151;;;;;;:::i;:::-;;:::i;455:19::-;;;;;;286:40;;;;;;;;;;;;;;;;;;;;;3297:209;;;;;;:::i;:::-;;:::i;7908:978::-;;;;;;:::i;:::-;;:::i;3514:101::-;;;;;;:::i;:::-;;:::i;6258:175::-;;;;;;:::i;:::-;;:::i;4174:592::-;;;;;;:::i;:::-;;:::i;124:24::-;;;;;-1:-1:-1;;;;;124:24:0;;;;;;-1:-1:-1;;;;;2704:55:1;;;2686:74;;2674:2;2659:18;124:24:0;2540:226:1;3985:149:0;;;;;;:::i;:::-;;:::i;951:79::-;;;;;;:::i;:::-;;;;;;;;;;;;;;1603:42;;;;;8931:939;;;;;;:::i;:::-;;:::i;804:68::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;7230:222;;;;;;:::i;:::-;;:::i;3782:195::-;;;;;;:::i;:::-;;:::i;5732:208::-;5826:10;5799:4;5816:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;5816:30:0;;;;;;;;;;:38;;;5872:36;5799:4;;5816:30;;5872:36;;;;5849:5;1424:25:1;;1412:2;1397:18;;1278:177;5872:36:0;;;;;;;;-1:-1:-1;5928:4:0;5732:208;;;;;:::o;4774:950::-;4861:4;1989;;1997:1;1989:9;1981:34;;;;-1:-1:-1;;;1981:34:0;;3936:2:1;1981:34:0;;;3918:21:1;3975:2;3955:18;;;3948:30;-1:-1:-1;;;3994:18:1;;;3987:42;4046:18;;1981:34:0;;;;;;;;;-1:-1:-1;;;;;4886:16:0;::::1;::::0;;::::1;::::0;:39:::1;;-1:-1:-1::0;;;;;;4906:19:0;::::1;4920:4;4906:19;;4886:39;4878:71;;;::::0;-1:-1:-1;;;4878:71:0;;4277:2:1;4878:71:0::1;::::0;::::1;4259:21:1::0;4316:2;4296:18;;;4289:30;4355:21;4335:18;;;4328:49;4394:18;;4878:71:0::1;4075:343:1::0;4878:71:0::1;-1:-1:-1::0;;;;;4983:26:0;::::1;;::::0;;;:20:::1;:26;::::0;;;;;4968:12:::1;:41;4960:98;;;::::0;-1:-1:-1;;;4960:98:0;;4625:2:1;4960:98:0::1;::::0;::::1;4607:21:1::0;4664:2;4644:18;;;4637:30;4703:34;4683:18;;;4676:62;4774:14;4754:18;;;4747:42;4806:19;;4960:98:0::1;4423:408:1::0;4960:98:0::1;-1:-1:-1::0;;;;;5087:15:0;::::1;5069;5087::::0;;;:9:::1;:15;::::0;;;;;5121:16;;::::1;;5113:53;;;::::0;-1:-1:-1;;;5113:53:0;;5038:2:1;5113:53:0::1;::::0;::::1;5020:21:1::0;5077:2;5057:18;;;5050:30;5116:26;5096:18;;;5089:54;5160:18;;5113:53:0::1;4836:348:1::0;5113:53:0::1;-1:-1:-1::0;;;;;5183:18:0;::::1;5191:10;5183:18;5179:352;;-1:-1:-1::0;;;;;5236:15:0;::::1;5218;5236::::0;;;:9:::1;:15;::::0;;;;;;;5252:10:::1;5236:27:::0;;;;;;;;-1:-1:-1;;5282:28:0;::::1;5278:242;;5350:5;5339:7;:16;;5331:55;;;::::0;-1:-1:-1;;;5331:55:0;;5391:2:1;5331:55:0::1;::::0;::::1;5373:21:1::0;5430:2;5410:18;;;5403:30;5469:28;5449:18;;;5442:56;5515:18;;5331:55:0::1;5189:350:1::0;5331:55:0::1;-1:-1:-1::0;;;;;5440:15:0;::::1;;::::0;;;:9:::1;:15;::::0;;;;;;;5456:10:::1;5440:27:::0;;;;;;;5470:15;;::::1;5440:45:::0;;5278:242:::1;5203:328;5179:352;-1:-1:-1::0;;;;;5568:15:0;;::::1;;::::0;;;:9:::1;:15;::::0;;;;;5586;;::::1;5568:33:::0;;5616:13;;::::1;::::0;;;;;;;:22;;;::::1;::::0;;5667:25;;::::1;::::0;::::1;::::0;5596:5;1424:25:1;;1412:2;1397:18;;1278:177;5667:25:0::1;;;;;;;;-1:-1:-1::0;5712:4:0::1;::::0;4774:950;-1:-1:-1;;;;4774:950:0:o;2741:183::-;2792:7;2836:17;2819:13;:34;:97;;-1:-1:-1;2591:4:0;;;;;;;;;;;;;;;;;2632:7;;;;;;;;;;-1:-1:-1;;;2632:7:0;;;;2432:282;;2461:95;2432:282;;;9836:25:1;2575:22:0;9877:18:1;;;9870:34;2616:25:0;9920:18:1;;;9913:34;2902:13:0;9963:18:1;;;9956:34;2694:4:0;10006:19:1;;;;9999:84;;;;2432:282:0;;;;;;;;;;9808:19:1;;;;2432:282:0;;;2408:317;;;;;;2741:183::o;2819:97::-;-1:-1:-1;2856:17:0;;2741:183::o;5948:302::-;6076:10;6030:4;6066:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;6066:30:0;;;;;;;;;;6030:4;;6066:43;;6099:10;;6066:43;:::i;:::-;6130:10;6120:21;;;;:9;:21;;;;;;;;-1:-1:-1;;;;;6120:30:0;;;;;;;;;;;;:41;;;6179:39;1424:25:1;;;6120:41:0;;-1:-1:-1;6120:30:0;;6179:39;;1397:18:1;6179:39:0;;;;;;;;-1:-1:-1;6238:4:0;;5948:302;-1:-1:-1;;;5948:302:0:o;7132:90::-;1888:10;1881:18;;;;:6;:18;;;;;;;;;:23;1873:54;;;;-1:-1:-1;;;1873:54:0;;6030:2:1;1873:54:0;;;6012:21:1;6069:2;6049:18;;;6042:30;-1:-1:-1;;;6088:18:1;;;6081:48;6146:18;;1873:54:0;5828:342:1;1873:54:0;7198:16:::1;7204:2;7208:5;7198;:16::i;:::-;7132:90:::0;;:::o;6445:195::-;1888:10;6557:4;1881:18;;;:6;:18;;;;;;;;:23;1873:54;;;;-1:-1:-1;;;1873:54:0;;6030:2:1;1873:54:0;;;6012:21:1;6069:2;6049:18;;;6042:30;-1:-1:-1;;;6088:18:1;;;6081:48;6146:18;;1873:54:0;5828:342:1;1873:54:0;6581:51:::1;6600:5;6607:7;6616:15;6581:18;:51::i;:::-;6574:58:::0;6445:195;-1:-1:-1;;;;6445:195:0:o;2965:216::-;1888:10;1881:18;;;;:6;:18;;;;;;;;;:23;1873:54;;;;-1:-1:-1;;;1873:54:0;;6030:2:1;1873:54:0;;;6012:21:1;6069:2;6049:18;;;6042:30;-1:-1:-1;;;6088:18:1;;;6081:48;6146:18;;1873:54:0;5828:342:1;1873:54:0;3037:9:::1;::::0;-1:-1:-1;;;;;3037:9:0::1;3050:10;3037:23;:48:::0;::::1;;;-1:-1:-1::0;;;;;;3064:21:0;::::1;::::0;::::1;3037:48;3029:82;;;::::0;-1:-1:-1;;;3029:82:0;;6377:2:1;3029:82:0::1;::::0;::::1;6359:21:1::0;6416:2;6396:18;;;6389:30;6455:23;6435:18;;;6428:51;6496:18;;3029:82:0::1;6175:345:1::0;3029:82:0::1;3122:9;:19:::0;;-1:-1:-1;;;;;3122:19:0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;3152:17;;;3122:19;3152:17:::1;::::0;;;;;;;:21;2965:216::o;3189:100::-;1888:10;1881:18;;;;:6;:18;;;;;;;;;:23;1873:54;;;;-1:-1:-1;;;1873:54:0;;6030:2:1;1873:54:0;;;6012:21:1;6069:2;6049:18;;;6042:30;-1:-1:-1;;;6088:18:1;;;6081:48;6146:18;;1873:54:0;5828:342:1;1873:54:0;-1:-1:-1;;;;;3241:11:0;::::1;;::::0;;;3255:1:::1;3241:11;::::0;;;;;;;:15;;;;3272:9;::::1;::::0;3241:11;3272:9:::1;3189:100:::0;:::o;3623:151::-;1888:10;1881:18;;;;:6;:18;;;;;;;;;:23;1873:54;;;;-1:-1:-1;;;1873:54:0;;6030:2:1;1873:54:0;;;6012:21:1;6069:2;6049:18;;;6042:30;-1:-1:-1;;;6088:18:1;;;6081:48;6146:18;;1873:54:0;5828:342:1;1873:54:0;3691:17:::1;:23:::0;;;3730:36:::1;::::0;1424:25:1;;;3730:36:0::1;::::0;1412:2:1;1397:18;3730:36:0::1;;;;;;;;3623:151:::0;:::o;3297:209::-;1888:10;1881:18;;;;:6;:18;;;;;;;;;:23;1873:54;;;;-1:-1:-1;;;1873:54:0;;6030:2:1;1873:54:0;;;6012:21:1;6069:2;6049:18;;;6042:30;-1:-1:-1;;;6088:18:1;;;6081:48;6146:18;;1873:54:0;5828:342:1;1873:54:0;3364:9:::1;::::0;-1:-1:-1;;;;;3364:9:0;;::::1;3357:16:::0;;::::1;::::0;3349:98:::1;;;::::0;-1:-1:-1;;;3349:98:0;;6727:2:1;3349:98:0::1;::::0;::::1;6709:21:1::0;6766:2;6746:18;;;6739:30;6805:34;6785:18;;;6778:62;6876:34;6856:18;;;6849:62;6948:7;6927:19;;;6920:36;6973:19;;3349:98:0::1;6525:473:1::0;3349:98:0::1;-1:-1:-1::0;;;;;3458:11:0;::::1;3472:1;3458:11:::0;;;:6:::1;:11;::::0;;;;;:15;;;3489:9;::::1;::::0;3472:1;3489:9:::1;3297:209:::0;:::o;7908:978::-;1989:4;;1997:1;1989:9;1981:34;;;;-1:-1:-1;;;1981:34:0;;3936:2:1;1981:34:0;;;3918:21:1;3975:2;3955:18;;;3948:30;-1:-1:-1;;;3994:18:1;;;3987:42;4046:18;;1981:34:0;3734:336:1;1981:34:0;-1:-1:-1;;;;;7995:15:0;::::1;7977;7995::::0;;;:9:::1;:15;::::0;;;;;8029:16;;::::1;;8021:53;;;::::0;-1:-1:-1;;;8021:53:0;;5038:2:1;8021:53:0::1;::::0;::::1;5020:21:1::0;5077:2;5057:18;;;5050:30;5116:26;5096:18;;;5089:54;5160:18;;8021:53:0::1;4836:348:1::0;8021:53:0::1;-1:-1:-1::0;;;;;8108:26:0;::::1;;::::0;;;:20:::1;:26;::::0;;;;;8093:12:::1;:41;::::0;:68:::1;;-1:-1:-1::0;8145:10:0::1;8138:18;::::0;;;:6:::1;:18;::::0;;;;;;;;:23:::1;8093:68;8085:121;;;::::0;-1:-1:-1;;;8085:121:0;;7205:2:1;8085:121:0::1;::::0;::::1;7187:21:1::0;7244:2;7224:18;;;7217:30;7283:34;7263:18;;;7256:62;7354:10;7334:18;;;7327:38;7382:19;;8085:121:0::1;7003:404:1::0;8085:121:0::1;-1:-1:-1::0;;;;;8223:18:0;::::1;8231:10;8223:18;::::0;::::1;::::0;:45:::1;;-1:-1:-1::0;8252:10:0::1;8245:18;::::0;;;:6:::1;:18;::::0;;;;;;;;:23:::1;;8223:45;8219:379;;;-1:-1:-1::0;;;;;8303:15:0;::::1;8285;8303::::0;;;:9:::1;:15;::::0;;;;;;;8319:10:::1;8303:27:::0;;;;;;;;-1:-1:-1;;8349:28:0;::::1;8345:242;;8417:5;8406:7;:16;;8398:55;;;::::0;-1:-1:-1;;;8398:55:0;;5391:2:1;8398:55:0::1;::::0;::::1;5373:21:1::0;5430:2;5410:18;;;5403:30;5469:28;5449:18;;;5442:56;5515:18;;8398:55:0::1;5189:350:1::0;8398:55:0::1;-1:-1:-1::0;;;;;8507:15:0;::::1;;::::0;;;:9:::1;:15;::::0;;;;;;;8523:10:::1;8507:27:::0;;;;;;;8537:15;;::::1;8507:45:::0;;8345:242:::1;8270:328;8219:379;-1:-1:-1::0;;;;;8635:15:0;::::1;;::::0;;;:9:::1;:15;::::0;;;;;;;8653;;::::1;8635:33:::0;;8797:11:::1;::::0;;:19;;::::1;8779:37:::0;;8845:33;1424:25:1;;;8635:15:0;;;8845:33:::1;::::0;1397:18:1;8845:33:0::1;;;;;;;7966:920;7908:978:::0;;:::o;3514:101::-;1888:10;1881:18;;;;:6;:18;;;;;;;;;:23;1873:54;;;;-1:-1:-1;;;1873:54:0;;6030:2:1;1873:54:0;;;6012:21:1;6069:2;6049:18;;;6042:30;-1:-1:-1;;;6088:18:1;;;6081:48;6146:18;;1873:54:0;5828:342:1;1873:54:0;3568:4:::1;:12:::0;;;3596:11:::1;::::0;1424:25:1;;;3596:11:0::1;::::0;1412:2:1;1397:18;3596:11:0::1;1278:177:1::0;6258:175:0;6345:4;6369:56;6388:10;6400:7;6409:15;6369:18;:56::i;:::-;6362:63;6258:175;-1:-1:-1;;;6258:175:0:o;4174:592::-;4243:4;1989;;1997:1;1989:9;1981:34;;;;-1:-1:-1;;;1981:34:0;;3936:2:1;1981:34:0;;;3918:21:1;3975:2;3955:18;;;3948:30;-1:-1:-1;;;3994:18:1;;;3987:42;4046:18;;1981:34:0;3734:336:1;1981:34:0;-1:-1:-1;;;;;4268:16:0;::::1;::::0;;::::1;::::0;:39:::1;;-1:-1:-1::0;;;;;;4288:19:0;::::1;4302:4;4288:19;;4268:39;4260:71;;;::::0;-1:-1:-1;;;4260:71:0;;4277:2:1;4260:71:0::1;::::0;::::1;4259:21:1::0;4316:2;4296:18;;;4289:30;4355:21;4335:18;;;4328:49;4394:18;;4260:71:0::1;4075:343:1::0;4260:71:0::1;4386:10;4365:32;::::0;;;:20:::1;:32;::::0;;;;;4350:12:::1;:47;4342:104;;;::::0;-1:-1:-1;;;4342:104:0;;4625:2:1;4342:104:0::1;::::0;::::1;4607:21:1::0;4664:2;4644:18;;;4637:30;4703:34;4683:18;;;4676:62;4774:14;4754:18;;;4747:42;4806:19;;4342:104:0::1;4423:408:1::0;4342:104:0::1;4485:10;4457:15;4475:21:::0;;;:9:::1;:21;::::0;;;;;4515:16;;::::1;;4507:53;;;::::0;-1:-1:-1;;;4507:53:0;;5038:2:1;4507:53:0::1;::::0;::::1;5020:21:1::0;5077:2;5057:18;;;5050:30;5116:26;5096:18;;;5089:54;5160:18;;4507:53:0::1;4836:348:1::0;4507:53:0::1;4608:10;4598:21;::::0;;;:9:::1;:21;::::0;;;;;;;4622:15;;::::1;4598:39:::0;;-1:-1:-1;;;;;4652:13:0;::::1;::::0;;;;;;;:22;;;::::1;::::0;;4703:31;1424:25:1;;;4652:13:0;;4608:10;4703:31:::1;::::0;1397:18:1;4703:31:0::1;1278:177:1::0;3985:149:0;1888:10;1881:18;;;;:6;:18;;;;;;;;;:23;1873:54;;;;-1:-1:-1;;;1873:54:0;;6030:2:1;1873:54:0;;;6012:21:1;6069:2;6049:18;;;6042:30;-1:-1:-1;;;6088:18:1;;;6081:48;6146:18;;1873:54:0;5828:342:1;1873:54:0;4058:16:::1;:25:::0;;;4099:27:::1;::::0;1424:25:1;;;4099:27:0::1;::::0;1412:2:1;1397:18;4099:27:0::1;1278:177:1::0;8931:939:0;9090:8;9071:15;:27;;9063:58;;;;-1:-1:-1;;;9063:58:0;;7614:2:1;9063:58:0;;;7596:21:1;7653:2;7633:18;;;7626:30;7692:20;7672:18;;;7665:48;7730:18;;9063:58:0;7412:342:1;9063:58:0;-1:-1:-1;;;;;9178:13:0;;9134;9178;;;:6;:13;;;;;:15;;;;;;;;;9312:13;9329:17;9312:34;:97;;2591:4;;;;;;;;;;;;;;;;;2632:7;;;;;;;;;;-1:-1:-1;;;2632:7:0;;;;2432:282;;2461:95;2432:282;;;9836:25:1;2575:22:0;9877:18:1;;;9870:34;2616:25:0;9920:18:1;;;9913:34;9395:13:0;9963:18:1;;;9956:34;2694:4:0;10006:19:1;;;;9999:84;;;;2432:282:0;;;;;;;;;;9808:19:1;;;;2432:282:0;;;2408:317;;;;;9312:97;;;9349:17;9312:97;9438:212;;;1744:95;9438:212;;;8046:25:1;-1:-1:-1;;;;;8168:15:1;;;8148:18;;;8141:43;;;;8220:15;;;8200:18;;;8193:43;8252:18;;;8245:34;;;8295:19;;;8288:35;;;8339:19;;;8332:35;;;8018:19;;9438:212:0;;;;;;;;;;;;9428:223;;;;;;9248:418;;;;;;;;8648:66:1;8636:79;;8740:1;8731:11;;8724:27;;;;8776:2;8767:12;;8760:28;8813:2;8804:12;;8378:444;9248:418:0;;;;-1:-1:-1;;9248:418:0;;;;;;;;;9238:429;;9248:418;9238:429;;;;;-1:-1:-1;;;;;;9688:19:0;;;;;;:58;;-1:-1:-1;9720:26:0;;;;;;;;;;;;9054:25:1;;;9127:4;9115:17;;9095:18;;;9088:45;;;;9149:18;;;9142:34;;;9192:18;;;9185:34;;;9720:26:0;;9026:19:1;;9720:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9711:35:0;:5;-1:-1:-1;;;;;9711:35:0;;9688:58;9680:89;;;;-1:-1:-1;;;9680:89:0;;9432:2:1;9680:89:0;;;9414:21:1;9471:2;9451:18;;;9444:30;9510:20;9490:18;;;9483:48;9548:18;;9680:89:0;9230:342:1;9680:89:0;-1:-1:-1;;;;;9782:16:0;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;9831:31;;1424:25:1;;;9831:31:0;;1397:18:1;9831:31:0;;;;;;;9052:818;;8931:939;;;;;;;:::o;7230:222::-;1888:10;1881:18;;;;:6;:18;;;;;;;;;:23;1873:54;;;;-1:-1:-1;;;1873:54:0;;6030:2:1;1873:54:0;;;6012:21:1;6069:2;6049:18;;;6042:30;-1:-1:-1;;;6088:18:1;;;6081:48;6146:18;;1873:54:0;5828:342:1;1873:54:0;7315:16:::1;;7307:5;:24;7304:114;;;7389:17;::::0;7374:32:::1;::::0;:12:::1;:32;:::i;:::-;-1:-1:-1::0;;;;;7347:24:0;::::1;;::::0;;;:20:::1;:24;::::0;;;;:59;7428:16:::1;7434:2;7438:5;7428;:16::i;3782:195::-:0;1888:10;1881:18;;;;:6;:18;;;;;;;;;:23;1873:54;;;;-1:-1:-1;;;1873:54:0;;6030:2:1;1873:54:0;;;6012:21:1;6069:2;6049:18;;;6042:30;-1:-1:-1;;;6088:18:1;;;6081:48;6146:18;;1873:54:0;5828:342:1;1873:54:0;-1:-1:-1;;;;;3875:26:0;::::1;;::::0;;;:20:::1;:26;::::0;;;;;;:40;;;3931:38;::::1;::::0;::::1;::::0;3904:11;1424:25:1;;1412:2;1397:18;;1278:177;3931:38:0::1;;;;;;;;3782:195:::0;;:::o;7460:440::-;1989:4;;1997:1;1989:9;1981:34;;;;-1:-1:-1;;;1981:34:0;;3936:2:1;1981:34:0;;;3918:21:1;3975:2;3955:18;;;3948:30;-1:-1:-1;;;3994:18:1;;;3987:42;4046:18;;1981:34:0;3734:336:1;1981:34:0;-1:-1:-1;;;;;7536:16:0;::::1;::::0;;::::1;::::0;:39:::1;;-1:-1:-1::0;;;;;;7556:19:0;::::1;7570:4;7556:19;;7536:39;7528:71;;;::::0;-1:-1:-1;;;7528:71:0;;4277:2:1;7528:71:0::1;::::0;::::1;4259:21:1::0;4316:2;4296:18;;;4289:30;4355:21;4335:18;;;4328:49;4394:18;;7528:71:0::1;4075:343:1::0;7528:71:0::1;-1:-1:-1::0;;;;;7651:13:0;::::1;;::::0;;;:9:::1;:13;::::0;;;;;;:21;::::1;7635:37:::0;;7824:11:::1;::::0;:19:::1;::::0;7667:5;;7824:19:::1;:::i;:::-;7810:11;:33:::0;7861:31:::1;::::0;1424:25:1;;;-1:-1:-1;;;;;7861:31:0;::::1;::::0;7878:1:::1;::::0;7861:31:::1;::::0;1412:2:1;1397:18;7861:31:0::1;;;;;;;7460:440:::0;;:::o;6649:449::-;-1:-1:-1;;;;;6787:16:0;;;6752:4;6787:16;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;6831:26;;;;6823:65;;;;-1:-1:-1;;;6823:65:0;;5391:2:1;6823:65:0;;;5373:21:1;5430:2;5410:18;;;5403:30;5469:28;5449:18;;;5442:56;5515:18;;6823:65:0;5189:350:1;6823:65:0;-1:-1:-1;;;;;6980:16:0;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;6933;;;;6980:35;;;;7033:33;;1424:25:1;;;7033:33:0;;1397:18:1;7033:33:0;1278:177:1;14:607;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;612:2;-1:-1:-1;;537:2:1;529:6;525:15;521:88;510:9;506:104;502:113;494:121;;;;14:607;;;;:::o;626:196::-;694:20;;-1:-1:-1;;;;;743:54:1;;733:65;;723:93;;812:1;809;802:12;723:93;626:196;;;:::o;827:254::-;895:6;903;956:2;944:9;935:7;931:23;927:32;924:52;;;972:1;969;962:12;924:52;995:29;1014:9;995:29;:::i;:::-;985:39;1071:2;1056:18;;;;1043:32;;-1:-1:-1;;;827:254:1:o;1460:328::-;1537:6;1545;1553;1606:2;1594:9;1585:7;1581:23;1577:32;1574:52;;;1622:1;1619;1612:12;1574:52;1645:29;1664:9;1645:29;:::i;:::-;1635:39;;1693:38;1727:2;1716:9;1712:18;1693:38;:::i;:::-;1683:48;;1778:2;1767:9;1763:18;1750:32;1740:42;;1460:328;;;;;:::o;2164:186::-;2223:6;2276:2;2264:9;2255:7;2251:23;2247:32;2244:52;;;2292:1;2289;2282:12;2244:52;2315:29;2334:9;2315:29;:::i;2355:180::-;2414:6;2467:2;2455:9;2446:7;2442:23;2438:32;2435:52;;;2483:1;2480;2473:12;2435:52;-1:-1:-1;2506:23:1;;2355:180;-1:-1:-1;2355:180:1:o;2771:693::-;2882:6;2890;2898;2906;2914;2922;2930;2983:3;2971:9;2962:7;2958:23;2954:33;2951:53;;;3000:1;2997;2990:12;2951:53;3023:29;3042:9;3023:29;:::i;:::-;3013:39;;3071:38;3105:2;3094:9;3090:18;3071:38;:::i;:::-;3061:48;;3156:2;3145:9;3141:18;3128:32;3118:42;;3207:2;3196:9;3192:18;3179:32;3169:42;;3261:3;3250:9;3246:19;3233:33;3306:4;3299:5;3295:16;3288:5;3285:27;3275:55;;3326:1;3323;3316:12;3275:55;2771:693;;;;-1:-1:-1;2771:693:1;;;;3349:5;3401:3;3386:19;;3373:33;;-1:-1:-1;3453:3:1;3438:19;;;3425:33;;2771:693;-1:-1:-1;;2771:693:1:o;3469:260::-;3537:6;3545;3598:2;3586:9;3577:7;3573:23;3569:32;3566:52;;;3614:1;3611;3604:12;3566:52;3637:29;3656:9;3637:29;:::i;:::-;3627:39;;3685:38;3719:2;3708:9;3704:18;3685:38;:::i;:::-;3675:48;;3469:260;;;;;:::o;5544:279::-;5609:9;;;5630:10;;;5627:190;;;5673:77;5670:1;5663:88;5774:4;5771:1;5764:15;5802:4;5799:1;5792:15

Swarm Source

ipfs://469673a87d0f5c5ea5325306c5df232ac7ff0eb2d797f44fd6070ae9ffadbb26
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.