ETH Price: $2,238.04 (-1.62%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

Transaction Hash
Method
Block
From
To
Deposit Token217795212025-02-05 9:52:59364 days ago1738749179IN
Orbit Chain: ETH Vault
0 ETH0.0003665711
Deposit204529952024-08-04 5:07:59549 days ago1722748079IN
Orbit Chain: ETH Vault
0.000003 ETH0.000035811
Confirm Transact...203609032024-07-22 8:33:35562 days ago1721637215IN
Orbit Chain: ETH Vault
0 ETH0.0025914918
Confirm Transact...203609022024-07-22 8:33:23562 days ago1721637203IN
Orbit Chain: ETH Vault
0 ETH0.0026944518
Confirm Transact...203607002024-07-22 7:52:47562 days ago1721634767IN
Orbit Chain: ETH Vault
0 ETH0.0019620318
Confirm Transact...203607002024-07-22 7:52:47562 days ago1721634767IN
Orbit Chain: ETH Vault
0 ETH0.0019620318
Confirm Transact...203606992024-07-22 7:52:23562 days ago1721634743IN
Orbit Chain: ETH Vault
0 ETH0.0026498118
Confirm Transact...203606982024-07-22 7:52:11562 days ago1721634731IN
Orbit Chain: ETH Vault
0 ETH0.0026721318
Confirm Transact...203606972024-07-22 7:51:59562 days ago1721634719IN
Orbit Chain: ETH Vault
0 ETH0.0026832918
Confirm Transact...203606962024-07-22 7:51:47562 days ago1721634707IN
Orbit Chain: ETH Vault
0 ETH0.0030452718
Confirm Transact...203604402024-07-22 7:00:11562 days ago1721631611IN
Orbit Chain: ETH Vault
0 ETH0.0023161318
Confirm Transact...203603862024-07-22 6:49:23562 days ago1721630963IN
Orbit Chain: ETH Vault
0 ETH0.0023161318
Confirm Transact...203603742024-07-22 6:46:47562 days ago1721630807IN
Orbit Chain: ETH Vault
0 ETH0.0023161318
Confirm Transact...203603622024-07-22 6:44:23562 days ago1721630663IN
Orbit Chain: ETH Vault
0 ETH0.0023161318
Confirm Transact...203598842024-07-22 5:08:23562 days ago1721624903IN
Orbit Chain: ETH Vault
0 ETH0.0023158818
Confirm Transact...203598832024-07-22 5:08:11562 days ago1721624891IN
Orbit Chain: ETH Vault
0 ETH0.0023158818
Confirm Transact...203598822024-07-22 5:07:59562 days ago1721624879IN
Orbit Chain: ETH Vault
0 ETH0.0023158818
Confirm Transact...203598812024-07-22 5:07:47562 days ago1721624867IN
Orbit Chain: ETH Vault
0 ETH0.0023158818
Confirm Transact...203598802024-07-22 5:07:35562 days ago1721624855IN
Orbit Chain: ETH Vault
0 ETH0.0023158818
Confirm Transact...203598792024-07-22 5:07:23562 days ago1721624843IN
Orbit Chain: ETH Vault
0 ETH0.0023158818
Confirm Transact...203595362024-07-22 3:58:11562 days ago1721620691IN
Orbit Chain: ETH Vault
0 ETH0.0033167118
Confirm Transact...203595352024-07-22 3:57:59562 days ago1721620679IN
Orbit Chain: ETH Vault
0 ETH0.0033167118
Confirm Transact...203595342024-07-22 3:57:47562 days ago1721620667IN
Orbit Chain: ETH Vault
0 ETH0.0033167118
Confirm Transact...203595332024-07-22 3:57:35562 days ago1721620655IN
Orbit Chain: ETH Vault
0 ETH0.0033167118
Confirm Transact...203595322024-07-22 3:57:23562 days ago1721620643IN
Orbit Chain: ETH Vault
0 ETH0.0033167118
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer209693672024-10-15 7:06:35477 days ago1728975995
Orbit Chain: ETH Vault
534.72850367 ETH
Transfer209603732024-10-14 0:57:23478 days ago1728867443
Orbit Chain: ETH Vault
1 ETH
Transfer189080802023-12-31 21:16:59765 days ago1704057419
Orbit Chain: ETH Vault
9,500 ETH
Transfer189079612023-12-31 20:52:47765 days ago1704055967
Orbit Chain: ETH Vault
30.095 ETH
Transfer189076312023-12-31 19:45:59765 days ago1704051959
Orbit Chain: ETH Vault
0.00013786 ETH
Transfer189075722023-12-31 19:33:59765 days ago1704051239
Orbit Chain: ETH Vault
0.00013786 ETH
Transfer189075442023-12-31 19:28:23765 days ago1704050903
Orbit Chain: ETH Vault
0.00013786 ETH
Transfer189075212023-12-31 19:23:47765 days ago1704050627
Orbit Chain: ETH Vault
0.004995 ETH
Transfer189075212023-12-31 19:23:47765 days ago1704050627
Orbit Chain: ETH Vault
0.004995 ETH
Transfer189075182023-12-31 19:23:11765 days ago1704050591
Orbit Chain: ETH Vault
0.004995 ETH
Transfer189075122023-12-31 19:21:59765 days ago1704050519
Orbit Chain: ETH Vault
0.00000999 ETH
Transfer189074142023-12-31 19:02:23765 days ago1704049343
Orbit Chain: ETH Vault
0.03992004 ETH
Transfer189073352023-12-31 18:46:23765 days ago1704048383
Orbit Chain: ETH Vault
0.004995 ETH
Transfer189071742023-12-31 18:14:11765 days ago1704046451
Orbit Chain: ETH Vault
0.004995 ETH
Transfer189071052023-12-31 18:00:23765 days ago1704045623
Orbit Chain: ETH Vault
0.004996 ETH
Transfer189069512023-12-31 17:29:35765 days ago1704043775
Orbit Chain: ETH Vault
0.004995 ETH
Transfer189068472023-12-31 17:08:47765 days ago1704042527
Orbit Chain: ETH Vault
0.004996 ETH
Transfer189063322023-12-31 15:24:11765 days ago1704036251
Orbit Chain: ETH Vault
0.004995 ETH
Transfer189060112023-12-31 14:18:59765 days ago1704032339
Orbit Chain: ETH Vault
0.004995 ETH
Transfer189059692023-12-31 14:10:35765 days ago1704031835
Orbit Chain: ETH Vault
0.004995 ETH
Transfer189059242023-12-31 14:01:35765 days ago1704031295
Orbit Chain: ETH Vault
0.004995 ETH
Transfer189058652023-12-31 13:49:47765 days ago1704030587
Orbit Chain: ETH Vault
0.004995 ETH
Transfer189058252023-12-31 13:41:47765 days ago1704030107
Orbit Chain: ETH Vault
0.004995 ETH
Transfer189055572023-12-31 12:47:47765 days ago1704026867
Orbit Chain: ETH Vault
0.004995 ETH
Transfer189054692023-12-31 12:29:59765 days ago1704025799
Orbit Chain: ETH Vault
0.004995 ETH
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
EthVault

Compiler Version
v0.5.0+commit.1d4f565a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU LGPLv3 license

Contract Source Code (Solidity Multiple files format)

File 1 of 4: EthVault.sol
pragma solidity ^0.5.0;

import "./MultiSigWallet.sol";

contract EthVault is MultiSigWallet{
    string public constant chain = "ETH";

    bool public isActivated = true;

    address payable public implementation;
    address public tetherAddress;

    uint public depositCount = 0;

    mapping(bytes32 => bool) public isUsedWithdrawal;

    mapping(bytes32 => address) public tokenAddr;
    mapping(address => bytes32) public tokenSummaries;

    mapping(bytes32 => bool) public isValidChain;

    constructor(address[] memory _owners, uint _required, address payable _implementation, address _tetherAddress) MultiSigWallet(_owners, _required) public {
        implementation = _implementation;
        tetherAddress = _tetherAddress;

        // klaytn valid chain default setting
        isValidChain[sha256(abi.encodePacked(address(this), "KLAYTN"))] = true;
    }

    function _setImplementation(address payable _newImp) public onlyWallet {
        require(implementation != _newImp);
        implementation = _newImp;

    }

    function () payable external {
        address impl = implementation;
        require(impl != address(0));
        assembly {
            let ptr := mload(0x40)
            calldatacopy(ptr, 0, calldatasize)
            let result := delegatecall(gas, impl, ptr, calldatasize, 0, 0)
            let size := returndatasize
            returndatacopy(ptr, 0, size)

            switch result
            case 0 { revert(ptr, size) }
            default { return(ptr, size) }
        }
    }
}

File 2 of 4: EthVault.impl.sol
pragma solidity ^0.5.0;

import "./SafeMath.sol";
import "./EthVault.sol";

interface IERC20 {
    function transfer(address to, uint256 value) external returns (bool);

    function approve(address spender, uint256 value) external returns (bool);

    function transferFrom(address from, address to, uint256 value) external returns (bool);

    function totalSupply() external view returns (uint256);

    function balanceOf(address who) external view returns (uint256);

    function allowance(address owner, address spender) external view returns (uint256);

    function decimals() external view returns (uint8);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract TIERC20 {
    function transfer(address to, uint value) public;
    function transferFrom(address from, address to, uint value) public;

    function balanceOf(address who) public view returns (uint);
    function allowance(address owner, address spender) public view returns (uint256);

    function decimals() external view returns (uint8);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract EthVaultImpl is EthVault, SafeMath{
    event Deposit(string fromChain, string toChain, address fromAddr, bytes toAddr, address token, uint8 decimal, uint amount, uint depositId, uint block);
    event Withdraw(address hubContract, string fromChain, string toChain, bytes fromAddr, bytes toAddr, bytes token, bytes32[] bytes32s, uint[] uints);

    modifier onlyActivated {
        require(isActivated);
        _;
    }

    constructor(address[] memory _owner) public EthVault(_owner, _owner.length, address(0), address(0)) {
    }

    function getVersion() public pure returns(string memory){
        return "1028";
    }

    function changeActivate(bool activate) public onlyWallet {
        isActivated = activate;
    }

    function setTetherAddress(address tether) public onlyWallet {
        tetherAddress = tether;
    }

    function getChainId(string memory _chain) public view returns(bytes32){
        return sha256(abi.encodePacked(address(this), _chain));
    }

    function setValidChain(string memory _chain, bool valid) public onlyWallet {
        isValidChain[getChainId(_chain)] = valid;
    }

    function deposit(string memory toChain, bytes memory toAddr) payable public onlyActivated {
        require(isValidChain[getChainId(toChain)]);
        require(msg.value > 0);

        depositCount = depositCount + 1;
        emit Deposit(chain, toChain, msg.sender, toAddr, address(0), 18, msg.value, depositCount, block.number);
    }

    function depositToken(address token, string memory toChain, bytes memory toAddr, uint amount) public onlyActivated{
        require(isValidChain[getChainId(toChain)]);
        require(token != address(0));
        require(amount > 0);

        uint8 decimal = 0;
        if(token == tetherAddress){
            TIERC20(token).transferFrom(msg.sender, address(this), amount);
            decimal = TIERC20(token).decimals();
        }else{
            if(!IERC20(token).transferFrom(msg.sender, address(this), amount)) revert();
            decimal = IERC20(token).decimals();
        }
        
        require(decimal > 0);

        depositCount = depositCount + 1;
        emit Deposit(chain, toChain, msg.sender, toAddr, token, decimal, amount, depositCount, block.number);
    }

    // Fix Data Info
    ///@param bytes32s [0]:govId, [1]:txHash
    ///@param uints [0]:amount, [1]:decimals
    function withdraw(
        address hubContract,
        string memory fromChain,
        bytes memory fromAddr,
        bytes memory toAddr,
        bytes memory token,
        bytes32[] memory bytes32s,
        uint[] memory uints,
        uint8[] memory v,
        bytes32[] memory r,
        bytes32[] memory s
    ) public onlyActivated {
        require(bytes32s.length >= 1);
        require(bytes32s[0] == sha256(abi.encodePacked(hubContract, chain, address(this))));
        require(uints.length >= 2);
        require(isValidChain[getChainId(fromChain)]);

        bytes32 whash = sha256(abi.encodePacked(hubContract, fromChain, chain, fromAddr, toAddr, token, bytes32s, uints));

        require(!isUsedWithdrawal[whash]);
        isUsedWithdrawal[whash] = true;

        uint validatorCount = _validate(whash, v, r, s);
        require(validatorCount >= required);

        address payable _toAddr = bytesToAddress(toAddr);
        address tokenAddress = bytesToAddress(token);
        if(tokenAddress == address(0)){
            if(!_toAddr.send(uints[0])) revert();
        }else{
            if(tokenAddress == tetherAddress){
                TIERC20(tokenAddress).transfer(_toAddr, uints[0]);
            }
            else{
                if(!IERC20(tokenAddress).transfer(_toAddr, uints[0])) revert();
            }
        }

        emit Withdraw(hubContract, fromChain, chain, fromAddr, toAddr, token, bytes32s, uints);
    }

    function _validate(bytes32 whash, uint8[] memory v, bytes32[] memory r, bytes32[] memory s) private view returns(uint){
        uint validatorCount = 0;
        address[] memory vaList = new address[](owners.length);

        uint i=0;
        uint j=0;

        for(i; i<v.length; i++){
            address va = ecrecover(whash,v[i],r[i],s[i]);
            if(isOwner[va]){
                for(j=0; j<validatorCount; j++){
                    require(vaList[j] != va);
                }

                vaList[validatorCount] = va;
                validatorCount += 1;
            }
        }

        return validatorCount;
    }

    function bytesToAddress(bytes memory bys) private pure returns (address payable addr) {
        assembly {
            addr := mload(add(bys,20))
        }
    }

    function () payable external{
    }
}

File 3 of 4: MultiSigWallet.sol
pragma solidity ^0.5.0;

/// @title Multisignature wallet - Allows multiple parties to agree on transactions before execution.
/// @author Stefan George - <[email protected]>
contract MultiSigWallet {

    uint constant public MAX_OWNER_COUNT = 50;

    event Confirmation(address indexed sender, uint indexed transactionId);
    event Revocation(address indexed sender, uint indexed transactionId);
    event Submission(uint indexed transactionId);
    event Execution(uint indexed transactionId);
    event ExecutionFailure(uint indexed transactionId);
    event Deposit(address indexed sender, uint value);
    event OwnerAddition(address indexed owner);
    event OwnerRemoval(address indexed owner);
    event RequirementChange(uint required);

    mapping (uint => Transaction) public transactions;
    mapping (uint => mapping (address => bool)) public confirmations;
    mapping (address => bool) public isOwner;
    address[] public owners;
    uint public required;
    uint public transactionCount;

    struct Transaction {
        address destination;
        uint value;
        bytes data;
        bool executed;
    }

    modifier onlyWallet() {
        if (msg.sender != address(this))
            revert("Unauthorized.");
        _;
    }

    modifier ownerDoesNotExist(address owner) {
        if (isOwner[owner])
            revert("Unauthorized.");
        _;
    }

    modifier ownerExists(address owner) {
        if (!isOwner[owner])
            revert("Unauthorized.");
        _;
    }

    modifier transactionExists(uint transactionId) {
        if (transactions[transactionId].destination == address(0))
            revert("Existed transaction id.");
        _;
    }

    modifier confirmed(uint transactionId, address owner) {
        if (!confirmations[transactionId][owner])
            revert("Not confirmed transaction.");
        _;
    }

    modifier notConfirmed(uint transactionId, address owner) {
        if (confirmations[transactionId][owner])
            revert("Confirmed transaction.");
        _;
    }

    modifier notExecuted(uint transactionId) {
        if (transactions[transactionId].executed)
            revert("Executed transaction.");
        _;
    }

    modifier notNull(address _address) {
        if (_address == address(0))
            revert("Address is null");
        _;
    }

    modifier validRequirement(uint ownerCount, uint _required) {
        if (   ownerCount > MAX_OWNER_COUNT
            || _required > ownerCount
            || _required == 0
            || ownerCount == 0)
            revert("Invalid requirement");
        _;
    }

    /// @dev Fallback function allows to deposit ether.
    function()
        external
        payable
    {
        if (msg.value > 0)
            emit Deposit(msg.sender, msg.value);
    }

    /*
     * Public functions
     */
    /// @dev Contract constructor sets initial owners and required number of confirmations.
    /// @param _owners List of initial owners.
    /// @param _required Number of required confirmations.
    constructor(address[] memory _owners, uint _required)
        public
        validRequirement(_owners.length, _required)
    {
        for (uint i=0; i<_owners.length; i++) {
            if (isOwner[_owners[i]] || _owners[i] == address(0))
                revert("Invalid owner");
            isOwner[_owners[i]] = true;
        }
        owners = _owners;
        required = _required;
    }

    /// @dev Allows to add a new owner. Transaction has to be sent by wallet.
    /// @param owner Address of new owner.
    function addOwner(address owner)
        public
        onlyWallet
        ownerDoesNotExist(owner)
        notNull(owner)
        validRequirement(owners.length + 1, required)
    {
        isOwner[owner] = true;
        owners.push(owner);
        emit OwnerAddition(owner);
    }

    /// @dev Allows to remove an owner. Transaction has to be sent by wallet.
    /// @param owner Address of owner.
    function removeOwner(address owner)
        public
        onlyWallet
        ownerExists(owner)
    {
        isOwner[owner] = false;
        for (uint i=0; i<owners.length - 1; i++)
            if (owners[i] == owner) {
                owners[i] = owners[owners.length - 1];
                break;
            }
        owners.length -= 1;
        if (required > owners.length)
            changeRequirement(owners.length);
        emit OwnerRemoval(owner);
    }

    /// @dev Allows to replace an owner with a new owner. Transaction has to be sent by wallet.
    /// @param owner Address of owner to be replaced.
    /// @param owner Address of new owner.
    function replaceOwner(address owner, address newOwner)
        public
        onlyWallet
        ownerExists(owner)
        ownerDoesNotExist(newOwner)
    {
        for (uint i=0; i<owners.length; i++)
            if (owners[i] == owner) {
                owners[i] = newOwner;
                break;
            }
        isOwner[owner] = false;
        isOwner[newOwner] = true;
        emit OwnerRemoval(owner);
        emit OwnerAddition(newOwner);
    }

    /// @dev Allows to change the number of required confirmations. Transaction has to be sent by wallet.
    /// @param _required Number of required confirmations.
    function changeRequirement(uint _required)
        public
        onlyWallet
        validRequirement(owners.length, _required)
    {
        required = _required;
        emit RequirementChange(_required);
    }

    /// @dev Allows an owner to submit and confirm a transaction.
    /// @param destination Transaction target address.
    /// @param value Transaction ether value.
    /// @param data Transaction data payload.
    /// @return Returns transaction ID.
    function submitTransaction(address destination, uint value, bytes memory data)
        public
        returns (uint transactionId)
    {
        transactionId = addTransaction(destination, value, data);
        confirmTransaction(transactionId);
    }

    /// @dev Allows an owner to confirm a transaction.
    /// @param transactionId Transaction ID.
    function confirmTransaction(uint transactionId)
        public
        ownerExists(msg.sender)
        transactionExists(transactionId)
        notConfirmed(transactionId, msg.sender)
    {
        confirmations[transactionId][msg.sender] = true;
        emit Confirmation(msg.sender, transactionId);
        executeTransaction(transactionId);
    }

    /// @dev Allows an owner to revoke a confirmation for a transaction.
    /// @param transactionId Transaction ID.
    function revokeConfirmation(uint transactionId)
        public
        ownerExists(msg.sender)
        confirmed(transactionId, msg.sender)
        notExecuted(transactionId)
    {
        confirmations[transactionId][msg.sender] = false;
        emit Revocation(msg.sender, transactionId);
    }

    /// @dev Allows anyone to execute a confirmed transaction.
    /// @param transactionId Transaction ID.
    function executeTransaction(uint transactionId)
        public
        notExecuted(transactionId)
    {
        if (isConfirmed(transactionId)) {
            Transaction storage txn = transactions[transactionId];
            txn.executed = true;
            (bool result, ) = txn.destination.call.value(txn.value)(txn.data);
            if (result)
                emit Execution(transactionId);
            else {
                emit ExecutionFailure(transactionId);
                txn.executed = false;
            }
        }
    }

    /// @dev Returns the confirmation status of a transaction.
    /// @param transactionId Transaction ID.
    /// @return Confirmation status.
    function isConfirmed(uint transactionId)
        public
        view
        returns (bool)
    {
        uint count = 0;
        for (uint i=0; i<owners.length; i++) {
            if (confirmations[transactionId][owners[i]])
                count += 1;
            if (count == required)
                return true;
        }
    }

    /*
     * Internal functions
     */
    /// @dev Adds a new transaction to the transaction mapping, if transaction does not exist yet.
    /// @param destination Transaction target address.
    /// @param value Transaction ether value.
    /// @param data Transaction data payload.
    /// @return Returns transaction ID.
    function addTransaction(address destination, uint value, bytes memory data)
        public
        notNull(destination)
        returns (uint transactionId)
    {
        transactionId = transactionCount;
        transactions[transactionId] = Transaction({
            destination: destination,
            value: value,
            data: data,
            executed: false
        });
        transactionCount += 1;
        emit Submission(transactionId);
    }

    /*
     * Web3 call functions
     */
    /// @dev Returns number of confirmations of a transaction.
    /// @param transactionId Transaction ID.
    /// @return Number of confirmations.
    function getConfirmationCount(uint transactionId)
        public
        view
        returns (uint count)
    {
        for (uint i=0; i<owners.length; i++)
            if (confirmations[transactionId][owners[i]])
                count += 1;
    }

    /// @dev Returns total number of transactions after filers are applied.
    /// @param pending Include pending transactions.
    /// @param executed Include executed transactions.
    /// @return Total number of transactions after filters are applied.
    function getTransactionCount(bool pending, bool executed)
        public
        view
        returns (uint count)
    {
        for (uint i=0; i<transactionCount; i++)
            if (   pending && !transactions[i].executed
                || executed && transactions[i].executed)
                count += 1;
    }

    /// @dev Returns list of owners.
    /// @return List of owner addresses.
    function getOwners()
        public
        view
        returns (address[] memory)
    {
        return owners;
    }

    /// @dev Returns array with owner addresses, which confirmed transaction.
    /// @param transactionId Transaction ID.
    /// @return Returns array of owner addresses.
    function getConfirmations(uint transactionId)
        public
        view
        returns (address[] memory _confirmations)
    {
        address[] memory confirmationsTemp = new address[](owners.length);
        uint count = 0;
        uint i;
        for (i=0; i<owners.length; i++)
            if (confirmations[transactionId][owners[i]]) {
                confirmationsTemp[count] = owners[i];
                count += 1;
            }
        _confirmations = new address[](count);
        for (i=0; i<count; i++)
            _confirmations[i] = confirmationsTemp[i];
    }

    /// @dev Returns list of transaction IDs in defined range.
    /// @param from Index start position of transaction array.
    /// @param to Index end position of transaction array.
    /// @param pending Include pending transactions.
    /// @param executed Include executed transactions.
    /// @return Returns array of transaction IDs.
    function getTransactionIds(uint from, uint to, bool pending, bool executed)
        public
        view
        returns (uint[] memory _transactionIds)
    {
        uint[] memory transactionIdsTemp = new uint[](transactionCount);
        uint count = 0;
        uint i;
        for (i=0; i<transactionCount; i++)
            if (   pending && !transactions[i].executed
                || executed && transactions[i].executed)
            {
                transactionIdsTemp[count] = i;
                count += 1;
            }
        _transactionIds = new uint[](to - from);
        for (i=from; i<to; i++)
            _transactionIds[i - from] = transactionIdsTemp[i];
    }
}

File 4 of 4: SafeMath.sol
pragma solidity ^0.5.0;

contract SafeMath {
    function safeMul(uint a, uint b) internal pure returns(uint) {
        uint c = a * b;
        assertion(a == 0 || c / a == b);
        return c;
    }

    function safeSub(uint a, uint b) internal pure returns(uint) {
        assertion(b <= a);
        return a - b;
    }

    function safeAdd(uint a, uint b) internal pure returns(uint) {
        uint c = a + b;
        assertion(c >= a && c >= b);
        return c;
    }

    function safeDiv(uint a, uint b) internal pure returns(uint) {
        require(b != 0, 'Divide by zero');

        return a / b;
    }

    function safeCeil(uint a, uint b) internal pure returns (uint) {
        require(b > 0);

        uint v = a / b;

        if(v * b == a) return v;

        return v + 1;  // b cannot be 1, so v <= a / 2
    }

    function assertion(bool flag) internal pure {
        if (!flag) revert('Assertion fail.');
    }
}

Contract Security Audit

Contract ABI

API
[{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"owners","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"owner","type":"address"}],"name":"removeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"transactionId","type":"uint256"}],"name":"revokeConfirmation","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"depositCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"address"}],"name":"confirmations","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tetherAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isActivated","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"pending","type":"bool"},{"name":"executed","type":"bool"}],"name":"getTransactionCount","outputs":[{"name":"count","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"tokenAddr","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"owner","type":"address"}],"name":"addOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"transactionId","type":"uint256"}],"name":"isConfirmed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"transactionId","type":"uint256"}],"name":"getConfirmationCount","outputs":[{"name":"count","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"transactions","outputs":[{"name":"destination","type":"address"},{"name":"value","type":"uint256"},{"name":"data","type":"bytes"},{"name":"executed","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"isUsedWithdrawal","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getOwners","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"from","type":"uint256"},{"name":"to","type":"uint256"},{"name":"pending","type":"bool"},{"name":"executed","type":"bool"}],"name":"getTransactionIds","outputs":[{"name":"_transactionIds","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"transactionId","type":"uint256"}],"name":"getConfirmations","outputs":[{"name":"_confirmations","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"transactionCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_required","type":"uint256"}],"name":"changeRequirement","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newImp","type":"address"}],"name":"_setImplementation","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"transactionId","type":"uint256"}],"name":"confirmTransaction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"destination","type":"address"},{"name":"value","type":"uint256"},{"name":"data","type":"bytes"}],"name":"submitTransaction","outputs":[{"name":"transactionId","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"chain","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MAX_OWNER_COUNT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"required","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"tokenSummaries","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"owner","type":"address"},{"name":"newOwner","type":"address"}],"name":"replaceOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"destination","type":"address"},{"name":"value","type":"uint256"},{"name":"data","type":"bytes"}],"name":"addTransaction","outputs":[{"name":"transactionId","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"transactionId","type":"uint256"}],"name":"executeTransaction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"isValidChain","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_owners","type":"address[]"},{"name":"_required","type":"uint256"},{"name":"_implementation","type":"address"},{"name":"_tetherAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sender","type":"address"},{"indexed":true,"name":"transactionId","type":"uint256"}],"name":"Confirmation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sender","type":"address"},{"indexed":true,"name":"transactionId","type":"uint256"}],"name":"Revocation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"transactionId","type":"uint256"}],"name":"Submission","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"transactionId","type":"uint256"}],"name":"Execution","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"transactionId","type":"uint256"}],"name":"ExecutionFailure","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"}],"name":"OwnerAddition","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"}],"name":"OwnerRemoval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"required","type":"uint256"}],"name":"RequirementChange","type":"event"}]

60806040526006805460ff1916600117905560006008553480156200002357600080fd5b50604051620023b2380380620023b2833981018060405260808110156200004957600080fd5b8101908080516401000000008111156200006257600080fd5b820160208101848111156200007657600080fd5b81518560208202830111640100000000821117156200009457600080fd5b50506020820151604083015160609093015182519295509093509084908490816032821180620000c357508181115b80620000cd575080155b80620000d7575081155b156200014457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496e76616c696420726571756972656d656e7400000000000000000000000000604482015290519081900360640190fd5b60005b845181101562000275576002600086838151811015156200016457fe5b6020908102909101810151600160a060020a031682528101919091526040016000205460ff1680620001b857508451600090869083908110620001a357fe5b90602001906020020151600160a060020a0316145b156200022557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c6964206f776e657200000000000000000000000000000000000000604482015290519081900360640190fd5b60016002600087848151811015156200023a57fe5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff191691151591909117905560010162000147565b5083516200028b906003906020870190620003e4565b505050600455506006805461010060a860020a031916610100600160a060020a03858116919091029190911790915560078054600160a060020a03191691831691909117905560408051306c01000000000000000000000000026020808301919091527f4b4c4159544e000000000000000000000000000000000000000000000000000060348301528251808303601a018152603a909201928390528151600193600c9360009360029391929182918401908083835b60208310620003625780518252601f19909201916020918201910162000341565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa158015620003a2573d6000803e3d6000fd5b5050506040513d6020811015620003b857600080fd5b505181526020810191909152604001600020805460ff1916911515919091179055506200047892505050565b8280548282559060005260206000209081019282156200043c579160200282015b828111156200043c5782518254600160a060020a031916600160a060020a0390911617825560209092019160019091019062000405565b506200044a9291506200044e565b5090565b6200047591905b808211156200044a578054600160a060020a031916815560010162000455565b90565b611f2a80620004886000396000f3fe6080604052600436106101955763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663025e7c2781146101d7578063173825d91461021d57806320ea8d86146102525780632dfdf0b51461027c5780632f54bf6e146102a35780633411c81c146102ea5780633a8105ec146103235780634a8c1fb414610338578063547415251461034d5780635c60da1b146103815780635ed7a8fc146103965780637065cb48146103c0578063784547a7146103f35780638b51d13f1461041d5780639ace38c2146104475780639d188c1614610514578063a0e67e2b1461053e578063a8abe69a146105a3578063b5dc40c3146105e3578063b77bf6001461060d578063ba51a6df14610622578063bb913f411461064c578063c01a8c841461067f578063c6427474146106a9578063c763e5a114610771578063d74f8edd146107fb578063dc8452cd14610810578063e1d703a114610825578063e20056e614610858578063ec096f8d14610893578063ee22610b1461095b578063f01b246714610985575b6006546101009004600160a060020a03168015156101b257600080fd5b60405136600082376000803683855af43d806000843e8180156101d3578184f35b8184fd5b3480156101e357600080fd5b50610201600480360360208110156101fa57600080fd5b50356109af565b60408051600160a060020a039092168252519081900360200190f35b34801561022957600080fd5b506102506004803603602081101561024057600080fd5b5035600160a060020a03166109d7565b005b34801561025e57600080fd5b506102506004803603602081101561027557600080fd5b5035610bb9565b34801561028857600080fd5b50610291610d42565b60408051918252519081900360200190f35b3480156102af57600080fd5b506102d6600480360360208110156102c657600080fd5b5035600160a060020a0316610d48565b604080519115158252519081900360200190f35b3480156102f657600080fd5b506102d66004803603604081101561030d57600080fd5b5080359060200135600160a060020a0316610d5d565b34801561032f57600080fd5b50610201610d7d565b34801561034457600080fd5b506102d6610d8c565b34801561035957600080fd5b506102916004803603604081101561037057600080fd5b508035151590602001351515610d95565b34801561038d57600080fd5b50610201610e01565b3480156103a257600080fd5b50610201600480360360208110156103b957600080fd5b5035610e15565b3480156103cc57600080fd5b50610250600480360360208110156103e357600080fd5b5035600160a060020a0316610e30565b3480156103ff57600080fd5b506102d66004803603602081101561041657600080fd5b5035611055565b34801561042957600080fd5b506102916004803603602081101561044057600080fd5b50356110dc565b34801561045357600080fd5b506104716004803603602081101561046a57600080fd5b503561114b565b6040518085600160a060020a0316600160a060020a031681526020018481526020018060200183151515158152602001828103825284818151815260200191508051906020019080838360005b838110156104d65781810151838201526020016104be565b50505050905090810190601f1680156105035780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b34801561052057600080fd5b506102d66004803603602081101561053757600080fd5b5035611209565b34801561054a57600080fd5b5061055361121e565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561058f578181015183820152602001610577565b505050509050019250505060405180910390f35b3480156105af57600080fd5b50610553600480360360808110156105c657600080fd5b508035906020810135906040810135151590606001351515611281565b3480156105ef57600080fd5b506105536004803603602081101561060657600080fd5b50356113b2565b34801561061957600080fd5b50610291611523565b34801561062e57600080fd5b506102506004803603602081101561064557600080fd5b5035611529565b34801561065857600080fd5b506102506004803603602081101561066f57600080fd5b5035600160a060020a0316611624565b34801561068b57600080fd5b50610250600480360360208110156106a257600080fd5b50356116be565b3480156106b557600080fd5b50610291600480360360608110156106cc57600080fd5b600160a060020a03823516916020810135918101906060810160408201356401000000008111156106fc57600080fd5b82018360208201111561070e57600080fd5b8035906020019184600183028401116401000000008311171561073057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611858945050505050565b34801561077d57600080fd5b50610786611877565b6040805160208082528351818301528351919283929083019185019080838360005b838110156107c05781810151838201526020016107a8565b50505050905090810190601f1680156107ed5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561080757600080fd5b506102916118ae565b34801561081c57600080fd5b506102916118b3565b34801561083157600080fd5b506102916004803603602081101561084857600080fd5b5035600160a060020a03166118b9565b34801561086457600080fd5b506102506004803603604081101561087b57600080fd5b50600160a060020a03813581169160200135166118cb565b34801561089f57600080fd5b50610291600480360360608110156108b657600080fd5b600160a060020a03823516916020810135918101906060810160408201356401000000008111156108e657600080fd5b8201836020820111156108f857600080fd5b8035906020019184600183028401116401000000008311171561091a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611af9945050505050565b34801561096757600080fd5b506102506004803603602081101561097e57600080fd5b5035611c34565b34801561099157600080fd5b506102d6600480360360208110156109a857600080fd5b5035611e08565b60038054829081106109bd57fe5b600091825260209091200154600160a060020a0316905081565b333014610a1c576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611edf833981519152604482015290519081900360640190fd5b600160a060020a038116600090815260026020526040902054819060ff161515610a7e576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611edf833981519152604482015290519081900360640190fd5b600160a060020a0382166000908152600260205260408120805460ff191690555b60035460001901811015610b545782600160a060020a0316600382815481101515610ac657fe5b600091825260209091200154600160a060020a03161415610b4c57600380546000198101908110610af357fe5b60009182526020909120015460038054600160a060020a039092169183908110610b1957fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a03160217905550610b54565b600101610a9f565b50600380546000190190610b689082611e1d565b506003546004541115610b8157600354610b8190611529565b604051600160a060020a038316907f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9090600090a25050565b3360008181526002602052604090205460ff161515610c10576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611edf833981519152604482015290519081900360640190fd5b60008281526001602090815260408083203380855292529091205483919060ff161515610c87576040805160e560020a62461bcd02815260206004820152601a60248201527f4e6f7420636f6e6669726d6564207472616e73616374696f6e2e000000000000604482015290519081900360640190fd5b600084815260208190526040902060030154849060ff1615610cf3576040805160e560020a62461bcd02815260206004820152601560248201527f4578656375746564207472616e73616374696f6e2e0000000000000000000000604482015290519081900360640190fd5b6000858152600160209081526040808320338085529252808320805460ff191690555187927ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e991a35050505050565b60085481565b60026020526000908152604090205460ff1681565b600160209081526000928352604080842090915290825290205460ff1681565b600754600160a060020a031681565b60065460ff1681565b6000805b600554811015610dfa57838015610dc2575060008181526020819052604090206003015460ff16155b80610de65750828015610de6575060008181526020819052604090206003015460ff165b15610df2576001820191505b600101610d99565b5092915050565b6006546101009004600160a060020a031681565b600a60205260009081526040902054600160a060020a031681565b333014610e75576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611edf833981519152604482015290519081900360640190fd5b600160a060020a038116600090815260026020526040902054819060ff1615610ed6576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611edf833981519152604482015290519081900360640190fd5b81600160a060020a0381161515610f37576040805160e560020a62461bcd02815260206004820152600f60248201527f41646472657373206973206e756c6c0000000000000000000000000000000000604482015290519081900360640190fd5b6003805490506001016004546032821180610f5157508181115b80610f5a575080155b80610f63575081155b15610fb8576040805160e560020a62461bcd02815260206004820152601360248201527f496e76616c696420726571756972656d656e7400000000000000000000000000604482015290519081900360640190fd5b600160a060020a038516600081815260026020526040808220805460ff1916600190811790915560038054918201815583527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01805473ffffffffffffffffffffffffffffffffffffffff191684179055517ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d9190a25050505050565b600080805b6003548110156110d4576000848152600160205260408120600380549192918490811061108357fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190205460ff16156110b7576001820191505b6004548214156110cc576001925050506110d7565b60010161105a565b50505b919050565b6000805b600354811015611145576000838152600160205260408120600380549192918490811061110957fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190205460ff161561113d576001820191505b6001016110e0565b50919050565b6000602081815291815260409081902080546001808301546002808501805487516101009582161595909502600019011691909104601f8101889004880284018801909652858352600160a060020a03909316959094919291908301828280156111f65780601f106111cb576101008083540402835291602001916111f6565b820191906000526020600020905b8154815290600101906020018083116111d957829003601f168201915b5050506003909301549192505060ff1684565b60096020526000908152604090205460ff1681565b6060600380548060200260200160405190810160405280929190818152602001828054801561127657602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311611258575b505050505090505b90565b6060806005546040519080825280602002602001820160405280156112b0578160200160208202803883390190505b5090506000805b600554811015611332578580156112e0575060008181526020819052604090206003015460ff16155b806113045750848015611304575060008181526020819052604090206003015460ff165b1561132a5780838381518110151561131857fe5b60209081029091010152600191909101905b6001016112b7565b87870360405190808252806020026020018201604052801561135e578160200160208202803883390190505b5093508790505b868110156113a757828181518110151561137b57fe5b906020019060200201518489830381518110151561139557fe5b60209081029091010152600101611365565b505050949350505050565b6060806003805490506040519080825280602002602001820160405280156113e4578160200160208202803883390190505b5090506000805b60035481101561149c576000858152600160205260408120600380549192918490811061141457fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190205460ff161561149457600380548290811061144f57fe5b6000918252602090912001548351600160a060020a039091169084908490811061147557fe5b600160a060020a03909216602092830290910190910152600191909101905b6001016113eb565b816040519080825280602002602001820160405280156114c6578160200160208202803883390190505b509350600090505b8181101561151b5782818151811015156114e457fe5b9060200190602002015184828151811015156114fc57fe5b600160a060020a039092166020928302909101909101526001016114ce565b505050919050565b60055481565b33301461156e576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611edf833981519152604482015290519081900360640190fd5b60035481603282118061158057508181115b80611589575080155b80611592575081155b156115e7576040805160e560020a62461bcd02815260206004820152601360248201527f496e76616c696420726571756972656d656e7400000000000000000000000000604482015290519081900360640190fd5b60048390556040805184815290517fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a9181900360200190a1505050565b333014611669576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611edf833981519152604482015290519081900360640190fd5b600654600160a060020a0382811661010090920416141561168957600080fd5b60068054600160a060020a039092166101000274ffffffffffffffffffffffffffffffffffffffff0019909216919091179055565b3360008181526002602052604090205460ff161515611715576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611edf833981519152604482015290519081900360640190fd5b6000828152602081905260409020548290600160a060020a03161515611785576040805160e560020a62461bcd02815260206004820152601760248201527f45786973746564207472616e73616374696f6e2069642e000000000000000000604482015290519081900360640190fd5b60008381526001602090815260408083203380855292529091205484919060ff16156117fb576040805160e560020a62461bcd02815260206004820152601660248201527f436f6e6669726d6564207472616e73616374696f6e2e00000000000000000000604482015290519081900360640190fd5b6000858152600160208181526040808420338086529252808420805460ff1916909317909255905187927f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef91a361185185611c34565b5050505050565b6000611865848484611af9565b9050611870816116be565b9392505050565b60408051808201909152600381527f4554480000000000000000000000000000000000000000000000000000000000602082015281565b603281565b60045481565b600b6020526000908152604090205481565b333014611910576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611edf833981519152604482015290519081900360640190fd5b600160a060020a038216600090815260026020526040902054829060ff161515611972576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611edf833981519152604482015290519081900360640190fd5b600160a060020a038216600090815260026020526040902054829060ff16156119d3576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611edf833981519152604482015290519081900360640190fd5b60005b600354811015611a5f5784600160a060020a03166003828154811015156119f957fe5b600091825260209091200154600160a060020a03161415611a575783600382815481101515611a2457fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a03160217905550611a5f565b6001016119d6565b50600160a060020a03808516600081815260026020526040808220805460ff1990811690915593871682528082208054909416600117909355915190917f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9091a2604051600160a060020a038416907ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d90600090a250505050565b600083600160a060020a0381161515611b5c576040805160e560020a62461bcd02815260206004820152600f60248201527f41646472657373206973206e756c6c0000000000000000000000000000000000604482015290519081900360640190fd5b60055460408051608081018252600160a060020a0388811682526020808301898152838501898152600060608601819052878152808452959095208451815473ffffffffffffffffffffffffffffffffffffffff191694169390931783555160018301559251805194965091939092611bdc926002850192910190611e46565b50606091909101516003909101805460ff191691151591909117905560058054600101905560405182907fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5190600090a2509392505050565b600081815260208190526040902060030154819060ff1615611ca0576040805160e560020a62461bcd02815260206004820152601560248201527f4578656375746564207472616e73616374696f6e2e0000000000000000000000604482015290519081900360640190fd5b611ca982611055565b15611e045760008281526020819052604080822060038101805460ff19166001908117909155815481830154935160028085018054959796600160a060020a03909416959394909383928592600019908316156101000201909116048015611d485780601f10611d26576101008083540402835291820191611d48565b820191906000526020600020905b815481529060010190602001808311611d34575b505091505060006040518083038185875af1925050503d8060008114611d8a576040519150601f19603f3d011682016040523d82523d6000602084013e611d8f565b606091505b505090508015611dc95760405184907f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7590600090a2611e01565b60405184907f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923690600090a260038201805460ff191690555b50505b5050565b600c6020526000908152604090205460ff1681565b815481835581811115611e4157600083815260209020611e41918101908301611ec4565b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611e8757805160ff1916838001178555611eb4565b82800160010185558215611eb4579182015b82811115611eb4578251825591602001919060010190611e99565b50611ec0929150611ec4565b5090565b61127e91905b80821115611ec05760008155600101611eca56fe556e617574686f72697a65642e00000000000000000000000000000000000000a165627a7a72305820620a304d1f4c0cf3ced6c4561eded58216eafb3de08d3b63fc721313a44776de0029000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000040000000000000000000000004ff16c8ee6f5fed268cf764689451bf67795fbe8000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000000060000000000000000000000008a3f117ef3b40f1661dedf7f28fc33e7b6fae4f800000000000000000000000067c3c784c49d9ab8757adb71491df1a1b38fbfa800000000000000000000000034ebf4f74a881eb63f666e63ce1ff2f287ca5a8b00000000000000000000000031df9d7ee1a61b362277022eae46435782d66cff0000000000000000000000003924ac70075078a7713f543b72e3f8817ecec646000000000000000000000000d1176f2f576c102f6516d386de53ec7a72cc1491

Deployed Bytecode

0x6080604052600436106101955763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663025e7c2781146101d7578063173825d91461021d57806320ea8d86146102525780632dfdf0b51461027c5780632f54bf6e146102a35780633411c81c146102ea5780633a8105ec146103235780634a8c1fb414610338578063547415251461034d5780635c60da1b146103815780635ed7a8fc146103965780637065cb48146103c0578063784547a7146103f35780638b51d13f1461041d5780639ace38c2146104475780639d188c1614610514578063a0e67e2b1461053e578063a8abe69a146105a3578063b5dc40c3146105e3578063b77bf6001461060d578063ba51a6df14610622578063bb913f411461064c578063c01a8c841461067f578063c6427474146106a9578063c763e5a114610771578063d74f8edd146107fb578063dc8452cd14610810578063e1d703a114610825578063e20056e614610858578063ec096f8d14610893578063ee22610b1461095b578063f01b246714610985575b6006546101009004600160a060020a03168015156101b257600080fd5b60405136600082376000803683855af43d806000843e8180156101d3578184f35b8184fd5b3480156101e357600080fd5b50610201600480360360208110156101fa57600080fd5b50356109af565b60408051600160a060020a039092168252519081900360200190f35b34801561022957600080fd5b506102506004803603602081101561024057600080fd5b5035600160a060020a03166109d7565b005b34801561025e57600080fd5b506102506004803603602081101561027557600080fd5b5035610bb9565b34801561028857600080fd5b50610291610d42565b60408051918252519081900360200190f35b3480156102af57600080fd5b506102d6600480360360208110156102c657600080fd5b5035600160a060020a0316610d48565b604080519115158252519081900360200190f35b3480156102f657600080fd5b506102d66004803603604081101561030d57600080fd5b5080359060200135600160a060020a0316610d5d565b34801561032f57600080fd5b50610201610d7d565b34801561034457600080fd5b506102d6610d8c565b34801561035957600080fd5b506102916004803603604081101561037057600080fd5b508035151590602001351515610d95565b34801561038d57600080fd5b50610201610e01565b3480156103a257600080fd5b50610201600480360360208110156103b957600080fd5b5035610e15565b3480156103cc57600080fd5b50610250600480360360208110156103e357600080fd5b5035600160a060020a0316610e30565b3480156103ff57600080fd5b506102d66004803603602081101561041657600080fd5b5035611055565b34801561042957600080fd5b506102916004803603602081101561044057600080fd5b50356110dc565b34801561045357600080fd5b506104716004803603602081101561046a57600080fd5b503561114b565b6040518085600160a060020a0316600160a060020a031681526020018481526020018060200183151515158152602001828103825284818151815260200191508051906020019080838360005b838110156104d65781810151838201526020016104be565b50505050905090810190601f1680156105035780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b34801561052057600080fd5b506102d66004803603602081101561053757600080fd5b5035611209565b34801561054a57600080fd5b5061055361121e565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561058f578181015183820152602001610577565b505050509050019250505060405180910390f35b3480156105af57600080fd5b50610553600480360360808110156105c657600080fd5b508035906020810135906040810135151590606001351515611281565b3480156105ef57600080fd5b506105536004803603602081101561060657600080fd5b50356113b2565b34801561061957600080fd5b50610291611523565b34801561062e57600080fd5b506102506004803603602081101561064557600080fd5b5035611529565b34801561065857600080fd5b506102506004803603602081101561066f57600080fd5b5035600160a060020a0316611624565b34801561068b57600080fd5b50610250600480360360208110156106a257600080fd5b50356116be565b3480156106b557600080fd5b50610291600480360360608110156106cc57600080fd5b600160a060020a03823516916020810135918101906060810160408201356401000000008111156106fc57600080fd5b82018360208201111561070e57600080fd5b8035906020019184600183028401116401000000008311171561073057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611858945050505050565b34801561077d57600080fd5b50610786611877565b6040805160208082528351818301528351919283929083019185019080838360005b838110156107c05781810151838201526020016107a8565b50505050905090810190601f1680156107ed5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561080757600080fd5b506102916118ae565b34801561081c57600080fd5b506102916118b3565b34801561083157600080fd5b506102916004803603602081101561084857600080fd5b5035600160a060020a03166118b9565b34801561086457600080fd5b506102506004803603604081101561087b57600080fd5b50600160a060020a03813581169160200135166118cb565b34801561089f57600080fd5b50610291600480360360608110156108b657600080fd5b600160a060020a03823516916020810135918101906060810160408201356401000000008111156108e657600080fd5b8201836020820111156108f857600080fd5b8035906020019184600183028401116401000000008311171561091a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611af9945050505050565b34801561096757600080fd5b506102506004803603602081101561097e57600080fd5b5035611c34565b34801561099157600080fd5b506102d6600480360360208110156109a857600080fd5b5035611e08565b60038054829081106109bd57fe5b600091825260209091200154600160a060020a0316905081565b333014610a1c576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611edf833981519152604482015290519081900360640190fd5b600160a060020a038116600090815260026020526040902054819060ff161515610a7e576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611edf833981519152604482015290519081900360640190fd5b600160a060020a0382166000908152600260205260408120805460ff191690555b60035460001901811015610b545782600160a060020a0316600382815481101515610ac657fe5b600091825260209091200154600160a060020a03161415610b4c57600380546000198101908110610af357fe5b60009182526020909120015460038054600160a060020a039092169183908110610b1957fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a03160217905550610b54565b600101610a9f565b50600380546000190190610b689082611e1d565b506003546004541115610b8157600354610b8190611529565b604051600160a060020a038316907f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9090600090a25050565b3360008181526002602052604090205460ff161515610c10576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611edf833981519152604482015290519081900360640190fd5b60008281526001602090815260408083203380855292529091205483919060ff161515610c87576040805160e560020a62461bcd02815260206004820152601a60248201527f4e6f7420636f6e6669726d6564207472616e73616374696f6e2e000000000000604482015290519081900360640190fd5b600084815260208190526040902060030154849060ff1615610cf3576040805160e560020a62461bcd02815260206004820152601560248201527f4578656375746564207472616e73616374696f6e2e0000000000000000000000604482015290519081900360640190fd5b6000858152600160209081526040808320338085529252808320805460ff191690555187927ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e991a35050505050565b60085481565b60026020526000908152604090205460ff1681565b600160209081526000928352604080842090915290825290205460ff1681565b600754600160a060020a031681565b60065460ff1681565b6000805b600554811015610dfa57838015610dc2575060008181526020819052604090206003015460ff16155b80610de65750828015610de6575060008181526020819052604090206003015460ff165b15610df2576001820191505b600101610d99565b5092915050565b6006546101009004600160a060020a031681565b600a60205260009081526040902054600160a060020a031681565b333014610e75576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611edf833981519152604482015290519081900360640190fd5b600160a060020a038116600090815260026020526040902054819060ff1615610ed6576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611edf833981519152604482015290519081900360640190fd5b81600160a060020a0381161515610f37576040805160e560020a62461bcd02815260206004820152600f60248201527f41646472657373206973206e756c6c0000000000000000000000000000000000604482015290519081900360640190fd5b6003805490506001016004546032821180610f5157508181115b80610f5a575080155b80610f63575081155b15610fb8576040805160e560020a62461bcd02815260206004820152601360248201527f496e76616c696420726571756972656d656e7400000000000000000000000000604482015290519081900360640190fd5b600160a060020a038516600081815260026020526040808220805460ff1916600190811790915560038054918201815583527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01805473ffffffffffffffffffffffffffffffffffffffff191684179055517ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d9190a25050505050565b600080805b6003548110156110d4576000848152600160205260408120600380549192918490811061108357fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190205460ff16156110b7576001820191505b6004548214156110cc576001925050506110d7565b60010161105a565b50505b919050565b6000805b600354811015611145576000838152600160205260408120600380549192918490811061110957fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190205460ff161561113d576001820191505b6001016110e0565b50919050565b6000602081815291815260409081902080546001808301546002808501805487516101009582161595909502600019011691909104601f8101889004880284018801909652858352600160a060020a03909316959094919291908301828280156111f65780601f106111cb576101008083540402835291602001916111f6565b820191906000526020600020905b8154815290600101906020018083116111d957829003601f168201915b5050506003909301549192505060ff1684565b60096020526000908152604090205460ff1681565b6060600380548060200260200160405190810160405280929190818152602001828054801561127657602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311611258575b505050505090505b90565b6060806005546040519080825280602002602001820160405280156112b0578160200160208202803883390190505b5090506000805b600554811015611332578580156112e0575060008181526020819052604090206003015460ff16155b806113045750848015611304575060008181526020819052604090206003015460ff165b1561132a5780838381518110151561131857fe5b60209081029091010152600191909101905b6001016112b7565b87870360405190808252806020026020018201604052801561135e578160200160208202803883390190505b5093508790505b868110156113a757828181518110151561137b57fe5b906020019060200201518489830381518110151561139557fe5b60209081029091010152600101611365565b505050949350505050565b6060806003805490506040519080825280602002602001820160405280156113e4578160200160208202803883390190505b5090506000805b60035481101561149c576000858152600160205260408120600380549192918490811061141457fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190205460ff161561149457600380548290811061144f57fe5b6000918252602090912001548351600160a060020a039091169084908490811061147557fe5b600160a060020a03909216602092830290910190910152600191909101905b6001016113eb565b816040519080825280602002602001820160405280156114c6578160200160208202803883390190505b509350600090505b8181101561151b5782818151811015156114e457fe5b9060200190602002015184828151811015156114fc57fe5b600160a060020a039092166020928302909101909101526001016114ce565b505050919050565b60055481565b33301461156e576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611edf833981519152604482015290519081900360640190fd5b60035481603282118061158057508181115b80611589575080155b80611592575081155b156115e7576040805160e560020a62461bcd02815260206004820152601360248201527f496e76616c696420726571756972656d656e7400000000000000000000000000604482015290519081900360640190fd5b60048390556040805184815290517fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a9181900360200190a1505050565b333014611669576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611edf833981519152604482015290519081900360640190fd5b600654600160a060020a0382811661010090920416141561168957600080fd5b60068054600160a060020a039092166101000274ffffffffffffffffffffffffffffffffffffffff0019909216919091179055565b3360008181526002602052604090205460ff161515611715576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611edf833981519152604482015290519081900360640190fd5b6000828152602081905260409020548290600160a060020a03161515611785576040805160e560020a62461bcd02815260206004820152601760248201527f45786973746564207472616e73616374696f6e2069642e000000000000000000604482015290519081900360640190fd5b60008381526001602090815260408083203380855292529091205484919060ff16156117fb576040805160e560020a62461bcd02815260206004820152601660248201527f436f6e6669726d6564207472616e73616374696f6e2e00000000000000000000604482015290519081900360640190fd5b6000858152600160208181526040808420338086529252808420805460ff1916909317909255905187927f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef91a361185185611c34565b5050505050565b6000611865848484611af9565b9050611870816116be565b9392505050565b60408051808201909152600381527f4554480000000000000000000000000000000000000000000000000000000000602082015281565b603281565b60045481565b600b6020526000908152604090205481565b333014611910576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611edf833981519152604482015290519081900360640190fd5b600160a060020a038216600090815260026020526040902054829060ff161515611972576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611edf833981519152604482015290519081900360640190fd5b600160a060020a038216600090815260026020526040902054829060ff16156119d3576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020611edf833981519152604482015290519081900360640190fd5b60005b600354811015611a5f5784600160a060020a03166003828154811015156119f957fe5b600091825260209091200154600160a060020a03161415611a575783600382815481101515611a2457fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a03160217905550611a5f565b6001016119d6565b50600160a060020a03808516600081815260026020526040808220805460ff1990811690915593871682528082208054909416600117909355915190917f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9091a2604051600160a060020a038416907ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d90600090a250505050565b600083600160a060020a0381161515611b5c576040805160e560020a62461bcd02815260206004820152600f60248201527f41646472657373206973206e756c6c0000000000000000000000000000000000604482015290519081900360640190fd5b60055460408051608081018252600160a060020a0388811682526020808301898152838501898152600060608601819052878152808452959095208451815473ffffffffffffffffffffffffffffffffffffffff191694169390931783555160018301559251805194965091939092611bdc926002850192910190611e46565b50606091909101516003909101805460ff191691151591909117905560058054600101905560405182907fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5190600090a2509392505050565b600081815260208190526040902060030154819060ff1615611ca0576040805160e560020a62461bcd02815260206004820152601560248201527f4578656375746564207472616e73616374696f6e2e0000000000000000000000604482015290519081900360640190fd5b611ca982611055565b15611e045760008281526020819052604080822060038101805460ff19166001908117909155815481830154935160028085018054959796600160a060020a03909416959394909383928592600019908316156101000201909116048015611d485780601f10611d26576101008083540402835291820191611d48565b820191906000526020600020905b815481529060010190602001808311611d34575b505091505060006040518083038185875af1925050503d8060008114611d8a576040519150601f19603f3d011682016040523d82523d6000602084013e611d8f565b606091505b505090508015611dc95760405184907f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7590600090a2611e01565b60405184907f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923690600090a260038201805460ff191690555b50505b5050565b600c6020526000908152604090205460ff1681565b815481835581811115611e4157600083815260209020611e41918101908301611ec4565b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611e8757805160ff1916838001178555611eb4565b82800160010185558215611eb4579182015b82811115611eb4578251825591602001919060010190611e99565b50611ec0929150611ec4565b5090565b61127e91905b80821115611ec05760008155600101611eca56fe556e617574686f72697a65642e00000000000000000000000000000000000000a165627a7a72305820620a304d1f4c0cf3ced6c4561eded58216eafb3de08d3b63fc721313a44776de0029

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000040000000000000000000000004ff16c8ee6f5fed268cf764689451bf67795fbe8000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000000060000000000000000000000008a3f117ef3b40f1661dedf7f28fc33e7b6fae4f800000000000000000000000067c3c784c49d9ab8757adb71491df1a1b38fbfa800000000000000000000000034ebf4f74a881eb63f666e63ce1ff2f287ca5a8b00000000000000000000000031df9d7ee1a61b362277022eae46435782d66cff0000000000000000000000003924ac70075078a7713f543b72e3f8817ecec646000000000000000000000000d1176f2f576c102f6516d386de53ec7a72cc1491

-----Decoded View---------------
Arg [0] : _owners (address[]): 0x8a3F117Ef3b40f1661Dedf7f28fC33E7b6fae4F8,0x67C3c784C49d9ab8757ADb71491df1A1B38FbFA8,0x34EBf4f74a881eB63F666E63ce1Ff2F287CA5a8b,0x31df9D7ee1A61b362277022eAe46435782D66Cff,0x3924Ac70075078A7713f543b72e3F8817ecEc646,0xd1176F2f576C102F6516D386De53ec7a72Cc1491
Arg [1] : _required (uint256): 4
Arg [2] : _implementation (address): 0x4Ff16C8eE6f5FEd268cf764689451bf67795fbe8
Arg [3] : _tetherAddress (address): 0xdAC17F958D2ee523a2206206994597C13D831ec7

-----Encoded View---------------
11 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [2] : 0000000000000000000000004ff16c8ee6f5fed268cf764689451bf67795fbe8
Arg [3] : 000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [5] : 0000000000000000000000008a3f117ef3b40f1661dedf7f28fc33e7b6fae4f8
Arg [6] : 00000000000000000000000067c3c784c49d9ab8757adb71491df1a1b38fbfa8
Arg [7] : 00000000000000000000000034ebf4f74a881eb63f666e63ce1ff2f287ca5a8b
Arg [8] : 00000000000000000000000031df9d7ee1a61b362277022eae46435782d66cff
Arg [9] : 0000000000000000000000003924ac70075078a7713f543b72e3f8817ecec646
Arg [10] : 000000000000000000000000d1176f2f576c102f6516d386de53ec7a72cc1491


Deployed Bytecode Sourcemap

57:1474:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1095:14;;;;;-1:-1:-1;;;;;1095:14:1;1127:18;;;1119:27;;;;;;1196:4;1190:11;1235:12;1232:1;1227:3;1214:34;1321:1;1318;1304:12;1299:3;1293:4;1288:3;1275:48;1348:14;1398:4;1395:1;1390:3;1375:28;1424:6;1443:28;;;;1506:4;1501:3;1494:17;1443:28;1464:4;1459:3;1452:17;935:23:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;935:23:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;935:23:2;;;;;;;-1:-1:-1;;;;;935:23:2;;;;;;;;;;;;;;3987:465;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3987:465:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3987:465:2;-1:-1:-1;;;;;3987:465:2;;;;;6582:296;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6582:296:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6582:296:2;;;256:28:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;256:28:1;;;;;;;;;;;;;;;;;;;;889:40:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;889:40:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;889:40:2;-1:-1:-1;;;;;889:40:2;;;;;;;;;;;;;;;;;;;;;819:64;;8:9:-1;5:2;;;30:1;27;20:12;5:2;819:64:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;819:64:2;;;;;;-1:-1:-1;;;;;819:64:2;;;221:28:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;221:28:1;;;;141:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;141:30:1;;;;9513:315:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9513:315:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9513:315:2;;;;;;;;;;;;178:37:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;178:37:1;;;;346:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;346:44:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;346:44:1;;;3582:282:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3582:282:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3582:282:2;-1:-1:-1;;;;;3582:282:2;;;7679:333;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7679:333:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7679:333:2;;;9003:248;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9003:248:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9003:248:2;;;764:49;;8:9:-1;5:2;;;30:1;27;20:12;5:2;764:49:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;764:49:2;;;;;;;;-1:-1:-1;;;;;764:49:2;-1:-1:-1;;;;;764:49:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;764:49:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;291:48:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;291:48:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;291:48:1;;;9912:118:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9912:118:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;9912:118:2;;;;;;;;;;;;;;;;;11136:679;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11136:679:2;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;11136:679:2;;;;;;;;;;;;;;;;;;;;;;10209:578;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10209:578:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10209:578:2;;;990:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;990:28:2;;;;5281:212;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5281:212:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5281:212:2;;;878:157:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;878:157:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;878:157:1;-1:-1:-1;;;;;878:157:1;;;6109:349:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6109:349:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6109:349:2;;;5752:251;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5752:251:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;5752:251:2;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;5752:251:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5752:251:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5752:251:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;5752:251:2;;-1:-1:-1;5752:251:2;;-1:-1:-1;;;;;5752:251:2;98:36:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;98:36:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;98:36:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;216:41:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;216:41:2;;;;964:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;964:20:2;;;;396:49:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;396:49:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;396:49:1;-1:-1:-1;;;;;396:49:1;;;4651:459:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4651:459:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4651:459:2;;;;;;;;;;;8345:461;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8345:461:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;8345:461:2;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;8345:461:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8345:461:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;8345:461:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;8345:461:2;;-1:-1:-1;8345:461:2;;-1:-1:-1;;;;;8345:461:2;6992:536;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6992:536:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6992:536:2;;;452:44:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;452:44:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;452:44:1;;;935:23:2;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;935:23:2;;-1:-1:-1;935:23:2;:::o;3987:465::-;1185:10;1207:4;1185:27;1181:68;;1226:23;;;-1:-1:-1;;;;;1226:23:2;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1226:23:2;;;;;;;;;;;;;;1181:68;-1:-1:-1;;;;;1455:14:2;;;;;;:7;:14;;;;;;4077:5;;1455:14;;1454:15;1450:56;;;1483:23;;;-1:-1:-1;;;;;1483:23:2;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1483:23:2;;;;;;;;;;;;;;1450:56;-1:-1:-1;;;;;4098:14:2;;4115:5;4098:14;;;:7;:14;;;;;:22;;-1:-1:-1;;4098:22:2;;;4130:170;4147:6;:13;-1:-1:-1;;4147:17:2;4145:19;;4130:170;;;4200:5;-1:-1:-1;;;;;4187:18:2;:6;4194:1;4187:9;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4187:9:2;:18;4183:117;;;4237:6;4244:13;;-1:-1:-1;;4244:17:2;;;4237:25;;;;;;;;;;;;;;;;4225:6;:9;;-1:-1:-1;;;;;4237:25:2;;;;4232:1;;4225:9;;;;;;;;;;;;;;:37;;;;;-1:-1:-1;;;;;4225:37:2;;;;;-1:-1:-1;;;;;4225:37:2;;;;;;4280:5;;4183:117;4166:3;;4130:170;;;-1:-1:-1;4309:6:2;:18;;-1:-1:-1;;4309:18:2;;;;;;:::i;:::-;-1:-1:-1;4352:6:2;:13;4341:8;;:24;4337:74;;;4397:6;:13;4379:32;;:17;:32::i;:::-;4426:19;;-1:-1:-1;;;;;4426:19:2;;;;;;;;1259:1;3987:465;:::o;6582:296::-;6665:10;1455:14;;;;:7;:14;;;;;;;;1454:15;1450:56;;;1483:23;;;-1:-1:-1;;;;;1483:23:2;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1483:23:2;;;;;;;;;;;;;;1450:56;1784:28;;;;:13;:28;;;;;;;;6710:10;1784:35;;;;;;;;;6695:13;;6710:10;1784:35;;1783:36;1779:90;;;1833:36;;;-1:-1:-1;;;;;1833:36:2;;;;;;;;;;;;;;;;;;;;;;;;;;;1779:90;2124:12;:27;;;;;;;;;;:36;;;6742:13;;2124:36;;2120:85;;;2174:31;;;-1:-1:-1;;;;;2174:31:2;;;;;;;;;;;;;;;;;;;;;;;;;;;2120:85;6814:5;6771:28;;;:13;:28;;;;;;;;6800:10;6771:40;;;;;;;;:48;;-1:-1:-1;;6771:48:2;;;6834:37;6785:13;;6834:37;;;1879:1;1516;;6582:296;;:::o;256:28:1:-;;;;:::o;889:40:2:-;;;;;;;;;;;;;;;:::o;819:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;221:28:1:-;;;-1:-1:-1;;;;;221:28:1;;:::o;141:30::-;;;;;;:::o;9513:315:2:-;9616:10;;9642:179;9659:16;;9657:1;:18;9642:179;;;9701:7;:36;;;;-1:-1:-1;9713:12:2;:15;;;;;;;;;;:24;;;;;9712:25;9701:36;:92;;;;9757:8;:36;;;;-1:-1:-1;9769:12:2;:15;;;;;;;;;;:24;;;;;9757:36;9694:127;;;9820:1;9811:10;;;;9694:127;9677:3;;9642:179;;;;9513:315;;;;:::o;178:37:1:-;;;;;;-1:-1:-1;;;;;178:37:1;;:::o;346:44::-;;;;;;;;;;;;-1:-1:-1;;;;;346:44:1;;:::o;3582:282:2:-;1185:10;1207:4;1185:27;1181:68;;1226:23;;;-1:-1:-1;;;;;1226:23:2;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1226:23:2;;;;;;;;;;;;;;1181:68;-1:-1:-1;;;;;1329:14:2;;;;;;:7;:14;;;;;;3675:5;;1329:14;;1325:55;;;1357:23;;;-1:-1:-1;;;;;1357:23:2;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1357:23:2;;;;;;;;;;;;;;1325:55;3698:5;-1:-1:-1;;;;;2278:22:2;;;2274:65;;;2314:25;;;-1:-1:-1;;;;;2314:25:2;;;;;;;;;;;;;;;;;;;;;;;;;;;2274:65;3730:6;:13;;;;3746:1;3730:17;3749:8;;255:2;2439:10;:28;:66;;;;2495:10;2483:9;:22;2439:66;:96;;;-1:-1:-1;2521:14:2;;2439:96;:127;;;-1:-1:-1;2551:15:2;;2439:127;2432:177;;;2580:29;;;-1:-1:-1;;;;;2580:29:2;;;;;;;;;;;;;;;;;;;;;;;;;;;2432:177;-1:-1:-1;;;;;3773:14:2;;;;;;:7;:14;;;;;;:21;;-1:-1:-1;;3773:21:2;3790:4;3773:21;;;;;;3804:6;27:10:-1;;23:18;;;45:23;;3804:18:2;;;;;;-1:-1:-1;;3804:18:2;;;;;3837:20;;;3773:14;3837:20;2349:1;;1390;1259;3582:282;:::o;7679:333::-;7765:4;;;7809:197;7826:6;:13;7824:15;;7809:197;;;7864:28;;;;:13;:28;;;;;7893:6;:9;;7864:28;;;7900:1;;7893:9;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7893:9:2;7864:39;;;;;;;;;;;;;;;7860:71;;;7930:1;7921:10;;;;7860:71;7958:8;;7949:5;:17;7945:50;;;7991:4;7984:11;;;;;;7945:50;7841:3;;7809:197;;;;7679:333;;;;;:::o;9003:248::-;9098:10;;9124:120;9141:6;:13;9139:15;;9124:120;;;9177:28;;;;:13;:28;;;;;9206:6;:9;;9177:28;;;9213:1;;9206:9;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9206:9:2;9177:39;;;;;;;;;;;;;;;9173:71;;;9243:1;9234:10;;;;9173:71;9156:3;;9124:120;;;;9003:248;;;:::o;764:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;764:49:2;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;764:49:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;764:49:2;;;;;;;-1:-1:-1;;764:49:2;;;:::o;291:48:1:-;;;;;;;;;;;;;;;:::o;9912:118:2:-;9978:16;10017:6;10010:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10010:13:2;;;;;;;;;;;;;;;;;;;;;;;9912:118;;:::o;11136:679::-;11257:29;11302:32;11348:16;;11337:28;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;11337:28:2;-1:-1:-1;11302:63:2;-1:-1:-1;11375:10:2;;11415:250;11427:16;;11425:1;:18;11415:250;;;11469:7;:36;;;;-1:-1:-1;11481:12:2;:15;;;;;;;;;;:24;;;;;11480:25;11469:36;:92;;;;11525:8;:36;;;;-1:-1:-1;11537:12:2;:15;;;;;;;;;;:24;;;;;11525:36;11462:203;;;11621:1;11593:18;11612:5;11593:25;;;;;;;;;;;;;;;;;;:29;11649:1;11640:10;;;;;11462:203;11445:3;;11415:250;;;11708:4;11703:2;:9;11692:21;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;11692:21:2;;11674:39;;11730:4;11728:6;;11723:85;11738:2;11736:1;:4;11723:85;;;11787:18;11806:1;11787:21;;;;;;;;;;;;;;;;;;11759:15;11779:4;11775:1;:8;11759:25;;;;;;;;;;;;;;;;;;:49;11742:3;;11723:85;;;11136:679;;;;;;;;;:::o;10209:578::-;10300:31;10347:34;10398:6;:13;;;;10384:28;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;10384:28:2;-1:-1:-1;10347:65:2;-1:-1:-1;10422:10:2;;10462:186;10474:6;:13;10472:15;;10462:186;;;10510:28;;;;:13;:28;;;;;10539:6;:9;;10510:28;;;10546:1;;10539:9;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10539:9:2;10510:39;;;;;;;;;;;;;;;10506:142;;;10596:6;:9;;10603:1;;10596:9;;;;;;;;;;;;;;;;10569:24;;-1:-1:-1;;;;;10596:9:2;;;;10569:17;;10587:5;;10569:24;;;;;;-1:-1:-1;;;;;10569:36:2;;;:24;;;;;;;;;;:36;10632:1;10623:10;;;;;10506:142;10489:3;;10462:186;;;10688:5;10674:20;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;10674:20:2;;10657:37;;10711:1;10709:3;;10704:76;10716:5;10714:1;:7;10704:76;;;10760:17;10778:1;10760:20;;;;;;;;;;;;;;;;;;10740:14;10755:1;10740:17;;;;;;;;;;-1:-1:-1;;;;;10740:40:2;;;:17;;;;;;;;;;:40;10723:3;;10704:76;;;10209:578;;;;;;:::o;990:28::-;;;;:::o;5281:212::-;1185:10;1207:4;1185:27;1181:68;;1226:23;;;-1:-1:-1;;;;;1226:23:2;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1226:23:2;;;;;;;;;;;;;;1181:68;5383:6;:13;5398:9;255:2;2439:28;;;:66;;;2495:10;2483:9;:22;2439:66;:96;;;-1:-1:-1;2521:14:2;;2439:96;:127;;;-1:-1:-1;2551:15:2;;2439:127;2432:177;;;2580:29;;;-1:-1:-1;;;;;2580:29:2;;;;;;;;;;;;;;;;;;;;;;;;;;;2432:177;5423:8;:20;;;5458:28;;;;;;;;;;;;;;;;;1259:1;;5281:212;:::o;878:157:1:-;1185:10:2;1207:4;1185:27;1181:68;;1226:23;;;-1:-1:-1;;;;;1226:23:2;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1226:23:2;;;;;;;;;;;;;;1181:68;967:14:1;;-1:-1:-1;;;;;967:25:1;;;:14;;;;;:25;;959:34;;;;;;1003:14;:24;;-1:-1:-1;;;;;1003:24:1;;;;;-1:-1:-1;;1003:24:1;;;;;;;;;878:157::o;6109:349:2:-;6192:10;1455:14;;;;:7;:14;;;;;;;;1454:15;1450:56;;;1483:23;;;-1:-1:-1;;;;;1483:23:2;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1483:23:2;;;;;;;;;;;;;;1450:56;1642:1;1591:27;;;;;;;;;;:39;6230:13;;-1:-1:-1;;;;;1591:39:2;:53;1587:104;;;1658:33;;;-1:-1:-1;;;;;1658:33:2;;;;;;;;;;;;;;;;;;;;;;;;;;;1587:104;1964:28;;;;:13;:28;;;;;;;;6281:10;1964:35;;;;;;;;;6266:13;;6281:10;1964:35;;1960:85;;;2013:32;;;-1:-1:-1;;;;;2013:32:2;;;;;;;;;;;;;;;;;;;;;;;;;;;1960:85;6307:28;;;;6350:4;6307:28;;;;;;;;6336:10;6307:40;;;;;;;;:47;;-1:-1:-1;;6307:47:2;;;;;;;6369:39;;6321:13;;6369:39;;;6418:33;6437:13;6418:18;:33::i;:::-;1701:1;;1516;6109:349;;:::o;5752:251::-;5863:18;5913:40;5928:11;5941:5;5948:4;5913:14;:40::i;:::-;5897:56;;5963:33;5982:13;5963:18;:33::i;:::-;5752:251;;;;;:::o;98:36:1:-;;;;;;;;;;;;;;;;;;;:::o;216:41:2:-;255:2;216:41;:::o;964:20::-;;;;:::o;396:49:1:-;;;;;;;;;;;;;:::o;4651:459:2:-;1185:10;1207:4;1185:27;1181:68;;1226:23;;;-1:-1:-1;;;;;1226:23:2;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1226:23:2;;;;;;;;;;;;;;1181:68;-1:-1:-1;;;;;1455:14:2;;;;;;:7;:14;;;;;;4760:5;;1455:14;;1454:15;1450:56;;;1483:23;;;-1:-1:-1;;;;;1483:23:2;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1483:23:2;;;;;;;;;;;;;;1450:56;-1:-1:-1;;;;;1329:14:2;;;;;;:7;:14;;;;;;4793:8;;1329:14;;1325:55;;;1357:23;;;-1:-1:-1;;;;;1357:23:2;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1357:23:2;;;;;;;;;;;;;;1325:55;4822:6;4817:149;4834:6;:13;4832:15;;4817:149;;;4883:5;-1:-1:-1;;;;;4870:18:2;:6;4877:1;4870:9;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4870:9:2;:18;4866:100;;;4920:8;4908:6;4915:1;4908:9;;;;;;;;;;;;;;;;;;:20;;;;;-1:-1:-1;;;;;4908:20:2;;;;;-1:-1:-1;;;;;4908:20:2;;;;;;4946:5;;4866:100;4849:3;;4817:149;;;-1:-1:-1;;;;;;4975:14:2;;;4992:5;4975:14;;;:7;:14;;;;;;:22;;-1:-1:-1;;4975:22:2;;;;;;5007:17;;;;;;;;:24;;;;;4975:22;5007:24;;;;5046:19;;4975:14;;5046:19;;;5080:23;;-1:-1:-1;;;;;5080:23:2;;;;;;;;1516:1;1259;4651:459;;:::o;8345:461::-;8482:18;8452:11;-1:-1:-1;;;;;2278:22:2;;;2274:65;;;2314:25;;;-1:-1:-1;;;;;2314:25:2;;;;;;;;;;;;;;;;;;;;;;;;;;;2274:65;8532:16;;8588:140;;;;;;;;-1:-1:-1;;;;;8588:140:2;;;;;;;;;;;;;;;;;;-1:-1:-1;8588:140:2;;;;;;8558:27;;;;;;;;;;:170;;;;-1:-1:-1;;8558:170:2;;;;;;;;;;-1:-1:-1;8558:170:2;;;;;;;8532:16;;-1:-1:-1;8588:140:2;;8558:27;;:170;;;;;;;;;;:::i;:::-;-1:-1:-1;8558:170:2;;;;;;;;;;;;-1:-1:-1;;8558:170:2;;;;;;;;;;8738:16;:21;;-1:-1:-1;8738:21:2;;;8774:25;;8785:13;;8774:25;;-1:-1:-1;;8774:25:2;8345:461;;;;;;:::o;6992:536::-;2124:12;:27;;;;;;;;;;:36;;;7075:13;;2124:36;;2120:85;;;2174:31;;;-1:-1:-1;;;;;2174:31:2;;;;;;;;;;;;;;;;;;;;;;;;;;;2120:85;7108:26;7120:13;7108:11;:26::i;:::-;7104:418;;;7150:23;7176:27;;;;;;;;;;;7217:12;;;:19;;-1:-1:-1;;7217:19:2;7232:4;7217:19;;;;;;7268:15;;7295:9;;;;7268:47;;7306:8;;;;7268:47;;7176:27;;7150:23;-1:-1:-1;;;;;7268:15:2;;;;7295:9;;7306:8;;7268:47;;7306:8;;-1:-1:-1;;7268:47:2;;;;7217:19;7268:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;7250:65:2;;;7333:6;7329:183;;;7362:24;;7372:13;;7362:24;;;;;7329:183;;;7428:31;;7445:13;;7428:31;;;;;7477:12;;;:20;;-1:-1:-1;;7477:20:2;;;7329:183;7104:418;;;6992:536;;:::o;452:44:1:-;;;;;;;;;;;;;;;:::o;57:1474::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;57:1474:1;;;-1:-1:-1;57:1474:1;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;

Swarm Source

bzzr://620a304d1f4c0cf3ced6c4561eded58216eafb3de08d3b63fc721313a44776de

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
0x1Bf68A9d1EaEe7826b3593C20a0ca93293cb489a
Loading...
Loading
[ Download: CSV Export  ]
[ 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.