S Price: $0.61408 (+3.20%)

Contract

0x0B14c20acd9F7e7940D5795bB5EDEc2Bc7229189

Overview

S Balance

Sonic LogoSonic LogoSonic Logo0 S

S Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Allocate Tokens23265942025-01-03 5:43:4781 days ago1735883027IN
0x0B14c20a...Bc7229189
0 S0.062035091.11
Allocate Tokens23258362025-01-03 5:29:5781 days ago1735882197IN
0x0B14c20a...Bc7229189
0 S0.031353851.11
Claim Tokens23158952025-01-03 2:35:5781 days ago1735871757IN
0x0B14c20a...Bc7229189
0 S0.000097081.15
Allocate Tokens23158422025-01-03 2:35:0381 days ago1735871703IN
0x0B14c20a...Bc7229189
0 S0.000250641.32
Create Claim23157982025-01-03 2:34:0581 days ago1735871645IN
0x0B14c20a...Bc7229189
0 S0.000091231.12
Claim Tokens23157522025-01-03 2:33:0881 days ago1735871588IN
0x0B14c20a...Bc7229189
0 S0.000109281.12
Allocate Tokens23157092025-01-03 2:32:1981 days ago1735871539IN
0x0B14c20a...Bc7229189
0 S0.000045891.32
Allocate Tokens23155272025-01-03 2:28:3581 days ago1735871315IN
0x0B14c20a...Bc7229189
0 S0.000096231.9
Claim Tokens23153912025-01-03 2:25:2681 days ago1735871126IN
0x0B14c20a...Bc7229189
0 S0.00009371.11
Allocate Tokens23152852025-01-03 2:23:1881 days ago1735870998IN
0x0B14c20a...Bc7229189
0 S0.000210791.11
Create Claim23151222025-01-03 2:19:5481 days ago1735870794IN
0x0B14c20a...Bc7229189
0 S0.000121281.22

Parent Transaction Hash Block From To
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TokenClaim

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at SonicScan.org on 2025-01-03
*/

// SPDX-License-Identifier: UNLICENSED
// File: @openzeppelin/contracts/security/ReentrancyGuard.sol


// OpenZeppelin Contracts (last updated v4.9.0) (security/ReentrancyGuard.sol)

pragma solidity ^0.8.0;

/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 *
 * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
 * available, which can be applied to functions to make sure there are no nested
 * (reentrant) calls to them.
 *
 * Note that because there is a single `nonReentrant` guard, functions marked as
 * `nonReentrant` may not call one another. This can be worked around by making
 * those functions `private`, and then adding `external` `nonReentrant` entry
 * points to them.
 *
 * TIP: If you would like to learn more about reentrancy and alternative ways
 * to protect against it, check out our blog post
 * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
 */
abstract contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and making it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        _nonReentrantBefore();
        _;
        _nonReentrantAfter();
    }

    function _nonReentrantBefore() private {
        // On the first call to nonReentrant, _status will be _NOT_ENTERED
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;
    }

    function _nonReentrantAfter() private {
        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a
     * `nonReentrant` function in the call stack.
     */
    function _reentrancyGuardEntered() internal view returns (bool) {
        return _status == _ENTERED;
    }
}

// File: gravity/claims.sol


pragma solidity ^0.8.0;


interface IMintableToken {
    function mint(address to, uint256 amount) external;
}

contract TokenClaim is ReentrancyGuard {
    IMintableToken public token;

    struct ClaimInfo {
        string claimId;
        uint256 allocatedAmount;
    }

    struct Claim {
        uint256 expiry;
        mapping(address => uint256) allocations;
        mapping(address => bool) claimed;
        uint256 totalAllocated;
        address[] allocatedAddresses;
    }

    mapping(bytes32 => Claim) public claims;
    mapping(address => mapping(bytes32 => uint256)) public userClaims;
    string[] public claimIds;

    address public admin;

    event ClaimCreated(string indexed claimId, uint256 expiry);
    event TokensAllocated(string indexed claimId, address indexed account, uint256 amount);
    event TokensClaimed(string indexed claimId, address indexed account, uint256 amount);
    event ClaimExpiryExtended(string indexed claimId, uint256 newExpiry);

    modifier onlyAdmin() {
        require(msg.sender == admin, "Caller is not admin");
        _;
    }

    modifier claimExists(string memory claimId) {
        require(claims[_getClaimHash(claimId)].expiry != 0, "Claim does not exist");
        _;
    }

    modifier onlyBeforeStart(string memory claimId) {
        require(block.timestamp < claims[_getClaimHash(claimId)].expiry, "Claim already started");
        _;
    }

    constructor(address tokenAddress, address owner) {
        token = IMintableToken(tokenAddress);
        admin = owner;
    }

    function createClaim(string memory claimId, uint256 expiry) external onlyAdmin {
        require(expiry > block.timestamp, "Expiry must be in the future");
        bytes32 claimHash = _getClaimHash(claimId);
        if (claims[claimHash].expiry == 0) {
            claims[claimHash].expiry = expiry;
            claimIds.push(claimId);
            emit ClaimCreated(claimId, expiry);
        } else {
            require(block.timestamp < claims[claimHash].expiry, "Claim has already started");
            claims[claimHash].expiry = expiry;
        }
    }

    function allocateTokens(
        string memory claimId,
        address[] calldata addresses,
        uint256[] calldata amounts
    ) external onlyAdmin claimExists(claimId) onlyBeforeStart(claimId) {
        require(addresses.length == amounts.length, "Addresses and amounts length mismatch");

        bytes32 claimHash = _getClaimHash(claimId);
        Claim storage claim = claims[claimHash];
        for (uint256 i = 0; i < addresses.length; i++) {
            require(!claim.claimed[addresses[i]], "Tokens already claimed by address");
            if (claim.allocations[addresses[i]] == 0) {
                claim.allocatedAddresses.push(addresses[i]);
            }
            uint256 newAllocation = claim.allocations[addresses[i]] + amounts[i];
            require(newAllocation >= claim.allocations[addresses[i]], "Overflow detected in allocation");
            claim.allocations[addresses[i]] = newAllocation;

            uint256 newTotalAllocated = claim.totalAllocated + amounts[i];
            require(newTotalAllocated >= claim.totalAllocated, "Overflow detected in total allocation");
            claim.totalAllocated = newTotalAllocated;

            emit TokensAllocated(claimId, addresses[i], amounts[i]);
        }
    }

    function claimTokens(string memory claimId) external claimExists(claimId) nonReentrant {
        bytes32 claimHash = _getClaimHash(claimId);
        Claim storage claim = claims[claimHash];

        require(block.timestamp < claim.expiry, "Claim period has expired");
        require(!claim.claimed[msg.sender], "Tokens already claimed");
        uint256 amount = claim.allocations[msg.sender];
        require(amount > 0, "No tokens allocated");

        claim.claimed[msg.sender] = true;
        claim.allocations[msg.sender] = 0;
        claim.totalAllocated -= amount;

        token.mint(msg.sender, amount);

        emit TokensClaimed(claimId, msg.sender, amount);
    }

    function getAllocation(string memory claimId, address account) external view claimExists(claimId) returns (uint256) {
        return claims[_getClaimHash(claimId)].allocations[account];
    }

    function hasClaimed(string memory claimId, address account) external view claimExists(claimId) returns (bool) {
        return claims[_getClaimHash(claimId)].claimed[account];
    }

    function extendClaimExpiry(string memory claimId, uint256 additionalTime) external onlyAdmin claimExists(claimId) {
        bytes32 claimHash = _getClaimHash(claimId);
        Claim storage claim = claims[claimHash];
        require(claim.expiry > block.timestamp, "Claim has already expired");
        claim.expiry += additionalTime;
        emit ClaimExpiryExtended(claimId, claim.expiry);
    }

    function _getClaimHash(string memory claimId) internal pure returns (bytes32) {
        return keccak256(abi.encodePacked(claimId));
    }

    function getUserClaims(address user) external view returns (ClaimInfo[] memory) {
        uint256 claimCount = 0;

        for (uint256 i = 0; i < claimIds.length; i++) {
            bytes32 claimHash = _getClaimHash(claimIds[i]);
            if (claims[claimHash].allocations[user] > 0) {
                claimCount++;
            }
        }

        ClaimInfo[] memory userClaimsList = new ClaimInfo[](claimCount);
        uint256 index = 0;

        for (uint256 i = 0; i < claimIds.length; i++) {
            bytes32 claimHash = _getClaimHash(claimIds[i]);
            uint256 allocatedAmount = claims[claimHash].allocations[user];
            if (allocatedAmount > 0) {
                userClaimsList[index] = ClaimInfo(claimIds[i], allocatedAmount);
                index++;
            }
        }

        return userClaimsList;
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"claimId","type":"string"},{"indexed":false,"internalType":"uint256","name":"expiry","type":"uint256"}],"name":"ClaimCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"claimId","type":"string"},{"indexed":false,"internalType":"uint256","name":"newExpiry","type":"uint256"}],"name":"ClaimExpiryExtended","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"claimId","type":"string"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokensAllocated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"claimId","type":"string"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokensClaimed","type":"event"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"claimId","type":"string"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"allocateTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"claimIds","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"claimId","type":"string"}],"name":"claimTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"claims","outputs":[{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint256","name":"totalAllocated","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"claimId","type":"string"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"name":"createClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"claimId","type":"string"},{"internalType":"uint256","name":"additionalTime","type":"uint256"}],"name":"extendClaimExpiry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"claimId","type":"string"},{"internalType":"address","name":"account","type":"address"}],"name":"getAllocation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserClaims","outputs":[{"components":[{"internalType":"string","name":"claimId","type":"string"},{"internalType":"uint256","name":"allocatedAmount","type":"uint256"}],"internalType":"struct TokenClaim.ClaimInfo[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"claimId","type":"string"},{"internalType":"address","name":"account","type":"address"}],"name":"hasClaimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IMintableToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"userClaims","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

608060405234801561000f575f80fd5b50604051612b4b380380612b4b8339818101604052810190610031919061011d565b60015f819055508160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505061015b565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100ec826100c3565b9050919050565b6100fc816100e2565b8114610106575f80fd5b50565b5f81519050610117816100f3565b92915050565b5f8060408385031215610133576101326100bf565b5b5f61014085828601610109565b925050602061015185828601610109565b9150509250929050565b6129e3806101685f395ff3fe608060405234801561000f575f80fd5b50600436106100b2575f3560e01c8063d7d5c0651161006f578063d7d5c065146101ae578063ec08fc4c146101ca578063eff0f592146101e6578063f851a44014610217578063f89d528a14610235578063fc0c546a14610265576100b2565b8063060b0c75146100b657806325401d8e146100d25780633cff354914610102578063559c3541146101325780637bcb4a641461014e578063a59863861461017e575b5f80fd5b6100d060048036038101906100cb919061191c565b610283565b005b6100ec60048036038101906100e791906119fc565b6108ca565b6040516100f99190611a87565b60405180910390f35b61011c60048036038101906101179190611b01565b610970565b6040516101299190611b75565b60405180910390f35b61014c60048036038101906101479190611b8e565b610a3c565b005b61016860048036038101906101639190611bd5565b610dc9565b6040516101759190611d4c565b60405180910390f35b61019860048036038101906101939190611d9f565b61116d565b6040516101a59190611dec565b60405180910390f35b6101c860048036038101906101c39190611e05565b61118d565b005b6101e460048036038101906101df9190611e05565b611393565b005b61020060048036038101906101fb9190611e5f565b611555565b60405161020e929190611e8a565b60405180910390f35b61021f611575565b60405161022c9190611ec0565b60405180910390f35b61024f600480360381019061024a9190611b01565b61159a565b60405161025c9190611dec565b60405180910390f35b61026d61165a565b60405161027a9190611f34565b60405180910390f35b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610312576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161030990611f97565b60405180910390fd5b845f60025f6103208461167f565b81526020019081526020015f205f015403610370576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161036790611fff565b60405180910390fd5b8560025f61037d8361167f565b81526020019081526020015f205f015442106103ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c590612067565b60405180910390fd5b838390508686905014610416576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040d906120f5565b60405180910390fd5b5f6104208861167f565b90505f60025f8381526020019081526020015f2090505f5b888890508110156108be57816002015f8a8a8481811061045b5761045a612113565b5b90506020020160208101906104709190611bd5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156104f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ed906121b0565b60405180910390fd5b5f826001015f8b8b8581811061050f5761050e612113565b5b90506020020160208101906105249190611bd5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054036105ed578160040189898381811061057a57610579612113565b5b905060200201602081019061058f9190611bd5565b908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5f87878381811061060157610600612113565b5b90506020020135836001015f8c8c868181106106205761061f612113565b5b90506020020160208101906106359190611bd5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461067991906121fb565b9050826001015f8b8b8581811061069357610692612113565b5b90506020020160208101906106a89190611bd5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054811015610724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071b90612278565b60405180910390fd5b80836001015f8c8c8681811061073d5761073c612113565b5b90506020020160208101906107529190611bd5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f8888848181106107a3576107a2612113565b5b9050602002013584600301546107b991906121fb565b90508360030154811015610802576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f990612306565b60405180910390fd5b8084600301819055508a8a8481811061081e5761081d612113565b5b90506020020160208101906108339190611bd5565b73ffffffffffffffffffffffffffffffffffffffff168c604051610857919061235e565b60405180910390207f67a90ba89fd057563a71faca71b9f50193409d439108e1e12a9eecf5d1fa24fa8b8b8781811061089357610892612113565b5b905060200201356040516108a79190611dec565b60405180910390a350508080600101915050610438565b50505050505050505050565b600481815481106108d9575f80fd5b905f5260205f20015f9150905080546108f1906123a1565b80601f016020809104026020016040519081016040528092919081815260200182805461091d906123a1565b80156109685780601f1061093f57610100808354040283529160200191610968565b820191905f5260205f20905b81548152906001019060200180831161094b57829003601f168201915b505050505081565b5f825f60025f61097f8461167f565b81526020019081526020015f205f0154036109cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c690611fff565b60405180910390fd5b60025f6109db8661167f565b81526020019081526020015f206002015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1691505092915050565b805f60025f610a4a8461167f565b81526020019081526020015f205f015403610a9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9190611fff565b60405180910390fd5b610aa26116ae565b5f610aac8361167f565b90505f60025f8381526020019081526020015f209050805f01544210610b07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afe9061241b565b60405180910390fd5b806002015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610b93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8a90612483565b60405180910390fd5b5f816001015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8111610c18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0f906124eb565b60405180910390fd5b6001826002015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f826001015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080826003015f828254610cc69190612509565b9250508190555060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1933836040518363ffffffff1660e01b8152600401610d2992919061253c565b5f604051808303815f87803b158015610d40575f80fd5b505af1158015610d52573d5f803e3d5ffd5b505050503373ffffffffffffffffffffffffffffffffffffffff1685604051610d7b919061235e565b60405180910390207fbc3fa44f5bc4e5f6340fc228b4609c4fc3760144310f27788d15433ae421465683604051610db29190611dec565b60405180910390a3505050610dc56116fb565b5050565b60605f805b600480549050811015610efd575f610e8760048381548110610df357610df2612113565b5b905f5260205f20018054610e06906123a1565b80601f0160208091040260200160405190810160405280929190818152602001828054610e32906123a1565b8015610e7d5780601f10610e5457610100808354040283529160200191610e7d565b820191905f5260205f20905b815481529060010190602001808311610e6057829003601f168201915b505050505061167f565b90505f60025f8381526020019081526020015f206001015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541115610eef578280610eeb90612563565b9350505b508080600101915050610dce565b505f8167ffffffffffffffff811115610f1957610f18611746565b5b604051908082528060200260200182016040528015610f5257816020015b610f3f611704565b815260200190600190039081610f375790505b5090505f805b600480549050811015611161575f61101160048381548110610f7d57610f7c612113565b5b905f5260205f20018054610f90906123a1565b80601f0160208091040260200160405190810160405280929190818152602001828054610fbc906123a1565b80156110075780601f10610fde57610100808354040283529160200191611007565b820191905f5260205f20905b815481529060010190602001808311610fea57829003601f168201915b505050505061167f565b90505f60025f8381526020019081526020015f206001015f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8111156111525760405180604001604052806004858154811061108d5761108c612113565b5b905f5260205f200180546110a0906123a1565b80601f01602080910402602001604051908101604052809291908181526020018280546110cc906123a1565b80156111175780601f106110ee57610100808354040283529160200191611117565b820191905f5260205f20905b8154815290600101906020018083116110fa57829003601f168201915b505050505081526020018281525085858151811061113857611137612113565b5b6020026020010181905250838061114e90612563565b9450505b50508080600101915050610f58565b50819350505050919050565b6003602052815f5260405f20602052805f5260405f205f91509150505481565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461121c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121390611f97565b60405180910390fd5b42811161125e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611255906125f4565b60405180910390fd5b5f6112688361167f565b90505f60025f8381526020019081526020015f205f015403611320578160025f8381526020019081526020015f205f0181905550600483908060018154018082558091505060019003905f5260205f20015f9091909190915090816112cd91906127a6565b50826040516112dc919061235e565b60405180910390207fbbbd85ffe467bbfb1f86bf0f31c7235fe815ca3802a57f983bd9ce89926f1281836040516113139190611dec565b60405180910390a261138e565b60025f8281526020019081526020015f205f01544210611375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136c906128bf565b60405180910390fd5b8160025f8381526020019081526020015f205f01819055505b505050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611422576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141990611f97565b60405180910390fd5b815f60025f6114308461167f565b81526020019081526020015f205f015403611480576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147790611fff565b60405180910390fd5b5f61148a8461167f565b90505f60025f8381526020019081526020015f20905042815f0154116114e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114dc90612927565b60405180910390fd5b83815f015f8282546114f791906121fb565b925050819055508460405161150c919061235e565b60405180910390207f84984ce307d48970e19e4769b3a23da87f0b3eaa6b0f9f9bfe077496a282234d825f01546040516115469190611dec565b60405180910390a25050505050565b6002602052805f5260405f205f91509050805f0154908060030154905082565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f825f60025f6115a98461167f565b81526020019081526020015f205f0154036115f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f090611fff565b60405180910390fd5b60025f6116058661167f565b81526020019081526020015f206001015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205491505092915050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f81604051602001611691919061235e565b604051602081830303815290604052805190602001209050919050565b60025f54036116f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e99061298f565b60405180910390fd5b60025f81905550565b60015f81905550565b6040518060400160405280606081526020015f81525090565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61177c82611736565b810181811067ffffffffffffffff8211171561179b5761179a611746565b5b80604052505050565b5f6117ad61171d565b90506117b98282611773565b919050565b5f67ffffffffffffffff8211156117d8576117d7611746565b5b6117e182611736565b9050602081019050919050565b828183375f83830152505050565b5f61180e611809846117be565b6117a4565b90508281526020810184848401111561182a57611829611732565b5b6118358482856117ee565b509392505050565b5f82601f8301126118515761185061172e565b5b81356118618482602086016117fc565b91505092915050565b5f80fd5b5f80fd5b5f8083601f8401126118875761188661172e565b5b8235905067ffffffffffffffff8111156118a4576118a361186a565b5b6020830191508360208202830111156118c0576118bf61186e565b5b9250929050565b5f8083601f8401126118dc576118db61172e565b5b8235905067ffffffffffffffff8111156118f9576118f861186a565b5b6020830191508360208202830111156119155761191461186e565b5b9250929050565b5f805f805f6060868803121561193557611934611726565b5b5f86013567ffffffffffffffff8111156119525761195161172a565b5b61195e8882890161183d565b955050602086013567ffffffffffffffff81111561197f5761197e61172a565b5b61198b88828901611872565b9450945050604086013567ffffffffffffffff8111156119ae576119ad61172a565b5b6119ba888289016118c7565b92509250509295509295909350565b5f819050919050565b6119db816119c9565b81146119e5575f80fd5b50565b5f813590506119f6816119d2565b92915050565b5f60208284031215611a1157611a10611726565b5b5f611a1e848285016119e8565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f611a5982611a27565b611a638185611a31565b9350611a73818560208601611a41565b611a7c81611736565b840191505092915050565b5f6020820190508181035f830152611a9f8184611a4f565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611ad082611aa7565b9050919050565b611ae081611ac6565b8114611aea575f80fd5b50565b5f81359050611afb81611ad7565b92915050565b5f8060408385031215611b1757611b16611726565b5b5f83013567ffffffffffffffff811115611b3457611b3361172a565b5b611b408582860161183d565b9250506020611b5185828601611aed565b9150509250929050565b5f8115159050919050565b611b6f81611b5b565b82525050565b5f602082019050611b885f830184611b66565b92915050565b5f60208284031215611ba357611ba2611726565b5b5f82013567ffffffffffffffff811115611bc057611bbf61172a565b5b611bcc8482850161183d565b91505092915050565b5f60208284031215611bea57611be9611726565b5b5f611bf784828501611aed565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f82825260208201905092915050565b5f611c4382611a27565b611c4d8185611c29565b9350611c5d818560208601611a41565b611c6681611736565b840191505092915050565b611c7a816119c9565b82525050565b5f604083015f8301518482035f860152611c9a8282611c39565b9150506020830151611caf6020860182611c71565b508091505092915050565b5f611cc58383611c80565b905092915050565b5f602082019050919050565b5f611ce382611c00565b611ced8185611c0a565b935083602082028501611cff85611c1a565b805f5b85811015611d3a5784840389528151611d1b8582611cba565b9450611d2683611ccd565b925060208a01995050600181019050611d02565b50829750879550505050505092915050565b5f6020820190508181035f830152611d648184611cd9565b905092915050565b5f819050919050565b611d7e81611d6c565b8114611d88575f80fd5b50565b5f81359050611d9981611d75565b92915050565b5f8060408385031215611db557611db4611726565b5b5f611dc285828601611aed565b9250506020611dd385828601611d8b565b9150509250929050565b611de6816119c9565b82525050565b5f602082019050611dff5f830184611ddd565b92915050565b5f8060408385031215611e1b57611e1a611726565b5b5f83013567ffffffffffffffff811115611e3857611e3761172a565b5b611e448582860161183d565b9250506020611e55858286016119e8565b9150509250929050565b5f60208284031215611e7457611e73611726565b5b5f611e8184828501611d8b565b91505092915050565b5f604082019050611e9d5f830185611ddd565b611eaa6020830184611ddd565b9392505050565b611eba81611ac6565b82525050565b5f602082019050611ed35f830184611eb1565b92915050565b5f819050919050565b5f611efc611ef7611ef284611aa7565b611ed9565b611aa7565b9050919050565b5f611f0d82611ee2565b9050919050565b5f611f1e82611f03565b9050919050565b611f2e81611f14565b82525050565b5f602082019050611f475f830184611f25565b92915050565b7f43616c6c6572206973206e6f742061646d696e000000000000000000000000005f82015250565b5f611f81601383611a31565b9150611f8c82611f4d565b602082019050919050565b5f6020820190508181035f830152611fae81611f75565b9050919050565b7f436c61696d20646f6573206e6f742065786973740000000000000000000000005f82015250565b5f611fe9601483611a31565b9150611ff482611fb5565b602082019050919050565b5f6020820190508181035f83015261201681611fdd565b9050919050565b7f436c61696d20616c7265616479207374617274656400000000000000000000005f82015250565b5f612051601583611a31565b915061205c8261201d565b602082019050919050565b5f6020820190508181035f83015261207e81612045565b9050919050565b7f41646472657373657320616e6420616d6f756e7473206c656e677468206d69735f8201527f6d61746368000000000000000000000000000000000000000000000000000000602082015250565b5f6120df602583611a31565b91506120ea82612085565b604082019050919050565b5f6020820190508181035f83015261210c816120d3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f546f6b656e7320616c726561647920636c61696d6564206279206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f61219a602183611a31565b91506121a582612140565b604082019050919050565b5f6020820190508181035f8301526121c78161218e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612205826119c9565b9150612210836119c9565b9250828201905080821115612228576122276121ce565b5b92915050565b7f4f766572666c6f7720646574656374656420696e20616c6c6f636174696f6e005f82015250565b5f612262601f83611a31565b915061226d8261222e565b602082019050919050565b5f6020820190508181035f83015261228f81612256565b9050919050565b7f4f766572666c6f7720646574656374656420696e20746f74616c20616c6c6f635f8201527f6174696f6e000000000000000000000000000000000000000000000000000000602082015250565b5f6122f0602583611a31565b91506122fb82612296565b604082019050919050565b5f6020820190508181035f83015261231d816122e4565b9050919050565b5f81905092915050565b5f61233882611a27565b6123428185612324565b9350612352818560208601611a41565b80840191505092915050565b5f612369828461232e565b915081905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806123b857607f821691505b6020821081036123cb576123ca612374565b5b50919050565b7f436c61696d20706572696f6420686173206578706972656400000000000000005f82015250565b5f612405601883611a31565b9150612410826123d1565b602082019050919050565b5f6020820190508181035f830152612432816123f9565b9050919050565b7f546f6b656e7320616c726561647920636c61696d6564000000000000000000005f82015250565b5f61246d601683611a31565b915061247882612439565b602082019050919050565b5f6020820190508181035f83015261249a81612461565b9050919050565b7f4e6f20746f6b656e7320616c6c6f6361746564000000000000000000000000005f82015250565b5f6124d5601383611a31565b91506124e0826124a1565b602082019050919050565b5f6020820190508181035f830152612502816124c9565b9050919050565b5f612513826119c9565b915061251e836119c9565b9250828203905081811115612536576125356121ce565b5b92915050565b5f60408201905061254f5f830185611eb1565b61255c6020830184611ddd565b9392505050565b5f61256d826119c9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361259f5761259e6121ce565b5b600182019050919050565b7f457870697279206d75737420626520696e2074686520667574757265000000005f82015250565b5f6125de601c83611a31565b91506125e9826125aa565b602082019050919050565b5f6020820190508181035f83015261260b816125d2565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261266e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612633565b6126788683612633565b95508019841693508086168417925050509392505050565b5f6126aa6126a56126a0846119c9565b611ed9565b6119c9565b9050919050565b5f819050919050565b6126c383612690565b6126d76126cf826126b1565b84845461263f565b825550505050565b5f90565b6126eb6126df565b6126f68184846126ba565b505050565b5b818110156127195761270e5f826126e3565b6001810190506126fc565b5050565b601f82111561275e5761272f81612612565b61273884612624565b81016020851015612747578190505b61275b61275385612624565b8301826126fb565b50505b505050565b5f82821c905092915050565b5f61277e5f1984600802612763565b1980831691505092915050565b5f612796838361276f565b9150826002028217905092915050565b6127af82611a27565b67ffffffffffffffff8111156127c8576127c7611746565b5b6127d282546123a1565b6127dd82828561271d565b5f60209050601f83116001811461280e575f84156127fc578287015190505b612806858261278b565b86555061286d565b601f19841661281c86612612565b5f5b828110156128435784890151825560018201915060208501945060208101905061281e565b86831015612860578489015161285c601f89168261276f565b8355505b6001600288020188555050505b505050505050565b7f436c61696d2068617320616c72656164792073746172746564000000000000005f82015250565b5f6128a9601983611a31565b91506128b482612875565b602082019050919050565b5f6020820190508181035f8301526128d68161289d565b9050919050565b7f436c61696d2068617320616c72656164792065787069726564000000000000005f82015250565b5f612911601983611a31565b915061291c826128dd565b602082019050919050565b5f6020820190508181035f83015261293e81612905565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f612979601f83611a31565b915061298482612945565b602082019050919050565b5f6020820190508181035f8301526129a68161296d565b905091905056fea264697066735822122084c94ca17c95300d4e8543b7e23a0bdd57dcf4102ec4b6cecbf3faf954ae1d0664736f6c634300081a0033000000000000000000000000a554d87b6d0b77f46171190e2b17b05e5b04c20a0000000000000000000000000b852631f7899bc4f9794131b3c919a36bfa7bfb

Deployed Bytecode

0x608060405234801561000f575f80fd5b50600436106100b2575f3560e01c8063d7d5c0651161006f578063d7d5c065146101ae578063ec08fc4c146101ca578063eff0f592146101e6578063f851a44014610217578063f89d528a14610235578063fc0c546a14610265576100b2565b8063060b0c75146100b657806325401d8e146100d25780633cff354914610102578063559c3541146101325780637bcb4a641461014e578063a59863861461017e575b5f80fd5b6100d060048036038101906100cb919061191c565b610283565b005b6100ec60048036038101906100e791906119fc565b6108ca565b6040516100f99190611a87565b60405180910390f35b61011c60048036038101906101179190611b01565b610970565b6040516101299190611b75565b60405180910390f35b61014c60048036038101906101479190611b8e565b610a3c565b005b61016860048036038101906101639190611bd5565b610dc9565b6040516101759190611d4c565b60405180910390f35b61019860048036038101906101939190611d9f565b61116d565b6040516101a59190611dec565b60405180910390f35b6101c860048036038101906101c39190611e05565b61118d565b005b6101e460048036038101906101df9190611e05565b611393565b005b61020060048036038101906101fb9190611e5f565b611555565b60405161020e929190611e8a565b60405180910390f35b61021f611575565b60405161022c9190611ec0565b60405180910390f35b61024f600480360381019061024a9190611b01565b61159a565b60405161025c9190611dec565b60405180910390f35b61026d61165a565b60405161027a9190611f34565b60405180910390f35b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610312576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161030990611f97565b60405180910390fd5b845f60025f6103208461167f565b81526020019081526020015f205f015403610370576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161036790611fff565b60405180910390fd5b8560025f61037d8361167f565b81526020019081526020015f205f015442106103ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c590612067565b60405180910390fd5b838390508686905014610416576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040d906120f5565b60405180910390fd5b5f6104208861167f565b90505f60025f8381526020019081526020015f2090505f5b888890508110156108be57816002015f8a8a8481811061045b5761045a612113565b5b90506020020160208101906104709190611bd5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156104f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ed906121b0565b60405180910390fd5b5f826001015f8b8b8581811061050f5761050e612113565b5b90506020020160208101906105249190611bd5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054036105ed578160040189898381811061057a57610579612113565b5b905060200201602081019061058f9190611bd5565b908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5f87878381811061060157610600612113565b5b90506020020135836001015f8c8c868181106106205761061f612113565b5b90506020020160208101906106359190611bd5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461067991906121fb565b9050826001015f8b8b8581811061069357610692612113565b5b90506020020160208101906106a89190611bd5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054811015610724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071b90612278565b60405180910390fd5b80836001015f8c8c8681811061073d5761073c612113565b5b90506020020160208101906107529190611bd5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f8888848181106107a3576107a2612113565b5b9050602002013584600301546107b991906121fb565b90508360030154811015610802576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f990612306565b60405180910390fd5b8084600301819055508a8a8481811061081e5761081d612113565b5b90506020020160208101906108339190611bd5565b73ffffffffffffffffffffffffffffffffffffffff168c604051610857919061235e565b60405180910390207f67a90ba89fd057563a71faca71b9f50193409d439108e1e12a9eecf5d1fa24fa8b8b8781811061089357610892612113565b5b905060200201356040516108a79190611dec565b60405180910390a350508080600101915050610438565b50505050505050505050565b600481815481106108d9575f80fd5b905f5260205f20015f9150905080546108f1906123a1565b80601f016020809104026020016040519081016040528092919081815260200182805461091d906123a1565b80156109685780601f1061093f57610100808354040283529160200191610968565b820191905f5260205f20905b81548152906001019060200180831161094b57829003601f168201915b505050505081565b5f825f60025f61097f8461167f565b81526020019081526020015f205f0154036109cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c690611fff565b60405180910390fd5b60025f6109db8661167f565b81526020019081526020015f206002015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1691505092915050565b805f60025f610a4a8461167f565b81526020019081526020015f205f015403610a9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9190611fff565b60405180910390fd5b610aa26116ae565b5f610aac8361167f565b90505f60025f8381526020019081526020015f209050805f01544210610b07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afe9061241b565b60405180910390fd5b806002015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610b93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8a90612483565b60405180910390fd5b5f816001015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8111610c18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0f906124eb565b60405180910390fd5b6001826002015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f826001015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080826003015f828254610cc69190612509565b9250508190555060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1933836040518363ffffffff1660e01b8152600401610d2992919061253c565b5f604051808303815f87803b158015610d40575f80fd5b505af1158015610d52573d5f803e3d5ffd5b505050503373ffffffffffffffffffffffffffffffffffffffff1685604051610d7b919061235e565b60405180910390207fbc3fa44f5bc4e5f6340fc228b4609c4fc3760144310f27788d15433ae421465683604051610db29190611dec565b60405180910390a3505050610dc56116fb565b5050565b60605f805b600480549050811015610efd575f610e8760048381548110610df357610df2612113565b5b905f5260205f20018054610e06906123a1565b80601f0160208091040260200160405190810160405280929190818152602001828054610e32906123a1565b8015610e7d5780601f10610e5457610100808354040283529160200191610e7d565b820191905f5260205f20905b815481529060010190602001808311610e6057829003601f168201915b505050505061167f565b90505f60025f8381526020019081526020015f206001015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541115610eef578280610eeb90612563565b9350505b508080600101915050610dce565b505f8167ffffffffffffffff811115610f1957610f18611746565b5b604051908082528060200260200182016040528015610f5257816020015b610f3f611704565b815260200190600190039081610f375790505b5090505f805b600480549050811015611161575f61101160048381548110610f7d57610f7c612113565b5b905f5260205f20018054610f90906123a1565b80601f0160208091040260200160405190810160405280929190818152602001828054610fbc906123a1565b80156110075780601f10610fde57610100808354040283529160200191611007565b820191905f5260205f20905b815481529060010190602001808311610fea57829003601f168201915b505050505061167f565b90505f60025f8381526020019081526020015f206001015f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8111156111525760405180604001604052806004858154811061108d5761108c612113565b5b905f5260205f200180546110a0906123a1565b80601f01602080910402602001604051908101604052809291908181526020018280546110cc906123a1565b80156111175780601f106110ee57610100808354040283529160200191611117565b820191905f5260205f20905b8154815290600101906020018083116110fa57829003601f168201915b505050505081526020018281525085858151811061113857611137612113565b5b6020026020010181905250838061114e90612563565b9450505b50508080600101915050610f58565b50819350505050919050565b6003602052815f5260405f20602052805f5260405f205f91509150505481565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461121c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121390611f97565b60405180910390fd5b42811161125e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611255906125f4565b60405180910390fd5b5f6112688361167f565b90505f60025f8381526020019081526020015f205f015403611320578160025f8381526020019081526020015f205f0181905550600483908060018154018082558091505060019003905f5260205f20015f9091909190915090816112cd91906127a6565b50826040516112dc919061235e565b60405180910390207fbbbd85ffe467bbfb1f86bf0f31c7235fe815ca3802a57f983bd9ce89926f1281836040516113139190611dec565b60405180910390a261138e565b60025f8281526020019081526020015f205f01544210611375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136c906128bf565b60405180910390fd5b8160025f8381526020019081526020015f205f01819055505b505050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611422576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141990611f97565b60405180910390fd5b815f60025f6114308461167f565b81526020019081526020015f205f015403611480576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147790611fff565b60405180910390fd5b5f61148a8461167f565b90505f60025f8381526020019081526020015f20905042815f0154116114e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114dc90612927565b60405180910390fd5b83815f015f8282546114f791906121fb565b925050819055508460405161150c919061235e565b60405180910390207f84984ce307d48970e19e4769b3a23da87f0b3eaa6b0f9f9bfe077496a282234d825f01546040516115469190611dec565b60405180910390a25050505050565b6002602052805f5260405f205f91509050805f0154908060030154905082565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f825f60025f6115a98461167f565b81526020019081526020015f205f0154036115f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f090611fff565b60405180910390fd5b60025f6116058661167f565b81526020019081526020015f206001015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205491505092915050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f81604051602001611691919061235e565b604051602081830303815290604052805190602001209050919050565b60025f54036116f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e99061298f565b60405180910390fd5b60025f81905550565b60015f81905550565b6040518060400160405280606081526020015f81525090565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61177c82611736565b810181811067ffffffffffffffff8211171561179b5761179a611746565b5b80604052505050565b5f6117ad61171d565b90506117b98282611773565b919050565b5f67ffffffffffffffff8211156117d8576117d7611746565b5b6117e182611736565b9050602081019050919050565b828183375f83830152505050565b5f61180e611809846117be565b6117a4565b90508281526020810184848401111561182a57611829611732565b5b6118358482856117ee565b509392505050565b5f82601f8301126118515761185061172e565b5b81356118618482602086016117fc565b91505092915050565b5f80fd5b5f80fd5b5f8083601f8401126118875761188661172e565b5b8235905067ffffffffffffffff8111156118a4576118a361186a565b5b6020830191508360208202830111156118c0576118bf61186e565b5b9250929050565b5f8083601f8401126118dc576118db61172e565b5b8235905067ffffffffffffffff8111156118f9576118f861186a565b5b6020830191508360208202830111156119155761191461186e565b5b9250929050565b5f805f805f6060868803121561193557611934611726565b5b5f86013567ffffffffffffffff8111156119525761195161172a565b5b61195e8882890161183d565b955050602086013567ffffffffffffffff81111561197f5761197e61172a565b5b61198b88828901611872565b9450945050604086013567ffffffffffffffff8111156119ae576119ad61172a565b5b6119ba888289016118c7565b92509250509295509295909350565b5f819050919050565b6119db816119c9565b81146119e5575f80fd5b50565b5f813590506119f6816119d2565b92915050565b5f60208284031215611a1157611a10611726565b5b5f611a1e848285016119e8565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f611a5982611a27565b611a638185611a31565b9350611a73818560208601611a41565b611a7c81611736565b840191505092915050565b5f6020820190508181035f830152611a9f8184611a4f565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611ad082611aa7565b9050919050565b611ae081611ac6565b8114611aea575f80fd5b50565b5f81359050611afb81611ad7565b92915050565b5f8060408385031215611b1757611b16611726565b5b5f83013567ffffffffffffffff811115611b3457611b3361172a565b5b611b408582860161183d565b9250506020611b5185828601611aed565b9150509250929050565b5f8115159050919050565b611b6f81611b5b565b82525050565b5f602082019050611b885f830184611b66565b92915050565b5f60208284031215611ba357611ba2611726565b5b5f82013567ffffffffffffffff811115611bc057611bbf61172a565b5b611bcc8482850161183d565b91505092915050565b5f60208284031215611bea57611be9611726565b5b5f611bf784828501611aed565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f82825260208201905092915050565b5f611c4382611a27565b611c4d8185611c29565b9350611c5d818560208601611a41565b611c6681611736565b840191505092915050565b611c7a816119c9565b82525050565b5f604083015f8301518482035f860152611c9a8282611c39565b9150506020830151611caf6020860182611c71565b508091505092915050565b5f611cc58383611c80565b905092915050565b5f602082019050919050565b5f611ce382611c00565b611ced8185611c0a565b935083602082028501611cff85611c1a565b805f5b85811015611d3a5784840389528151611d1b8582611cba565b9450611d2683611ccd565b925060208a01995050600181019050611d02565b50829750879550505050505092915050565b5f6020820190508181035f830152611d648184611cd9565b905092915050565b5f819050919050565b611d7e81611d6c565b8114611d88575f80fd5b50565b5f81359050611d9981611d75565b92915050565b5f8060408385031215611db557611db4611726565b5b5f611dc285828601611aed565b9250506020611dd385828601611d8b565b9150509250929050565b611de6816119c9565b82525050565b5f602082019050611dff5f830184611ddd565b92915050565b5f8060408385031215611e1b57611e1a611726565b5b5f83013567ffffffffffffffff811115611e3857611e3761172a565b5b611e448582860161183d565b9250506020611e55858286016119e8565b9150509250929050565b5f60208284031215611e7457611e73611726565b5b5f611e8184828501611d8b565b91505092915050565b5f604082019050611e9d5f830185611ddd565b611eaa6020830184611ddd565b9392505050565b611eba81611ac6565b82525050565b5f602082019050611ed35f830184611eb1565b92915050565b5f819050919050565b5f611efc611ef7611ef284611aa7565b611ed9565b611aa7565b9050919050565b5f611f0d82611ee2565b9050919050565b5f611f1e82611f03565b9050919050565b611f2e81611f14565b82525050565b5f602082019050611f475f830184611f25565b92915050565b7f43616c6c6572206973206e6f742061646d696e000000000000000000000000005f82015250565b5f611f81601383611a31565b9150611f8c82611f4d565b602082019050919050565b5f6020820190508181035f830152611fae81611f75565b9050919050565b7f436c61696d20646f6573206e6f742065786973740000000000000000000000005f82015250565b5f611fe9601483611a31565b9150611ff482611fb5565b602082019050919050565b5f6020820190508181035f83015261201681611fdd565b9050919050565b7f436c61696d20616c7265616479207374617274656400000000000000000000005f82015250565b5f612051601583611a31565b915061205c8261201d565b602082019050919050565b5f6020820190508181035f83015261207e81612045565b9050919050565b7f41646472657373657320616e6420616d6f756e7473206c656e677468206d69735f8201527f6d61746368000000000000000000000000000000000000000000000000000000602082015250565b5f6120df602583611a31565b91506120ea82612085565b604082019050919050565b5f6020820190508181035f83015261210c816120d3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f546f6b656e7320616c726561647920636c61696d6564206279206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f61219a602183611a31565b91506121a582612140565b604082019050919050565b5f6020820190508181035f8301526121c78161218e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612205826119c9565b9150612210836119c9565b9250828201905080821115612228576122276121ce565b5b92915050565b7f4f766572666c6f7720646574656374656420696e20616c6c6f636174696f6e005f82015250565b5f612262601f83611a31565b915061226d8261222e565b602082019050919050565b5f6020820190508181035f83015261228f81612256565b9050919050565b7f4f766572666c6f7720646574656374656420696e20746f74616c20616c6c6f635f8201527f6174696f6e000000000000000000000000000000000000000000000000000000602082015250565b5f6122f0602583611a31565b91506122fb82612296565b604082019050919050565b5f6020820190508181035f83015261231d816122e4565b9050919050565b5f81905092915050565b5f61233882611a27565b6123428185612324565b9350612352818560208601611a41565b80840191505092915050565b5f612369828461232e565b915081905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806123b857607f821691505b6020821081036123cb576123ca612374565b5b50919050565b7f436c61696d20706572696f6420686173206578706972656400000000000000005f82015250565b5f612405601883611a31565b9150612410826123d1565b602082019050919050565b5f6020820190508181035f830152612432816123f9565b9050919050565b7f546f6b656e7320616c726561647920636c61696d6564000000000000000000005f82015250565b5f61246d601683611a31565b915061247882612439565b602082019050919050565b5f6020820190508181035f83015261249a81612461565b9050919050565b7f4e6f20746f6b656e7320616c6c6f6361746564000000000000000000000000005f82015250565b5f6124d5601383611a31565b91506124e0826124a1565b602082019050919050565b5f6020820190508181035f830152612502816124c9565b9050919050565b5f612513826119c9565b915061251e836119c9565b9250828203905081811115612536576125356121ce565b5b92915050565b5f60408201905061254f5f830185611eb1565b61255c6020830184611ddd565b9392505050565b5f61256d826119c9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361259f5761259e6121ce565b5b600182019050919050565b7f457870697279206d75737420626520696e2074686520667574757265000000005f82015250565b5f6125de601c83611a31565b91506125e9826125aa565b602082019050919050565b5f6020820190508181035f83015261260b816125d2565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261266e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612633565b6126788683612633565b95508019841693508086168417925050509392505050565b5f6126aa6126a56126a0846119c9565b611ed9565b6119c9565b9050919050565b5f819050919050565b6126c383612690565b6126d76126cf826126b1565b84845461263f565b825550505050565b5f90565b6126eb6126df565b6126f68184846126ba565b505050565b5b818110156127195761270e5f826126e3565b6001810190506126fc565b5050565b601f82111561275e5761272f81612612565b61273884612624565b81016020851015612747578190505b61275b61275385612624565b8301826126fb565b50505b505050565b5f82821c905092915050565b5f61277e5f1984600802612763565b1980831691505092915050565b5f612796838361276f565b9150826002028217905092915050565b6127af82611a27565b67ffffffffffffffff8111156127c8576127c7611746565b5b6127d282546123a1565b6127dd82828561271d565b5f60209050601f83116001811461280e575f84156127fc578287015190505b612806858261278b565b86555061286d565b601f19841661281c86612612565b5f5b828110156128435784890151825560018201915060208501945060208101905061281e565b86831015612860578489015161285c601f89168261276f565b8355505b6001600288020188555050505b505050505050565b7f436c61696d2068617320616c72656164792073746172746564000000000000005f82015250565b5f6128a9601983611a31565b91506128b482612875565b602082019050919050565b5f6020820190508181035f8301526128d68161289d565b9050919050565b7f436c61696d2068617320616c72656164792065787069726564000000000000005f82015250565b5f612911601983611a31565b915061291c826128dd565b602082019050919050565b5f6020820190508181035f83015261293e81612905565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f612979601f83611a31565b915061298482612945565b602082019050919050565b5f6020820190508181035f8301526129a68161296d565b905091905056fea264697066735822122084c94ca17c95300d4e8543b7e23a0bdd57dcf4102ec4b6cecbf3faf954ae1d0664736f6c634300081a0033

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

000000000000000000000000a554d87b6d0b77f46171190e2b17b05e5b04c20a0000000000000000000000000b852631f7899bc4f9794131b3c919a36bfa7bfb

-----Decoded View---------------
Arg [0] : tokenAddress (address): 0xa554d87b6D0b77f46171190e2b17B05e5B04C20a
Arg [1] : owner (address): 0x0B852631F7899bc4F9794131B3C919a36BFa7BFb

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000a554d87b6d0b77f46171190e2b17b05e5b04c20a
Arg [1] : 0000000000000000000000000b852631f7899bc4f9794131b3c919a36bfa7bfb


Deployed Bytecode Sourcemap

3432:5852:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5488:1267;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3943:24;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7665:183;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6763:693;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8415:866;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3871:65;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4912:568;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7856:403;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3825:39;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;3976:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7464:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3478:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5488:1267;4385:5;;;;;;;;;;;4371:19;;:10;:19;;;4363:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;5658:7:::1;4546:1;4505:6;:30;4512:22;4526:7;4512:13;:22::i;:::-;4505:30;;;;;;;;;;;:37;;;:42:::0;4497:75:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;5683:7:::2;4685:6;:30;4692:22;4706:7;4692:13;:22::i;:::-;4685:30;;;;;;;;;;;:37;;;4667:15;:55;4659:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;5731:7:::3;;:14;;5711:9;;:16;;:34;5703:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;5800:17;5820:22;5834:7;5820:13;:22::i;:::-;5800:42;;5853:19;5875:6;:17;5882:9;5875:17;;;;;;;;;;;5853:39;;5908:9;5903:845;5927:9;;:16;;5923:1;:20;5903:845;;;5974:5;:13;;:27;5988:9;;5998:1;5988:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;5974:27;;;;;;;;;;;;;;;;;;;;;;;;;5973:28;5965:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;6093:1;6058:5;:17;;:31;6076:9;;6086:1;6076:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;6058:31;;;;;;;;;;;;;;;;:36:::0;6054:120:::3;;6115:5;:24;;6145:9;;6155:1;6145:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;6115:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6054:120;6188:21;6246:7;;6254:1;6246:10;;;;;;;:::i;:::-;;;;;;;;6212:5;:17;;:31;6230:9;;6240:1;6230:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;6212:31;;;;;;;;;;;;;;;;:44;;;;:::i;:::-;6188:68;;6296:5;:17;;:31;6314:9;;6324:1;6314:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;6296:31;;;;;;;;;;;;;;;;6279:13;:48;;6271:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;6412:13;6378:5;:17;;:31;6396:9;;6406:1;6396:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;6378:31;;;;;;;;;;;;;;;:47;;;;6442:25;6493:7;;6501:1;6493:10;;;;;;;:::i;:::-;;;;;;;;6470:5;:20;;;:33;;;;:::i;:::-;6442:61;;6547:5;:20;;;6526:17;:41;;6518:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;6647:17;6624:5;:20;;:40;;;;6711:9;;6721:1;6711:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;6686:50;;6702:7;6686:50;;;;;;:::i;:::-;;;;;;;;;6725:7;;6733:1;6725:10;;;;;;;:::i;:::-;;;;;;;;6686:50;;;;;;:::i;:::-;;;;;;;;5950:798;;5945:3;;;;;;;5903:845;;;;5692:1063;;4583:1:::2;4425::::1;5488:1267:::0;;;;;:::o;3943:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7665:183::-;7769:4;7751:7;4546:1;4505:6;:30;4512:22;4526:7;4512:13;:22::i;:::-;4505:30;;;;;;;;;;;:37;;;:42;4497:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;7793:6:::1;:30;7800:22;7814:7;7800:13;:22::i;:::-;7793:30;;;;;;;;;;;:38;;:47;7832:7;7793:47;;;;;;;;;;;;;;;;;;;;;;;;;7786:54;;7665:183:::0;;;;;:::o;6763:693::-;6828:7;4546:1;4505:6;:30;4512:22;4526:7;4512:13;:22::i;:::-;4505:30;;;;;;;;;;;:37;;;:42;4497:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;2385:21:::1;:19;:21::i;:::-;6861:17:::2;6881:22;6895:7;6881:13;:22::i;:::-;6861:42;;6914:19;6936:6;:17;6943:9;6936:17;;;;;;;;;;;6914:39;;6992:5;:12;;;6974:15;:30;6966:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7053:5;:13;;:25;7067:10;7053:25;;;;;;;;;;;;;;;;;;;;;;;;;7052:26;7044:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;7116:14;7133:5;:17;;:29;7151:10;7133:29;;;;;;;;;;;;;;;;7116:46;;7190:1;7181:6;:10;7173:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;7256:4;7228:5;:13;;:25;7242:10;7228:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;7303:1;7271:5;:17;;:29;7289:10;7271:29;;;;;;;;;;;;;;;:33;;;;7339:6;7315:5;:20;;;:30;;;;;;;:::i;:::-;;;;;;;;7358:5;;;;;;;;;;;:10;;;7369;7381:6;7358:30;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;7429:10;7406:42;;7420:7;7406:42;;;;;;:::i;:::-;;;;;;;;;7441:6;7406:42;;;;;;:::i;:::-;;;;;;;;6850:606;;;2429:20:::1;:18;:20::i;:::-;6763:693:::0;;:::o;8415:866::-;8475:18;8506;8546:9;8541:225;8565:8;:15;;;;8561:1;:19;8541:225;;;8602:17;8622:26;8636:8;8645:1;8636:11;;;;;;;;:::i;:::-;;;;;;;;;8622:26;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:13;:26::i;:::-;8602:46;;8705:1;8667:6;:17;8674:9;8667:17;;;;;;;;;;;:29;;:35;8697:4;8667:35;;;;;;;;;;;;;;;;:39;8663:92;;;8727:12;;;;;:::i;:::-;;;;8663:92;8587:179;8582:3;;;;;;;8541:225;;;;8778:33;8830:10;8814:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;8778:63;;8852:13;8887:9;8882:358;8906:8;:15;;;;8902:1;:19;8882:358;;;8943:17;8963:26;8977:8;8986:1;8977:11;;;;;;;;:::i;:::-;;;;;;;;;8963:26;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:13;:26::i;:::-;8943:46;;9004:23;9030:6;:17;9037:9;9030:17;;;;;;;;;;;:29;;:35;9060:4;9030:35;;;;;;;;;;;;;;;;9004:61;;9102:1;9084:15;:19;9080:149;;;9148:39;;;;;;;;9158:8;9167:1;9158:11;;;;;;;;:::i;:::-;;;;;;;;;9148:39;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9171:15;9148:39;;;9124:14;9139:5;9124:21;;;;;;;;:::i;:::-;;;;;;;:63;;;;9206:7;;;;;:::i;:::-;;;;9080:149;8928:312;;8923:3;;;;;;;8882:358;;;;9259:14;9252:21;;;;;8415:866;;;:::o;3871:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4912:568::-;4385:5;;;;;;;;;;;4371:19;;:10;:19;;;4363:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;5019:15:::1;5010:6;:24;5002:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;5078:17;5098:22;5112:7;5098:13;:22::i;:::-;5078:42;;5163:1;5135:6;:17;5142:9;5135:17;;;;;;;;;;;:24;;;:29:::0;5131:342:::1;;5208:6;5181;:17;5188:9;5181:17;;;;;;;;;;;:24;;:33;;;;5229:8;5243:7;5229:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5284:7;5271:29;;;;;;:::i;:::-;;;;;;;;;5293:6;5271:29;;;;;;:::i;:::-;;;;;;;;5131:342;;;5359:6;:17;5366:9;5359:17;;;;;;;;;;;:24;;;5341:15;:42;5333:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;5455:6;5428;:17;5435:9;5428:17;;;;;;;;;;;:24;;:33;;;;5131:342;4991:489;4912:568:::0;;:::o;7856:403::-;4385:5;;;;;;;;;;;4371:19;;:10;:19;;;4363:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;7961:7:::1;4546:1;4505:6;:30;4512:22;4526:7;4512:13;:22::i;:::-;4505:30;;;;;;;;;;;:37;;;:42:::0;4497:75:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7981:17:::2;8001:22;8015:7;8001:13;:22::i;:::-;7981:42;;8034:19;8056:6;:17;8063:9;8056:17;;;;;;;;;;;8034:39;;8107:15;8092:5;:12;;;:30;8084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8179:14;8163:5;:12;;;:30;;;;;;;:::i;:::-;;;;;;;;8229:7;8209:42;;;;;;:::i;:::-;;;;;;;;;8238:5;:12;;;8209:42;;;;;;:::i;:::-;;;;;;;;7970:289;;4425:1:::1;7856:403:::0;;:::o;3825:39::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3976:20::-;;;;;;;;;;;;;:::o;7464:193::-;7571:7;7553;4546:1;4505:6;:30;4512:22;4526:7;4512:13;:22::i;:::-;4505:30;;;;;;;;;;;:37;;;:42;4497:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;7598:6:::1;:30;7605:22;7619:7;7605:13;:22::i;:::-;7598:30;;;;;;;;;;;:42;;:51;7641:7;7598:51;;;;;;;;;;;;;;;;7591:58;;7464:193:::0;;;;;:::o;3478:27::-;;;;;;;;;;;;;:::o;8267:140::-;8336:7;8390;8373:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;8363:36;;;;;;8356:43;;8267:140;;;:::o;2465:293::-;1867:1;2599:7;;:19;2591:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;1867:1;2732:7;:18;;;;2465:293::o;2766:213::-;1823:1;2949:7;:22;;;;2766:213::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:102;621:6;672:2;668:7;663:2;656:5;652:14;648:28;638:38;;580:102;;;:::o;688:180::-;736:77;733:1;726:88;833:4;830:1;823:15;857:4;854:1;847:15;874:281;957:27;979:4;957:27;:::i;:::-;949:6;945:40;1087:6;1075:10;1072:22;1051:18;1039:10;1036:34;1033:62;1030:88;;;1098:18;;:::i;:::-;1030:88;1138:10;1134:2;1127:22;917:238;874:281;;:::o;1161:129::-;1195:6;1222:20;;:::i;:::-;1212:30;;1251:33;1279:4;1271:6;1251:33;:::i;:::-;1161:129;;;:::o;1296:308::-;1358:4;1448:18;1440:6;1437:30;1434:56;;;1470:18;;:::i;:::-;1434:56;1508:29;1530:6;1508:29;:::i;:::-;1500:37;;1592:4;1586;1582:15;1574:23;;1296:308;;;:::o;1610:148::-;1708:6;1703:3;1698;1685:30;1749:1;1740:6;1735:3;1731:16;1724:27;1610:148;;;:::o;1764:425::-;1842:5;1867:66;1883:49;1925:6;1883:49;:::i;:::-;1867:66;:::i;:::-;1858:75;;1956:6;1949:5;1942:21;1994:4;1987:5;1983:16;2032:3;2023:6;2018:3;2014:16;2011:25;2008:112;;;2039:79;;:::i;:::-;2008:112;2129:54;2176:6;2171:3;2166;2129:54;:::i;:::-;1848:341;1764:425;;;;;:::o;2209:340::-;2265:5;2314:3;2307:4;2299:6;2295:17;2291:27;2281:122;;2322:79;;:::i;:::-;2281:122;2439:6;2426:20;2464:79;2539:3;2531:6;2524:4;2516:6;2512:17;2464:79;:::i;:::-;2455:88;;2271:278;2209:340;;;;:::o;2555:117::-;2664:1;2661;2654:12;2678:117;2787:1;2784;2777:12;2818:568;2891:8;2901:6;2951:3;2944:4;2936:6;2932:17;2928:27;2918:122;;2959:79;;:::i;:::-;2918:122;3072:6;3059:20;3049:30;;3102:18;3094:6;3091:30;3088:117;;;3124:79;;:::i;:::-;3088:117;3238:4;3230:6;3226:17;3214:29;;3292:3;3284:4;3276:6;3272:17;3262:8;3258:32;3255:41;3252:128;;;3299:79;;:::i;:::-;3252:128;2818:568;;;;;:::o;3409:::-;3482:8;3492:6;3542:3;3535:4;3527:6;3523:17;3519:27;3509:122;;3550:79;;:::i;:::-;3509:122;3663:6;3650:20;3640:30;;3693:18;3685:6;3682:30;3679:117;;;3715:79;;:::i;:::-;3679:117;3829:4;3821:6;3817:17;3805:29;;3883:3;3875:4;3867:6;3863:17;3853:8;3849:32;3846:41;3843:128;;;3890:79;;:::i;:::-;3843:128;3409:568;;;;;:::o;3983:1259::-;4124:6;4132;4140;4148;4156;4205:2;4193:9;4184:7;4180:23;4176:32;4173:119;;;4211:79;;:::i;:::-;4173:119;4359:1;4348:9;4344:17;4331:31;4389:18;4381:6;4378:30;4375:117;;;4411:79;;:::i;:::-;4375:117;4516:63;4571:7;4562:6;4551:9;4547:22;4516:63;:::i;:::-;4506:73;;4302:287;4656:2;4645:9;4641:18;4628:32;4687:18;4679:6;4676:30;4673:117;;;4709:79;;:::i;:::-;4673:117;4822:80;4894:7;4885:6;4874:9;4870:22;4822:80;:::i;:::-;4804:98;;;;4599:313;4979:2;4968:9;4964:18;4951:32;5010:18;5002:6;4999:30;4996:117;;;5032:79;;:::i;:::-;4996:117;5145:80;5217:7;5208:6;5197:9;5193:22;5145:80;:::i;:::-;5127:98;;;;4922:313;3983:1259;;;;;;;;:::o;5248:77::-;5285:7;5314:5;5303:16;;5248:77;;;:::o;5331:122::-;5404:24;5422:5;5404:24;:::i;:::-;5397:5;5394:35;5384:63;;5443:1;5440;5433:12;5384:63;5331:122;:::o;5459:139::-;5505:5;5543:6;5530:20;5521:29;;5559:33;5586:5;5559:33;:::i;:::-;5459:139;;;;:::o;5604:329::-;5663:6;5712:2;5700:9;5691:7;5687:23;5683:32;5680:119;;;5718:79;;:::i;:::-;5680:119;5838:1;5863:53;5908:7;5899:6;5888:9;5884:22;5863:53;:::i;:::-;5853:63;;5809:117;5604:329;;;;:::o;5939:99::-;5991:6;6025:5;6019:12;6009:22;;5939:99;;;:::o;6044:169::-;6128:11;6162:6;6157:3;6150:19;6202:4;6197:3;6193:14;6178:29;;6044:169;;;;:::o;6219:139::-;6308:6;6303:3;6298;6292:23;6349:1;6340:6;6335:3;6331:16;6324:27;6219:139;;;:::o;6364:377::-;6452:3;6480:39;6513:5;6480:39;:::i;:::-;6535:71;6599:6;6594:3;6535:71;:::i;:::-;6528:78;;6615:65;6673:6;6668:3;6661:4;6654:5;6650:16;6615:65;:::i;:::-;6705:29;6727:6;6705:29;:::i;:::-;6700:3;6696:39;6689:46;;6456:285;6364:377;;;;:::o;6747:313::-;6860:4;6898:2;6887:9;6883:18;6875:26;;6947:9;6941:4;6937:20;6933:1;6922:9;6918:17;6911:47;6975:78;7048:4;7039:6;6975:78;:::i;:::-;6967:86;;6747:313;;;;:::o;7066:126::-;7103:7;7143:42;7136:5;7132:54;7121:65;;7066:126;;;:::o;7198:96::-;7235:7;7264:24;7282:5;7264:24;:::i;:::-;7253:35;;7198:96;;;:::o;7300:122::-;7373:24;7391:5;7373:24;:::i;:::-;7366:5;7363:35;7353:63;;7412:1;7409;7402:12;7353:63;7300:122;:::o;7428:139::-;7474:5;7512:6;7499:20;7490:29;;7528:33;7555:5;7528:33;:::i;:::-;7428:139;;;;:::o;7573:654::-;7651:6;7659;7708:2;7696:9;7687:7;7683:23;7679:32;7676:119;;;7714:79;;:::i;:::-;7676:119;7862:1;7851:9;7847:17;7834:31;7892:18;7884:6;7881:30;7878:117;;;7914:79;;:::i;:::-;7878:117;8019:63;8074:7;8065:6;8054:9;8050:22;8019:63;:::i;:::-;8009:73;;7805:287;8131:2;8157:53;8202:7;8193:6;8182:9;8178:22;8157:53;:::i;:::-;8147:63;;8102:118;7573:654;;;;;:::o;8233:90::-;8267:7;8310:5;8303:13;8296:21;8285:32;;8233:90;;;:::o;8329:109::-;8410:21;8425:5;8410:21;:::i;:::-;8405:3;8398:34;8329:109;;:::o;8444:210::-;8531:4;8569:2;8558:9;8554:18;8546:26;;8582:65;8644:1;8633:9;8629:17;8620:6;8582:65;:::i;:::-;8444:210;;;;:::o;8660:509::-;8729:6;8778:2;8766:9;8757:7;8753:23;8749:32;8746:119;;;8784:79;;:::i;:::-;8746:119;8932:1;8921:9;8917:17;8904:31;8962:18;8954:6;8951:30;8948:117;;;8984:79;;:::i;:::-;8948:117;9089:63;9144:7;9135:6;9124:9;9120:22;9089:63;:::i;:::-;9079:73;;8875:287;8660:509;;;;:::o;9175:329::-;9234:6;9283:2;9271:9;9262:7;9258:23;9254:32;9251:119;;;9289:79;;:::i;:::-;9251:119;9409:1;9434:53;9479:7;9470:6;9459:9;9455:22;9434:53;:::i;:::-;9424:63;;9380:117;9175:329;;;;:::o;9510:139::-;9602:6;9636:5;9630:12;9620:22;;9510:139;;;:::o;9655:209::-;9779:11;9813:6;9808:3;9801:19;9853:4;9848:3;9844:14;9829:29;;9655:209;;;;:::o;9870:157::-;9962:4;9985:3;9977:11;;10015:4;10010:3;10006:14;9998:22;;9870:157;;;:::o;10033:159::-;10107:11;10141:6;10136:3;10129:19;10181:4;10176:3;10172:14;10157:29;;10033:159;;;;:::o;10198:357::-;10276:3;10304:39;10337:5;10304:39;:::i;:::-;10359:61;10413:6;10408:3;10359:61;:::i;:::-;10352:68;;10429:65;10487:6;10482:3;10475:4;10468:5;10464:16;10429:65;:::i;:::-;10519:29;10541:6;10519:29;:::i;:::-;10514:3;10510:39;10503:46;;10280:275;10198:357;;;;:::o;10561:108::-;10638:24;10656:5;10638:24;:::i;:::-;10633:3;10626:37;10561:108;;:::o;10741:610::-;10850:3;10886:4;10881:3;10877:14;10976:4;10969:5;10965:16;10959:23;11029:3;11023:4;11019:14;11012:4;11007:3;11003:14;10996:38;11055:73;11123:4;11109:12;11055:73;:::i;:::-;11047:81;;10901:238;11232:4;11225:5;11221:16;11215:23;11251:63;11308:4;11303:3;11299:14;11285:12;11251:63;:::i;:::-;11149:175;11341:4;11334:11;;10855:496;10741:610;;;;:::o;11357:256::-;11476:10;11511:96;11603:3;11595:6;11511:96;:::i;:::-;11497:110;;11357:256;;;;:::o;11619:138::-;11714:4;11746;11741:3;11737:14;11729:22;;11619:138;;;:::o;11833:1111::-;12002:3;12031:79;12104:5;12031:79;:::i;:::-;12126:111;12230:6;12225:3;12126:111;:::i;:::-;12119:118;;12263:3;12308:4;12300:6;12296:17;12291:3;12287:27;12338:81;12413:5;12338:81;:::i;:::-;12442:7;12473:1;12458:441;12483:6;12480:1;12477:13;12458:441;;;12554:9;12548:4;12544:20;12539:3;12532:33;12605:6;12599:13;12633:114;12742:4;12727:13;12633:114;:::i;:::-;12625:122;;12770:85;12848:6;12770:85;:::i;:::-;12760:95;;12884:4;12879:3;12875:14;12868:21;;12518:381;12505:1;12502;12498:9;12493:14;;12458:441;;;12462:14;12915:4;12908:11;;12935:3;12928:10;;12007:937;;;;;11833:1111;;;;:::o;12950:473::-;13143:4;13181:2;13170:9;13166:18;13158:26;;13230:9;13224:4;13220:20;13216:1;13205:9;13201:17;13194:47;13258:158;13411:4;13402:6;13258:158;:::i;:::-;13250:166;;12950:473;;;;:::o;13429:77::-;13466:7;13495:5;13484:16;;13429:77;;;:::o;13512:122::-;13585:24;13603:5;13585:24;:::i;:::-;13578:5;13575:35;13565:63;;13624:1;13621;13614:12;13565:63;13512:122;:::o;13640:139::-;13686:5;13724:6;13711:20;13702:29;;13740:33;13767:5;13740:33;:::i;:::-;13640:139;;;;:::o;13785:474::-;13853:6;13861;13910:2;13898:9;13889:7;13885:23;13881:32;13878:119;;;13916:79;;:::i;:::-;13878:119;14036:1;14061:53;14106:7;14097:6;14086:9;14082:22;14061:53;:::i;:::-;14051:63;;14007:117;14163:2;14189:53;14234:7;14225:6;14214:9;14210:22;14189:53;:::i;:::-;14179:63;;14134:118;13785:474;;;;;:::o;14265:118::-;14352:24;14370:5;14352:24;:::i;:::-;14347:3;14340:37;14265:118;;:::o;14389:222::-;14482:4;14520:2;14509:9;14505:18;14497:26;;14533:71;14601:1;14590:9;14586:17;14577:6;14533:71;:::i;:::-;14389:222;;;;:::o;14617:654::-;14695:6;14703;14752:2;14740:9;14731:7;14727:23;14723:32;14720:119;;;14758:79;;:::i;:::-;14720:119;14906:1;14895:9;14891:17;14878:31;14936:18;14928:6;14925:30;14922:117;;;14958:79;;:::i;:::-;14922:117;15063:63;15118:7;15109:6;15098:9;15094:22;15063:63;:::i;:::-;15053:73;;14849:287;15175:2;15201:53;15246:7;15237:6;15226:9;15222:22;15201:53;:::i;:::-;15191:63;;15146:118;14617:654;;;;;:::o;15277:329::-;15336:6;15385:2;15373:9;15364:7;15360:23;15356:32;15353:119;;;15391:79;;:::i;:::-;15353:119;15511:1;15536:53;15581:7;15572:6;15561:9;15557:22;15536:53;:::i;:::-;15526:63;;15482:117;15277:329;;;;:::o;15612:332::-;15733:4;15771:2;15760:9;15756:18;15748:26;;15784:71;15852:1;15841:9;15837:17;15828:6;15784:71;:::i;:::-;15865:72;15933:2;15922:9;15918:18;15909:6;15865:72;:::i;:::-;15612:332;;;;;:::o;15950:118::-;16037:24;16055:5;16037:24;:::i;:::-;16032:3;16025:37;15950:118;;:::o;16074:222::-;16167:4;16205:2;16194:9;16190:18;16182:26;;16218:71;16286:1;16275:9;16271:17;16262:6;16218:71;:::i;:::-;16074:222;;;;:::o;16302:60::-;16330:3;16351:5;16344:12;;16302:60;;;:::o;16368:142::-;16418:9;16451:53;16469:34;16478:24;16496:5;16478:24;:::i;:::-;16469:34;:::i;:::-;16451:53;:::i;:::-;16438:66;;16368:142;;;:::o;16516:126::-;16566:9;16599:37;16630:5;16599:37;:::i;:::-;16586:50;;16516:126;;;:::o;16648:147::-;16719:9;16752:37;16783:5;16752:37;:::i;:::-;16739:50;;16648:147;;;:::o;16801:173::-;16909:58;16961:5;16909:58;:::i;:::-;16904:3;16897:71;16801:173;;:::o;16980:264::-;17094:4;17132:2;17121:9;17117:18;17109:26;;17145:92;17234:1;17223:9;17219:17;17210:6;17145:92;:::i;:::-;16980:264;;;;:::o;17250:169::-;17390:21;17386:1;17378:6;17374:14;17367:45;17250:169;:::o;17425:366::-;17567:3;17588:67;17652:2;17647:3;17588:67;:::i;:::-;17581:74;;17664:93;17753:3;17664:93;:::i;:::-;17782:2;17777:3;17773:12;17766:19;;17425:366;;;:::o;17797:419::-;17963:4;18001:2;17990:9;17986:18;17978:26;;18050:9;18044:4;18040:20;18036:1;18025:9;18021:17;18014:47;18078:131;18204:4;18078:131;:::i;:::-;18070:139;;17797:419;;;:::o;18222:170::-;18362:22;18358:1;18350:6;18346:14;18339:46;18222:170;:::o;18398:366::-;18540:3;18561:67;18625:2;18620:3;18561:67;:::i;:::-;18554:74;;18637:93;18726:3;18637:93;:::i;:::-;18755:2;18750:3;18746:12;18739:19;;18398:366;;;:::o;18770:419::-;18936:4;18974:2;18963:9;18959:18;18951:26;;19023:9;19017:4;19013:20;19009:1;18998:9;18994:17;18987:47;19051:131;19177:4;19051:131;:::i;:::-;19043:139;;18770:419;;;:::o;19195:171::-;19335:23;19331:1;19323:6;19319:14;19312:47;19195:171;:::o;19372:366::-;19514:3;19535:67;19599:2;19594:3;19535:67;:::i;:::-;19528:74;;19611:93;19700:3;19611:93;:::i;:::-;19729:2;19724:3;19720:12;19713:19;;19372:366;;;:::o;19744:419::-;19910:4;19948:2;19937:9;19933:18;19925:26;;19997:9;19991:4;19987:20;19983:1;19972:9;19968:17;19961:47;20025:131;20151:4;20025:131;:::i;:::-;20017:139;;19744:419;;;:::o;20169:224::-;20309:34;20305:1;20297:6;20293:14;20286:58;20378:7;20373:2;20365:6;20361:15;20354:32;20169:224;:::o;20399:366::-;20541:3;20562:67;20626:2;20621:3;20562:67;:::i;:::-;20555:74;;20638:93;20727:3;20638:93;:::i;:::-;20756:2;20751:3;20747:12;20740:19;;20399:366;;;:::o;20771:419::-;20937:4;20975:2;20964:9;20960:18;20952:26;;21024:9;21018:4;21014:20;21010:1;20999:9;20995:17;20988:47;21052:131;21178:4;21052:131;:::i;:::-;21044:139;;20771:419;;;:::o;21196:180::-;21244:77;21241:1;21234:88;21341:4;21338:1;21331:15;21365:4;21362:1;21355:15;21382:220;21522:34;21518:1;21510:6;21506:14;21499:58;21591:3;21586:2;21578:6;21574:15;21567:28;21382:220;:::o;21608:366::-;21750:3;21771:67;21835:2;21830:3;21771:67;:::i;:::-;21764:74;;21847:93;21936:3;21847:93;:::i;:::-;21965:2;21960:3;21956:12;21949:19;;21608:366;;;:::o;21980:419::-;22146:4;22184:2;22173:9;22169:18;22161:26;;22233:9;22227:4;22223:20;22219:1;22208:9;22204:17;22197:47;22261:131;22387:4;22261:131;:::i;:::-;22253:139;;21980:419;;;:::o;22405:180::-;22453:77;22450:1;22443:88;22550:4;22547:1;22540:15;22574:4;22571:1;22564:15;22591:191;22631:3;22650:20;22668:1;22650:20;:::i;:::-;22645:25;;22684:20;22702:1;22684:20;:::i;:::-;22679:25;;22727:1;22724;22720:9;22713:16;;22748:3;22745:1;22742:10;22739:36;;;22755:18;;:::i;:::-;22739:36;22591:191;;;;:::o;22788:181::-;22928:33;22924:1;22916:6;22912:14;22905:57;22788:181;:::o;22975:366::-;23117:3;23138:67;23202:2;23197:3;23138:67;:::i;:::-;23131:74;;23214:93;23303:3;23214:93;:::i;:::-;23332:2;23327:3;23323:12;23316:19;;22975:366;;;:::o;23347:419::-;23513:4;23551:2;23540:9;23536:18;23528:26;;23600:9;23594:4;23590:20;23586:1;23575:9;23571:17;23564:47;23628:131;23754:4;23628:131;:::i;:::-;23620:139;;23347:419;;;:::o;23772:224::-;23912:34;23908:1;23900:6;23896:14;23889:58;23981:7;23976:2;23968:6;23964:15;23957:32;23772:224;:::o;24002:366::-;24144:3;24165:67;24229:2;24224:3;24165:67;:::i;:::-;24158:74;;24241:93;24330:3;24241:93;:::i;:::-;24359:2;24354:3;24350:12;24343:19;;24002:366;;;:::o;24374:419::-;24540:4;24578:2;24567:9;24563:18;24555:26;;24627:9;24621:4;24617:20;24613:1;24602:9;24598:17;24591:47;24655:131;24781:4;24655:131;:::i;:::-;24647:139;;24374:419;;;:::o;24799:148::-;24901:11;24938:3;24923:18;;24799:148;;;;:::o;24953:390::-;25059:3;25087:39;25120:5;25087:39;:::i;:::-;25142:89;25224:6;25219:3;25142:89;:::i;:::-;25135:96;;25240:65;25298:6;25293:3;25286:4;25279:5;25275:16;25240:65;:::i;:::-;25330:6;25325:3;25321:16;25314:23;;25063:280;24953:390;;;;:::o;25349:275::-;25481:3;25503:95;25594:3;25585:6;25503:95;:::i;:::-;25496:102;;25615:3;25608:10;;25349:275;;;;:::o;25630:180::-;25678:77;25675:1;25668:88;25775:4;25772:1;25765:15;25799:4;25796:1;25789:15;25816:320;25860:6;25897:1;25891:4;25887:12;25877:22;;25944:1;25938:4;25934:12;25965:18;25955:81;;26021:4;26013:6;26009:17;25999:27;;25955:81;26083:2;26075:6;26072:14;26052:18;26049:38;26046:84;;26102:18;;:::i;:::-;26046:84;25867:269;25816:320;;;:::o;26142:174::-;26282:26;26278:1;26270:6;26266:14;26259:50;26142:174;:::o;26322:366::-;26464:3;26485:67;26549:2;26544:3;26485:67;:::i;:::-;26478:74;;26561:93;26650:3;26561:93;:::i;:::-;26679:2;26674:3;26670:12;26663:19;;26322:366;;;:::o;26694:419::-;26860:4;26898:2;26887:9;26883:18;26875:26;;26947:9;26941:4;26937:20;26933:1;26922:9;26918:17;26911:47;26975:131;27101:4;26975:131;:::i;:::-;26967:139;;26694:419;;;:::o;27119:172::-;27259:24;27255:1;27247:6;27243:14;27236:48;27119:172;:::o;27297:366::-;27439:3;27460:67;27524:2;27519:3;27460:67;:::i;:::-;27453:74;;27536:93;27625:3;27536:93;:::i;:::-;27654:2;27649:3;27645:12;27638:19;;27297:366;;;:::o;27669:419::-;27835:4;27873:2;27862:9;27858:18;27850:26;;27922:9;27916:4;27912:20;27908:1;27897:9;27893:17;27886:47;27950:131;28076:4;27950:131;:::i;:::-;27942:139;;27669:419;;;:::o;28094:169::-;28234:21;28230:1;28222:6;28218:14;28211:45;28094:169;:::o;28269:366::-;28411:3;28432:67;28496:2;28491:3;28432:67;:::i;:::-;28425:74;;28508:93;28597:3;28508:93;:::i;:::-;28626:2;28621:3;28617:12;28610:19;;28269:366;;;:::o;28641:419::-;28807:4;28845:2;28834:9;28830:18;28822:26;;28894:9;28888:4;28884:20;28880:1;28869:9;28865:17;28858:47;28922:131;29048:4;28922:131;:::i;:::-;28914:139;;28641:419;;;:::o;29066:194::-;29106:4;29126:20;29144:1;29126:20;:::i;:::-;29121:25;;29160:20;29178:1;29160:20;:::i;:::-;29155:25;;29204:1;29201;29197:9;29189:17;;29228:1;29222:4;29219:11;29216:37;;;29233:18;;:::i;:::-;29216:37;29066:194;;;;:::o;29266:332::-;29387:4;29425:2;29414:9;29410:18;29402:26;;29438:71;29506:1;29495:9;29491:17;29482:6;29438:71;:::i;:::-;29519:72;29587:2;29576:9;29572:18;29563:6;29519:72;:::i;:::-;29266:332;;;;;:::o;29604:233::-;29643:3;29666:24;29684:5;29666:24;:::i;:::-;29657:33;;29712:66;29705:5;29702:77;29699:103;;29782:18;;:::i;:::-;29699:103;29829:1;29822:5;29818:13;29811:20;;29604:233;;;:::o;29843:178::-;29983:30;29979:1;29971:6;29967:14;29960:54;29843:178;:::o;30027:366::-;30169:3;30190:67;30254:2;30249:3;30190:67;:::i;:::-;30183:74;;30266:93;30355:3;30266:93;:::i;:::-;30384:2;30379:3;30375:12;30368:19;;30027:366;;;:::o;30399:419::-;30565:4;30603:2;30592:9;30588:18;30580:26;;30652:9;30646:4;30642:20;30638:1;30627:9;30623:17;30616:47;30680:131;30806:4;30680:131;:::i;:::-;30672:139;;30399:419;;;:::o;30824:141::-;30873:4;30896:3;30888:11;;30919:3;30916:1;30909:14;30953:4;30950:1;30940:18;30932:26;;30824:141;;;:::o;30971:93::-;31008:6;31055:2;31050;31043:5;31039:14;31035:23;31025:33;;30971:93;;;:::o;31070:107::-;31114:8;31164:5;31158:4;31154:16;31133:37;;31070:107;;;;:::o;31183:393::-;31252:6;31302:1;31290:10;31286:18;31325:97;31355:66;31344:9;31325:97;:::i;:::-;31443:39;31473:8;31462:9;31443:39;:::i;:::-;31431:51;;31515:4;31511:9;31504:5;31500:21;31491:30;;31564:4;31554:8;31550:19;31543:5;31540:30;31530:40;;31259:317;;31183:393;;;;;:::o;31582:142::-;31632:9;31665:53;31683:34;31692:24;31710:5;31692:24;:::i;:::-;31683:34;:::i;:::-;31665:53;:::i;:::-;31652:66;;31582:142;;;:::o;31730:75::-;31773:3;31794:5;31787:12;;31730:75;;;:::o;31811:269::-;31921:39;31952:7;31921:39;:::i;:::-;31982:91;32031:41;32055:16;32031:41;:::i;:::-;32023:6;32016:4;32010:11;31982:91;:::i;:::-;31976:4;31969:105;31887:193;31811:269;;;:::o;32086:73::-;32131:3;32086:73;:::o;32165:189::-;32242:32;;:::i;:::-;32283:65;32341:6;32333;32327:4;32283:65;:::i;:::-;32218:136;32165:189;;:::o;32360:186::-;32420:120;32437:3;32430:5;32427:14;32420:120;;;32491:39;32528:1;32521:5;32491:39;:::i;:::-;32464:1;32457:5;32453:13;32444:22;;32420:120;;;32360:186;;:::o;32552:543::-;32653:2;32648:3;32645:11;32642:446;;;32687:38;32719:5;32687:38;:::i;:::-;32771:29;32789:10;32771:29;:::i;:::-;32761:8;32757:44;32954:2;32942:10;32939:18;32936:49;;;32975:8;32960:23;;32936:49;32998:80;33054:22;33072:3;33054:22;:::i;:::-;33044:8;33040:37;33027:11;32998:80;:::i;:::-;32657:431;;32642:446;32552:543;;;:::o;33101:117::-;33155:8;33205:5;33199:4;33195:16;33174:37;;33101:117;;;;:::o;33224:169::-;33268:6;33301:51;33349:1;33345:6;33337:5;33334:1;33330:13;33301:51;:::i;:::-;33297:56;33382:4;33376;33372:15;33362:25;;33275:118;33224:169;;;;:::o;33398:295::-;33474:4;33620:29;33645:3;33639:4;33620:29;:::i;:::-;33612:37;;33682:3;33679:1;33675:11;33669:4;33666:21;33658:29;;33398:295;;;;:::o;33698:1395::-;33815:37;33848:3;33815:37;:::i;:::-;33917:18;33909:6;33906:30;33903:56;;;33939:18;;:::i;:::-;33903:56;33983:38;34015:4;34009:11;33983:38;:::i;:::-;34068:67;34128:6;34120;34114:4;34068:67;:::i;:::-;34162:1;34186:4;34173:17;;34218:2;34210:6;34207:14;34235:1;34230:618;;;;34892:1;34909:6;34906:77;;;34958:9;34953:3;34949:19;34943:26;34934:35;;34906:77;35009:67;35069:6;35062:5;35009:67;:::i;:::-;35003:4;34996:81;34865:222;34200:887;;34230:618;34282:4;34278:9;34270:6;34266:22;34316:37;34348:4;34316:37;:::i;:::-;34375:1;34389:208;34403:7;34400:1;34397:14;34389:208;;;34482:9;34477:3;34473:19;34467:26;34459:6;34452:42;34533:1;34525:6;34521:14;34511:24;;34580:2;34569:9;34565:18;34552:31;;34426:4;34423:1;34419:12;34414:17;;34389:208;;;34625:6;34616:7;34613:19;34610:179;;;34683:9;34678:3;34674:19;34668:26;34726:48;34768:4;34760:6;34756:17;34745:9;34726:48;:::i;:::-;34718:6;34711:64;34633:156;34610:179;34835:1;34831;34823:6;34819:14;34815:22;34809:4;34802:36;34237:611;;;34200:887;;33790:1303;;;33698:1395;;:::o;35099:175::-;35239:27;35235:1;35227:6;35223:14;35216:51;35099:175;:::o;35280:366::-;35422:3;35443:67;35507:2;35502:3;35443:67;:::i;:::-;35436:74;;35519:93;35608:3;35519:93;:::i;:::-;35637:2;35632:3;35628:12;35621:19;;35280:366;;;:::o;35652:419::-;35818:4;35856:2;35845:9;35841:18;35833:26;;35905:9;35899:4;35895:20;35891:1;35880:9;35876:17;35869:47;35933:131;36059:4;35933:131;:::i;:::-;35925:139;;35652:419;;;:::o;36077:175::-;36217:27;36213:1;36205:6;36201:14;36194:51;36077:175;:::o;36258:366::-;36400:3;36421:67;36485:2;36480:3;36421:67;:::i;:::-;36414:74;;36497:93;36586:3;36497:93;:::i;:::-;36615:2;36610:3;36606:12;36599:19;;36258:366;;;:::o;36630:419::-;36796:4;36834:2;36823:9;36819:18;36811:26;;36883:9;36877:4;36873:20;36869:1;36858:9;36854:17;36847:47;36911:131;37037:4;36911:131;:::i;:::-;36903:139;;36630:419;;;:::o;37055:181::-;37195:33;37191:1;37183:6;37179:14;37172:57;37055:181;:::o;37242:366::-;37384:3;37405:67;37469:2;37464:3;37405:67;:::i;:::-;37398:74;;37481:93;37570:3;37481:93;:::i;:::-;37599:2;37594:3;37590:12;37583:19;;37242:366;;;:::o;37614:419::-;37780:4;37818:2;37807:9;37803:18;37795:26;;37867:9;37861:4;37857:20;37853:1;37842:9;37838:17;37831:47;37895:131;38021:4;37895:131;:::i;:::-;37887:139;;37614:419;;;:::o

Swarm Source

ipfs://84c94ca17c95300d4e8543b7e23a0bdd57dcf4102ec4b6cecbf3faf954ae1d06

Block Transaction 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
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.