ETH Price: $3,294.89 (-3.82%)
Gas: 7 Gwei

Contract

0x2FdA8c6783Aa36BeD645baD28a4cDC8769dCD252
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

TokenTracker

Deuterium (d2O) (@$0.7791)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Approve199861282024-05-31 0:07:1133 days ago1717114031IN
DAM Finance: d2O Token
0 ETH0.000243618.36103519
Approve197864472024-05-03 1:55:4761 days ago1714701347IN
DAM Finance: d2O Token
0 ETH0.000269315.82462237
Approve197794152024-05-02 2:19:4762 days ago1714616387IN
DAM Finance: d2O Token
0 ETH0.000161995.55980686
Approve197441292024-04-27 3:55:4767 days ago1714190147IN
DAM Finance: d2O Token
0 ETH0.000146185.01731244
Approve197418102024-04-26 20:09:3567 days ago1714162175IN
DAM Finance: d2O Token
0 ETH0.000237835.14376001
Approve196848442024-04-18 20:52:2375 days ago1713473543IN
DAM Finance: d2O Token
0 ETH0.000411578.84867338
Approve196288352024-04-11 0:33:3583 days ago1712795615IN
DAM Finance: d2O Token
0 ETH0.0005710912.3546126
Approve192272062024-02-14 15:51:35140 days ago1707925895IN
DAM Finance: d2O Token
0 ETH0.0021384745.97594429
Approve192269452024-02-14 14:58:59140 days ago1707922739IN
DAM Finance: d2O Token
0 ETH0.002259948.58647326
Approve192113002024-02-12 10:17:59142 days ago1707733079IN
DAM Finance: d2O Token
0 ETH0.0006410721.79579481
Approve189129652024-01-01 13:46:23184 days ago1704116783IN
DAM Finance: d2O Token
0 ETH0.0002563610.58091802
Approve188974312023-12-30 9:24:47186 days ago1703928287IN
DAM Finance: d2O Token
0 ETH0.0004034413.71646337
Approve188960092023-12-30 4:36:23186 days ago1703910983IN
DAM Finance: d2O Token
0 ETH0.0003999213.72018859
Approve188121532023-12-18 10:02:35198 days ago1702893755IN
DAM Finance: d2O Token
0 ETH0.0015688933.94915775
Approve186301322023-11-22 22:02:47223 days ago1700690567IN
DAM Finance: d2O Token
0 ETH0.0029425963.26384123
Approve184575802023-10-29 18:18:59248 days ago1698603539IN
DAM Finance: d2O Token
0 ETH0.0007842116.95636819
Approve183260542023-10-11 8:37:11266 days ago1697013431IN
DAM Finance: d2O Token
0 ETH0.000174326.64634363
Approve181972852023-09-23 8:19:47284 days ago1695457187IN
DAM Finance: d2O Token
0 ETH0.000341017.33150308
Approve180797692023-09-06 20:25:47300 days ago1694031947IN
DAM Finance: d2O Token
0 ETH0.0009706420.86830658
Transfer180797592023-09-06 20:23:47300 days ago1694031827IN
DAM Finance: d2O Token
0 ETH0.0011402920.47730492
Burn180689632023-09-05 8:03:35302 days ago1693901015IN
DAM Finance: d2O Token
0 ETH0.0004128310.73684083
Approve180643052023-09-04 16:27:35303 days ago1693844855IN
DAM Finance: d2O Token
0 ETH0.0009947721.38694177
Approve179397362023-08-18 5:56:59320 days ago1692338219IN
DAM Finance: d2O Token
0 ETH0.0007006715.15798767
Approve179193692023-08-15 9:32:11323 days ago1692091931IN
DAM Finance: d2O Token
0 ETH0.0006476814.01149194
Approve178172302023-08-01 2:40:47337 days ago1690857647IN
DAM Finance: d2O Token
0 ETH0.0009140319.7633089
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

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

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
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.

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.