ETH Price: $3,667.83 (+0.86%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Execute158278462022-10-25 21:43:47803 days ago1666734227IN
0x9B40c0EA...9119C77a5
0 ETH0.0012139816.54830207
Execute158278302022-10-25 21:40:35803 days ago1666734035IN
0x9B40c0EA...9119C77a5
0 ETH0.0013025617.7506691
Execute158278242022-10-25 21:39:23803 days ago1666733963IN
0x9B40c0EA...9119C77a5
0 ETH0.0013324718.17314999
Execute158278202022-10-25 21:38:23803 days ago1666733903IN
0x9B40c0EA...9119C77a5
0 ETH0.001289317.56334488
Execute158278192022-10-25 21:38:11803 days ago1666733891IN
0x9B40c0EA...9119C77a5
0 ETH0.0011621615.83593005
Execute157594362022-10-16 8:18:59812 days ago1665908339IN
0x9B40c0EA...9119C77a5
0 ETH0.0014661413.46608124
Execute157511382022-10-15 4:30:47813 days ago1665808247IN
0x9B40c0EA...9119C77a5
0 ETH0.0013934516.924643
Execute156937932022-10-07 4:19:47821 days ago1665116387IN
0x9B40c0EA...9119C77a5
0 ETH0.000520175.91495802
Execute156935882022-10-07 3:38:35821 days ago1665113915IN
0x9B40c0EA...9119C77a5
0 ETH0.0015109812.63501493
Execute156935692022-10-07 3:34:47821 days ago1665113687IN
0x9B40c0EA...9119C77a5
0 ETH0.000754669.16469572
Execute156692502022-10-03 17:54:59825 days ago1664819699IN
0x9B40c0EA...9119C77a5
0 ETH0.0044472923.10678497
Execute156168752022-09-26 10:12:47832 days ago1664187167IN
0x9B40c0EA...9119C77a5
0 ETH0.001049075.98219241
Execute156165962022-09-26 9:16:47832 days ago1664183807IN
0x9B40c0EA...9119C77a5
0 ETH0.000620997.54135386
Execute155462852022-09-16 12:50:11842 days ago1663332611IN
0x9B40c0EA...9119C77a5
0 ETH0.0021620311.23395952
Execute154887822022-09-07 6:26:25851 days ago1662531985IN
0x9B40c0EA...9119C77a5
0 ETH0.0012518414.23856144
Execute154887202022-09-07 6:13:10851 days ago1662531190IN
0x9B40c0EA...9119C77a5
0 ETH0.001587719.28112501
Execute154876662022-09-07 2:13:49852 days ago1662516829IN
0x9B40c0EA...9119C77a5
0 ETH0.001867922.68716276
Execute154851572022-09-06 16:31:23852 days ago1662481883IN
0x9B40c0EA...9119C77a5
0 ETH0.0043112338.18390514
Execute154851152022-09-06 16:23:00852 days ago1662481380IN
0x9B40c0EA...9119C77a5
0 ETH0.0031217237.91025997
Execute154828482022-09-06 7:55:49852 days ago1662450949IN
0x9B40c0EA...9119C77a5
0 ETH0.000895217.48589181
Execute154828332022-09-06 7:52:20852 days ago1662450740IN
0x9B40c0EA...9119C77a5
0 ETH0.002059928.26408101
Execute154764822022-09-05 7:15:28853 days ago1662362128IN
0x9B40c0EA...9119C77a5
0 ETH0.001116139.33323581
Execute154637872022-09-03 6:22:26855 days ago1662186146IN
0x9B40c0EA...9119C77a5
0 ETH0.001021858.54569156
Execute154595672022-09-02 14:00:30856 days ago1662127230IN
0x9B40c0EA...9119C77a5
0 ETH0.0022660411.70471546
Execute153660852022-08-18 16:34:12871 days ago1660840452IN
0x9B40c0EA...9119C77a5
0 ETH0.0016413520.63424641
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x31fa6313...cb01b985A
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
MultiSig

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 1 of 4: MultiSig.sol
/**
 * SPDX-License-Identifier: MIT
 */

pragma solidity >=0.8;

import "./Address.sol";
import "./RLPEncode.sol";
import "./Nonce.sol";

contract MultiSig is Nonce {

  mapping (address => uint8) public signers; // The addresses that can co-sign transactions and the number of signatures needed

  uint16 public signerCount;
  bytes public contractId; // most likely unique id of this contract

  event SignerChange(
    address indexed signer,
    uint8 cosignaturesNeeded
  );

  event Transacted(
    address indexed toAddress,  // The address the transaction was sent to
    bytes4 selector, // selected operation
    address[] signers // Addresses of the signers used to initiate the transaction
  );

  constructor (address owner) {
    // We use the gas price to get a unique id into our transactions.
    // Note that 32 bits do not guarantee that no one can generate a contract with the
    // same id, but it practically rules out that someone accidentally creates two
    // two multisig contracts with the same id, and that's all we need to prevent
    // replay-attacks.
    contractId = toBytes(uint32(uint160(address(this))));
    _setSigner(owner, 1); // set initial owner
  }

  /**
   * It should be possible to store ether on this address.
   */
  receive() external payable {
  }

  /**
   * Checks if the provided signatures suffice to sign the transaction and if the nonce is correct.
   */
  function checkSignatures(uint128 nonce, address to, uint value, bytes calldata data,
    uint8[] calldata v, bytes32[] calldata r, bytes32[] calldata s) public view returns (address[] memory) {
    bytes32 transactionHash = calculateTransactionHash(nonce, contractId, to, value, data);
    return verifySignatures(transactionHash, v, r, s);
  }

  /**
   * Checks if the execution of a transaction would succeed if it was properly signed.
   */
  function checkExecution(address to, uint value, bytes calldata data) public {
    Address.functionCallWithValue(to, data, value);
    require(false, "Test passed. Reverting.");
  }

  function execute(uint128 nonce, address to, uint value, bytes calldata data, uint8[] calldata v, bytes32[] calldata r, bytes32[] calldata s) public returns (bytes memory) {
    bytes32 transactionHash = calculateTransactionHash(nonce, contractId, to, value, data);
    address[] memory found = verifySignatures(transactionHash, v, r, s);
    bytes memory returndata = Address.functionCallWithValue(to, data, value);
    flagUsed(nonce);
    emit Transacted(to, extractSelector(data), found);
    return returndata;
  }

  function extractSelector(bytes calldata data) private pure returns (bytes4){
    if (data.length < 4){
      return bytes4(0);
    } else {
      return bytes4(data[0]) | (bytes4(data[1]) >> 8) | (bytes4(data[2]) >> 16) | (bytes4(data[3]) >> 24);
    }
  }

  function toBytes(uint number) internal pure returns (bytes memory){
    uint len = 0;
    uint temp = 1;
    while (number >= temp){
      temp = temp << 8;
      len++;
    }
    temp = number;
    bytes memory data = new bytes(len);
    for (uint i = len; i>0; i--) {
      data[i-1] = bytes1(uint8(temp));
      temp = temp >> 8;
    }
    return data;
  }

  // Note: does not work with contract creation
  function calculateTransactionHash(uint128 sequence, bytes memory id, address to, uint value, bytes calldata data)
    internal view returns (bytes32){
    bytes[] memory all = new bytes[](9);
    all[0] = toBytes(sequence); // sequence number instead of nonce
    all[1] = id; // contract id instead of gas price
    all[2] = toBytes(21000); // gas limit
    all[3] = abi.encodePacked(to);
    all[4] = toBytes(value);
    all[5] = data;
    all[6] = toBytes(block.chainid);
    all[7] = toBytes(0);
    for (uint i = 0; i<8; i++){
      all[i] = RLPEncode.encodeBytes(all[i]);
    }
    all[8] = all[7];
    return keccak256(RLPEncode.encodeList(all));
  }

  function verifySignatures(bytes32 transactionHash, uint8[] calldata v, bytes32[] calldata r, bytes32[] calldata s)
    public view returns (address[] memory) {
    address[] memory found = new address[](r.length);
    for (uint i = 0; i < r.length; i++) {
      address signer = ecrecover(transactionHash, v[i], r[i], s[i]);
      uint8 cosignaturesNeeded = signers[signer];
      require(cosignaturesNeeded > 0 && cosignaturesNeeded <= r.length, "cosigner error");
      found[i] = signer;
    }
    requireNoDuplicates(found);
    return found;
  }

  function requireNoDuplicates(address[] memory found) private pure {
    for (uint i = 0; i < found.length; i++) {
      for (uint j = i+1; j < found.length; j++) {
        require(found[i] != found[j], "duplicate signature");
      }
    }
  }

  /**
   * Call this method through execute
   */
  function setSigner(address signer, uint8 cosignaturesNeeded) public authorized {
    _setSigner(signer, cosignaturesNeeded);
    require(signerCount > 0);
  }

  function migrate(address destination) public {
    _migrate(msg.sender, destination);
  }

  function migrate(address source, address destination) public authorized {
    _migrate(source, destination);
  }

  function _migrate(address source, address destination) private {
    require(signers[destination] == 0); // do not overwrite existing signer!
    _setSigner(destination, signers[source]);
    _setSigner(source, 0);
  }

  function _setSigner(address signer, uint8 cosignaturesNeeded) private {
    require(!Address.isContract(signer), "signer cannot be a contract");
    uint8 prevValue = signers[signer];
    signers[signer] = cosignaturesNeeded;
    if (prevValue > 0 && cosignaturesNeeded == 0){
      signerCount--;
    } else if (prevValue == 0 && cosignaturesNeeded > 0){
      signerCount++;
    }
    emit SignerChange(signer, cosignaturesNeeded);
  }

  modifier authorized() {
    require(address(this) == msg.sender || signers[msg.sender] == 1, "not authorized");
    _;
  }

}

File 2 of 4: Address.sol
// SPDX-License-Identifier: MIT
// Copied from https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Address.sol
// and modified it.

pragma solidity >=0.8;

library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 weiValue) internal returns (bytes memory) {
        // solhint-disable-next-line avoid-low-level-calls
        require(data.length == 0 || isContract(target));
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            // TODO: I think this does not lead to correct error messages.
            revert(string(returndata));
        }
    }
}

File 3 of 4: Nonce.sol
/**
* SPDX-License-Identifier: LicenseRef-Aktionariat
*
* MIT License with Automated License Fee Payments
*
* Copyright (c) 2020 Aktionariat AG (aktionariat.com)
*
* Permission is hereby granted to any person obtaining a copy of this software
* and associated documentation files (the "Software"), to deal in the Software
* without restriction, including without limitation the rights to use, copy,
* modify, merge, publish, distribute, sublicense, and/or sell copies of the
* Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
*
* - The above copyright notice and this permission notice shall be included in
*   all copies or substantial portions of the Software.
* - All automated license fee payments integrated into this and related Software
*   are preserved.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/

pragma solidity >=0.8;

contract Nonce {

    uint256 public constant MAX_INCREASE = 100;
    
    uint256 private compound;
    
    constructor(){
        setBoth(128, 0);
    }
    
    /**
     * The next recommended nonce, which is the highest nonce ever used plus one.
     */
    function nextNonce() public view returns (uint256){
        return getMax() + 1;
    }

    /**
     * Returns whether the provided nonce can be used.
     * For the 100 nonces in the interval [nextNonce(), nextNonce + 99], this is always true.
     * For the nonces in the interval [nextNonce() - 129, nextNonce() - 1], this is true for the nonces that have not been used yet.
     */ 
    function isFree(uint128 nonce) public view returns (bool){
        uint128 max = getMax();
        return isValidHighNonce(max, nonce) || isValidLowNonce(max, getRegister(), nonce);
    }

    /**
     * Flags the given nonce as used.
     * Reverts if the provided nonce is not free.
     */
    function flagUsed(uint128 nonce) internal {
        uint256 comp = compound;
        uint128 max = uint128(comp);
        uint128 reg = uint128(comp >> 128);
        if (isValidHighNonce(max, nonce)){
            setBoth(nonce, ((reg << 1) | 0x1) << (nonce - max - 1));
        } else if (isValidLowNonce(max, reg, nonce)){
            setBoth(max, uint128(reg | 0x1 << (max - nonce - 1)));
        } else {
            require(false);
        }
    }
    
    function getMax() private view returns (uint128) {
        return uint128(compound);
    }
    
    function getRegister() private view returns (uint128) {
        return uint128(compound >> 128);
    }
    
    function setBoth(uint128 max, uint128 reg) private {
        compound = uint256(reg) << 128 | max;
    }

    function isValidHighNonce(uint128 max, uint128 nonce) private pure returns (bool){
        return nonce > max && nonce <= max + MAX_INCREASE;
    }

    function isValidLowNonce(uint128 max, uint128 reg, uint256 nonce) private pure returns (bool){
        uint256 diff = max - nonce;
        return diff > 0 && diff <= 128 && ((0x1 << (diff - 1)) & reg == 0);
    }
    
}

File 4 of 4: RLPEncode.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.4.0;
/**
 * @title RLPEncode
 * @dev A simple RLP encoding library.
 * @author Bakaoh
 */
library RLPEncode {
    /*
     * Internal functions
     */

    /**
     * @dev RLP encodes a byte string.
     * @param self The byte string to encode.
     * @return The RLP encoded string in bytes.
     */
    function encodeBytes(bytes memory self) internal pure returns (bytes memory) {
        bytes memory encoded;
        if (self.length == 1 && uint8(self[0]) <= 128) {
            encoded = self;
        } else {
            encoded = concat(encodeLength(self.length, 128), self);
        }
        return encoded;
    }

    /**
     * @dev RLP encodes a list of RLP encoded byte byte strings.
     * @param self The list of RLP encoded byte strings.
     * @return The RLP encoded list of items in bytes.
     */
    function encodeList(bytes[] memory self) internal pure returns (bytes memory) {
        bytes memory list = flatten(self);
        return concat(encodeLength(list.length, 192), list);
    }

    /**
     * @dev RLP encodes a string.
     * @param self The string to encode.
     * @return The RLP encoded string in bytes.
     */
    function encodeString(string memory self) internal pure returns (bytes memory) {
        return encodeBytes(bytes(self));
    }

    /** 
     * @dev RLP encodes an address.
     * @param self The address to encode.
     * @return The RLP encoded address in bytes.
     */
    function encodeAddress(address self) internal pure returns (bytes memory) {
        bytes memory inputBytes;
        assembly {
            let m := mload(0x40)
            mstore(add(m, 20), xor(0x140000000000000000000000000000000000000000, self))
            mstore(0x40, add(m, 52))
            inputBytes := m
        }
        return encodeBytes(inputBytes);
    }

    /** 
     * @dev RLP encodes a uint.
     * @param self The uint to encode.
     * @return The RLP encoded uint in bytes.
     */
    function encodeUint(uint self) internal pure returns (bytes memory) {
        return encodeBytes(toBinary(self));
    }

    /** 
     * @dev RLP encodes an int.
     * @param self The int to encode.
     * @return The RLP encoded int in bytes.
     */
    function encodeInt(int self) internal pure returns (bytes memory) {
        return encodeUint(uint(self));
    }

    /** 
     * @dev RLP encodes a bool.
     * @param self The bool to encode.
     * @return The RLP encoded bool in bytes.
     */
    function encodeBool(bool self) internal pure returns (bytes memory) {
        bytes memory encoded = new bytes(1);
        encoded[0] = (self ? bytes1(0x01) : bytes1(0x80));
        return encoded;
    }


    /*
     * Private functions
     */

    /**
     * @dev Encode the first byte, followed by the `len` in binary form if `length` is more than 55.
     * @param len The length of the string or the payload.
     * @param offset 128 if item is string, 192 if item is list.
     * @return RLP encoded bytes.
     */
    function encodeLength(uint len, uint offset) private pure returns (bytes memory) {
        bytes memory encoded;
        if (len < 56) {
            encoded = new bytes(1);
            encoded[0] = bytes32(len + offset)[31];
        } else {
            uint lenLen;
            uint i = 1;
            while (len / i != 0) {
                lenLen++;
                i *= 256;
            }

            encoded = new bytes(lenLen + 1);
            encoded[0] = bytes32(lenLen + offset + 55)[31];
            for(i = 1; i <= lenLen; i++) {
                encoded[i] = bytes32((len / (256**(lenLen-i))) % 256)[31];
            }
        }
        return encoded;
    }

    /**
     * @dev Encode integer in big endian binary form with no leading zeroes.
     * @notice TODO: This should be optimized with assembly to save gas costs.
     * @param _x The integer to encode.
     * @return RLP encoded bytes.
     */
    function toBinary(uint _x) private pure returns (bytes memory) {
        bytes memory b = new bytes(32);
        assembly { 
            mstore(add(b, 32), _x) 
        }
        uint i;
        for (i = 0; i < 32; i++) {
            if (b[i] != 0) {
                break;
            }
        }
        bytes memory res = new bytes(32 - i);
        for (uint j = 0; j < res.length; j++) {
            res[j] = b[i++];
        }
        return res;
    }

    /**
     * @dev Copies a piece of memory to another location.
     * @notice From: https://github.com/Arachnid/solidity-stringutils/blob/master/src/strings.sol.
     * @param _dest Destination location.
     * @param _src Source location.
     * @param _len Length of memory to copy.
     */
    function memcpy(uint _dest, uint _src, uint _len) private pure {
        uint dest = _dest;
        uint src = _src;
        uint len = _len;

        for(; len >= 32; len -= 32) {
            assembly {
                mstore(dest, mload(src))
            }
            dest += 32;
            src += 32;
        }

        uint mask = 256 ** (32 - len) - 1;
        assembly {
            let srcpart := and(mload(src), not(mask))
            let destpart := and(mload(dest), mask)
            mstore(dest, or(destpart, srcpart))
        }
    }

    /**
     * @dev Flattens a list of byte strings into one byte string.
     * @notice From: https://github.com/sammayo/solidity-rlp-encoder/blob/master/RLPEncode.sol.
     * @param _list List of byte strings to flatten.
     * @return The flattened byte string.
     */
    function flatten(bytes[] memory _list) private pure returns (bytes memory) {
        if (_list.length == 0) {
            return new bytes(0);
        }

        uint len;
        uint i;
        for (i = 0; i < _list.length; i++) {
            len += _list[i].length;
        }

        bytes memory flattened = new bytes(len);
        uint flattenedPtr;
        assembly { flattenedPtr := add(flattened, 0x20) }

        for(i = 0; i < _list.length; i++) {
            bytes memory item = _list[i];
            
            uint listPtr;
            assembly { listPtr := add(item, 0x20)}

            memcpy(flattenedPtr, listPtr, item.length);
            flattenedPtr += _list[i].length;
        }

        return flattened;
    }

    /**
     * @dev Concatenates two bytes.
     * @notice From: https://github.com/GNSPS/solidity-bytes-utils/blob/master/contracts/BytesLib.sol.
     * @param _preBytes First byte string.
     * @param _postBytes Second byte string.
     * @return Both byte string combined.
     */
    function concat(bytes memory _preBytes, bytes memory _postBytes) private pure returns (bytes memory) {
        bytes memory tempBytes;

        assembly {
            tempBytes := mload(0x40)

            let length := mload(_preBytes)
            mstore(tempBytes, length)

            let mc := add(tempBytes, 0x20)
            let end := add(mc, length)

            for {
                let cc := add(_preBytes, 0x20)
            } lt(mc, end) {
                mc := add(mc, 0x20)
                cc := add(cc, 0x20)
            } {
                mstore(mc, mload(cc))
            }

            length := mload(_postBytes)
            mstore(tempBytes, add(length, mload(tempBytes)))

            mc := end
            end := add(mc, length)

            for {
                let cc := add(_postBytes, 0x20)
            } lt(mc, end) {
                mc := add(mc, 0x20)
                cc := add(cc, 0x20)
            } {
                mstore(mc, mload(cc))
            }

            mstore(0x40, and(
              add(add(end, iszero(add(length, mload(_preBytes)))), 31),
              not(31)
            ))
        }

        return tempBytes;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"signer","type":"address"},{"indexed":false,"internalType":"uint8","name":"cosignaturesNeeded","type":"uint8"}],"name":"SignerChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"toAddress","type":"address"},{"indexed":false,"internalType":"bytes4","name":"selector","type":"bytes4"},{"indexed":false,"internalType":"address[]","name":"signers","type":"address[]"}],"name":"Transacted","type":"event"},{"inputs":[],"name":"MAX_INCREASE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"checkExecution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint128","name":"nonce","type":"uint128"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint8[]","name":"v","type":"uint8[]"},{"internalType":"bytes32[]","name":"r","type":"bytes32[]"},{"internalType":"bytes32[]","name":"s","type":"bytes32[]"}],"name":"checkSignatures","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractId","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint128","name":"nonce","type":"uint128"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint8[]","name":"v","type":"uint8[]"},{"internalType":"bytes32[]","name":"r","type":"bytes32[]"},{"internalType":"bytes32[]","name":"s","type":"bytes32[]"}],"name":"execute","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint128","name":"nonce","type":"uint128"}],"name":"isFree","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"source","type":"address"},{"internalType":"address","name":"destination","type":"address"}],"name":"migrate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"destination","type":"address"}],"name":"migrate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"nextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"uint8","name":"cosignaturesNeeded","type":"uint8"}],"name":"setSigner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"signerCount","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"signers","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"transactionHash","type":"bytes32"},{"internalType":"uint8[]","name":"v","type":"uint8[]"},{"internalType":"bytes32[]","name":"r","type":"bytes32[]"},{"internalType":"bytes32[]","name":"s","type":"bytes32[]"}],"name":"verifySignatures","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

Deployed Bytecode

0x6080604052600436106100c65760003560e01c80638291286c1161007f578063cb6367d111610059578063cb6367d11461021d578063ce5494bb1461024a578063d69c3d301461026a578063ecec0dfd1461027f576100cd565b80638291286c146101bb578063b5fe5163146101d0578063b6e404de146101fd576100cd565b80630f43d678146100d25780631068361f146100f457806348753d0014610114578063736c0d5b1461014a5780637ca548c6146101775780637cedbb8014610199576100cd565b366100cd57005b600080fd5b3480156100de57600080fd5b506100f26100ed366004611846565b61029f565b005b34801561010057600080fd5b506100f261010f3660046117bc565b610303565b34801561012057600080fd5b5061013461012f366004611929565b61034a565b6040516101419190611b3a565b60405180910390f35b34801561015657600080fd5b5061016a6101653660046117a2565b6104b5565b6040516101419190611c50565b34801561018357600080fd5b5061018c6104ca565b6040516101419190611c38565b3480156101a557600080fd5b506101ae6104d4565b6040516101419190611c47565b3480156101c757600080fd5b506101346104d9565b3480156101dc57600080fd5b506101f06101eb36600461190f565b610567565b6040516101419190611aef565b34801561020957600080fd5b506100f26102183660046117ee565b6105a8565b34801561022957600080fd5b5061023d61023836600461186f565b610609565b6040516101419190611adc565b34801561025657600080fd5b506100f26102653660046117a2565b6107f8565b34801561027657600080fd5b506101ae610805565b34801561028b57600080fd5b5061023d61029a366004611929565b610828565b303314806102c057503360009081526001602081905260409091205460ff16145b6102e55760405162461bcd60e51b81526004016102dc90611be3565b60405180910390fd5b6102ef828261089b565b60025461ffff166102ff57600080fd5b5050565b3033148061032457503360009081526001602081905260409091205460ff16145b6103405760405162461bcd60e51b81526004016102dc90611be3565b6102ff82826109c2565b606060006103e68d6003805461035f90611e88565b80601f016020809104026020016040519081016040528092919081815260200182805461038b90611e88565b80156103d85780601f106103ad576101008083540402835291602001916103d8565b820191906000526020600020905b8154815290600101906020018083116103bb57829003601f168201915b50505050508e8e8e8e610a1a565b905060006103f9828a8a8a8a8a8a610609565b9050600061044c8e8d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508f610d2c565b90506104578f610dde565b8d6001600160a01b03167f64ada3f9bcd41ebd407b399dc401184273a19bc294825172626af05a15c95d2561048c8e8e610e8f565b8460405161049b929190611b18565b60405180910390a29e9d5050505050505050505050505050565b60016020526000908152604090205460ff1681565b60025461ffff1681565b606481565b600380546104e690611e88565b80601f016020809104026020016040519081016040528092919081815260200182805461051290611e88565b801561055f5780601f106105345761010080835404028352916020019161055f565b820191906000526020600020905b81548152906001019060200180831161054257829003601f168201915b505050505081565b600080610572610f83565b905061057e8184610f89565b8061059f575061059f81610590610fce565b856001600160801b0316610fd7565b9150505b919050565b6105ea8483838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250889250610d2c915050565b5060405162461bcd60e51b81526004016102dc90611bac565b50505050565b606060008467ffffffffffffffff81111561063457634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561065d578160200160208202803683370190505b50905060005b858110156107e257600060018b8b8b8581811061069057634e487b7160e01b600052603260045260246000fd5b90506020020160208101906106a59190611a1a565b8a8a868181106106c557634e487b7160e01b600052603260045260246000fd5b905060200201358989878181106106ec57634e487b7160e01b600052603260045260246000fd5b90506020020135604051600081526020016040526040516107109493929190611afa565b6020604051602081039080840390855afa158015610732573d6000803e3d6000fd5b505060408051601f1901516001600160a01b03811660009081526001602052919091205490925060ff1690508015801590610770575060ff81168810155b61078c5760405162461bcd60e51b81526004016102dc90611b4d565b818484815181106107ad57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050505080806107da90611ee5565b915050610663565b506107ec8161102c565b98975050505050505050565b61080233826109c2565b50565b600061080f610f83565b61081a906001611c5e565b6001600160801b0316905090565b6060600061083d8d6003805461035f90611e88565b905061084e81898989898989610609565b9d9c50505050505050505050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061089357508115155b949350505050565b6108a48261085f565b156108c15760405162461bcd60e51b81526004016102dc90611b75565b6001600160a01b0382166000908152600160205260409020805460ff83811660ff198316179092551680158015906108fa575060ff8216155b15610933576002805461ffff1690600061091383611e53565b91906101000a81548161ffff021916908361ffff1602179055505061097c565b60ff8116158015610947575060008260ff16115b1561097c576002805461ffff1690600061096083611ec3565b91906101000a81548161ffff021916908361ffff160217905550505b826001600160a01b03167f7f00bf87056fc9622b70d830cce34aa24d6c12881ebbc71d3bf22d0c5ae295b7836040516109b59190611c50565b60405180910390a2505050565b6001600160a01b03811660009081526001602052604090205460ff16156109e857600080fd5b6001600160a01b038216600090815260016020526040902054610a0f90829060ff1661089b565b6102ff82600061089b565b6040805160098082526101408201909252600091829190816020015b6060815260200190600190039081610a36579050509050610a5f886001600160801b03166110f6565b81600081518110610a8057634e487b7160e01b600052603260045260246000fd5b60200260200101819052508681600181518110610aad57634e487b7160e01b600052603260045260246000fd5b6020026020010181905250610ac36152086110f6565b81600281518110610ae457634e487b7160e01b600052603260045260246000fd5b602002602001018190525085604051602001610b009190611aa3565b60405160208183030381529060405281600381518110610b3057634e487b7160e01b600052603260045260246000fd5b6020026020010181905250610b44856110f6565b81600481518110610b6557634e487b7160e01b600052603260045260246000fd5b602002602001018190525083838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250508351849250600591508110610bc957634e487b7160e01b600052603260045260246000fd5b6020026020010181905250610bdd466110f6565b81600681518110610bfe57634e487b7160e01b600052603260045260246000fd5b6020026020010181905250610c1360006110f6565b81600781518110610c3457634e487b7160e01b600052603260045260246000fd5b602002602001018190525060005b6008811015610cb957610c7b828281518110610c6e57634e487b7160e01b600052603260045260246000fd5b60200260200101516111e1565b828281518110610c9b57634e487b7160e01b600052603260045260246000fd5b60200260200101819052508080610cb190611ee5565b915050610c42565b5080600781518110610cdb57634e487b7160e01b600052603260045260246000fd5b602002602001015181600881518110610d0457634e487b7160e01b600052603260045260246000fd5b6020026020010181905250610d188161123f565b805190602001209150509695505050505050565b6060825160001480610d425750610d428461085f565b610d4b57600080fd5b600080856001600160a01b03168486604051610d679190611ac0565b60006040518083038185875af1925050503d8060008114610da4576040519150601f19603f3d011682016040523d82523d6000602084013e610da9565b606091505b50915091508115610dbd579150610dd79050565b8060405162461bcd60e51b81526004016102dc9190611b3a565b9392505050565b60005480608081901c610df18285610f89565b15610e3f57610e3a846001610e068583611de8565b610e109190611de8565b6001600160801b03166001846001600160801b0316901b6001176001600160801b0316901b611263565b610603565b610e538282866001600160801b0316610fd7565b156100cd57610e3a826001610e688783611de8565b610e729190611de8565b6001600160801b03166001901b836001600160801b031617611263565b60006004821015610ea257506000610f7d565b601883836003818110610ec557634e487b7160e01b600052603260045260246000fd5b909101356001600160f81b03191690911c9050601084846002818110610efb57634e487b7160e01b600052603260045260246000fd5b909101356001600160f81b03191690911c9050600885856001818110610f3157634e487b7160e01b600052603260045260246000fd5b909101356001600160f81b03191690911c90508585600081610f6357634e487b7160e01b600052603260045260246000fd5b9050013560f81c60f81b6001600160f81b03191617171790505b92915050565b60005490565b6000826001600160801b0316826001600160801b0316118015610dd75750610fbb60646001600160801b038516611c89565b826001600160801b031611159392505050565b60005460801c90565b600080610fed836001600160801b038716611e10565b9050600081118015611000575060808111155b801561102357506001600160801b03841661101c600183611e10565b6001901b16155b95945050505050565b60005b81518110156102ff576000611045826001611c89565b90505b82518110156110e35782818151811061107157634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b03168383815181106110a257634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b031614156110d15760405162461bcd60e51b81526004016102dc90611c0b565b806110db81611ee5565b915050611048565b50806110ee81611ee5565b91505061102f565b6060600060015b8084106111195760081b8161111181611ee5565b9250506110fd565b508260008267ffffffffffffffff81111561114457634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561116e576020820181803683370190505b509050825b80156111d85760f883901b8261118a600184611e10565b815181106111a857634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060089290921c91806111d081611e71565b915050611173565b50949350505050565b6060808251600114801561121e575060808360008151811061121357634e487b7160e01b600052603260045260246000fd5b016020015160f81c11155b1561122a575081610f7d565b610dd76112398451608061128d565b8461147c565b6060600061124c836114f9565b905061059f61125d825160c061128d565b8261147c565b6fffffffffffffffffffffffffffffffff1960809190911b166001600160801b0390911617600055565b606080603884101561130557604080516001808252818301909252906020820181803683370190505090506112c28385611c89565b601f1a60f81b816000815181106112e957634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350610dd7565b600060015b6113148187611ca1565b1561133a578161132381611ee5565b9250611333905061010082611dc9565b905061130a565b611345826001611c89565b67ffffffffffffffff81111561136b57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611395576020820181803683370190505b5092506113a28583611c89565b6113ad906037611c89565b601f1a60f81b836000815181106113d457634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600190505b818111611473576101006114048284611e10565b61141090610100611cfb565b61141a9088611ca1565b6114249190611f00565b601f1a60f81b83828151811061144a57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053508061146b81611ee5565b9150506113f0565b50509392505050565b6060806040519050835180825260208201818101602087015b818310156114ad578051835260209283019201611495565b50855184518101855292509050808201602086015b818310156114da5780518352602092830192016114c2565b508651929092011591909101601f01601f191660405250905092915050565b606081516000141561151a57506040805160008152602081019091526105a3565b6000805b835181101561156f5783818151811061154757634e487b7160e01b600052603260045260246000fd5b6020026020010151518261155b9190611c89565b91508061156781611ee5565b91505061151e565b60008267ffffffffffffffff81111561159857634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156115c2576020820181803683370190505b50600092509050602081015b85518310156111d85760008684815181106115f957634e487b7160e01b600052603260045260246000fd5b60200260200101519050600060208201905061161783828451611662565b87858151811061163757634e487b7160e01b600052603260045260246000fd5b6020026020010151518361164b9190611c89565b92505050828061165a90611ee5565b9350506115ce565b8282825b6020811061169e578151835261167d602084611c89565b925061168a602083611c89565b9150611697602082611e10565b9050611666565b600060016116ad836020611e10565b6116b990610100611cfb565b6116c39190611e10565b925184518416931916929092179092525050505050565b80356001600160a01b03811681146105a357600080fd5b60008083601f840112611702578182fd5b50813567ffffffffffffffff811115611719578182fd5b602083019150836020808302850101111561173357600080fd5b9250929050565b60008083601f84011261174b578182fd5b50813567ffffffffffffffff811115611762578182fd5b60208301915083602082850101111561173357600080fd5b80356001600160801b03811681146105a357600080fd5b803560ff811681146105a357600080fd5b6000602082840312156117b3578081fd5b610dd7826116da565b600080604083850312156117ce578081fd5b6117d7836116da565b91506117e5602084016116da565b90509250929050565b60008060008060608587031215611803578182fd5b61180c856116da565b935060208501359250604085013567ffffffffffffffff81111561182e578283fd5b61183a8782880161173a565b95989497509550505050565b60008060408385031215611858578182fd5b611861836116da565b91506117e560208401611791565b60008060008060008060006080888a031215611889578283fd5b87359650602088013567ffffffffffffffff808211156118a7578485fd5b6118b38b838c016116f1565b909850965060408a01359150808211156118cb578485fd5b6118d78b838c016116f1565b909650945060608a01359150808211156118ef578384fd5b506118fc8a828b016116f1565b989b979a50959850939692959293505050565b600060208284031215611920578081fd5b610dd78261177a565b600080600080600080600080600080600060e08c8e031215611949578384fd5b6119528c61177a565b9a5061196060208d016116da565b995060408c0135985067ffffffffffffffff8060608e01351115611982578485fd5b6119928e60608f01358f0161173a565b909950975060808d01358110156119a7578485fd5b6119b78e60808f01358f016116f1565b909750955060a08d01358110156119cc578485fd5b6119dc8e60a08f01358f016116f1565b909550935060c08d01358110156119f1578283fd5b50611a028d60c08e01358e016116f1565b81935080925050509295989b509295989b9093969950565b600060208284031215611a2b578081fd5b610dd782611791565b6000815180845260208085019450808401835b83811015611a6c5781516001600160a01b031687529582019590820190600101611a47565b509495945050505050565b60008151808452611a8f816020860160208601611e27565b601f01601f19169290920160200192915050565b60609190911b6bffffffffffffffffffffffff1916815260140190565b60008251611ad2818460208701611e27565b9190910192915050565b600060208252610dd76020830184611a34565b901515815260200190565b93845260ff9290921660208401526040830152606082015260800190565b600063ffffffff60e01b84168252604060208301526108936040830184611a34565b600060208252610dd76020830184611a77565b6020808252600e908201526d31b7b9b4b3b732b91032b93937b960911b604082015260600190565b6020808252601b908201527f7369676e65722063616e6e6f74206265206120636f6e74726163740000000000604082015260600190565b60208082526017908201527f54657374207061737365642e20526576657274696e672e000000000000000000604082015260600190565b6020808252600e908201526d1b9bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b6020808252601390820152726475706c6963617465207369676e617475726560681b604082015260600190565b61ffff91909116815260200190565b90815260200190565b60ff91909116815260200190565b60006001600160801b03808316818516808303821115611c8057611c80611f14565b01949350505050565b60008219821115611c9c57611c9c611f14565b500190565b600082611cb057611cb0611f2a565b500490565b80825b6001808611611cc75750611cf2565b818704821115611cd957611cd9611f14565b80861615611ce657918102915b9490941c938002611cb8565b94509492505050565b6000610dd76000198484600082611d1457506001610dd7565b81611d2157506000610dd7565b8160018114611d375760028114611d4157611d6e565b6001915050610dd7565b60ff841115611d5257611d52611f14565b6001841b915084821115611d6857611d68611f14565b50610dd7565b5060208310610133831016604e8410600b8410161715611da1575081810a83811115611d9c57611d9c611f14565b610dd7565b611dae8484846001611cb5565b808604821115611dc057611dc0611f14565b02949350505050565b6000816000190483118215151615611de357611de3611f14565b500290565b60006001600160801b0383811690831681811015611e0857611e08611f14565b039392505050565b600082821015611e2257611e22611f14565b500390565b60005b83811015611e42578181015183820152602001611e2a565b838111156106035750506000910152565b600061ffff821680611e6757611e67611f14565b6000190192915050565b600081611e8057611e80611f14565b506000190190565b600281046001821680611e9c57607f821691505b60208210811415611ebd57634e487b7160e01b600052602260045260246000fd5b50919050565b600061ffff80831681811415611edb57611edb611f14565b6001019392505050565b6000600019821415611ef957611ef9611f14565b5060010190565b600082611f0f57611f0f611f2a565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fdfea26469706673582212209f2ffdc8ea5503b28cc4e53efb056a7caa280599c0b3bca1f1abf9e636a386b964736f6c63430008000033

Deployed Bytecode Sourcemap

148:5936:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4889:161;;;;;;;;;;-1:-1:-1;4889:161:1;;;;;:::i;:::-;;:::i;:::-;;5153:114;;;;;;;;;;-1:-1:-1;5153:114:1;;;;;:::i;:::-;;:::i;2108:525::-;;;;;;;;;;-1:-1:-1;2108:525:1;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;182:41;;;;;;;;;;-1:-1:-1;182:41:1;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;313:25::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;1388:42:2:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;343:23:1:-;;;;;;;;;;;;;:::i;2040:190:2:-;;;;;;;;;;-1:-1:-1;2040:190:2;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1919:183:1:-;;;;;;;;;;-1:-1:-1;1919:183:1;;;;;:::i;:::-;;:::i;4014:561::-;;;;;;;;;;-1:-1:-1;4014:561:1;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5056:91::-;;;;;;;;;;-1:-1:-1;5056:91:1;;;;;:::i;:::-;;:::i;1640:88:2:-;;;;;;;;;;;;;:::i;1463:348:1:-;;;;;;;;;;-1:-1:-1;1463:348:1;;;;;:::i;:::-;;:::i;4889:161::-;5999:4;6008:10;5991:27;;:55;;-1:-1:-1;6030:10:1;6022:19;;;;:7;:19;;;;;;;;;;;:24;5991:55;5983:82;;;;-1:-1:-1;;;5983:82:1;;;;;;;:::i;:::-;;;;;;;;;4975:38:::1;4986:6;4994:18;4975:10;:38::i;:::-;5028:11;::::0;::::1;;5020:24;;;::::0;::::1;;4889:161:::0;;:::o;5153:114::-;5999:4;6008:10;5991:27;;:55;;-1:-1:-1;6030:10:1;6022:19;;;;:7;:19;;;;;;;;;;;:24;5991:55;5983:82;;;;-1:-1:-1;;;5983:82:1;;;;;;;:::i;:::-;5232:29:::1;5241:6;5249:11;5232:8;:29::i;2108:525::-:0;2265:12;2286:23;2312:60;2337:5;2344:10;2312:60;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2356:2;2360:5;2367:4;;2312:24;:60::i;:::-;2286:86;;2379:22;2404:42;2421:15;2438:1;;2441;;2444;;2404:16;:42::i;:::-;2379:67;;2453:23;2479:46;2509:2;2513:4;;2479:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2519:5;2479:29;:46::i;:::-;2453:72;;2532:15;2541:5;2532:8;:15::i;:::-;2570:2;-1:-1:-1;;;;;2559:44:1;;2574:21;2590:4;;2574:15;:21::i;:::-;2597:5;2559:44;;;;;;;:::i;:::-;;;;;;;;2617:10;2108:525;-1:-1:-1;;;;;;;;;;;;;;2108:525:1:o;182:41::-;;;;;;;;;;;;;;;:::o;313:25::-;;;;;;:::o;1388:42:2:-;1427:3;1388:42;:::o;343:23:1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2040:190:2:-;2092:4;2108:11;2122:8;:6;:8::i;:::-;2108:22;;2148:28;2165:3;2170:5;2148:16;:28::i;:::-;:74;;;;2180:42;2196:3;2201:13;:11;:13::i;:::-;2216:5;-1:-1:-1;;;;;2180:42:2;:15;:42::i;:::-;2141:81;;;2040:190;;;;:::o;1919:183:1:-;2002:46;2032:2;2036:4;;2002:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2042:5:1;;-1:-1:-1;2002:29:1;;-1:-1:-1;;2002:46:1:i;:::-;-1:-1:-1;2055:41:1;;-1:-1:-1;;;2055:41:1;;;;;;;:::i;:::-;1919:183;;;;:::o;4014:561::-;4155:16;4180:22;4219:1;4205:23;;;;;;-1:-1:-1;;;4205:23:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4205:23:1;;4180:48;;4240:6;4235:283;4252:12;;;4235:283;;;4280:14;4297:44;4307:15;4324:1;;4326;4324:4;;;;;-1:-1:-1;;;4324:4:1;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4330:1;;4332;4330:4;;;;;-1:-1:-1;;;4330:4:1;;;;;;;;;;;;;;;4336:1;;4338;4336:4;;;;;-1:-1:-1;;;4336:4:1;;;;;;;;;;;;;;;4297:44;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4297:44:1;;;-1:-1:-1;;4297:44:1;;-1:-1:-1;;;;;4377:15:1;;4350:24;4377:15;;;:7;4297:44;4377:15;;;;;;4297:44;;-1:-1:-1;4377:15:1;;;-1:-1:-1;4409:22:1;;;;;:56;;-1:-1:-1;4435:30:1;;;;-1:-1:-1;4435:30:1;4409:56;4401:83;;;;-1:-1:-1;;;4401:83:1;;;;;;;:::i;:::-;4504:6;4493:5;4499:1;4493:8;;;;;;-1:-1:-1;;;4493:8:1;;;;;;;;;;;;;;:17;-1:-1:-1;;;;;4493:17:1;;;-1:-1:-1;;;;;4493:17:1;;;;;4235:283;;4266:3;;;;;:::i;:::-;;;;4235:283;;;;4524:26;4544:5;4524:19;:26::i;:::-;4564:5;4014:561;-1:-1:-1;;;;;;;;4014:561:1:o;5056:91::-;5108:33;5117:10;5129:11;5108:8;:33::i;:::-;5056:91;:::o;1640:88:2:-;1682:7;1708:8;:6;:8::i;:::-;:12;;1719:1;1708:12;:::i;:::-;-1:-1:-1;;;;;1701:19:2;;;1640:88;:::o;1463:348:1:-;1638:16;1663:23;1689:60;1714:5;1721:10;1689:60;;;;;:::i;:::-;1663:86;;1763:42;1780:15;1797:1;;1800;;1803;;1763:16;:42::i;:::-;1756:49;1463:348;-1:-1:-1;;;;;;;;;;;;;1463:348:1:o;803:619:0:-;863:4;1331:20;;1174:66;1371:23;;;;;;:42;;-1:-1:-1;1398:15:0;;;1371:42;1363:51;803:619;-1:-1:-1;;;;803:619:0:o;5501:447:1:-;5587:26;5606:6;5587:18;:26::i;:::-;5586:27;5578:67;;;;-1:-1:-1;;;5578:67:1;;;;;;;:::i;:::-;-1:-1:-1;;;;;5670:15:1;;5652;5670;;;:7;:15;;;;;;;;5692:36;;;-1:-1:-1;;5692:36:1;;;;;;5670:15;5739:13;;;;;:40;;-1:-1:-1;5756:23:1;;;;5739:40;5735:156;;;5789:11;:13;;;;;:11;:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;5735:156;;;5820:14;;;;:40;;;;;5859:1;5838:18;:22;;;5820:40;5816:75;;;5870:11;:13;;;;;:11;:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;5816:75;5915:6;-1:-1:-1;;;;;5902:40:1;;5923:18;5902:40;;;;;;:::i;:::-;;;;;;;;5501:447;;;:::o;5273:222::-;-1:-1:-1;;;;;5351:20:1;;;;;;:7;:20;;;;;;;;:25;5343:34;;;;;;-1:-1:-1;;;;;5445:15:1;;;;;;:7;:15;;;;;;5421:40;;5432:11;;5445:15;;5421:10;:40::i;:::-;5468:21;5479:6;5487:1;5468:10;:21::i;3335:673::-;3513:14;;;3525:1;3513:14;;;;;;;;;3477:7;;;;3513:14;;;;;;;;;;;;;;;;;;;;;3492:35;;3543:17;3551:8;-1:-1:-1;;;;;3543:17:1;:7;:17::i;:::-;3534:3;3538:1;3534:6;;;;;;-1:-1:-1;;;3534:6:1;;;;;;;;;;;;;;:26;;;;3612:2;3603:3;3607:1;3603:6;;;;;;-1:-1:-1;;;3603:6:1;;;;;;;;;;;;;;:11;;;;3666:14;3674:5;3666:7;:14::i;:::-;3657:3;3661:1;3657:6;;;;;;-1:-1:-1;;;3657:6:1;;;;;;;;;;;;;;:23;;;;3726:2;3709:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;3700:3;3704:1;3700:6;;;;;;-1:-1:-1;;;3700:6:1;;;;;;;;;;;;;;:29;;;;3745:14;3753:5;3745:7;:14::i;:::-;3736:3;3740:1;3736:6;;;;;;-1:-1:-1;;;3736:6:1;;;;;;;;;;;;;;:23;;;;3775:4;;3766:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3766:6:1;;:3;;-1:-1:-1;3770:1:1;;-1:-1:-1;3766:6:1;;;;-1:-1:-1;;;3766:6:1;;;;;;;;;;;;;;:13;;;;3795:22;3803:13;3795:7;:22::i;:::-;3786:3;3790:1;3786:6;;;;;;-1:-1:-1;;;3786:6:1;;;;;;;;;;;;;;:31;;;;3833:10;3841:1;3833:7;:10::i;:::-;3824:3;3828:1;3824:6;;;;;;-1:-1:-1;;;3824:6:1;;;;;;;;;;;;;;:19;;;;3855:6;3850:81;3869:1;3867;:3;3850:81;;;3894:29;3916:3;3920:1;3916:6;;;;;;-1:-1:-1;;;3916:6:1;;;;;;;;;;;;;;;3894:21;:29::i;:::-;3885:3;3889:1;3885:6;;;;;;-1:-1:-1;;;3885:6:1;;;;;;;;;;;;;;:38;;;;3872:3;;;;;:::i;:::-;;;;3850:81;;;;3946:3;3950:1;3946:6;;;;;;-1:-1:-1;;;3946:6:1;;;;;;;;;;;;;;;3937:3;3941:1;3937:6;;;;;;-1:-1:-1;;;3937:6:1;;;;;;;;;;;;;;:15;;;;3976:25;3997:3;3976:20;:25::i;:::-;3966:36;;;;;;3959:43;;;3335:673;;;;;;;;:::o;1430:533:0:-;1532:12;1625:4;:11;1640:1;1625:16;:38;;;;1645:18;1656:6;1645:10;:18::i;:::-;1617:47;;;;;;1676:12;1690:23;1717:6;-1:-1:-1;;;;;1717:11:0;1737:8;1748:4;1717:36;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1675:78;;;;1768:7;1764:192;;;1799:10;-1:-1:-1;1792:17:0;;-1:-1:-1;1792:17:0;1764:192;1932:10;1918:26;;-1:-1:-1;;;1918:26:0;;;;;;;;:::i;1430:533::-;;;;;;:::o;2346:462:2:-;2399:12;2414:8;;2501:3;2493:11;;;2520:28;2414:8;2542:5;2520:16;:28::i;:::-;2516:285;;;2564:55;2572:5;2616:1;2602:11;2610:3;2572:5;2602:11;:::i;:::-;:15;;;;:::i;:::-;-1:-1:-1;;;;;2579:39:2;2588:1;2581:3;-1:-1:-1;;;;;2581:8:2;;;2593:3;2580:16;-1:-1:-1;;;;;2579:39:2;;;2564:7;:55::i;:::-;2516:285;;;2641:32;2657:3;2662;2667:5;-1:-1:-1;;;;;2641:32:2;:15;:32::i;:::-;2637:164;;;2689:53;2697:3;2738:1;2724:11;2730:5;2697:3;2724:11;:::i;:::-;:15;;;;:::i;:::-;-1:-1:-1;;;;;2716:24:2;:3;:24;;2710:3;-1:-1:-1;;;;;2710:30:2;;2689:7;:53::i;2639:262:1:-;2707:6;2739:1;2725:15;;2721:175;;;-1:-1:-1;2764:1:1;2750:16;;2721:175;2885:2;2873:4;;2878:1;2873:7;;;;;-1:-1:-1;;;2873:7:1;;;;;;;;;;;;;-1:-1:-1;;;;;;2873:7:1;2866:21;;;;-1:-1:-1;2859:2:1;2847:4;;2852:1;2847:7;;;;;-1:-1:-1;;;2847:7:1;;;;;;;;;;;;;-1:-1:-1;;;;;;2847:7:1;2840:21;;;;-1:-1:-1;2834:1:1;2822:4;;2827:1;2822:7;;;;;-1:-1:-1;;;2822:7:1;;;;;;;;;;;;;-1:-1:-1;;;;;;2822:7:1;2815:20;;;;-1:-1:-1;2803:4:1;;2808:1;2803:4;:7;;-1:-1:-1;;;2803:7:1;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2796:15:1;;:40;:66;:92;2789:99;;2721:175;2639:262;;;;:::o;2820:92:2:-;2860:7;2895:8;2820:92;:::o;3154:149::-;3230:4;3261:3;-1:-1:-1;;;;;3253:11:2;:5;-1:-1:-1;;;;;3253:11:2;;:42;;;;-1:-1:-1;3277:18:2;1427:3;-1:-1:-1;;;;;3277:18:2;;;:::i;:::-;3268:5;-1:-1:-1;;;;;3268:27:2;;;3246:49;3154:149;-1:-1:-1;;;3154:149:2:o;2924:104::-;2969:7;3004:8;3016:3;3004:15;2924:104;:::o;3311:215::-;3399:4;;3430:11;3436:5;-1:-1:-1;;;;;3430:11:2;;;:::i;:::-;3415:26;;3466:1;3459:4;:8;:23;;;;;3479:3;3471:4;:11;;3459:23;:59;;;;-1:-1:-1;;;;;;3487:25:2;;3496:8;3503:1;3496:4;:8;:::i;:::-;3488:3;:17;;3487:25;:30;3459:59;3452:66;3311:215;-1:-1:-1;;;;;3311:215:2:o;4581:249:1:-;4659:6;4654:171;4675:5;:12;4671:1;:16;4654:171;;;4708:6;4717:3;:1;4719;4717:3;:::i;:::-;4708:12;;4703:115;4726:5;:12;4722:1;:16;4703:115;;;4776:5;4782:1;4776:8;;;;;;-1:-1:-1;;;4776:8:1;;;;;;;;;;;;;;;-1:-1:-1;;;;;4764:20:1;:5;4770:1;4764:8;;;;;;-1:-1:-1;;;4764:8:1;;;;;;;;;;;;;;;-1:-1:-1;;;;;4764:20:1;;;4756:52;;;;-1:-1:-1;;;4756:52:1;;;;;;;:::i;:::-;4740:3;;;;:::i;:::-;;;;4703:115;;;-1:-1:-1;4689:3:1;;;;:::i;:::-;;;;4654:171;;2907:373;2960:12;2980:8;3011:1;3019:69;3036:4;3026:6;:14;3019:69;;3065:1;3057:9;3075:5;;;;:::i;:::-;;;;3019:69;;;-1:-1:-1;3101:6:1;3114:17;3144:3;3134:14;;;;;;-1:-1:-1;;;3134:14:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3134:14:1;-1:-1:-1;3114:34:1;-1:-1:-1;3169:3:1;3155:102;3174:3;;3155:102;;3205:19;;;;3193:4;3198:3;3200:1;3198;:3;:::i;:::-;3193:9;;;;;;-1:-1:-1;;;3193:9:1;;;;;;;;;;;;:31;-1:-1:-1;;;;;3193:31:1;;;;;;;;-1:-1:-1;3248:1:1;3240:9;;;;;3179:3;;;;:::i;:::-;;;;3155:102;;;-1:-1:-1;3270:4:1;2907:373;-1:-1:-1;;;;2907:373:1:o;376:326:3:-;439:12;464:20;499:4;:11;514:1;499:16;:41;;;;;537:3;525:4;530:1;525:7;;;;;;-1:-1:-1;;;525:7:3;;;;;;;;;;;;;;;519:21;;499:41;495:175;;;-1:-1:-1;567:4:3;495:175;;;614:44;621:30;634:4;:11;647:3;621:12;:30::i;:::-;653:4;614:6;:44::i;908:192::-;972:12;997:17;1017:13;1025:4;1017:7;:13::i;:::-;997:33;;1048:44;1055:30;1068:4;:11;1081:3;1055:12;:30::i;:::-;1087:4;1048:6;:44::i;3040:106:2:-;-1:-1:-1;;3129:3:2;3113:19;;;;;-1:-1:-1;;;;;3113:25:2;;;;3102:8;:36;3040:106::o;3133:689:3:-;3200:12;3225:20;3266:2;3260:3;:8;3256:534;;;3295:12;;;3305:1;3295:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3285:22:3;-1:-1:-1;3343:12:3;3349:6;3343:3;:12;:::i;:::-;3357:2;3335:25;;;3322:7;3330:1;3322:10;;;;;;-1:-1:-1;;;3322:10:3;;;;;;;;;;;;:38;-1:-1:-1;;;;;3322:38:3;;;;;;;;;3256:534;;;3393:11;3428:1;3444:91;3451:7;3457:1;3451:3;:7;:::i;:::-;:12;3444:91;;3484:8;;;;:::i;:::-;;-1:-1:-1;3511:8:3;;-1:-1:-1;3516:3:3;3511:8;;:::i;:::-;;;3444:91;;;3571:10;:6;3580:1;3571:10;:::i;:::-;3561:21;;;;;;-1:-1:-1;;;3561:21:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3561:21:3;-1:-1:-1;3551:31:3;-1:-1:-1;3618:15:3;3627:6;3618;:15;:::i;:::-;:20;;3636:2;3618:20;:::i;:::-;3640:2;3610:33;;;3597:7;3605:1;3597:10;;;;;;-1:-1:-1;;;3597:10:3;;;;;;;;;;;;:46;-1:-1:-1;;;;;3597:46:3;;;;;;;;;3666:1;3662:5;;3658:121;3674:6;3669:1;:11;3658:121;;3755:3;3741:8;3748:1;3741:6;:8;:::i;:::-;3735:15;;:3;:15;:::i;:::-;3728:23;;:3;:23;:::i;:::-;3727:31;;;;:::i;:::-;3760:2;3719:44;;;3706:7;3714:1;3706:10;;;;;;-1:-1:-1;;;3706:10:3;;;;;;;;;;;;:57;-1:-1:-1;;;;;3706:57:3;;;;;;;;-1:-1:-1;3682:3:3;;;;:::i;:::-;;;;3658:121;;;3256:534;;3807:7;3133:689;-1:-1:-1;;;3133:689:3:o;6779:1211::-;6866:12;6891:22;6969:4;6963:11;6950:24;;7010:9;7004:16;7052:6;7041:9;7034:25;7100:4;7089:9;7085:20;7138:6;7134:2;7130:15;7209:4;7198:9;7194:20;7161:227;7237:3;7233:2;7230:11;7161:227;;;7363:9;;7352:21;;7275:4;7267:13;;;;7304;7161:227;;;-1:-1:-1;7414:17:3;;7475:16;;7463:29;;7445:48;;7414:17;-1:-1:-1;7515:3:3;-1:-1:-1;7539:15:3;;;7619:4;7603:21;;7570:228;7647:3;7643:2;7640:11;7570:228;;;7773:9;;7762:21;;7685:4;7677:13;;;;7714;7570:228;;;-1:-1:-1;7879:16:3;;7867:29;;;;7860:37;7851:47;;;;7924:2;7847:56;-1:-1:-1;;7827:115:3;7821:4;7814:129;-1:-1:-1;7973:9:3;-1:-1:-1;6779:1211:3;;;;:::o;5718:761::-;5779:12;5808:5;:12;5824:1;5808:17;5804:69;;;-1:-1:-1;5849:12:3;;;5859:1;5849:12;;;;;;;;5842:19;;5804:69;5885:8;;5921:84;5937:5;:12;5933:1;:16;5921:84;;;5978:5;5984:1;5978:8;;;;;;-1:-1:-1;;;5978:8:3;;;;;;;;;;;;;;;:15;5971:22;;;;;:::i;:::-;;-1:-1:-1;5951:3:3;;;;:::i;:::-;;;;5921:84;;;6017:22;6052:3;6042:14;;;;;;-1:-1:-1;;;6042:14:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6042:14:3;-1:-1:-1;6067:17:3;;-1:-1:-1;6017:39:3;-1:-1:-1;6137:4:3;6122:20;;6156:287;6171:5;:12;6167:1;:16;6156:287;;;6205:17;6225:5;6231:1;6225:8;;;;;;-1:-1:-1;;;6225:8:3;;;;;;;;;;;;;;;6205:28;;6262:12;6321:4;6315;6311:15;6300:26;;6343:42;6350:12;6364:7;6373:4;:11;6343:6;:42::i;:::-;6416:5;6422:1;6416:8;;;;;;-1:-1:-1;;;6416:8:3;;;;;;;;;;;;;;;:15;6400:31;;;;;:::i;:::-;;;6156:287;;6185:3;;;;;:::i;:::-;;;;6156:287;;4865:566;4951:5;4978:4;5004;5021:170;5034:2;5027:3;:9;5021:170;;5105:10;;5092:24;;5145:10;5153:2;5099:4;5145:10;:::i;:::-;;-1:-1:-1;5170:9:3;5177:2;5170:9;;:::i;:::-;;-1:-1:-1;5038:9:3;5045:2;5038:9;;:::i;:::-;;;5021:170;;;5203:9;5235:1;5223:8;5228:3;5223:2;:8;:::i;:::-;5215:17;;:3;:17;:::i;:::-;:21;;;;:::i;:::-;5290:10;;5346:11;;5342:22;;5302:9;;5286:26;5391:21;;;;5378:35;;;-1:-1:-1;;;;;5256:168:3:o;14:175:4:-;84:20;;-1:-1:-1;;;;;133:31:4;;123:42;;113:2;;179:1;176;169:12;194:404;;;327:3;320:4;312:6;308:17;304:27;294:2;;352:8;342;335:26;294:2;-1:-1:-1;382:20:4;;425:18;414:30;;411:2;;;464:8;454;447:26;411:2;508:4;500:6;496:17;484:29;;571:3;564:4;556;548:6;544:17;536:6;532:30;528:41;525:50;522:2;;;588:1;585;578:12;522:2;284:314;;;;;:::o;603:377::-;;;720:3;713:4;705:6;701:17;697:27;687:2;;745:8;735;728:26;687:2;-1:-1:-1;775:20:4;;818:18;807:30;;804:2;;;857:8;847;840:26;804:2;901:4;893:6;889:17;877:29;;953:3;946:4;937:6;929;925:19;921:30;918:39;915:2;;;970:1;967;960:12;985:190;1055:20;;-1:-1:-1;;;;;1104:46:4;;1094:57;;1084:2;;1165:1;1162;1155:12;1180:158;1248:20;;1308:4;1297:16;;1287:27;;1277:2;;1328:1;1325;1318:12;1343:198;;1455:2;1443:9;1434:7;1430:23;1426:32;1423:2;;;1476:6;1468;1461:22;1423:2;1504:31;1525:9;1504:31;:::i;1546:274::-;;;1675:2;1663:9;1654:7;1650:23;1646:32;1643:2;;;1696:6;1688;1681:22;1643:2;1724:31;1745:9;1724:31;:::i;:::-;1714:41;;1774:40;1810:2;1799:9;1795:18;1774:40;:::i;:::-;1764:50;;1633:187;;;;;:::o;1825:575::-;;;;;1990:2;1978:9;1969:7;1965:23;1961:32;1958:2;;;2011:6;2003;1996:22;1958:2;2039:31;2060:9;2039:31;:::i;:::-;2029:41;;2117:2;2106:9;2102:18;2089:32;2079:42;;2172:2;2161:9;2157:18;2144:32;2199:18;2191:6;2188:30;2185:2;;;2236:6;2228;2221:22;2185:2;2280:60;2332:7;2323:6;2312:9;2308:22;2280:60;:::i;:::-;1948:452;;;;-1:-1:-1;2359:8:4;-1:-1:-1;;;;1948:452:4:o;2405:270::-;;;2532:2;2520:9;2511:7;2507:23;2503:32;2500:2;;;2553:6;2545;2538:22;2500:2;2581:31;2602:9;2581:31;:::i;:::-;2571:41;;2631:38;2665:2;2654:9;2650:18;2631:38;:::i;2680:1213::-;;;;;;;;2946:3;2934:9;2925:7;2921:23;2917:33;2914:2;;;2968:6;2960;2953:22;2914:2;3009:9;2996:23;2986:33;;3070:2;3059:9;3055:18;3042:32;3093:18;3134:2;3126:6;3123:14;3120:2;;;3155:6;3147;3140:22;3120:2;3199:76;3267:7;3258:6;3247:9;3243:22;3199:76;:::i;:::-;3294:8;;-1:-1:-1;3173:102:4;-1:-1:-1;3382:2:4;3367:18;;3354:32;;-1:-1:-1;3398:16:4;;;3395:2;;;3432:6;3424;3417:22;3395:2;3476:78;3546:7;3535:8;3524:9;3520:24;3476:78;:::i;:::-;3573:8;;-1:-1:-1;3450:104:4;-1:-1:-1;3661:2:4;3646:18;;3633:32;;-1:-1:-1;3677:16:4;;;3674:2;;;3711:6;3703;3696:22;3674:2;;3755:78;3825:7;3814:8;3803:9;3799:24;3755:78;:::i;:::-;2904:989;;;;-1:-1:-1;2904:989:4;;-1:-1:-1;2904:989:4;;;;3729:104;;-1:-1:-1;;;2904:989:4:o;3898:198::-;;4010:2;3998:9;3989:7;3985:23;3981:32;3978:2;;;4031:6;4023;4016:22;3978:2;4059:31;4080:9;4059:31;:::i;4101:1644::-;;;;;;;;;;;;4438:3;4426:9;4417:7;4413:23;4409:33;4406:2;;;4460:6;4452;4445:22;4406:2;4488:31;4509:9;4488:31;:::i;:::-;4478:41;;4538:40;4574:2;4563:9;4559:18;4538:40;:::i;:::-;4528:50;;4625:2;4614:9;4610:18;4597:32;4587:42;;4648:18;4715:2;4709;4698:9;4694:18;4681:32;4678:40;4675:2;;;4736:6;4728;4721:22;4675:2;4780:86;4858:7;4851:2;4840:9;4836:18;4823:32;4812:9;4808:48;4780:86;:::i;:::-;4885:8;;-1:-1:-1;4912:8:4;-1:-1:-1;4963:3:4;4948:19;;4935:33;4932:41;-1:-1:-1;4929:2:4;;;4991:6;4983;4976:22;4929:2;5035:103;5130:7;5122:3;5111:9;5107:19;5094:33;5083:9;5079:49;5035:103;:::i;:::-;5157:8;;-1:-1:-1;5184:8:4;-1:-1:-1;5235:3:4;5220:19;;5207:33;5204:41;-1:-1:-1;5201:2:4;;;5263:6;5255;5248:22;5201:2;5307:103;5402:7;5394:3;5383:9;5379:19;5366:33;5355:9;5351:49;5307:103;:::i;:::-;5429:8;;-1:-1:-1;5456:8:4;-1:-1:-1;5507:3:4;5492:19;;5479:33;5476:41;-1:-1:-1;5473:2:4;;;5535:6;5527;5520:22;5473:2;;5580:103;5675:7;5667:3;5656:9;5652:19;5639:33;5628:9;5624:49;5580:103;:::i;:::-;5702:8;5692:18;;5730:9;5719:20;;;;4396:1349;;;;;;;;;;;;;;:::o;5750:194::-;;5860:2;5848:9;5839:7;5835:23;5831:32;5828:2;;;5881:6;5873;5866:22;5828:2;5909:29;5928:9;5909:29;:::i;5949:469::-;;6046:5;6040:12;6073:6;6068:3;6061:19;6099:4;6128:2;6123:3;6119:12;6112:19;;6165:2;6158:5;6154:14;6186:3;6198:195;6212:6;6209:1;6206:13;6198:195;;;6277:13;;-1:-1:-1;;;;;6273:39:4;6261:52;;6333:12;;;;6368:15;;;;6309:1;6227:9;6198:195;;;-1:-1:-1;6409:3:4;;6016:402;-1:-1:-1;;;;;6016:402:4:o;6423:259::-;;6504:5;6498:12;6531:6;6526:3;6519:19;6547:63;6603:6;6596:4;6591:3;6587:14;6580:4;6573:5;6569:16;6547:63;:::i;:::-;6664:2;6643:15;-1:-1:-1;;6639:29:4;6630:39;;;;6671:4;6626:50;;6474:208;-1:-1:-1;;6474:208:4:o;6687:229::-;6836:2;6832:15;;;;-1:-1:-1;;6828:53:4;6816:66;;6907:2;6898:12;;6806:110::o;6921:274::-;;7088:6;7082:13;7104:53;7150:6;7145:3;7138:4;7130:6;7126:17;7104:53;:::i;:::-;7173:16;;;;;7058:137;-1:-1:-1;;7058:137:4:o;7200:267::-;;7379:2;7368:9;7361:21;7399:62;7457:2;7446:9;7442:18;7434:6;7399:62;:::i;7472:187::-;7637:14;;7630:22;7612:41;;7600:2;7585:18;;7567:92::o;7664:398::-;7891:25;;;7964:4;7952:17;;;;7947:2;7932:18;;7925:45;8001:2;7986:18;;7979:34;8044:2;8029:18;;8022:34;7878:3;7863:19;;7845:217::o;8067:363::-;;8293:10;8288:3;8284:20;8276:6;8272:33;8261:9;8254:52;8342:2;8337;8326:9;8322:18;8315:30;8362:62;8420:2;8409:9;8405:18;8397:6;8362:62;:::i;8435:219::-;;8582:2;8571:9;8564:21;8602:46;8644:2;8633:9;8629:18;8621:6;8602:46;:::i;8885:338::-;9087:2;9069:21;;;9126:2;9106:18;;;9099:30;-1:-1:-1;;;9160:2:4;9145:18;;9138:44;9214:2;9199:18;;9059:164::o;9228:351::-;9430:2;9412:21;;;9469:2;9449:18;;;9442:30;9508:29;9503:2;9488:18;;9481:57;9570:2;9555:18;;9402:177::o;9584:347::-;9786:2;9768:21;;;9825:2;9805:18;;;9798:30;9864:25;9859:2;9844:18;;9837:53;9922:2;9907:18;;9758:173::o;9936:338::-;10138:2;10120:21;;;10177:2;10157:18;;;10150:30;-1:-1:-1;;;10211:2:4;10196:18;;10189:44;10265:2;10250:18;;10110:164::o;10279:343::-;10481:2;10463:21;;;10520:2;10500:18;;;10493:30;-1:-1:-1;;;10554:2:4;10539:18;;10532:49;10613:2;10598:18;;10453:169::o;10627:188::-;10801:6;10789:19;;;;10771:38;;10759:2;10744:18;;10726:89::o;10820:177::-;10966:25;;;10954:2;10939:18;;10921:76::o;11002:184::-;11174:4;11162:17;;;;11144:36;;11132:2;11117:18;;11099:87::o;11191:253::-;;-1:-1:-1;;;;;11320:2:4;11317:1;11313:10;11350:2;11347:1;11343:10;11381:3;11377:2;11373:12;11368:3;11365:21;11362:2;;;11389:18;;:::i;:::-;11425:13;;11239:205;-1:-1:-1;;;;11239:205:4:o;11449:128::-;;11520:1;11516:6;11513:1;11510:13;11507:2;;;11526:18;;:::i;:::-;-1:-1:-1;11562:9:4;;11497:80::o;11582:120::-;;11648:1;11638:2;;11653:18;;:::i;:::-;-1:-1:-1;11687:9:4;;11628:74::o;11707:453::-;11803:6;11826:5;11840:314;11889:1;11926:2;11916:8;11913:16;11903:2;;11933:5;;;11903:2;11974:4;11969:3;11965:14;11959:4;11956:24;11953:2;;;11983:18;;:::i;:::-;12033:2;12023:8;12019:17;12016:2;;;12048:16;;;;12016:2;12127:17;;;;;12087:15;;11840:314;;;11784:376;;;;;;;:::o;12165:139::-;;12254:44;-1:-1:-1;;12281:8:4;12275:4;12309:922;12393:8;12383:2;;-1:-1:-1;12434:1:4;12448:5;;12383:2;12482:4;12472:2;;-1:-1:-1;12519:1:4;12533:5;;12472:2;12564:4;12582:1;12577:59;;;;12650:1;12645:183;;;;12557:271;;12577:59;12607:1;12598:10;;12621:5;;;12645:183;12682:3;12672:8;12669:17;12666:2;;;12689:18;;:::i;:::-;12745:1;12735:8;12731:16;12722:25;;12773:3;12766:5;12763:14;12760:2;;;12780:18;;:::i;:::-;12813:5;;;12557:271;;12912:2;12902:8;12899:16;12893:3;12887:4;12884:13;12880:36;12874:2;12864:8;12861:16;12856:2;12850:4;12847:12;12843:35;12840:77;12837:2;;;-1:-1:-1;12949:19:4;;;12984:14;;;12981:2;;;13001:18;;:::i;:::-;13034:5;;12837:2;13081:42;13119:3;13109:8;13103:4;13100:1;13081:42;:::i;:::-;13156:6;13151:3;13147:16;13138:7;13135:29;13132:2;;;13167:18;;:::i;:::-;13205:20;;12373:858;-1:-1:-1;;;;12373:858:4:o;13236:168::-;;13342:1;13338;13334:6;13330:14;13327:1;13324:21;13319:1;13312:9;13305:17;13301:45;13298:2;;;13349:18;;:::i;:::-;-1:-1:-1;13389:9:4;;13288:116::o;13409:246::-;;-1:-1:-1;;;;;13562:10:4;;;;13532;;13584:12;;;13581:2;;;13599:18;;:::i;:::-;13636:13;;13458:197;-1:-1:-1;;;13458:197:4:o;13660:125::-;;13728:1;13725;13722:8;13719:2;;;13733:18;;:::i;:::-;-1:-1:-1;13770:9:4;;13709:76::o;13790:258::-;13862:1;13872:113;13886:6;13883:1;13880:13;13872:113;;;13962:11;;;13956:18;13943:11;;;13936:39;13908:2;13901:10;13872:113;;;14003:6;14000:1;13997:13;13994:2;;;-1:-1:-1;;14038:1:4;14020:16;;14013:27;13843:205::o;14053:181::-;;14135:6;14128:5;14124:18;14161:7;14151:2;;14172:18;;:::i;:::-;-1:-1:-1;;14208:20:4;;14099:135;-1:-1:-1;;14099:135:4:o;14239:136::-;;14306:5;14296:2;;14315:18;;:::i;:::-;-1:-1:-1;;;14351:18:4;;14286:89::o;14380:380::-;14465:1;14455:12;;14512:1;14502:12;;;14523:2;;14577:4;14569:6;14565:17;14555:27;;14523:2;14630;14622:6;14619:14;14599:18;14596:38;14593:2;;;14676:10;14671:3;14667:20;14664:1;14657:31;14711:4;14708:1;14701:15;14739:4;14736:1;14729:15;14593:2;;14435:325;;;:::o;14765:197::-;;14831:6;14872:2;14865:5;14861:14;14899:2;14890:7;14887:15;14884:2;;;14905:18;;:::i;:::-;14954:1;14941:15;;14811:151;-1:-1:-1;;;14811:151:4:o;14967:135::-;;-1:-1:-1;;15027:17:4;;15024:2;;;15047:18;;:::i;:::-;-1:-1:-1;15094:1:4;15083:13;;15014:88::o;15107:112::-;;15165:1;15155:2;;15170:18;;:::i;:::-;-1:-1:-1;15204:9:4;;15145:74::o;15224:127::-;15285:10;15280:3;15276:20;15273:1;15266:31;15316:4;15313:1;15306:15;15340:4;15337:1;15330:15;15356:127;15417:10;15412:3;15408:20;15405:1;15398:31;15448:4;15445:1;15438:15;15472:4;15469:1;15462:15

Swarm Source

ipfs://9f2ffdc8ea5503b28cc4e53efb056a7caa280599c0b3bca1f1abf9e636a386b9

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

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.