ETH Price: $1,969.19 (+3.25%)
 

Overview

ETH Balance

0.01 ETH

Eth Value

$19.69 (@ $1,969.19/ETH)

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Finalize118267672021-02-10 5:03:591845 days ago1612933439IN
0x9378bb07...d149Bf976
0 ETH0.00462918129.8
Finalize118138722021-02-08 5:22:221847 days ago1612761742IN
0x9378bb07...d149Bf976
0 ETH0.00360206101
Finalize118072692021-02-07 5:01:441848 days ago1612674104IN
0x9378bb07...d149Bf976
0 ETH0.00410136115
Finalize118007482021-02-06 5:02:111849 days ago1612587731IN
0x9378bb07...d149Bf976
0 ETH0.00429751120.5
Finalize117877392021-02-04 5:02:091851 days ago1612414929IN
0x9378bb07...d149Bf976
0 ETH0.0071328200
Finalize112348282020-11-11 6:59:081936 days ago1605077948IN
0x9378bb07...d149Bf976
0 ETH0.0005654515.855
Finalize112280182020-11-10 5:42:251937 days ago1604986945IN
0x9378bb07...d149Bf976
0 ETH0.0013730638.5
Finalize112280182020-11-10 5:42:251937 days ago1604986945IN
0x9378bb07...d149Bf976
0 ETH0.0004671913.1
Finalize112147872020-11-08 5:03:111939 days ago1604811791IN
0x9378bb07...d149Bf976
0 ETH0.0005766816.17
Finalize112083192020-11-07 5:10:591940 days ago1604725859IN
0x9378bb07...d149Bf976
0 ETH0.000891625
Finalize112017642020-11-06 5:03:391941 days ago1604639019IN
0x9378bb07...d149Bf976
0 ETH0.0016048845
Finalize111953582020-11-05 5:41:021942 days ago1604554862IN
0x9378bb07...d149Bf976
0 ETH0.0005349615.00000145
Finalize111886942020-11-04 5:01:431943 days ago1604466103IN
0x9378bb07...d149Bf976
0 ETH0.0005741916.1
Finalize111691642020-11-01 5:01:341946 days ago1604206894IN
0x9378bb07...d149Bf976
0 ETH0.0006062817
Finalize111628292020-10-31 5:39:411947 days ago1604122781IN
0x9378bb07...d149Bf976
0 ETH0.0005349615
Finalize111561462020-10-30 5:00:361948 days ago1604034036IN
0x9378bb07...d149Bf976
0 ETH0.0012482435
Finalize111496172020-10-29 5:01:201949 days ago1603947680IN
0x9378bb07...d149Bf976
0 ETH0.0009272626.00000145
Finalize111431082020-10-28 5:05:301950 days ago1603861530IN
0x9378bb07...d149Bf976
0 ETH0.0009272626
Finalize111365502020-10-27 5:02:191951 days ago1603774939IN
0x9378bb07...d149Bf976
0 ETH0.0006419518
Finalize111300822020-10-26 5:11:541952 days ago1603689114IN
0x9378bb07...d149Bf976
0 ETH0.0021398460
Finalize111238462020-10-25 6:04:171953 days ago1603605857IN
0x9378bb07...d149Bf976
0 ETH0.0005349615
Finalize111179562020-10-24 8:23:111954 days ago1603527791IN
0x9378bb07...d149Bf976
0 ETH0.0005706216
Finalize111105182020-10-23 5:01:301955 days ago1603429290IN
0x9378bb07...d149Bf976
0 ETH0.0010556529.6
Finalize111043562020-10-22 6:22:121956 days ago1603347732IN
0x9378bb07...d149Bf976
0 ETH0.0010699230
Finalize110977352020-10-21 5:56:521957 days ago1603259812IN
0x9378bb07...d149Bf976
0 ETH0.0017118748
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

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

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

Contract Name:
CharityChallenge

Compiler Version
v0.5.2+commit.1df8f40c

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Multiple files format)

File 1 of 3: CharityChallenge.sol
pragma solidity ^0.5.2;

import "./IRealityCheck.sol";
import "./SafeMath.sol";

contract CharityChallenge {
    using SafeMath for uint256;
    using SafeMath for uint8;

    event Received(address indexed sender, uint256 value);

    event Donated(address indexed npo, uint256 value);

    event Fee(address indexed maker, uint256 value);

    event Claimed(address indexed claimer, uint256 value);

    event SafetyHatchClaimed(address indexed claimer, uint256 value);

    string public constant VERSION = "0.4.0";

    address payable public contractOwner;

    // key is npo address, value is ratio
    mapping(address => uint8) public npoRatios;

    uint8 sumRatio;

    address payable[] public npoAddresses;

    address public marketAddress;

    bool public unlockOnNo;

    IRealityCheck realityCheck;

    string public question;

    address public arbitrator;

    uint256 public timeout;

    bytes32 public questionId;

    uint256 public challengeEndTime;

    // For a fee of 10.5%, pass 1050
    uint256 public makerFee;

    uint256 public challengeSafetyHatchTime1;

    uint256 public challengeSafetyHatchTime2;

    // Valid outcomes are 'YES', 'NO' and 'INVALID'
    bool public isEventFinalized;

    // hasChallengeAccomplished will be set to true if we got the expected
    // result that allow to unlock the funds.
    bool public hasChallengeAccomplished;

    bool private safetyHatchClaimSucceeded;

    mapping(address => uint256) public donorBalances;

    uint256 public donorCount;

    // We use a divider of 10000 instead of 100 to have more granularity for
    // the maker fee
    uint256 constant feeDivider = 10000;

    bool private mReentrancyLock = false;
    modifier nonReentrant() {
        require(!mReentrancyLock);
        mReentrancyLock = true;
        _;
        mReentrancyLock = false;
    }

    constructor(
        address payable _contractOwner,
        address payable[] memory _npoAddresses,
        uint8[] memory _ratios,
        address _marketAddress,
        string memory _question,
        address _arbitrator,
        uint256 _timeout,
        uint256 _challengeEndTime,
        uint256 _makerFee,
        bool _unlockOnNo
    ) public
    {
        require(_npoAddresses.length == _ratios.length);
        require(makerFee < feeDivider);
        uint length = _npoAddresses.length;
        for (uint i = 0; i < length; i++) {
            address payable npo = _npoAddresses[i];
            npoAddresses.push(npo);
            require(_ratios[i] > 0, "Ratio must be a positive number");
            npoRatios[npo] = _ratios[i];
            sumRatio += _ratios[i];
        }
        contractOwner = _contractOwner;
        marketAddress = _marketAddress;
        realityCheck = IRealityCheck(_marketAddress);
        question = _question;
        arbitrator = _arbitrator;
        timeout = _timeout;
        challengeEndTime = _challengeEndTime;
        makerFee = _makerFee;
        questionId = realityCheck.askQuestion(0, question, arbitrator, uint32(timeout), uint32(challengeEndTime), 0);
        unlockOnNo = _unlockOnNo;
        challengeSafetyHatchTime1 = challengeEndTime + 26 weeks;
        challengeSafetyHatchTime2 = challengeSafetyHatchTime1 + 52 weeks;
        isEventFinalized = false;
        hasChallengeAccomplished = false;
    }

    function() external payable {
        require(now <= challengeEndTime);
        require(msg.value > 0);
        if (donorBalances[msg.sender] == 0 && msg.value > 0) {
            donorCount++;
        }
        donorBalances[msg.sender] += msg.value;
        emit Received(msg.sender, msg.value);
    }

    function balanceOf(address _donorAddress) public view returns (uint256) {
        if (safetyHatchClaimSucceeded) {
            return 0;
        }
        return donorBalances[_donorAddress];
    }

    function finalize() nonReentrant external {
        require(now > challengeEndTime);
        require(now <= challengeSafetyHatchTime1);
        require(!isEventFinalized);
        doFinalize();
    }

    function doFinalize() private {
        bool hasError;
        (hasChallengeAccomplished, hasError) = checkRealitio();
        if (!hasError) {
            isEventFinalized = true;
            if (hasChallengeAccomplished) {
                uint length = npoAddresses.length;
                if (makerFee > 0) {
                    uint256 amount = address(this).balance.mul(makerFee).div(feeDivider);
                    contractOwner.transfer(amount);
                    emit Fee(contractOwner, amount);
                }
                for (uint i = 0; i < length - 1; i++) {
                    address payable npo = npoAddresses[i];
                    uint8 ratio = npoRatios[npo];
                    uint256 amount = address(this).balance.mul(ratio).div(sumRatio);
                    npo.transfer(amount);
                    emit Donated(npo, amount);
                }
                // Don't want to keep any amount in the contract
                uint256 amount = address(this).balance;
                address payable npo = npoAddresses[length - 1];
                npo.transfer(amount);
                emit Donated(npo, amount);
            }
        }
    }

    function getExpectedDonationAmount(address payable _npo) view external returns (uint256) {
        require(npoRatios[_npo] > 0);
        uint256 amountForNPO = address(this).balance.sub(address(this).balance.mul(makerFee).div(feeDivider));
        uint8 ratio = npoRatios[_npo];
        return amountForNPO.mul(ratio).div(sumRatio);
    }

    function claim() nonReentrant external {
        require(now > challengeEndTime);
        require(isEventFinalized || now > challengeSafetyHatchTime1);
        require(!hasChallengeAccomplished || now > challengeSafetyHatchTime1);
        require(balanceOf(msg.sender) > 0);

        uint256 claimedAmount = balanceOf(msg.sender);
        donorBalances[msg.sender] = 0;
        msg.sender.transfer(claimedAmount);
        emit Claimed(msg.sender, claimedAmount);
    }

    function safetyHatchClaim() external {
        require(now > challengeSafetyHatchTime2);
        require(msg.sender == contractOwner);

        uint totalContractBalance = address(this).balance;
        safetyHatchClaimSucceeded = true;
        contractOwner.transfer(address(this).balance);
        emit SafetyHatchClaimed(contractOwner, totalContractBalance);
    }

    function checkRealitio() private view returns (bool happened, bool errored) {
        if (realityCheck.isFinalized(questionId)) {
            bytes32 answer = realityCheck.getFinalAnswer(questionId);
            if (answer == 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) {
                // Treat 'invalid' outcome as 'no'
                // because 'invalid' is one of the valid outcomes
                return (false, false);
            } else {
                if (unlockOnNo) {
                    return (answer == 0x0000000000000000000000000000000000000000000000000000000000000000, false);
                }
                return (answer == 0x0000000000000000000000000000000000000000000000000000000000000001, false);
            }
        } else {
            return (false, true);
        }
    }
}

File 2 of 3: IRealityCheck.sol
pragma solidity ^0.5.2;

// RealityCheck API used to interract with realit.io, we only need to describe the
// functions we'll be using.
// cf https://raw.githubusercontent.com/realitio/realitio-dapp/master/truffle/contracts/RealityCheck.sol
interface IRealityCheck {
    function askQuestion(
        uint256 template_id, string calldata question,
        address arbitrator, uint32 timeout, uint32 opening_ts, uint256 nonce) external returns (bytes32);
    function isFinalized(bytes32 question_id) external view returns (bool);
    function getFinalAnswer(bytes32 question_id) external view returns (bytes32);
    function getOpeningTS(bytes32 question_id) external view returns(uint32);
}

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

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, "SafeMath: division by zero");
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0, "SafeMath: modulo by zero");
        return a % b;
    }
}

Contract Security Audit

Contract ABI

API
[{"constant":false,"inputs":[],"name":"safetyHatchClaim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"npoAddresses","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"hasChallengeAccomplished","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"question","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finalize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"npoRatios","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_npo","type":"address"}],"name":"getExpectedDonationAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"arbitrator","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_donorAddress","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"timeout","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"donorBalances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"challengeSafetyHatchTime1","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"marketAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"questionId","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isEventFinalized","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"unlockOnNo","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"challengeEndTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"donorCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"contractOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"challengeSafetyHatchTime2","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"makerFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"VERSION","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_contractOwner","type":"address"},{"name":"_npoAddresses","type":"address[]"},{"name":"_ratios","type":"uint8[]"},{"name":"_marketAddress","type":"address"},{"name":"_question","type":"string"},{"name":"_arbitrator","type":"address"},{"name":"_timeout","type":"uint256"},{"name":"_challengeEndTime","type":"uint256"},{"name":"_makerFee","type":"uint256"},{"name":"_unlockOnNo","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Received","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"npo","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Donated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"maker","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Fee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"claimer","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Claimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"claimer","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"SafetyHatchClaimed","type":"event"}]

0x60806040526000601160006101000a81548160ff0219169083151502179055503480156200002c57600080fd5b50604051620020cb380380620020cb83398101806040526101408110156200005357600080fd5b810190808051906020019092919080516401000000008111156200007657600080fd5b828101905060208101848111156200008d57600080fd5b8151856020820283011164010000000082111715620000ab57600080fd5b50509291906020018051640100000000811115620000c857600080fd5b82810190506020810184811115620000df57600080fd5b8151856020820283011164010000000082111715620000fd57600080fd5b50509291906020018051906020019092919080516401000000008111156200012457600080fd5b828101905060208101848111156200013b57600080fd5b81518560018202830111640100000000821117156200015957600080fd5b5050929190602001805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505087518951141515620001a757600080fd5b612710600b54101515620001ba57600080fd5b60008951905060008090505b81811015620003aa5760008b82815181101515620001e057fe5b90602001906020020151905060038190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505060008b838151811015156200026357fe5b9060200190602002015160ff16111515620002e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526174696f206d757374206265206120706f736974697665206e756d6265720081525060200191505060405180910390fd5b8a82815181101515620002f557fe5b90602001906020020151600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055508a828151811015156200036557fe5b90602001906020020151600260008282829054906101000a900460ff160192506101000a81548160ff021916908360ff160217905550508080600101915050620001c6565b508a6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555087600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555087600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508660069080519060200190620004859291906200074a565b5085600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508460088190555083600a8190555082600b81905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663762c38fd60006006600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600854600a5460006040518763ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180878152602001806020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018563ffffffff1663ffffffff1681526020018463ffffffff1663ffffffff168152602001838152602001828103825287818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015620006635780601f10620006375761010080835404028352916020019162000663565b820191906000526020600020905b8154815290600101906020018083116200064557829003601f168201915b5050975050505050505050602060405180830381600087803b1580156200068957600080fd5b505af11580156200069e573d6000803e3d6000fd5b505050506040513d6020811015620006b557600080fd5b810190808051906020019092919050505060098190555081600460146101000a81548160ff02191690831515021790555062eff100600a5401600c819055506301dfe200600c5401600d819055506000600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff0219169083151502179055505050505050505050505050620007f9565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200078d57805160ff1916838001178555620007be565b82800160010185558215620007be579182015b82811115620007bd578251825591602001919060010190620007a0565b5b509050620007cd9190620007d1565b5090565b620007f691905b80821115620007f2576000816000905550600101620007d8565b5090565b90565b6118c280620008096000396000f3fe60806040526004361061015d576000357c0100000000000000000000000000000000000000000000000000000000900480637b8c8de1116100d3578063bc3fde4e1161008c578063bc3fde4e14610727578063c407670f14610752578063ce606ee01461077d578063d87a328a146107d4578063fc741c7c146107ff578063ffa1ad741461082a5761015d565b80637b8c8de1146105b7578063877303091461061c5780639562364114610647578063b06a5c521461069e578063b77309d6146106c9578063ba7fd2fb146106f85761015d565b80634e71d92d116101255780634e71d92d146103e95780635ead3d4b146104005780635f95eb4d1461046b5780636cc6cde1146104d057806370a082311461052757806370dea79a1461058c5761015d565b806307171d7f146102815780630ed7e49914610298578063306a7ce0146103135780633fad9ae0146103425780634bb278f3146103d2575b600a54421115151561016e57600080fd5b60003411151561017d57600080fd5b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541480156101cc5750600034115b156101e4576010600081548092919060010191905055505b34600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff167f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874346040518082815260200191505060405180910390a2005b34801561028d57600080fd5b506102966108ba565b005b3480156102a457600080fd5b506102d1600480360360208110156102bb57600080fd5b8101908080359060200190929190505050610a4d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561031f57600080fd5b50610328610a8b565b604051808215151515815260200191505060405180910390f35b34801561034e57600080fd5b50610357610a9e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561039757808201518184015260208101905061037c565b50505050905090810190601f1680156103c45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103de57600080fd5b506103e7610b3c565b005b3480156103f557600080fd5b506103fe610bd5565b005b34801561040c57600080fd5b5061044f6004803603602081101561042357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d87565b604051808260ff1660ff16815260200191505060405180910390f35b34801561047757600080fd5b506104ba6004803603602081101561048e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610da7565b6040518082815260200191505060405180910390f35b3480156104dc57600080fd5b506104e5610f07565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561053357600080fd5b506105766004803603602081101561054a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f2d565b6040518082815260200191505060405180910390f35b34801561059857600080fd5b506105a1610f95565b6040518082815260200191505060405180910390f35b3480156105c357600080fd5b50610606600480360360208110156105da57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f9b565b6040518082815260200191505060405180910390f35b34801561062857600080fd5b50610631610fb3565b6040518082815260200191505060405180910390f35b34801561065357600080fd5b5061065c610fb9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106aa57600080fd5b506106b3610fdf565b6040518082815260200191505060405180910390f35b3480156106d557600080fd5b506106de610fe5565b604051808215151515815260200191505060405180910390f35b34801561070457600080fd5b5061070d610ff8565b604051808215151515815260200191505060405180910390f35b34801561073357600080fd5b5061073c61100b565b6040518082815260200191505060405180910390f35b34801561075e57600080fd5b50610767611011565b6040518082815260200191505060405180910390f35b34801561078957600080fd5b50610792611017565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107e057600080fd5b506107e961103c565b6040518082815260200191505060405180910390f35b34801561080b57600080fd5b50610814611042565b6040518082815260200191505060405180910390f35b34801561083657600080fd5b5061083f611048565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561087f578082015181840152602081019050610864565b50505050905090810190601f1680156108ac5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600d54421115156108ca57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561092557600080fd5b60003073ffffffffffffffffffffffffffffffffffffffff163190506001600e60026101000a81548160ff0219169083151502179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501580156109da573d6000803e3d6000fd5b506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1ac1e39f5a410afcc9fd213aab1b92287e00cf00e216f3776f352ab328d124f9826040518082815260200191505060405180910390a250565b600381815481101515610a5c57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e60019054906101000a900460ff1681565b60068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b345780601f10610b0957610100808354040283529160200191610b34565b820191906000526020600020905b815481529060010190602001808311610b1757829003601f168201915b505050505081565b601160009054906101000a900460ff16151515610b5857600080fd5b6001601160006101000a81548160ff021916908315150217905550600a5442111515610b8357600080fd5b600c544211151515610b9457600080fd5b600e60009054906101000a900460ff16151515610bb057600080fd5b610bb8611081565b6000601160006101000a81548160ff021916908315150217905550565b601160009054906101000a900460ff16151515610bf157600080fd5b6001601160006101000a81548160ff021916908315150217905550600a5442111515610c1c57600080fd5b600e60009054906101000a900460ff1680610c385750600c5442115b1515610c4357600080fd5b600e60019054906101000a900460ff161580610c605750600c5442115b1515610c6b57600080fd5b6000610c7633610f2d565b111515610c8257600080fd5b6000610c8d33610f2d565b90506000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610d1a573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff167fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a826040518082815260200191505060405180910390a2506000601160006101000a81548160ff021916908315150217905550565b60016020528060005260406000206000915054906101000a900460ff1681565b600080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff16111515610e0657600080fd5b6000610e71610e4b612710610e3d600b543073ffffffffffffffffffffffffffffffffffffffff16316114aa90919063ffffffff16565b61153490919063ffffffff16565b3073ffffffffffffffffffffffffffffffffffffffff16316115c790919063ffffffff16565b90506000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050610efe600260009054906101000a900460ff1660ff16610ef08360ff16856114aa90919063ffffffff16565b61153490919063ffffffff16565b92505050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600e60029054906101000a900460ff1615610f4d5760009050610f90565b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b60085481565b600f6020528060005260406000206000915090505481565b600c5481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b600e60009054906101000a900460ff1681565b600460149054906101000a900460ff1681565b600a5481565b60105481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b600b5481565b6040805190810160405280600581526020017f302e342e3000000000000000000000000000000000000000000000000000000081525081565b600061108b611652565b600e60018294508391906101000a81548160ff02191690831515021790555050508015156114a7576001600e60006101000a81548160ff021916908315150217905550600e60019054906101000a900460ff16156114a657600060038054905090506000600b54111561121557600061113a61271061112c600b543073ffffffffffffffffffffffffffffffffffffffff16316114aa90919063ffffffff16565b61153490919063ffffffff16565b90506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156111a3573d6000803e3d6000fd5b506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f7bd3aa7d673767f759ebf216e7f6c12844986c661ae6e0f1d988cf7eb7394d1d826040518082815260200191505060405180910390a2505b60008090505b600182038110156113af57600060038281548110151561123757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690506000611308600260009054906101000a900460ff1660ff166112fa8460ff163073ffffffffffffffffffffffffffffffffffffffff16316114aa90919063ffffffff16565b61153490919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611350573d6000803e3d6000fd5b508273ffffffffffffffffffffffffffffffffffffffff167f2a01595cddf097c90216094025db714da3f4e5bd8877b56ba86a24ecead8e543826040518082815260200191505060405180910390a2505050808060010191505061121b565b5060003073ffffffffffffffffffffffffffffffffffffffff1631905060006003600184038154811015156113e057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015611453573d6000803e3d6000fd5b508073ffffffffffffffffffffffffffffffffffffffff167f2a01595cddf097c90216094025db714da3f4e5bd8877b56ba86a24ecead8e543836040518082815260200191505060405180910390a25050505b5b50565b6000808314156114bd576000905061152e565b600082840290508284828115156114d057fe5b04141515611529576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806118766021913960400191505060405180910390fd5b809150505b92915050565b600080821115156115ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b600082848115156115ba57fe5b0490508091505092915050565b6000828211151515611641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637f8d429e6009546040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b1580156116e657600080fd5b505afa1580156116fa573d6000803e3d6000fd5b505050506040513d602081101561171057600080fd5b810190808051906020019092919050505015611868576000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a462fb7b6009546040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b1580156117b957600080fd5b505afa1580156117cd573d6000803e3d6000fd5b505050506040513d60208110156117e357600080fd5b810190808051906020019092919050505090507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60010281141561182e576000809250925050611871565b600460149054906101000a900460ff1615611856576000600102811460009250925050611871565b60018002811460009250925050611871565b60006001915091505b909156fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a165627a7a723058206a185583f3993457811f70afe496e3446649afc02ae92eb9ee088c7312738e180029000000000000000000000000a1ad7b176110d40e664399bb9c7b910bc25229cd00000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000180000000000000000000000000325a2e0f3cca2ddbaebb4dfc38df8d19ca165b4700000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000dc0a2185031ecf89f091a39c63c2857a7d5c301a0000000000000000000000000000000000000000000000000000000000015180000000000000000000000000000000000000000000000000000000005f34828000000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000af9ab7dd439da29943af29d2d537d1eb15675dce00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000003c57696c6c2074657374206368616c6c656e6765206265666f7265203132204a756c20323032302031313a3539706d2028555443202b30373a3030293f00000000

Deployed Bytecode

0x60806040526004361061015d576000357c0100000000000000000000000000000000000000000000000000000000900480637b8c8de1116100d3578063bc3fde4e1161008c578063bc3fde4e14610727578063c407670f14610752578063ce606ee01461077d578063d87a328a146107d4578063fc741c7c146107ff578063ffa1ad741461082a5761015d565b80637b8c8de1146105b7578063877303091461061c5780639562364114610647578063b06a5c521461069e578063b77309d6146106c9578063ba7fd2fb146106f85761015d565b80634e71d92d116101255780634e71d92d146103e95780635ead3d4b146104005780635f95eb4d1461046b5780636cc6cde1146104d057806370a082311461052757806370dea79a1461058c5761015d565b806307171d7f146102815780630ed7e49914610298578063306a7ce0146103135780633fad9ae0146103425780634bb278f3146103d2575b600a54421115151561016e57600080fd5b60003411151561017d57600080fd5b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541480156101cc5750600034115b156101e4576010600081548092919060010191905055505b34600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff167f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874346040518082815260200191505060405180910390a2005b34801561028d57600080fd5b506102966108ba565b005b3480156102a457600080fd5b506102d1600480360360208110156102bb57600080fd5b8101908080359060200190929190505050610a4d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561031f57600080fd5b50610328610a8b565b604051808215151515815260200191505060405180910390f35b34801561034e57600080fd5b50610357610a9e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561039757808201518184015260208101905061037c565b50505050905090810190601f1680156103c45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103de57600080fd5b506103e7610b3c565b005b3480156103f557600080fd5b506103fe610bd5565b005b34801561040c57600080fd5b5061044f6004803603602081101561042357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d87565b604051808260ff1660ff16815260200191505060405180910390f35b34801561047757600080fd5b506104ba6004803603602081101561048e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610da7565b6040518082815260200191505060405180910390f35b3480156104dc57600080fd5b506104e5610f07565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561053357600080fd5b506105766004803603602081101561054a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f2d565b6040518082815260200191505060405180910390f35b34801561059857600080fd5b506105a1610f95565b6040518082815260200191505060405180910390f35b3480156105c357600080fd5b50610606600480360360208110156105da57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f9b565b6040518082815260200191505060405180910390f35b34801561062857600080fd5b50610631610fb3565b6040518082815260200191505060405180910390f35b34801561065357600080fd5b5061065c610fb9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106aa57600080fd5b506106b3610fdf565b6040518082815260200191505060405180910390f35b3480156106d557600080fd5b506106de610fe5565b604051808215151515815260200191505060405180910390f35b34801561070457600080fd5b5061070d610ff8565b604051808215151515815260200191505060405180910390f35b34801561073357600080fd5b5061073c61100b565b6040518082815260200191505060405180910390f35b34801561075e57600080fd5b50610767611011565b6040518082815260200191505060405180910390f35b34801561078957600080fd5b50610792611017565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107e057600080fd5b506107e961103c565b6040518082815260200191505060405180910390f35b34801561080b57600080fd5b50610814611042565b6040518082815260200191505060405180910390f35b34801561083657600080fd5b5061083f611048565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561087f578082015181840152602081019050610864565b50505050905090810190601f1680156108ac5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600d54421115156108ca57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561092557600080fd5b60003073ffffffffffffffffffffffffffffffffffffffff163190506001600e60026101000a81548160ff0219169083151502179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501580156109da573d6000803e3d6000fd5b506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1ac1e39f5a410afcc9fd213aab1b92287e00cf00e216f3776f352ab328d124f9826040518082815260200191505060405180910390a250565b600381815481101515610a5c57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e60019054906101000a900460ff1681565b60068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b345780601f10610b0957610100808354040283529160200191610b34565b820191906000526020600020905b815481529060010190602001808311610b1757829003601f168201915b505050505081565b601160009054906101000a900460ff16151515610b5857600080fd5b6001601160006101000a81548160ff021916908315150217905550600a5442111515610b8357600080fd5b600c544211151515610b9457600080fd5b600e60009054906101000a900460ff16151515610bb057600080fd5b610bb8611081565b6000601160006101000a81548160ff021916908315150217905550565b601160009054906101000a900460ff16151515610bf157600080fd5b6001601160006101000a81548160ff021916908315150217905550600a5442111515610c1c57600080fd5b600e60009054906101000a900460ff1680610c385750600c5442115b1515610c4357600080fd5b600e60019054906101000a900460ff161580610c605750600c5442115b1515610c6b57600080fd5b6000610c7633610f2d565b111515610c8257600080fd5b6000610c8d33610f2d565b90506000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610d1a573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff167fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a826040518082815260200191505060405180910390a2506000601160006101000a81548160ff021916908315150217905550565b60016020528060005260406000206000915054906101000a900460ff1681565b600080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff16111515610e0657600080fd5b6000610e71610e4b612710610e3d600b543073ffffffffffffffffffffffffffffffffffffffff16316114aa90919063ffffffff16565b61153490919063ffffffff16565b3073ffffffffffffffffffffffffffffffffffffffff16316115c790919063ffffffff16565b90506000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050610efe600260009054906101000a900460ff1660ff16610ef08360ff16856114aa90919063ffffffff16565b61153490919063ffffffff16565b92505050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600e60029054906101000a900460ff1615610f4d5760009050610f90565b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b60085481565b600f6020528060005260406000206000915090505481565b600c5481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b600e60009054906101000a900460ff1681565b600460149054906101000a900460ff1681565b600a5481565b60105481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b600b5481565b6040805190810160405280600581526020017f302e342e3000000000000000000000000000000000000000000000000000000081525081565b600061108b611652565b600e60018294508391906101000a81548160ff02191690831515021790555050508015156114a7576001600e60006101000a81548160ff021916908315150217905550600e60019054906101000a900460ff16156114a657600060038054905090506000600b54111561121557600061113a61271061112c600b543073ffffffffffffffffffffffffffffffffffffffff16316114aa90919063ffffffff16565b61153490919063ffffffff16565b90506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156111a3573d6000803e3d6000fd5b506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f7bd3aa7d673767f759ebf216e7f6c12844986c661ae6e0f1d988cf7eb7394d1d826040518082815260200191505060405180910390a2505b60008090505b600182038110156113af57600060038281548110151561123757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690506000611308600260009054906101000a900460ff1660ff166112fa8460ff163073ffffffffffffffffffffffffffffffffffffffff16316114aa90919063ffffffff16565b61153490919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611350573d6000803e3d6000fd5b508273ffffffffffffffffffffffffffffffffffffffff167f2a01595cddf097c90216094025db714da3f4e5bd8877b56ba86a24ecead8e543826040518082815260200191505060405180910390a2505050808060010191505061121b565b5060003073ffffffffffffffffffffffffffffffffffffffff1631905060006003600184038154811015156113e057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015611453573d6000803e3d6000fd5b508073ffffffffffffffffffffffffffffffffffffffff167f2a01595cddf097c90216094025db714da3f4e5bd8877b56ba86a24ecead8e543836040518082815260200191505060405180910390a25050505b5b50565b6000808314156114bd576000905061152e565b600082840290508284828115156114d057fe5b04141515611529576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806118766021913960400191505060405180910390fd5b809150505b92915050565b600080821115156115ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b600082848115156115ba57fe5b0490508091505092915050565b6000828211151515611641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637f8d429e6009546040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b1580156116e657600080fd5b505afa1580156116fa573d6000803e3d6000fd5b505050506040513d602081101561171057600080fd5b810190808051906020019092919050505015611868576000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a462fb7b6009546040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b1580156117b957600080fd5b505afa1580156117cd573d6000803e3d6000fd5b505050506040513d60208110156117e357600080fd5b810190808051906020019092919050505090507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60010281141561182e576000809250925050611871565b600460149054906101000a900460ff1615611856576000600102811460009250925050611871565b60018002811460009250925050611871565b60006001915091505b909156fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a165627a7a723058206a185583f3993457811f70afe496e3446649afc02ae92eb9ee088c7312738e180029

Deployed Bytecode Sourcemap

81:7165:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3378:16;;3371:3;:23;;3363:32;;;;;;;;3425:1;3413:9;:13;3405:22;;;;;;;;3470:1;3441:13;:25;3455:10;3441:25;;;;;;;;;;;;;;;;:30;:47;;;;;3487:1;3475:9;:13;3441:47;3437:90;;;3504:10;;:12;;;;;;;;;;;;;3437:90;3565:9;3536:13;:25;3550:10;3536:25;;;;;;;;;;;;;;;;:38;;;;;;;;;;;3598:10;3589:31;;;3610:9;3589:31;;;;;;;;;;;;;;;;;;81:7165;6042:367;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6042:367:0;;;:::i;:::-;;679:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;679:37:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;679:37:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1349:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1349:36:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;820:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;820:22:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;820:22:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3836:199;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3836:199:0;;;:::i;:::-;;5568:468;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5568:468:0;;;:::i;:::-;;609:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;609:42:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;609:42:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5224:338;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5224:338:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5224:338:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;849:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;849:25:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3633:197;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3633:197:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3633:197:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;881:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;881:22:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1437:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1437:48:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1437:48:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1047:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1047:40:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;723:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;723:28:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;910:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;910:25:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1193:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1193:28:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;758:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;758:22:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;942:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;942:31:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1492:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1492:25:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;524:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;524:36:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1094:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1094:40:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1017:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1017:23:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;477:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;477:40:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;477:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6042:367;6103:25;;6097:3;:31;6089:40;;;;;;;;6161:13;;;;;;;;;;;6147:27;;:10;:27;;;6139:36;;;;;;;;6186:25;6222:4;6214:21;;;6186:49;;6273:4;6245:25;;:32;;;;;;;;;;;;;;;;;;6287:13;;;;;;;;;;;:22;;:45;6318:4;6310:21;;;6287:45;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6287:45:0;6366:13;;;;;;;;;;;6347:55;;;6381:20;6347:55;;;;;;;;;;;;;;;;;;6042:367;:::o;679:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1349:36::-;;;;;;;;;;;;;:::o;820:22::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3836:199::-;1749:15;;;;;;;;;;;1748:16;1740:25;;;;;;;;1793:4;1775:15;;:22;;;;;;;;;;;;;;;;;;3902:16;;3896:3;:22;3888:31;;;;;;;;3944:25;;3937:3;:32;;3929:41;;;;;;;;3989:16;;;;;;;;;;;3988:17;3980:26;;;;;;;;4016:12;:10;:12::i;:::-;1836:5;1818:15;;:23;;;;;;;;;;;;;;;;;;3836:199::o;5568:468::-;1749:15;;;;;;;;;;;1748:16;1740:25;;;;;;;;1793:4;1775:15;;:22;;;;;;;;;;;;;;;;;;5631:16;;5625:3;:22;5617:31;;;;;;;;5666:16;;;;;;;;;;;:51;;;;5692:25;;5686:3;:31;5666:51;5658:60;;;;;;;;5737:24;;;;;;;;;;;5736:25;:60;;;;5771:25;;5765:3;:31;5736:60;5728:69;;;;;;;;5839:1;5815:21;5825:10;5815:9;:21::i;:::-;:25;5807:34;;;;;;;;5852:21;5876;5886:10;5876:9;:21::i;:::-;5852:45;;5935:1;5907:13;:25;5921:10;5907:25;;;;;;;;;;;;;;;:29;;;;5946:10;:19;;:34;5966:13;5946:34;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5946:34:0;6003:10;5995:34;;;6015:13;5995:34;;;;;;;;;;;;;;;;;;1807:1;1836:5;1818:15;;:23;;;;;;;;;;;;;;;;;;5568:468::o;609:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;5224:338::-;5304:7;5349:1;5331:9;:15;5341:4;5331:15;;;;;;;;;;;;;;;;;;;;;;;;;:19;;;5323:28;;;;;;;;5361:20;5384:78;5410:51;1652:5;5410:35;5436:8;;5418:4;5410:21;;;:25;;:35;;;;:::i;:::-;:39;;:51;;;;:::i;:::-;5392:4;5384:21;;;:25;;:78;;;;:::i;:::-;5361:101;;5472:11;5486:9;:15;5496:4;5486:15;;;;;;;;;;;;;;;;;;;;;;;;;5472:29;;5518:37;5546:8;;;;;;;;;;;5518:37;;:23;5535:5;5518:23;;:12;:16;;:23;;;;:::i;:::-;:27;;:37;;;;:::i;:::-;5511:44;;;;5224:338;;;:::o;849:25::-;;;;;;;;;;;;;:::o;3633:197::-;3696:7;3719:25;;;;;;;;;;;3715:64;;;3767:1;3760:8;;;;3715:64;3795:13;:28;3809:13;3795:28;;;;;;;;;;;;;;;;3788:35;;3633:197;;;;:::o;881:22::-;;;;:::o;1437:48::-;;;;;;;;;;;;;;;;;:::o;1047:40::-;;;;:::o;723:28::-;;;;;;;;;;;;;:::o;910:25::-;;;;:::o;1193:28::-;;;;;;;;;;;;;:::o;758:22::-;;;;;;;;;;;;;:::o;942:31::-;;;;:::o;1492:25::-;;;;:::o;524:36::-;;;;;;;;;;;;;:::o;1094:40::-;;;;:::o;1017:23::-;;;;:::o;477:40::-;;;;;;;;;;;;;;;;;;;;:::o;4041:1177::-;4081:13;4143:15;:13;:15::i;:::-;4105:24;;4104:54;;;;;;;;;;;;;;;;;;;;;;;;;;4173:8;4172:9;4168:1044;;;4216:4;4197:16;;:23;;;;;;;;;;;;;;;;;;4238:24;;;;;;;;;;;4234:968;;;4282:11;4296:12;:19;;;;4282:33;;4348:1;4337:8;;:12;4333:232;;;4373:14;4390:51;1652:5;4390:35;4416:8;;4398:4;4390:21;;;:25;;:35;;;;:::i;:::-;:39;;:51;;;;:::i;:::-;4373:68;;4463:13;;;;;;;;;;;:22;;:30;4486:6;4463:30;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4463:30:0;4524:13;;;;;;;;;;;4520:26;;;4539:6;4520:26;;;;;;;;;;;;;;;;;;4333:232;;4587:6;4596:1;4587:10;;4582:340;4612:1;4603:6;:10;4599:1;:14;4582:340;;;4642:19;4664:12;4677:1;4664:15;;;;;;;;;;;;;;;;;;;;;;;;;;;4642:37;;4701:11;4715:9;:14;4725:3;4715:14;;;;;;;;;;;;;;;;;;;;;;;;;4701:28;;4751:14;4768:46;4805:8;;;;;;;;;;;4768:46;;:32;4794:5;4768:32;;4776:4;4768:21;;;:25;;:32;;;;:::i;:::-;:36;;:46;;;;:::i;:::-;4751:63;;4836:3;:12;;:20;4849:6;4836:20;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4836:20:0;4891:3;4883:20;;;4896:6;4883:20;;;;;;;;;;;;;;;;;;4582:340;;;4615:3;;;;;;;4582:340;;;;5004:14;5029:4;5021:21;;;5004:38;;5060:19;5082:12;5104:1;5095:6;:10;5082:24;;;;;;;;;;;;;;;;;;;;;;;;;;;5060:46;;5124:3;:12;;:20;5137:6;5124:20;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5124:20:0;5175:3;5167:20;;;5180:6;5167:20;;;;;;;;;;;;;;;;;;4234:968;;;;4168:1044;4041:1177;:::o;1693:458:2:-;1751:7;1996:1;1991;:6;1987:45;;;2020:1;2013:8;;;;1987:45;2042:9;2058:1;2054;:5;2042:17;;2086:1;2081;2077;:5;;;;;;;;:10;2069:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2143:1;2136:8;;;1693:458;;;;;:::o;2606:326::-;2664:7;2761:1;2757;:5;2749:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2803:9;2819:1;2815;:5;;;;;;;;2803:17;;2924:1;2917:8;;;2606:326;;;;:::o;1274:179::-;1332:7;1364:1;1359;:6;;1351:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1410:9;1426:1;1422;:5;1410:17;;1445:1;1438:8;;;1274:179;;;;:::o;6415:829:0:-;6462:13;6477:12;6505;;;;;;;;;;;:24;;;6530:10;;6505:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6505:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6505:36:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6505:36:0;;;;;;;;;;;;;;;;6501:737;;;6557:14;6574:12;;;;;;;;;;;:27;;;6602:10;;6574:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6574:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6574:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6574:39:0;;;;;;;;;;;;;;;;6557:56;;6641:66;6631:76;;:6;:76;6627:550;;;6852:5;6859;6844:21;;;;;;;6627:550;6908:10;;;;;;;;;;;6904:149;;;6960:66;6950:76;;:6;:76;7028:5;6942:92;;;;;;;6904:149;7088:66;7078:76;;:6;:76;7156:5;7070:92;;;;;;;6501:737;7215:5;7222:4;7207:20;;;;6415:829;;;:::o

Swarm Source

bzzr://6a185583f3993457811f70afe496e3446649afc02ae92eb9ee088c7312738e18

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