ETH Price: $2,970.88 (-1.39%)
Gas: 4 Gwei

Contract

0x5003339EB9bC68e881eCbc85eb024FE50B00025A
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
End Game179663262023-08-21 23:17:11320 days ago1692659831IN
0x5003339E...50B00025A
0 ETH0.0034493423.21231368
New Game179663262023-08-21 23:17:11320 days ago1692659831IN
0x5003339E...50B00025A
0 ETH0.005861123.21231368
End Game179663222023-08-21 23:16:23320 days ago1692659783IN
0x5003339E...50B00025A
0 ETH0.0030712321.35589859
New Game179663212023-08-21 23:16:11320 days ago1692659771IN
0x5003339E...50B00025A
0 ETH0.0051796621.74502887
End Game179663182023-08-21 23:15:35320 days ago1692659735IN
0x5003339E...50B00025A
0 ETH0.0033493222.53923146
New Game179663162023-08-21 23:15:11320 days ago1692659711IN
0x5003339E...50B00025A
0 ETH0.0056290923.6365569
End Game179663102023-08-21 23:13:59320 days ago1692659639IN
0x5003339E...50B00025A
0 ETH0.0038152925.67494297
New Game179663092023-08-21 23:13:47320 days ago1692659627IN
0x5003339E...50B00025A
0 ETH0.0060906126.18899972
End Game179663052023-08-21 23:12:59320 days ago1692659579IN
0x5003339E...50B00025A
0 ETH0.0036706324.70746334
New Game179663052023-08-21 23:12:59320 days ago1692659579IN
0x5003339E...50B00025A
0 ETH0.0058844224.70746334
End Game179663012023-08-21 23:12:11320 days ago1692659531IN
0x5003339E...50B00025A
0 ETH0.0038542925.93739998
New Game179663002023-08-21 23:11:59320 days ago1692659519IN
0x5003339E...50B00025A
0 ETH0.0065381927.13349638
End Game179662412023-08-21 23:00:11320 days ago1692658811IN
0x5003339E...50B00025A
0 ETH0.0035945824.18963768
New Game179662402023-08-21 22:59:59320 days ago1692658799IN
0x5003339E...50B00025A
0 ETH0.0056926723.62458436
End Game179662362023-08-21 22:59:11320 days ago1692658751IN
0x5003339E...50B00025A
0 ETH0.0031415421.14263813
New Game179662342023-08-21 22:58:47320 days ago1692658727IN
0x5003339E...50B00025A
0 ETH0.0057556421.78700358
End Game179414082023-08-18 11:35:11324 days ago1692358511IN
0x5003339E...50B00025A
0 ETH0.0041819223.70771929
New Game179414072023-08-18 11:34:59324 days ago1692358499IN
0x5003339E...50B00025A
0 ETH0.0008657325.07921995
New Game179414022023-08-18 11:33:59324 days ago1692358439IN
0x5003339E...50B00025A
0 ETH0.0081977524.17717047
End Game179413992023-08-18 11:33:23324 days ago1692358403IN
0x5003339E...50B00025A
0 ETH0.0036130925.12794327
New Game179413962023-08-18 11:32:47324 days ago1692358367IN
0x5003339E...50B00025A
0 ETH0.0061043625.9358546
End Game179413912023-08-18 11:31:47324 days ago1692358307IN
0x5003339E...50B00025A
0 ETH0.0042356628.4991697
New Game179413892023-08-18 11:31:23324 days ago1692358283IN
0x5003339E...50B00025A
0 ETH0.007398429.30062407
End Game179413842023-08-18 11:30:23324 days ago1692358223IN
0x5003339E...50B00025A
0 ETH0.0034926524.28828266
New Game179413822023-08-18 11:29:59324 days ago1692358199IN
0x5003339E...50B00025A
0 ETH0.0055976921.92593736
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TelegramPepeRoulette

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2023-08-16
*/

/**
 *Submitted for verification at Etherscan.io on 2023-08-16
*/

/*

    
    ██████  ███████ ██████  ███████     ██████   ██████  ██    ██ ██      ███████ ████████ ████████ ███████ 
    ██   ██ ██      ██   ██ ██          ██   ██ ██    ██ ██    ██ ██      ██         ██       ██    ██      
    ██████  █████   ██████  █████       ██████  ██    ██ ██    ██ ██      █████      ██       ██    █████   
    ██      ██      ██      ██          ██   ██ ██    ██ ██    ██ ██      ██         ██       ██    ██      
    ██      ███████ ██      ███████     ██   ██  ██████   ██████  ███████ ███████    ██       ██    ███████ 
                                                                                                            

* Website : https://peperoulette.xyz/
* Telegram : https://t.me/PepeRouletteEntryPortal
* Bot Telegram : https://t.me/PepeRoulette_bot
* Twitter : https://twitter.com/PepeRoulette
* Whitepaper : https://wp.peperoulette.xyz/

*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;

abstract contract Context {
    
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }

}

abstract contract Ownable is Context {
    
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IERC20 {
    function burn(uint256 amount) external;
    function totalSupply() external view returns (uint256);
    function balanceOf(address _account) external view returns (uint256);
    function transfer(address recipient, uint256 amount)
        external
        returns (bool);
    function allowance(address owner, address spender)
        external
        view
        returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

contract TelegramPepeRoulette is Ownable {

    address public revenueWallet;

    IERC20 public Token;

    uint256 public minimumBet;

    // The amount to take as revenue, in basis points.
    uint256 public revenueBps;

    // The amount to burn forever, in basis points.
    uint256 public burnBps;

    // Map Telegram chat IDs to their games.
    mapping(int64 => Game) public games;

    // The Telegram chat IDs for each active game. Mainly used to
    // abort all active games in the event of a catastrophe.
    int64[] public activeTgGroups;

    // Stores the amount each player has bet for a game.
    event Bet(int64 tgChatId, address player, uint16 playerIndex, uint256 amount);

    // Stores the amount each player wins for a game.
    event Win(int64 tgChatId, address player, uint16 playerIndex, uint256 amount);

    // Stores the amount the loser lost.
    event Loss(int64 tgChatId, address player, uint16 playerIndex, uint256 amount);

    // Stores the amount collected by the protocol.
    event Revenue(int64 tgChatId, uint256 amount);

    // Stores the amount burned by the protocol.
    event Burn(int64 tgChatId, uint256 amount);

    constructor(address payable _Token, uint256 _minimumBet, uint256 _revenueBps, uint256 _burnBps, address _revenueWallet) {
        revenueWallet = _revenueWallet;
        revenueBps = _revenueBps;
        burnBps = _burnBps;
        Token = IERC20(_Token);
        minimumBet = _minimumBet;
    }

    struct Game {
        uint256 revolverSize;
        uint256 minBet;

        // This is a SHA-256 hash of the random number generated by the bot.
        bytes32 hashedBulletChamberIndex;

        address[] players;
        uint256[] bets;

        bool inProgress;
        uint16 loser;
    }

    /**
     * @dev Check if there is a game in progress for a Telegram group.
     * @param _tgChatId Telegram group to check
     * @return true if there is a game in progress, otherwise false
     */
    function isGameInProgress(int64 _tgChatId) public view returns (bool) {
        return games[_tgChatId].inProgress;
    }

    /**
     * @dev Remove a Telegram chat ID from the array.
     * @param _tgChatId Telegram chat ID to remove
     */
    function removeTgId(int64 _tgChatId) internal {
        for (uint256 i = 0; i < activeTgGroups.length; i++) {
            if (activeTgGroups[i] == _tgChatId) {
                activeTgGroups[i] = activeTgGroups[activeTgGroups.length - 1];
                activeTgGroups.pop();
            }
        }
    }

    /**
     * @dev Create a new game. Transfer funds into escrow.
     * @param _tgChatId Telegram group of this game
     * @param _revolverSize number of chambers in the revolver
     * @param _minBet minimum bet to play
     * @param _hashedBulletChamberIndex which chamber the bullet is in
     * @param _players participating players
     * @param _bets each player's bet
     * @return The updated list of bets.
     */
    function newGame(
        int64 _tgChatId,
        uint256 _revolverSize,
        uint256 _minBet,
        bytes32 _hashedBulletChamberIndex,
        address[] memory _players,
        uint256[] memory _bets) public onlyOwner returns (uint256[] memory) {
        require(_revolverSize >= 2, "Revolver size too small");
        require(_players.length <= _revolverSize, "Too many players for this size revolver");
        require(_minBet >= minimumBet, "Minimum bet too small");
        require(_players.length == _bets.length, "Players/bets length mismatch");
        require(_players.length > 1, "Not enough players");
        require(!isGameInProgress(_tgChatId), "There is already a game in progress");

        // The bets will be capped so you can only lose what other
        // players bet. The updated bets will be returned to the
        // caller.
        //
        // O(N) by doing a prepass to sum all the bets in the
        // array. Use the sum to modify one bet at a time. Replace
        // each bet with its updated value.
        uint256 betTotal = 0;
        for (uint16 i = 0; i < _bets.length; i++) {
            require(_bets[i] >= _minBet, "Bet is smaller than the minimum");
            betTotal += _bets[i];
        }
        for (uint16 i = 0; i < _bets.length; i++) {
            betTotal -= _bets[i];
            if (_bets[i] > betTotal) {
                _bets[i] = betTotal;
            }
            betTotal += _bets[i];

            require(Token.allowance(_players[i], address(this)) >= _bets[i], "Not enough allowance");
            bool isSent = Token.transferFrom(_players[i], address(this), _bets[i]);
            require(isSent, "Funds transfer failed");

            emit Bet(_tgChatId, _players[i], i, _bets[i]);
        }

        Game memory g;
        g.revolverSize = _revolverSize;
        g.minBet = _minBet;
        g.hashedBulletChamberIndex = _hashedBulletChamberIndex;
        g.players = _players;
        g.bets = _bets;
        g.inProgress = true;

        games[_tgChatId] = g;
        activeTgGroups.push(_tgChatId);

        return _bets;
    }

    /**
     * @dev Declare a loser of the game and pay out the winnings.
     * @param _tgChatId Telegram group of this game
     * @param _loser index of the loser
     *
     * There is also a string array that will be passed in by the bot
     * containing labeled strings, for historical/auditing purposes:
     *
     * beta: The randomly generated number in hex.
     *
     * salt: The salt to append to beta for hashing, in hex.
     *
     * publickey: The VRF public key in hex.
     *
     * proof: The generated proof in hex.
     *
     * alpha: The input message to the VRF.
     */
    function endGame(
        int64 _tgChatId,
        uint16 _loser,
        string[] calldata) public onlyOwner {
        require(_loser != type(uint16).max, "Loser index shouldn't be the sentinel value");
        require(isGameInProgress(_tgChatId), "No game in progress for this Telegram chat ID");

        Game storage g = games[_tgChatId];

        require(_loser < g.players.length, "Loser index out of range");
        require(g.players.length > 1, "Not enough players");

        g.loser = _loser;
        g.inProgress = false;
        removeTgId(_tgChatId);

        // Parallel arrays
        address[] memory winners = new address[](g.players.length - 1);
        uint16[] memory winnersPlayerIndex = new uint16[](g.players.length - 1);

        // The total bets of the winners.
        uint256 winningBetTotal = 0;

        // Filter out the loser and calc the total winning bets.
        {
            uint16 numWinners = 0;
            for (uint16 i = 0; i < g.players.length; i++) {
                if (i != _loser) {
                    winners[numWinners] = g.players[i];
                    winnersPlayerIndex[numWinners] = i;
                    winningBetTotal += g.bets[i];
                    numWinners++;
                }
            }
        }

        uint256 totalPaidWinnings = 0;
        require(burnBps + revenueBps < 10_1000, "Total fees must be < 100%");

        // The share of tokens to burn.
        uint256 burnShare = g.bets[_loser] * burnBps / 10_000;

        // The share left for the contract. This is an approximate
        // value. The real value will be whatever is leftover after
        // each winner is paid their share.
        uint256 approxRevenueShare = g.bets[_loser] * revenueBps / 10_000;

        bool isSent;
        {
            uint256 totalWinnings = g.bets[_loser] - burnShare - approxRevenueShare;

            for (uint16 i = 0; i < winners.length; i++) {
                uint256 winnings = totalWinnings * g.bets[winnersPlayerIndex[i]] / winningBetTotal;

                isSent = Token.transfer(winners[i], g.bets[winnersPlayerIndex[i]] + winnings);
                require(isSent, "Funds transfer failed");

                emit Win(_tgChatId, winners[i], winnersPlayerIndex[i], winnings);

                totalPaidWinnings += winnings;
            }
        }

        Token.burn(burnShare);
        emit Burn(_tgChatId, burnShare);

        uint256 realRevenueShare = g.bets[_loser] - totalPaidWinnings - burnShare;
        isSent = Token.transfer(revenueWallet, realRevenueShare);
        require(isSent, "Revenue transfer failed");
        emit Revenue(_tgChatId, realRevenueShare);

        require((totalPaidWinnings + burnShare + realRevenueShare) == g.bets[_loser], "Calculated winnings do not add up");
    }

    /**
     * @dev Abort a game and refund the bets. Use in emergencies
     *      e.g. bot crash.
     * @param _tgChatId Telegram group of this game
     */
    function abortGame(int64 _tgChatId) public onlyOwner {
        require(isGameInProgress(_tgChatId), "No game in progress for this Telegram chat ID");
        Game storage g = games[_tgChatId];

        for (uint16 i = 0; i < g.players.length; i++) {
            bool isSent = Token.transfer(g.players[i], g.bets[i]);
            require(isSent, "Funds transfer failed");
        }

        g.inProgress = false;
        removeTgId(_tgChatId);
    }

    /**
     * @dev Abort all in progress games.
     */
    function abortAllGames() public onlyOwner {
        // abortGame modifies activeTgGroups with each call, so
        // iterate over a copy
        int64[] memory _activeTgGroups = activeTgGroups;
        for (uint256 i = 0; i < _activeTgGroups.length; i++) {
            abortGame(_activeTgGroups[i]);
        }
    }

    function rescueFunds() external onlyOwner {
        (bool os,) = payable(msg.sender).call{value: address(this).balance}("");
        require(os,'Payment Failed');
    }

    function rescueTokens(address _token,address recipient,uint _amount) external onlyOwner {
        (bool success, ) = address(_token).call(abi.encodeWithSignature('transfer(address,uint256)',  recipient, _amount));
        require(success, 'Token payment failed');
    }

    function setRevenueWallet(address _revenueWallet) external onlyOwner {
        revenueWallet = _revenueWallet;
    }

    function setBurnBps(uint _burnBps) external onlyOwner {
        burnBps = _burnBps;
    }

    function setToken(address _Token) external onlyOwner {
        Token = IERC20(_Token);
    }
    
    function setBetLimit(uint _minimumBet) external onlyOwner {
        minimumBet = _minimumBet;
    }

    function setRevenueBps(uint _revenueBps) external onlyOwner {
        revenueBps = _revenueBps;
    }   

    receive() external payable {}

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"_Token","type":"address"},{"internalType":"uint256","name":"_minimumBet","type":"uint256"},{"internalType":"uint256","name":"_revenueBps","type":"uint256"},{"internalType":"uint256","name":"_burnBps","type":"uint256"},{"internalType":"address","name":"_revenueWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"int64","name":"tgChatId","type":"int64"},{"indexed":false,"internalType":"address","name":"player","type":"address"},{"indexed":false,"internalType":"uint16","name":"playerIndex","type":"uint16"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Bet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"int64","name":"tgChatId","type":"int64"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"int64","name":"tgChatId","type":"int64"},{"indexed":false,"internalType":"address","name":"player","type":"address"},{"indexed":false,"internalType":"uint16","name":"playerIndex","type":"uint16"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Loss","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"int64","name":"tgChatId","type":"int64"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Revenue","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"int64","name":"tgChatId","type":"int64"},{"indexed":false,"internalType":"address","name":"player","type":"address"},{"indexed":false,"internalType":"uint16","name":"playerIndex","type":"uint16"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Win","type":"event"},{"inputs":[],"name":"Token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"abortAllGames","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int64","name":"_tgChatId","type":"int64"}],"name":"abortGame","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"activeTgGroups","outputs":[{"internalType":"int64","name":"","type":"int64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnBps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int64","name":"_tgChatId","type":"int64"},{"internalType":"uint16","name":"_loser","type":"uint16"},{"internalType":"string[]","name":"","type":"string[]"}],"name":"endGame","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int64","name":"","type":"int64"}],"name":"games","outputs":[{"internalType":"uint256","name":"revolverSize","type":"uint256"},{"internalType":"uint256","name":"minBet","type":"uint256"},{"internalType":"bytes32","name":"hashedBulletChamberIndex","type":"bytes32"},{"internalType":"bool","name":"inProgress","type":"bool"},{"internalType":"uint16","name":"loser","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int64","name":"_tgChatId","type":"int64"}],"name":"isGameInProgress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumBet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int64","name":"_tgChatId","type":"int64"},{"internalType":"uint256","name":"_revolverSize","type":"uint256"},{"internalType":"uint256","name":"_minBet","type":"uint256"},{"internalType":"bytes32","name":"_hashedBulletChamberIndex","type":"bytes32"},{"internalType":"address[]","name":"_players","type":"address[]"},{"internalType":"uint256[]","name":"_bets","type":"uint256[]"}],"name":"newGame","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revenueBps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"revenueWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minimumBet","type":"uint256"}],"name":"setBetLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_burnBps","type":"uint256"}],"name":"setBurnBps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_revenueBps","type":"uint256"}],"name":"setRevenueBps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_revenueWallet","type":"address"}],"name":"setRevenueWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_Token","type":"address"}],"name":"setToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b5060405162003a8838038062003a888339818101604052810190620000379190620002af565b620000576200004b620000f960201b60201c565b6200010160201b60201c565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826004819055508160058190555084600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600381905550505050505062000337565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620001f782620001ca565b9050919050565b6200020981620001ea565b81146200021557600080fd5b50565b6000815190506200022981620001fe565b92915050565b6000819050919050565b62000244816200022f565b81146200025057600080fd5b50565b600081519050620002648162000239565b92915050565b60006200027782620001ca565b9050919050565b62000289816200026a565b81146200029557600080fd5b50565b600081519050620002a9816200027e565b92915050565b600080600080600060a08688031215620002ce57620002cd620001c5565b5b6000620002de8882890162000218565b9550506020620002f18882890162000253565b9450506040620003048882890162000253565b9350506060620003178882890162000253565b92505060806200032a8882890162000298565b9150509295509295909350565b61374180620003476000396000f3fe6080604052600436106101395760003560e01c8063c38a8afd116100ab578063d057fc1f1161006f578063d057fc1f146103e3578063e6b2603b14610420578063f2fde38b14610437578063f361971614610460578063fb235f34146104a1578063ff08aa49146104ca57610140565b8063c38a8afd14610300578063cb99e91f1461032b578063cdd8aa5914610354578063cea9d26f1461037d578063ceb7ec04146103a657610140565b8063715018a6116100fd578063715018a61461021857806388b7904d1461022f5780638da5cb5b14610258578063ab59ddc614610283578063addc831e146102ac578063c2412676146102d557610140565b8063144fa6d714610145578063444784251461016e57806353deb3d61461019957806363c42460146101c4578063658167311461020157610140565b3661014057005b600080fd5b34801561015157600080fd5b5061016c600480360381019061016791906121cc565b6104f5565b005b34801561017a57600080fd5b50610183610541565b6040516101909190612208565b60405180910390f35b3480156101a557600080fd5b506101ae610567565b6040516101bb919061223c565b60405180910390f35b3480156101d057600080fd5b506101eb60048036038101906101e69190612290565b61056d565b6040516101f891906122d8565b60405180910390f35b34801561020d57600080fd5b506102166105a0565b005b34801561022457600080fd5b5061022d610669565b005b34801561023b57600080fd5b5061025660048036038101906102519190612392565b61067d565b005b34801561026457600080fd5b5061026d611052565b60405161027a9190612208565b60405180910390f35b34801561028f57600080fd5b506102aa60048036038101906102a59190612432565b61107b565b005b3480156102b857600080fd5b506102d360048036038101906102ce9190612432565b61108d565b005b3480156102e157600080fd5b506102ea61109f565b6040516102f791906124be565b60405180910390f35b34801561030c57600080fd5b506103156110c5565b604051610322919061223c565b60405180910390f35b34801561033757600080fd5b50610352600480360381019061034d9190612290565b6110cb565b005b34801561036057600080fd5b5061037b60048036038101906103769190612432565b6112d9565b005b34801561038957600080fd5b506103a4600480360381019061039f91906124d9565b6112eb565b005b3480156103b257600080fd5b506103cd60048036038101906103c89190612774565b611435565b6040516103da91906128f7565b60405180910390f35b3480156103ef57600080fd5b5061040a60048036038101906104059190612432565b611b77565b6040516104179190612928565b60405180910390f35b34801561042c57600080fd5b50610435611bae565b005b34801561044357600080fd5b5061045e600480360381019061045991906121cc565b611c65565b005b34801561046c57600080fd5b5061048760048036038101906104829190612290565b611ce8565b604051610498959493929190612961565b60405180910390f35b3480156104ad57600080fd5b506104c860048036038101906104c391906121cc565b611d39565b005b3480156104d657600080fd5b506104df611d85565b6040516104ec919061223c565b60405180910390f35b6104fd611d8b565b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b6000600660008360070b60070b815260200190815260200160002060050160009054906101000a900460ff169050919050565b6105a8611d8b565b6000600780548060200260200160405190810160405280929190818152602001828054801561061c57602002820191906000526020600020906000905b82829054906101000a900460070b60070b815260200190600801906020826007010492830192600103820291508084116105e55790505b5050505050905060005b815181101561066557610652828281518110610645576106446129b4565b5b60200260200101516110cb565b808061065d90612a12565b915050610626565b5050565b610671611d8b565b61067b6000611e09565b565b610685611d8b565b61ffff80168361ffff16036106cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c690612add565b60405180910390fd5b6106d88461056d565b610717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070e90612b6f565b60405180910390fd5b6000600660008660070b60070b8152602001908152602001600020905080600301805490508461ffff1610610781576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077890612bdb565b60405180910390fd5b60018160030180549050116107cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c290612c47565b60405180910390fd5b838160050160016101000a81548161ffff021916908361ffff16021790555060008160050160006101000a81548160ff02191690831515021790555061081085611ecd565b6000600182600301805490506108269190612c67565b67ffffffffffffffff81111561083f5761083e612573565b5b60405190808252806020026020018201604052801561086d5781602001602082028036833780820191505090505b5090506000600183600301805490506108869190612c67565b67ffffffffffffffff81111561089f5761089e612573565b5b6040519080825280602002602001820160405280156108cd5781602001602082028036833780820191505090505b50905060008060005b85600301805490508161ffff161015610a10578861ffff168161ffff16146109fd57856003018161ffff1681548110610912576109116129b4565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16858361ffff1681518110610954576109536129b4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505080848361ffff16815181106109a6576109a56129b4565b5b602002602001019061ffff16908161ffff1681525050856004018161ffff16815481106109d6576109d56129b4565b5b9060005260206000200154836109ec9190612c9b565b925081806109f990612ccf565b9250505b8080610a0890612ccf565b9150506108d6565b5050600062018a88600454600554610a289190612c9b565b10610a68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5f90612d45565b60405180910390fd5b6000612710600554876004018b61ffff1681548110610a8a57610a896129b4565b5b9060005260206000200154610a9f9190612d65565b610aa99190612dd6565b90506000612710600454886004018c61ffff1681548110610acd57610acc6129b4565b5b9060005260206000200154610ae29190612d65565b610aec9190612dd6565b905060008082848a6004018e61ffff1681548110610b0d57610b0c6129b4565b5b9060005260206000200154610b229190612c67565b610b2c9190612c67565b905060005b88518161ffff161015610d83576000878b6004018a8461ffff1681518110610b5c57610b5b6129b4565b5b602002602001015161ffff1681548110610b7957610b786129b4565b5b906000526020600020015484610b8f9190612d65565b610b999190612dd6565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8b8461ffff1681518110610bf057610bef6129b4565b5b6020026020010151838e6004018d8761ffff1681518110610c1457610c136129b4565b5b602002602001015161ffff1681548110610c3157610c306129b4565b5b9060005260206000200154610c469190612c9b565b6040518363ffffffff1660e01b8152600401610c63929190612e07565b6020604051808303816000875af1158015610c82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca69190612e5c565b935083610ce8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdf90612ed5565b60405180910390fd5b7f6b5ed972057bb3f9c6b7b2ea6350bf7abde0e0c5f8a765c5dde8402bb2b6efd38f8b8461ffff1681518110610d2157610d206129b4565b5b60200260200101518b8561ffff1681518110610d4057610d3f6129b4565b5b602002602001015184604051610d599493929190612ef5565b60405180910390a18087610d6d9190612c9b565b9650508080610d7b90612ccf565b915050610b31565b5050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342966c68846040518263ffffffff1660e01b8152600401610de0919061223c565b600060405180830381600087803b158015610dfa57600080fd5b505af1158015610e0e573d6000803e3d6000fd5b505050507fbc03807cbae975b0551ce6caa7b86a1ff549b347e16440847a8c03140f59c27c8c84604051610e43929190612f3a565b60405180910390a1600083858a6004018e61ffff1681548110610e6957610e686129b4565b5b9060005260206000200154610e7e9190612c67565b610e889190612c67565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610f09929190612e07565b6020604051808303816000875af1158015610f28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4c9190612e5c565b915081610f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8590612faf565b60405180910390fd5b7f0f771b5d5a6b02378d0d1a6b6b371ac1e69759fb677e46109ae1bb55167ea7ad8d82604051610fbf929190612f3a565b60405180910390a1886004018c61ffff1681548110610fe157610fe06129b4565b5b9060005260206000200154818587610ff99190612c9b565b6110039190612c9b565b14611043576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103a90613041565b60405180910390fd5b50505050505050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611083611d8b565b8060038190555050565b611095611d8b565b8060058190555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b6110d3611d8b565b6110dc8161056d565b61111b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111290612b6f565b60405180910390fd5b6000600660008360070b60070b8152602001908152602001600020905060005b81600301805490508161ffff1610156112ae576000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb846003018461ffff16815481106111a8576111a76129b4565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856004018561ffff16815481106111ed576111ec6129b4565b5b90600052602060002001546040518363ffffffff1660e01b8152600401611215929190612e07565b6020604051808303816000875af1158015611234573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112589190612e5c565b90508061129a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129190612ed5565b60405180910390fd5b5080806112a690612ccf565b91505061113b565b5060008160050160006101000a81548160ff0219169083151502179055506112d582611ecd565b5050565b6112e1611d8b565b8060048190555050565b6112f3611d8b565b60008373ffffffffffffffffffffffffffffffffffffffff16838360405160240161131f929190612e07565b6040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516113a991906130d2565b6000604051808303816000865af19150503d80600081146113e6576040519150601f19603f3d011682016040523d82523d6000602084013e6113eb565b606091505b505090508061142f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142690613135565b60405180910390fd5b50505050565b606061143f611d8b565b6002861015611483576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147a906131a1565b60405180910390fd5b85835111156114c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114be90613233565b60405180910390fd5b60035485101561150c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115039061329f565b60405180910390fd5b8151835114611550576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115479061330b565b60405180910390fd5b6001835111611594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158b90612c47565b60405180910390fd5b61159d8761056d565b156115dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d49061339d565b60405180910390fd5b6000805b83518161ffff16101561168e5786848261ffff1681518110611606576116056129b4565b5b6020026020010151101561164f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164690613409565b60405180910390fd5b838161ffff1681518110611666576116656129b4565b5b6020026020010151826116799190612c9b565b9150808061168690612ccf565b9150506115e1565b5060005b83518161ffff161015611a0d57838161ffff16815181106116b6576116b56129b4565b5b6020026020010151826116c99190612c67565b915081848261ffff16815181106116e3576116e26129b4565b5b602002602001015111156117165781848261ffff1681518110611709576117086129b4565b5b6020026020010181815250505b838161ffff168151811061172d5761172c6129b4565b5b6020026020010151826117409190612c9b565b9150838161ffff1681518110611759576117586129b4565b5b6020026020010151600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e878461ffff16815181106117b6576117b56129b4565b5b6020026020010151306040518363ffffffff1660e01b81526004016117dc929190613429565b602060405180830381865afa1580156117f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181d9190613467565b101561185e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611855906134e0565b60405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd878461ffff16815181106118b5576118b46129b4565b5b602002602001015130888661ffff16815181106118d5576118d46129b4565b5b60200260200101516040518463ffffffff1660e01b81526004016118fb93929190613500565b6020604051808303816000875af115801561191a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193e9190612e5c565b905080611980576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197790612ed5565b60405180910390fd5b7f4ca2b6f8214bfec8b3a7c06707618645a8e77d171b22a4eba1d8811fdc30bfdb8a878461ffff16815181106119b9576119b86129b4565b5b602002602001015184888661ffff16815181106119d9576119d86129b4565b5b60200260200101516040516119f19493929190612ef5565b60405180910390a1508080611a0590612ccf565b915050611692565b50611a16612020565b87816000018181525050868160200181815250508581604001818152505084816060018190525083816080018190525060018160a001901515908115158152505080600660008b60070b60070b81526020019081526020016000206000820151816000015560208201518160010155604082015181600201556060820151816003019080519060200190611aab929190612066565b506080820151816004019080519060200190611ac89291906120f0565b5060a08201518160050160006101000a81548160ff02191690831515021790555060c08201518160050160016101000a81548161ffff021916908361ffff16021790555090505060078990806001815401808255809150506001900390600052602060002090600491828204019190066008029091909190916101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff16021790555083925050509695505050505050565b60078181548110611b8757600080fd5b9060005260206000209060049182820401919006600802915054906101000a900460070b81565b611bb6611d8b565b60003373ffffffffffffffffffffffffffffffffffffffff1647604051611bdc9061355d565b60006040518083038185875af1925050503d8060008114611c19576040519150601f19603f3d011682016040523d82523d6000602084013e611c1e565b606091505b5050905080611c62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c59906135be565b60405180910390fd5b50565b611c6d611d8b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd390613650565b60405180910390fd5b611ce581611e09565b50565b60066020528060005260406000206000915090508060000154908060010154908060020154908060050160009054906101000a900460ff16908060050160019054906101000a900461ffff16905085565b611d41611d8b565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60045481565b611d93612018565b73ffffffffffffffffffffffffffffffffffffffff16611db1611052565b73ffffffffffffffffffffffffffffffffffffffff1614611e07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfe906136bc565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60005b600780549050811015612014578160070b60078281548110611ef557611ef46129b4565b5b90600052602060002090600491828204019190066008029054906101000a900460070b60070b036120015760076001600780549050611f349190612c67565b81548110611f4557611f446129b4565b5b90600052602060002090600491828204019190066008029054906101000a900460070b60078281548110611f7c57611f7b6129b4565b5b90600052602060002090600491828204019190066008026101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055506007805480611fcc57611fcb6136dc565b5b60019003818190600052602060002090600491828204019190066008026101000a81549067ffffffffffffffff021916905590555b808061200c90612a12565b915050611ed0565b5050565b600033905090565b6040518060e001604052806000815260200160008152602001600080191681526020016060815260200160608152602001600015158152602001600061ffff1681525090565b8280548282559060005260206000209081019282156120df579160200282015b828111156120de5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190612086565b5b5090506120ec919061213d565b5090565b82805482825590600052602060002090810192821561212c579160200282015b8281111561212b578251825591602001919060010190612110565b5b509050612139919061213d565b5090565b5b8082111561215657600081600090555060010161213e565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006121998261216e565b9050919050565b6121a98161218e565b81146121b457600080fd5b50565b6000813590506121c6816121a0565b92915050565b6000602082840312156121e2576121e1612164565b5b60006121f0848285016121b7565b91505092915050565b6122028161218e565b82525050565b600060208201905061221d60008301846121f9565b92915050565b6000819050919050565b61223681612223565b82525050565b6000602082019050612251600083018461222d565b92915050565b60008160070b9050919050565b61226d81612257565b811461227857600080fd5b50565b60008135905061228a81612264565b92915050565b6000602082840312156122a6576122a5612164565b5b60006122b48482850161227b565b91505092915050565b60008115159050919050565b6122d2816122bd565b82525050565b60006020820190506122ed60008301846122c9565b92915050565b600061ffff82169050919050565b61230a816122f3565b811461231557600080fd5b50565b60008135905061232781612301565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126123525761235161232d565b5b8235905067ffffffffffffffff81111561236f5761236e612332565b5b60208301915083602082028301111561238b5761238a612337565b5b9250929050565b600080600080606085870312156123ac576123ab612164565b5b60006123ba8782880161227b565b94505060206123cb87828801612318565b935050604085013567ffffffffffffffff8111156123ec576123eb612169565b5b6123f88782880161233c565b925092505092959194509250565b61240f81612223565b811461241a57600080fd5b50565b60008135905061242c81612406565b92915050565b60006020828403121561244857612447612164565b5b60006124568482850161241d565b91505092915050565b6000819050919050565b600061248461247f61247a8461216e565b61245f565b61216e565b9050919050565b600061249682612469565b9050919050565b60006124a88261248b565b9050919050565b6124b88161249d565b82525050565b60006020820190506124d360008301846124af565b92915050565b6000806000606084860312156124f2576124f1612164565b5b6000612500868287016121b7565b9350506020612511868287016121b7565b92505060406125228682870161241d565b9150509250925092565b6000819050919050565b61253f8161252c565b811461254a57600080fd5b50565b60008135905061255c81612536565b92915050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6125ab82612562565b810181811067ffffffffffffffff821117156125ca576125c9612573565b5b80604052505050565b60006125dd61215a565b90506125e982826125a2565b919050565b600067ffffffffffffffff82111561260957612608612573565b5b602082029050602081019050919050565b600061262d612628846125ee565b6125d3565b905080838252602082019050602084028301858111156126505761264f612337565b5b835b81811015612679578061266588826121b7565b845260208401935050602081019050612652565b5050509392505050565b600082601f8301126126985761269761232d565b5b81356126a884826020860161261a565b91505092915050565b600067ffffffffffffffff8211156126cc576126cb612573565b5b602082029050602081019050919050565b60006126f06126eb846126b1565b6125d3565b9050808382526020820190506020840283018581111561271357612712612337565b5b835b8181101561273c5780612728888261241d565b845260208401935050602081019050612715565b5050509392505050565b600082601f83011261275b5761275a61232d565b5b813561276b8482602086016126dd565b91505092915050565b60008060008060008060c0878903121561279157612790612164565b5b600061279f89828a0161227b565b96505060206127b089828a0161241d565b95505060406127c189828a0161241d565b94505060606127d289828a0161254d565b935050608087013567ffffffffffffffff8111156127f3576127f2612169565b5b6127ff89828a01612683565b92505060a087013567ffffffffffffffff8111156128205761281f612169565b5b61282c89828a01612746565b9150509295509295509295565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61286e81612223565b82525050565b60006128808383612865565b60208301905092915050565b6000602082019050919050565b60006128a482612839565b6128ae8185612844565b93506128b983612855565b8060005b838110156128ea5781516128d18882612874565b97506128dc8361288c565b9250506001810190506128bd565b5085935050505092915050565b600060208201905081810360008301526129118184612899565b905092915050565b61292281612257565b82525050565b600060208201905061293d6000830184612919565b92915050565b61294c8161252c565b82525050565b61295b816122f3565b82525050565b600060a082019050612976600083018861222d565b612983602083018761222d565b6129906040830186612943565b61299d60608301856122c9565b6129aa6080830184612952565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612a1d82612223565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612a4f57612a4e6129e3565b5b600182019050919050565b600082825260208201905092915050565b7f4c6f73657220696e6465782073686f756c646e2774206265207468652073656e60008201527f74696e656c2076616c7565000000000000000000000000000000000000000000602082015250565b6000612ac7602b83612a5a565b9150612ad282612a6b565b604082019050919050565b60006020820190508181036000830152612af681612aba565b9050919050565b7f4e6f2067616d6520696e2070726f677265737320666f7220746869732054656c60008201527f656772616d206368617420494400000000000000000000000000000000000000602082015250565b6000612b59602d83612a5a565b9150612b6482612afd565b604082019050919050565b60006020820190508181036000830152612b8881612b4c565b9050919050565b7f4c6f73657220696e646578206f7574206f662072616e67650000000000000000600082015250565b6000612bc5601883612a5a565b9150612bd082612b8f565b602082019050919050565b60006020820190508181036000830152612bf481612bb8565b9050919050565b7f4e6f7420656e6f75676820706c61796572730000000000000000000000000000600082015250565b6000612c31601283612a5a565b9150612c3c82612bfb565b602082019050919050565b60006020820190508181036000830152612c6081612c24565b9050919050565b6000612c7282612223565b9150612c7d83612223565b9250828203905081811115612c9557612c946129e3565b5b92915050565b6000612ca682612223565b9150612cb183612223565b9250828201905080821115612cc957612cc86129e3565b5b92915050565b6000612cda826122f3565b915061ffff8203612cee57612ced6129e3565b5b600182019050919050565b7f546f74616c2066656573206d757374206265203c203130302500000000000000600082015250565b6000612d2f601983612a5a565b9150612d3a82612cf9565b602082019050919050565b60006020820190508181036000830152612d5e81612d22565b9050919050565b6000612d7082612223565b9150612d7b83612223565b9250828202612d8981612223565b91508282048414831517612da057612d9f6129e3565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612de182612223565b9150612dec83612223565b925082612dfc57612dfb612da7565b5b828204905092915050565b6000604082019050612e1c60008301856121f9565b612e29602083018461222d565b9392505050565b612e39816122bd565b8114612e4457600080fd5b50565b600081519050612e5681612e30565b92915050565b600060208284031215612e7257612e71612164565b5b6000612e8084828501612e47565b91505092915050565b7f46756e6473207472616e73666572206661696c65640000000000000000000000600082015250565b6000612ebf601583612a5a565b9150612eca82612e89565b602082019050919050565b60006020820190508181036000830152612eee81612eb2565b9050919050565b6000608082019050612f0a6000830187612919565b612f1760208301866121f9565b612f246040830185612952565b612f31606083018461222d565b95945050505050565b6000604082019050612f4f6000830185612919565b612f5c602083018461222d565b9392505050565b7f526576656e7565207472616e73666572206661696c6564000000000000000000600082015250565b6000612f99601783612a5a565b9150612fa482612f63565b602082019050919050565b60006020820190508181036000830152612fc881612f8c565b9050919050565b7f43616c63756c617465642077696e6e696e677320646f206e6f7420616464207560008201527f7000000000000000000000000000000000000000000000000000000000000000602082015250565b600061302b602183612a5a565b915061303682612fcf565b604082019050919050565b6000602082019050818103600083015261305a8161301e565b9050919050565b600081519050919050565b600081905092915050565b60005b8381101561309557808201518184015260208101905061307a565b60008484015250505050565b60006130ac82613061565b6130b6818561306c565b93506130c6818560208601613077565b80840191505092915050565b60006130de82846130a1565b915081905092915050565b7f546f6b656e207061796d656e74206661696c6564000000000000000000000000600082015250565b600061311f601483612a5a565b915061312a826130e9565b602082019050919050565b6000602082019050818103600083015261314e81613112565b9050919050565b7f5265766f6c7665722073697a6520746f6f20736d616c6c000000000000000000600082015250565b600061318b601783612a5a565b915061319682613155565b602082019050919050565b600060208201905081810360008301526131ba8161317e565b9050919050565b7f546f6f206d616e7920706c617965727320666f7220746869732073697a65207260008201527f65766f6c76657200000000000000000000000000000000000000000000000000602082015250565b600061321d602783612a5a565b9150613228826131c1565b604082019050919050565b6000602082019050818103600083015261324c81613210565b9050919050565b7f4d696e696d756d2062657420746f6f20736d616c6c0000000000000000000000600082015250565b6000613289601583612a5a565b915061329482613253565b602082019050919050565b600060208201905081810360008301526132b88161327c565b9050919050565b7f506c61796572732f62657473206c656e677468206d69736d6174636800000000600082015250565b60006132f5601c83612a5a565b9150613300826132bf565b602082019050919050565b60006020820190508181036000830152613324816132e8565b9050919050565b7f546865726520697320616c726561647920612067616d6520696e2070726f677260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613387602383612a5a565b91506133928261332b565b604082019050919050565b600060208201905081810360008301526133b68161337a565b9050919050565b7f42657420697320736d616c6c6572207468616e20746865206d696e696d756d00600082015250565b60006133f3601f83612a5a565b91506133fe826133bd565b602082019050919050565b60006020820190508181036000830152613422816133e6565b9050919050565b600060408201905061343e60008301856121f9565b61344b60208301846121f9565b9392505050565b60008151905061346181612406565b92915050565b60006020828403121561347d5761347c612164565b5b600061348b84828501613452565b91505092915050565b7f4e6f7420656e6f75676820616c6c6f77616e6365000000000000000000000000600082015250565b60006134ca601483612a5a565b91506134d582613494565b602082019050919050565b600060208201905081810360008301526134f9816134bd565b9050919050565b600060608201905061351560008301866121f9565b61352260208301856121f9565b61352f604083018461222d565b949350505050565b50565b600061354760008361306c565b915061355282613537565b600082019050919050565b60006135688261353a565b9150819050919050565b7f5061796d656e74204661696c6564000000000000000000000000000000000000600082015250565b60006135a8600e83612a5a565b91506135b382613572565b602082019050919050565b600060208201905081810360008301526135d78161359b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061363a602683612a5a565b9150613645826135de565b604082019050919050565b600060208201905081810360008301526136698161362d565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006136a6602083612a5a565b91506136b182613670565b602082019050919050565b600060208201905081810360008301526136d581613699565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220d505bc529d1ddd7e0179f2ec9de50fe322d7a1af4891cb138936f5ab3b5f5d9d64736f6c63430008130033000000000000000000000000296db651ecc9e19bdd0505e1d65582913ad6af4300000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000002bc000000000000000000000000000000000000000000000000000000000000012c000000000000000000000000851e5f3f6dcd5ab4fc0c03ff916defcaa25e92af

Deployed Bytecode

0x6080604052600436106101395760003560e01c8063c38a8afd116100ab578063d057fc1f1161006f578063d057fc1f146103e3578063e6b2603b14610420578063f2fde38b14610437578063f361971614610460578063fb235f34146104a1578063ff08aa49146104ca57610140565b8063c38a8afd14610300578063cb99e91f1461032b578063cdd8aa5914610354578063cea9d26f1461037d578063ceb7ec04146103a657610140565b8063715018a6116100fd578063715018a61461021857806388b7904d1461022f5780638da5cb5b14610258578063ab59ddc614610283578063addc831e146102ac578063c2412676146102d557610140565b8063144fa6d714610145578063444784251461016e57806353deb3d61461019957806363c42460146101c4578063658167311461020157610140565b3661014057005b600080fd5b34801561015157600080fd5b5061016c600480360381019061016791906121cc565b6104f5565b005b34801561017a57600080fd5b50610183610541565b6040516101909190612208565b60405180910390f35b3480156101a557600080fd5b506101ae610567565b6040516101bb919061223c565b60405180910390f35b3480156101d057600080fd5b506101eb60048036038101906101e69190612290565b61056d565b6040516101f891906122d8565b60405180910390f35b34801561020d57600080fd5b506102166105a0565b005b34801561022457600080fd5b5061022d610669565b005b34801561023b57600080fd5b5061025660048036038101906102519190612392565b61067d565b005b34801561026457600080fd5b5061026d611052565b60405161027a9190612208565b60405180910390f35b34801561028f57600080fd5b506102aa60048036038101906102a59190612432565b61107b565b005b3480156102b857600080fd5b506102d360048036038101906102ce9190612432565b61108d565b005b3480156102e157600080fd5b506102ea61109f565b6040516102f791906124be565b60405180910390f35b34801561030c57600080fd5b506103156110c5565b604051610322919061223c565b60405180910390f35b34801561033757600080fd5b50610352600480360381019061034d9190612290565b6110cb565b005b34801561036057600080fd5b5061037b60048036038101906103769190612432565b6112d9565b005b34801561038957600080fd5b506103a4600480360381019061039f91906124d9565b6112eb565b005b3480156103b257600080fd5b506103cd60048036038101906103c89190612774565b611435565b6040516103da91906128f7565b60405180910390f35b3480156103ef57600080fd5b5061040a60048036038101906104059190612432565b611b77565b6040516104179190612928565b60405180910390f35b34801561042c57600080fd5b50610435611bae565b005b34801561044357600080fd5b5061045e600480360381019061045991906121cc565b611c65565b005b34801561046c57600080fd5b5061048760048036038101906104829190612290565b611ce8565b604051610498959493929190612961565b60405180910390f35b3480156104ad57600080fd5b506104c860048036038101906104c391906121cc565b611d39565b005b3480156104d657600080fd5b506104df611d85565b6040516104ec919061223c565b60405180910390f35b6104fd611d8b565b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b6000600660008360070b60070b815260200190815260200160002060050160009054906101000a900460ff169050919050565b6105a8611d8b565b6000600780548060200260200160405190810160405280929190818152602001828054801561061c57602002820191906000526020600020906000905b82829054906101000a900460070b60070b815260200190600801906020826007010492830192600103820291508084116105e55790505b5050505050905060005b815181101561066557610652828281518110610645576106446129b4565b5b60200260200101516110cb565b808061065d90612a12565b915050610626565b5050565b610671611d8b565b61067b6000611e09565b565b610685611d8b565b61ffff80168361ffff16036106cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c690612add565b60405180910390fd5b6106d88461056d565b610717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070e90612b6f565b60405180910390fd5b6000600660008660070b60070b8152602001908152602001600020905080600301805490508461ffff1610610781576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077890612bdb565b60405180910390fd5b60018160030180549050116107cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c290612c47565b60405180910390fd5b838160050160016101000a81548161ffff021916908361ffff16021790555060008160050160006101000a81548160ff02191690831515021790555061081085611ecd565b6000600182600301805490506108269190612c67565b67ffffffffffffffff81111561083f5761083e612573565b5b60405190808252806020026020018201604052801561086d5781602001602082028036833780820191505090505b5090506000600183600301805490506108869190612c67565b67ffffffffffffffff81111561089f5761089e612573565b5b6040519080825280602002602001820160405280156108cd5781602001602082028036833780820191505090505b50905060008060005b85600301805490508161ffff161015610a10578861ffff168161ffff16146109fd57856003018161ffff1681548110610912576109116129b4565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16858361ffff1681518110610954576109536129b4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505080848361ffff16815181106109a6576109a56129b4565b5b602002602001019061ffff16908161ffff1681525050856004018161ffff16815481106109d6576109d56129b4565b5b9060005260206000200154836109ec9190612c9b565b925081806109f990612ccf565b9250505b8080610a0890612ccf565b9150506108d6565b5050600062018a88600454600554610a289190612c9b565b10610a68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5f90612d45565b60405180910390fd5b6000612710600554876004018b61ffff1681548110610a8a57610a896129b4565b5b9060005260206000200154610a9f9190612d65565b610aa99190612dd6565b90506000612710600454886004018c61ffff1681548110610acd57610acc6129b4565b5b9060005260206000200154610ae29190612d65565b610aec9190612dd6565b905060008082848a6004018e61ffff1681548110610b0d57610b0c6129b4565b5b9060005260206000200154610b229190612c67565b610b2c9190612c67565b905060005b88518161ffff161015610d83576000878b6004018a8461ffff1681518110610b5c57610b5b6129b4565b5b602002602001015161ffff1681548110610b7957610b786129b4565b5b906000526020600020015484610b8f9190612d65565b610b999190612dd6565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8b8461ffff1681518110610bf057610bef6129b4565b5b6020026020010151838e6004018d8761ffff1681518110610c1457610c136129b4565b5b602002602001015161ffff1681548110610c3157610c306129b4565b5b9060005260206000200154610c469190612c9b565b6040518363ffffffff1660e01b8152600401610c63929190612e07565b6020604051808303816000875af1158015610c82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca69190612e5c565b935083610ce8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdf90612ed5565b60405180910390fd5b7f6b5ed972057bb3f9c6b7b2ea6350bf7abde0e0c5f8a765c5dde8402bb2b6efd38f8b8461ffff1681518110610d2157610d206129b4565b5b60200260200101518b8561ffff1681518110610d4057610d3f6129b4565b5b602002602001015184604051610d599493929190612ef5565b60405180910390a18087610d6d9190612c9b565b9650508080610d7b90612ccf565b915050610b31565b5050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342966c68846040518263ffffffff1660e01b8152600401610de0919061223c565b600060405180830381600087803b158015610dfa57600080fd5b505af1158015610e0e573d6000803e3d6000fd5b505050507fbc03807cbae975b0551ce6caa7b86a1ff549b347e16440847a8c03140f59c27c8c84604051610e43929190612f3a565b60405180910390a1600083858a6004018e61ffff1681548110610e6957610e686129b4565b5b9060005260206000200154610e7e9190612c67565b610e889190612c67565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610f09929190612e07565b6020604051808303816000875af1158015610f28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4c9190612e5c565b915081610f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8590612faf565b60405180910390fd5b7f0f771b5d5a6b02378d0d1a6b6b371ac1e69759fb677e46109ae1bb55167ea7ad8d82604051610fbf929190612f3a565b60405180910390a1886004018c61ffff1681548110610fe157610fe06129b4565b5b9060005260206000200154818587610ff99190612c9b565b6110039190612c9b565b14611043576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103a90613041565b60405180910390fd5b50505050505050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611083611d8b565b8060038190555050565b611095611d8b565b8060058190555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b6110d3611d8b565b6110dc8161056d565b61111b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111290612b6f565b60405180910390fd5b6000600660008360070b60070b8152602001908152602001600020905060005b81600301805490508161ffff1610156112ae576000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb846003018461ffff16815481106111a8576111a76129b4565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856004018561ffff16815481106111ed576111ec6129b4565b5b90600052602060002001546040518363ffffffff1660e01b8152600401611215929190612e07565b6020604051808303816000875af1158015611234573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112589190612e5c565b90508061129a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129190612ed5565b60405180910390fd5b5080806112a690612ccf565b91505061113b565b5060008160050160006101000a81548160ff0219169083151502179055506112d582611ecd565b5050565b6112e1611d8b565b8060048190555050565b6112f3611d8b565b60008373ffffffffffffffffffffffffffffffffffffffff16838360405160240161131f929190612e07565b6040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516113a991906130d2565b6000604051808303816000865af19150503d80600081146113e6576040519150601f19603f3d011682016040523d82523d6000602084013e6113eb565b606091505b505090508061142f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142690613135565b60405180910390fd5b50505050565b606061143f611d8b565b6002861015611483576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147a906131a1565b60405180910390fd5b85835111156114c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114be90613233565b60405180910390fd5b60035485101561150c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115039061329f565b60405180910390fd5b8151835114611550576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115479061330b565b60405180910390fd5b6001835111611594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158b90612c47565b60405180910390fd5b61159d8761056d565b156115dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d49061339d565b60405180910390fd5b6000805b83518161ffff16101561168e5786848261ffff1681518110611606576116056129b4565b5b6020026020010151101561164f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164690613409565b60405180910390fd5b838161ffff1681518110611666576116656129b4565b5b6020026020010151826116799190612c9b565b9150808061168690612ccf565b9150506115e1565b5060005b83518161ffff161015611a0d57838161ffff16815181106116b6576116b56129b4565b5b6020026020010151826116c99190612c67565b915081848261ffff16815181106116e3576116e26129b4565b5b602002602001015111156117165781848261ffff1681518110611709576117086129b4565b5b6020026020010181815250505b838161ffff168151811061172d5761172c6129b4565b5b6020026020010151826117409190612c9b565b9150838161ffff1681518110611759576117586129b4565b5b6020026020010151600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e878461ffff16815181106117b6576117b56129b4565b5b6020026020010151306040518363ffffffff1660e01b81526004016117dc929190613429565b602060405180830381865afa1580156117f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181d9190613467565b101561185e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611855906134e0565b60405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd878461ffff16815181106118b5576118b46129b4565b5b602002602001015130888661ffff16815181106118d5576118d46129b4565b5b60200260200101516040518463ffffffff1660e01b81526004016118fb93929190613500565b6020604051808303816000875af115801561191a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193e9190612e5c565b905080611980576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197790612ed5565b60405180910390fd5b7f4ca2b6f8214bfec8b3a7c06707618645a8e77d171b22a4eba1d8811fdc30bfdb8a878461ffff16815181106119b9576119b86129b4565b5b602002602001015184888661ffff16815181106119d9576119d86129b4565b5b60200260200101516040516119f19493929190612ef5565b60405180910390a1508080611a0590612ccf565b915050611692565b50611a16612020565b87816000018181525050868160200181815250508581604001818152505084816060018190525083816080018190525060018160a001901515908115158152505080600660008b60070b60070b81526020019081526020016000206000820151816000015560208201518160010155604082015181600201556060820151816003019080519060200190611aab929190612066565b506080820151816004019080519060200190611ac89291906120f0565b5060a08201518160050160006101000a81548160ff02191690831515021790555060c08201518160050160016101000a81548161ffff021916908361ffff16021790555090505060078990806001815401808255809150506001900390600052602060002090600491828204019190066008029091909190916101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff16021790555083925050509695505050505050565b60078181548110611b8757600080fd5b9060005260206000209060049182820401919006600802915054906101000a900460070b81565b611bb6611d8b565b60003373ffffffffffffffffffffffffffffffffffffffff1647604051611bdc9061355d565b60006040518083038185875af1925050503d8060008114611c19576040519150601f19603f3d011682016040523d82523d6000602084013e611c1e565b606091505b5050905080611c62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c59906135be565b60405180910390fd5b50565b611c6d611d8b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd390613650565b60405180910390fd5b611ce581611e09565b50565b60066020528060005260406000206000915090508060000154908060010154908060020154908060050160009054906101000a900460ff16908060050160019054906101000a900461ffff16905085565b611d41611d8b565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60045481565b611d93612018565b73ffffffffffffffffffffffffffffffffffffffff16611db1611052565b73ffffffffffffffffffffffffffffffffffffffff1614611e07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfe906136bc565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60005b600780549050811015612014578160070b60078281548110611ef557611ef46129b4565b5b90600052602060002090600491828204019190066008029054906101000a900460070b60070b036120015760076001600780549050611f349190612c67565b81548110611f4557611f446129b4565b5b90600052602060002090600491828204019190066008029054906101000a900460070b60078281548110611f7c57611f7b6129b4565b5b90600052602060002090600491828204019190066008026101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055506007805480611fcc57611fcb6136dc565b5b60019003818190600052602060002090600491828204019190066008026101000a81549067ffffffffffffffff021916905590555b808061200c90612a12565b915050611ed0565b5050565b600033905090565b6040518060e001604052806000815260200160008152602001600080191681526020016060815260200160608152602001600015158152602001600061ffff1681525090565b8280548282559060005260206000209081019282156120df579160200282015b828111156120de5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190612086565b5b5090506120ec919061213d565b5090565b82805482825590600052602060002090810192821561212c579160200282015b8281111561212b578251825591602001919060010190612110565b5b509050612139919061213d565b5090565b5b8082111561215657600081600090555060010161213e565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006121998261216e565b9050919050565b6121a98161218e565b81146121b457600080fd5b50565b6000813590506121c6816121a0565b92915050565b6000602082840312156121e2576121e1612164565b5b60006121f0848285016121b7565b91505092915050565b6122028161218e565b82525050565b600060208201905061221d60008301846121f9565b92915050565b6000819050919050565b61223681612223565b82525050565b6000602082019050612251600083018461222d565b92915050565b60008160070b9050919050565b61226d81612257565b811461227857600080fd5b50565b60008135905061228a81612264565b92915050565b6000602082840312156122a6576122a5612164565b5b60006122b48482850161227b565b91505092915050565b60008115159050919050565b6122d2816122bd565b82525050565b60006020820190506122ed60008301846122c9565b92915050565b600061ffff82169050919050565b61230a816122f3565b811461231557600080fd5b50565b60008135905061232781612301565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126123525761235161232d565b5b8235905067ffffffffffffffff81111561236f5761236e612332565b5b60208301915083602082028301111561238b5761238a612337565b5b9250929050565b600080600080606085870312156123ac576123ab612164565b5b60006123ba8782880161227b565b94505060206123cb87828801612318565b935050604085013567ffffffffffffffff8111156123ec576123eb612169565b5b6123f88782880161233c565b925092505092959194509250565b61240f81612223565b811461241a57600080fd5b50565b60008135905061242c81612406565b92915050565b60006020828403121561244857612447612164565b5b60006124568482850161241d565b91505092915050565b6000819050919050565b600061248461247f61247a8461216e565b61245f565b61216e565b9050919050565b600061249682612469565b9050919050565b60006124a88261248b565b9050919050565b6124b88161249d565b82525050565b60006020820190506124d360008301846124af565b92915050565b6000806000606084860312156124f2576124f1612164565b5b6000612500868287016121b7565b9350506020612511868287016121b7565b92505060406125228682870161241d565b9150509250925092565b6000819050919050565b61253f8161252c565b811461254a57600080fd5b50565b60008135905061255c81612536565b92915050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6125ab82612562565b810181811067ffffffffffffffff821117156125ca576125c9612573565b5b80604052505050565b60006125dd61215a565b90506125e982826125a2565b919050565b600067ffffffffffffffff82111561260957612608612573565b5b602082029050602081019050919050565b600061262d612628846125ee565b6125d3565b905080838252602082019050602084028301858111156126505761264f612337565b5b835b81811015612679578061266588826121b7565b845260208401935050602081019050612652565b5050509392505050565b600082601f8301126126985761269761232d565b5b81356126a884826020860161261a565b91505092915050565b600067ffffffffffffffff8211156126cc576126cb612573565b5b602082029050602081019050919050565b60006126f06126eb846126b1565b6125d3565b9050808382526020820190506020840283018581111561271357612712612337565b5b835b8181101561273c5780612728888261241d565b845260208401935050602081019050612715565b5050509392505050565b600082601f83011261275b5761275a61232d565b5b813561276b8482602086016126dd565b91505092915050565b60008060008060008060c0878903121561279157612790612164565b5b600061279f89828a0161227b565b96505060206127b089828a0161241d565b95505060406127c189828a0161241d565b94505060606127d289828a0161254d565b935050608087013567ffffffffffffffff8111156127f3576127f2612169565b5b6127ff89828a01612683565b92505060a087013567ffffffffffffffff8111156128205761281f612169565b5b61282c89828a01612746565b9150509295509295509295565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61286e81612223565b82525050565b60006128808383612865565b60208301905092915050565b6000602082019050919050565b60006128a482612839565b6128ae8185612844565b93506128b983612855565b8060005b838110156128ea5781516128d18882612874565b97506128dc8361288c565b9250506001810190506128bd565b5085935050505092915050565b600060208201905081810360008301526129118184612899565b905092915050565b61292281612257565b82525050565b600060208201905061293d6000830184612919565b92915050565b61294c8161252c565b82525050565b61295b816122f3565b82525050565b600060a082019050612976600083018861222d565b612983602083018761222d565b6129906040830186612943565b61299d60608301856122c9565b6129aa6080830184612952565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612a1d82612223565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612a4f57612a4e6129e3565b5b600182019050919050565b600082825260208201905092915050565b7f4c6f73657220696e6465782073686f756c646e2774206265207468652073656e60008201527f74696e656c2076616c7565000000000000000000000000000000000000000000602082015250565b6000612ac7602b83612a5a565b9150612ad282612a6b565b604082019050919050565b60006020820190508181036000830152612af681612aba565b9050919050565b7f4e6f2067616d6520696e2070726f677265737320666f7220746869732054656c60008201527f656772616d206368617420494400000000000000000000000000000000000000602082015250565b6000612b59602d83612a5a565b9150612b6482612afd565b604082019050919050565b60006020820190508181036000830152612b8881612b4c565b9050919050565b7f4c6f73657220696e646578206f7574206f662072616e67650000000000000000600082015250565b6000612bc5601883612a5a565b9150612bd082612b8f565b602082019050919050565b60006020820190508181036000830152612bf481612bb8565b9050919050565b7f4e6f7420656e6f75676820706c61796572730000000000000000000000000000600082015250565b6000612c31601283612a5a565b9150612c3c82612bfb565b602082019050919050565b60006020820190508181036000830152612c6081612c24565b9050919050565b6000612c7282612223565b9150612c7d83612223565b9250828203905081811115612c9557612c946129e3565b5b92915050565b6000612ca682612223565b9150612cb183612223565b9250828201905080821115612cc957612cc86129e3565b5b92915050565b6000612cda826122f3565b915061ffff8203612cee57612ced6129e3565b5b600182019050919050565b7f546f74616c2066656573206d757374206265203c203130302500000000000000600082015250565b6000612d2f601983612a5a565b9150612d3a82612cf9565b602082019050919050565b60006020820190508181036000830152612d5e81612d22565b9050919050565b6000612d7082612223565b9150612d7b83612223565b9250828202612d8981612223565b91508282048414831517612da057612d9f6129e3565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612de182612223565b9150612dec83612223565b925082612dfc57612dfb612da7565b5b828204905092915050565b6000604082019050612e1c60008301856121f9565b612e29602083018461222d565b9392505050565b612e39816122bd565b8114612e4457600080fd5b50565b600081519050612e5681612e30565b92915050565b600060208284031215612e7257612e71612164565b5b6000612e8084828501612e47565b91505092915050565b7f46756e6473207472616e73666572206661696c65640000000000000000000000600082015250565b6000612ebf601583612a5a565b9150612eca82612e89565b602082019050919050565b60006020820190508181036000830152612eee81612eb2565b9050919050565b6000608082019050612f0a6000830187612919565b612f1760208301866121f9565b612f246040830185612952565b612f31606083018461222d565b95945050505050565b6000604082019050612f4f6000830185612919565b612f5c602083018461222d565b9392505050565b7f526576656e7565207472616e73666572206661696c6564000000000000000000600082015250565b6000612f99601783612a5a565b9150612fa482612f63565b602082019050919050565b60006020820190508181036000830152612fc881612f8c565b9050919050565b7f43616c63756c617465642077696e6e696e677320646f206e6f7420616464207560008201527f7000000000000000000000000000000000000000000000000000000000000000602082015250565b600061302b602183612a5a565b915061303682612fcf565b604082019050919050565b6000602082019050818103600083015261305a8161301e565b9050919050565b600081519050919050565b600081905092915050565b60005b8381101561309557808201518184015260208101905061307a565b60008484015250505050565b60006130ac82613061565b6130b6818561306c565b93506130c6818560208601613077565b80840191505092915050565b60006130de82846130a1565b915081905092915050565b7f546f6b656e207061796d656e74206661696c6564000000000000000000000000600082015250565b600061311f601483612a5a565b915061312a826130e9565b602082019050919050565b6000602082019050818103600083015261314e81613112565b9050919050565b7f5265766f6c7665722073697a6520746f6f20736d616c6c000000000000000000600082015250565b600061318b601783612a5a565b915061319682613155565b602082019050919050565b600060208201905081810360008301526131ba8161317e565b9050919050565b7f546f6f206d616e7920706c617965727320666f7220746869732073697a65207260008201527f65766f6c76657200000000000000000000000000000000000000000000000000602082015250565b600061321d602783612a5a565b9150613228826131c1565b604082019050919050565b6000602082019050818103600083015261324c81613210565b9050919050565b7f4d696e696d756d2062657420746f6f20736d616c6c0000000000000000000000600082015250565b6000613289601583612a5a565b915061329482613253565b602082019050919050565b600060208201905081810360008301526132b88161327c565b9050919050565b7f506c61796572732f62657473206c656e677468206d69736d6174636800000000600082015250565b60006132f5601c83612a5a565b9150613300826132bf565b602082019050919050565b60006020820190508181036000830152613324816132e8565b9050919050565b7f546865726520697320616c726561647920612067616d6520696e2070726f677260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613387602383612a5a565b91506133928261332b565b604082019050919050565b600060208201905081810360008301526133b68161337a565b9050919050565b7f42657420697320736d616c6c6572207468616e20746865206d696e696d756d00600082015250565b60006133f3601f83612a5a565b91506133fe826133bd565b602082019050919050565b60006020820190508181036000830152613422816133e6565b9050919050565b600060408201905061343e60008301856121f9565b61344b60208301846121f9565b9392505050565b60008151905061346181612406565b92915050565b60006020828403121561347d5761347c612164565b5b600061348b84828501613452565b91505092915050565b7f4e6f7420656e6f75676820616c6c6f77616e6365000000000000000000000000600082015250565b60006134ca601483612a5a565b91506134d582613494565b602082019050919050565b600060208201905081810360008301526134f9816134bd565b9050919050565b600060608201905061351560008301866121f9565b61352260208301856121f9565b61352f604083018461222d565b949350505050565b50565b600061354760008361306c565b915061355282613537565b600082019050919050565b60006135688261353a565b9150819050919050565b7f5061796d656e74204661696c6564000000000000000000000000000000000000600082015250565b60006135a8600e83612a5a565b91506135b382613572565b602082019050919050565b600060208201905081810360008301526135d78161359b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061363a602683612a5a565b9150613645826135de565b604082019050919050565b600060208201905081810360008301526136698161362d565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006136a6602083612a5a565b91506136b182613670565b602082019050919050565b600060208201905081810360008301526136d581613699565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220d505bc529d1ddd7e0179f2ec9de50fe322d7a1af4891cb138936f5ab3b5f5d9d64736f6c63430008130033

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

000000000000000000000000296db651ecc9e19bdd0505e1d65582913ad6af4300000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000002bc000000000000000000000000000000000000000000000000000000000000012c000000000000000000000000851e5f3f6dcd5ab4fc0c03ff916defcaa25e92af

-----Decoded View---------------
Arg [0] : _Token (address): 0x296dB651EcC9E19bDd0505E1D65582913ad6Af43
Arg [1] : _minimumBet (uint256): 1000
Arg [2] : _revenueBps (uint256): 700
Arg [3] : _burnBps (uint256): 300
Arg [4] : _revenueWallet (address): 0x851E5f3F6dCd5Ab4fc0C03FF916deFcAA25e92af

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000296db651ecc9e19bdd0505e1d65582913ad6af43
Arg [1] : 00000000000000000000000000000000000000000000000000000000000003e8
Arg [2] : 00000000000000000000000000000000000000000000000000000000000002bc
Arg [3] : 000000000000000000000000000000000000000000000000000000000000012c
Arg [4] : 000000000000000000000000851e5f3f6dcd5ab4fc0c03ff916defcaa25e92af


Deployed Bytecode Sourcemap

4674:10766:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15077:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4724:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4966:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6706:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14061:324;;;;;;;;;;;;;:::i;:::-;;3021:103;;;;;;;;;;;;;:::i;:::-;;10500:2860;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2373:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15183:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14978:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4761:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4789:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13534:459;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15292:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14572:272;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7720:2156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5216:29;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14393:171;;;;;;;;;;;;;:::i;:::-;;3279:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5043:35;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;14852:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4879:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15077:94;2259:13;:11;:13::i;:::-;15156:6:::1;15141:5;;:22;;;;;;;;;;;;;;;;;;15077:94:::0;:::o;4724:28::-;;;;;;;;;;;;;:::o;4966:22::-;;;;:::o;6706:123::-;6770:4;6794:5;:16;6800:9;6794:16;;;;;;;;;;;;;;;:27;;;;;;;;;;;;6787:34;;6706:123;;;:::o;14061:324::-;2259:13;:11;:13::i;:::-;14211:30:::1;14244:14;14211:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14274:9;14269:109;14293:15;:22;14289:1;:26;14269:109;;;14337:29;14347:15;14363:1;14347:18;;;;;;;;:::i;:::-;;;;;;;;14337:9;:29::i;:::-;14317:3;;;;;:::i;:::-;;;;14269:109;;;;14103:282;14061:324::o:0;3021:103::-;2259:13;:11;:13::i;:::-;3086:30:::1;3113:1;3086:18;:30::i;:::-;3021:103::o:0;10500:2860::-;2259:13;:11;:13::i;:::-;10642:16:::1;10632:26:::0;::::1;:6;:26;;::::0;10624:82:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10725:27;10742:9;10725:16;:27::i;:::-;10717:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;10815:14;10832:5;:16;10838:9;10832:16;;;;;;;;;;;;;;;10815:33;;10878:1;:9;;:16;;;;10869:6;:25;;;10861:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;10961:1;10942;:9;;:16;;;;:20;10934:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;11008:6;10998:1;:7;;;:16;;;;;;;;;;;;;;;;;;11040:5;11025:1;:12;;;:20;;;;;;;;;;;;;;;;;;11056:21;11067:9;11056:10;:21::i;:::-;11118:24;11178:1;11159;:9;;:16;;;;:20;;;;:::i;:::-;11145:35;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11118:62;;11191:34;11260:1;11241;:9;;:16;;;;:20;;;;:::i;:::-;11228:34;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11191:71;;11318:23;11439:17:::0;11480:8:::1;11475:317;11498:1;:9;;:16;;;;11494:1;:20;;;11475:317;;;11549:6;11544:11;;:1;:11;;;11540:237;;11602:1;:9;;11612:1;11602:12;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11580:7;11588:10;11580:19;;;;;;;;;;:::i;:::-;;;;;;;:34;;;;;;;;;::::0;::::1;11670:1;11637:18;11656:10;11637:30;;;;;;;;;;:::i;:::-;;;;;;;:34;;;;;;;;;::::0;::::1;11713:1;:6;;11720:1;11713:9;;;;;;;;;;:::i;:::-;;;;;;;;;;11694:28;;;;;:::i;:::-;;;11745:12;;;;;:::i;:::-;;;;11540:237;11516:3;;;;;:::i;:::-;;;;11475:317;;;;11424:379;11815:25;11886:7;11873:10;;11863:7;;:20;;;;:::i;:::-;:30;11855:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11977:17;12024:6;12014:7;;11997:1;:6;;12004;11997:14;;;;;;;;;;:::i;:::-;;;;;;;;;;:24;;;;:::i;:::-;:33;;;;:::i;:::-;11977:53;;12225:26;12284:6;12271:10;;12254:1;:6;;12261;12254:14;;;;;;;;;;:::i;:::-;;;;;;;;;;:27;;;;:::i;:::-;:36;;;;:::i;:::-;12225:65;;12303:11;12340:21:::0;12393:18:::1;12381:9;12364:1;:6;;12371;12364:14;;;;;;;;;;:::i;:::-;;;;;;;;;;:26;;;;:::i;:::-;:47;;;;:::i;:::-;12340:71;;12433:8;12428:453;12451:7;:14;12447:1;:18;;;12428:453;;;12491:16;12558:15;12526:1;:6;;12533:18;12552:1;12533:21;;;;;;;;;;:::i;:::-;;;;;;;;12526:29;;;;;;;;;;:::i;:::-;;;;;;;;;;12510:13;:45;;;;:::i;:::-;:63;;;;:::i;:::-;12491:82;;12603:5;;;;;;;;;;;:14;;;12618:7;12626:1;12618:10;;;;;;;;;;:::i;:::-;;;;;;;;12662:8;12630:1;:6;;12637:18;12656:1;12637:21;;;;;;;;;;:::i;:::-;;;;;;;;12630:29;;;;;;;;;;:::i;:::-;;;;;;;;;;:40;;;;:::i;:::-;12603:68;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12594:77;;12698:6;12690:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;12756:59;12760:9;12771:7;12779:1;12771:10;;;;;;;;;;:::i;:::-;;;;;;;;12783:18;12802:1;12783:21;;;;;;;;;;:::i;:::-;;;;;;;;12806:8;12756:59;;;;;;;;;:::i;:::-;;;;;;;;12857:8;12836:29;;;;;:::i;:::-;;;12472:409;12467:3;;;;;:::i;:::-;;;;12428:453;;;;12325:567;12904:5;;;;;;;;;;;:10;;;12915:9;12904:21;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12941:26;12946:9;12957;12941:26;;;;;;;:::i;:::-;;;;;;;;12980:24;13044:9;13024:17;13007:1;:6;;13014;13007:14;;;;;;;;;;:::i;:::-;;;;;;;;;;:34;;;;:::i;:::-;:46;;;;:::i;:::-;12980:73;;13073:5;;;;;;;;;;;:14;;;13088:13;;;;;;;;;;;13103:16;13073:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13064:56;;13139:6;13131:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;13189:36;13197:9;13208:16;13189:36;;;;;;;:::i;:::-;;;;;;;;13300:1;:6;;13307;13300:14;;;;;;;;;;:::i;:::-;;;;;;;;;;13279:16;13267:9;13247:17;:29;;;;:::i;:::-;:48;;;;:::i;:::-;13246:68;13238:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;10613:2747;;;;;;;;;10500:2860:::0;;;;:::o;2373:87::-;2419:7;2446:6;;;;;;;;;;;2439:13;;2373:87;:::o;15183:101::-;2259:13;:11;:13::i;:::-;15265:11:::1;15252:10;:24;;;;15183:101:::0;:::o;14978:91::-;2259:13;:11;:13::i;:::-;15053:8:::1;15043:7;:18;;;;14978:91:::0;:::o;4761:19::-;;;;;;;;;;;;;:::o;4789:25::-;;;;:::o;13534:459::-;2259:13;:11;:13::i;:::-;13606:27:::1;13623:9;13606:16;:27::i;:::-;13598:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13694:14;13711:5;:16;13717:9;13711:16;;;;;;;;;;;;;;;13694:33;;13745:8;13740:181;13763:1;:9;;:16;;;;13759:1;:20;;;13740:181;;;13801:11;13815:5;;;;;;;;;;;:14;;;13830:1;:9;;13840:1;13830:12;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13844:1;:6;;13851:1;13844:9;;;;;;;;;;:::i;:::-;;;;;;;;;;13815:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13801:53;;13877:6;13869:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;13786:135;13781:3;;;;;:::i;:::-;;;;13740:181;;;;13948:5;13933:1;:12;;;:20;;;;;;;;;;;;;;;;;;13964:21;13975:9;13964:10;:21::i;:::-;13587:406;13534:459:::0;:::o;15292:103::-;2259:13;:11;:13::i;:::-;15376:11:::1;15363:10;:24;;;;15292:103:::0;:::o;14572:272::-;2259:13;:11;:13::i;:::-;14672:12:::1;14698:6;14690:20;;14765:9;14776:7;14711:73;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14690:95;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14671:114;;;14804:7;14796:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;14660:184;14572:272:::0;;;:::o;7720:2156::-;7961:16;2259:13;:11;:13::i;:::-;8015:1:::1;7998:13;:18;;7990:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;8082:13;8063:8;:15;:32;;8055:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;8169:10;;8158:7;:21;;8150:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;8243:5;:12;8224:8;:15;:31;8216:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;8325:1;8307:8;:15;:19;8299:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;8369:27;8386:9;8369:16;:27::i;:::-;8368:28;8360:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;8791:16;8827:8:::0;8822:167:::1;8845:5;:12;8841:1;:16;;;8822:167;;;8899:7;8887:5;8893:1;8887:8;;;;;;;;;;:::i;:::-;;;;;;;;:19;;8879:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;8969:5;8975:1;8969:8;;;;;;;;;;:::i;:::-;;;;;;;;8957:20;;;;;:::i;:::-;;;8859:3;;;;;:::i;:::-;;;;8822:167;;;;9004:8;8999:524;9022:5;:12;9018:1;:16;;;8999:524;;;9068:5;9074:1;9068:8;;;;;;;;;;:::i;:::-;;;;;;;;9056:20;;;;;:::i;:::-;;;9106:8;9095:5;9101:1;9095:8;;;;;;;;;;:::i;:::-;;;;;;;;:19;9091:79;;;9146:8;9135:5;9141:1;9135:8;;;;;;;;;;:::i;:::-;;;;;;;:19;;;::::0;::::1;9091:79;9196:5;9202:1;9196:8;;;;;;;;;;:::i;:::-;;;;;;;;9184:20;;;;;:::i;:::-;;;9276:5;9282:1;9276:8;;;;;;;;;;:::i;:::-;;;;;;;;9229:5;;;;;;;;;;;:15;;;9245:8;9254:1;9245:11;;;;;;;;;;:::i;:::-;;;;;;;;9266:4;9229:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:55;;9221:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;9324:11;9338:5;;;;;;;;;;;:18;;;9357:8;9366:1;9357:11;;;;;;;;;;:::i;:::-;;;;;;;;9378:4;9385:5;9391:1;9385:8;;;;;;;;;;:::i;:::-;;;;;;;;9338:56;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9324:70;;9417:6;9409:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;9471;9475:9;9486:8;9495:1;9486:11;;;;;;;;;;:::i;:::-;;;;;;;;9499:1;9502:5;9508:1;9502:8;;;;;;;;;;:::i;:::-;;;;;;;;9471:40;;;;;;;;;:::i;:::-;;;;;;;;9041:482;9036:3;;;;;:::i;:::-;;;;8999:524;;;;9535:13;;:::i;:::-;9576;9559:1;:14;;:30;;;::::0;::::1;9611:7;9600:1;:8;;:18;;;::::0;::::1;9658:25;9629:1;:26;;:54;;;::::0;::::1;9706:8;9694:1;:9;;:20;;;;9734:5;9725:1;:6;;:14;;;;9765:4;9750:1;:12;;:19;;;;;;;;;::::0;::::1;9801:1;9782:5;:16;9788:9;9782:16;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9813:14;9833:9;9813:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9863:5;9856:12;;;;7720:2156:::0;;;;;;;;:::o;5216:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14393:171::-;2259:13;:11;:13::i;:::-;14447:7:::1;14467:10;14459:24;;14491:21;14459:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14446:71;;;14536:2;14528:28;;;;;;;;;;;;:::i;:::-;;;;;;;;;14435:129;14393:171::o:0;3279:201::-;2259:13;:11;:13::i;:::-;3388:1:::1;3368:22;;:8;:22;;::::0;3360:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3444:28;3463:8;3444:18;:28::i;:::-;3279:201:::0;:::o;5043:35::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14852:118::-;2259:13;:11;:13::i;:::-;14948:14:::1;14932:13;;:30;;;;;;;;;;;;;;;;;;14852:118:::0;:::o;4879:25::-;;;;:::o;2538:132::-;2613:12;:10;:12::i;:::-;2602:23;;:7;:5;:7::i;:::-;:23;;;2594:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2538:132::o;3640:191::-;3714:16;3733:6;;;;;;;;;;;3714:25;;3759:8;3750:6;;:17;;;;;;;;;;;;;;;;;;3814:8;3783:40;;3804:8;3783:40;;;;;;;;;;;;3703:128;3640:191;:::o;6962:313::-;7024:9;7019:249;7043:14;:21;;;;7039:1;:25;7019:249;;;7111:9;7090:30;;:14;7105:1;7090:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;7086:171;;7161:14;7200:1;7176:14;:21;;;;:25;;;;:::i;:::-;7161:41;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7141:14;7156:1;7141:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:61;;;;;;;;;;;;;;;;;;;;7221:14;:20;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7086:171;7066:3;;;;;:::i;:::-;;;;7019:249;;;;6962:313;:::o;1581:98::-;1634:7;1661:10;1654:17;;1581:98;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::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:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:118::-;1263:24;1281:5;1263:24;:::i;:::-;1258:3;1251:37;1176:118;;:::o;1300:222::-;1393:4;1431:2;1420:9;1416:18;1408:26;;1444:71;1512:1;1501:9;1497:17;1488:6;1444:71;:::i;:::-;1300:222;;;;:::o;1528:77::-;1565:7;1594:5;1583:16;;1528:77;;;:::o;1611:118::-;1698:24;1716:5;1698:24;:::i;:::-;1693:3;1686:37;1611:118;;:::o;1735:222::-;1828:4;1866:2;1855:9;1851:18;1843:26;;1879:71;1947:1;1936:9;1932:17;1923:6;1879:71;:::i;:::-;1735:222;;;;:::o;1963:90::-;1998:7;2041:5;2038:1;2027:20;2016:31;;1963:90;;;:::o;2059:118::-;2130:22;2146:5;2130:22;:::i;:::-;2123:5;2120:33;2110:61;;2167:1;2164;2157:12;2110:61;2059:118;:::o;2183:135::-;2227:5;2265:6;2252:20;2243:29;;2281:31;2306:5;2281:31;:::i;:::-;2183:135;;;;:::o;2324:325::-;2381:6;2430:2;2418:9;2409:7;2405:23;2401:32;2398:119;;;2436:79;;:::i;:::-;2398:119;2556:1;2581:51;2624:7;2615:6;2604:9;2600:22;2581:51;:::i;:::-;2571:61;;2527:115;2324:325;;;;:::o;2655:90::-;2689:7;2732:5;2725:13;2718:21;2707:32;;2655:90;;;:::o;2751:109::-;2832:21;2847:5;2832:21;:::i;:::-;2827:3;2820:34;2751:109;;:::o;2866:210::-;2953:4;2991:2;2980:9;2976:18;2968:26;;3004:65;3066:1;3055:9;3051:17;3042:6;3004:65;:::i;:::-;2866:210;;;;:::o;3082:89::-;3118:7;3158:6;3151:5;3147:18;3136:29;;3082:89;;;:::o;3177:120::-;3249:23;3266:5;3249:23;:::i;:::-;3242:5;3239:34;3229:62;;3287:1;3284;3277:12;3229:62;3177:120;:::o;3303:137::-;3348:5;3386:6;3373:20;3364:29;;3402:32;3428:5;3402:32;:::i;:::-;3303:137;;;;:::o;3446:117::-;3555:1;3552;3545:12;3569:117;3678:1;3675;3668:12;3692:117;3801:1;3798;3791:12;3831:580;3916:8;3926:6;3976:3;3969:4;3961:6;3957:17;3953:27;3943:122;;3984:79;;:::i;:::-;3943:122;4097:6;4084:20;4074:30;;4127:18;4119:6;4116:30;4113:117;;;4149:79;;:::i;:::-;4113:117;4263:4;4255:6;4251:17;4239:29;;4317:3;4309:4;4301:6;4297:17;4287:8;4283:32;4280:41;4277:128;;;4324:79;;:::i;:::-;4277:128;3831:580;;;;;:::o;4417:867::-;4530:6;4538;4546;4554;4603:2;4591:9;4582:7;4578:23;4574:32;4571:119;;;4609:79;;:::i;:::-;4571:119;4729:1;4754:51;4797:7;4788:6;4777:9;4773:22;4754:51;:::i;:::-;4744:61;;4700:115;4854:2;4880:52;4924:7;4915:6;4904:9;4900:22;4880:52;:::i;:::-;4870:62;;4825:117;5009:2;4998:9;4994:18;4981:32;5040:18;5032:6;5029:30;5026:117;;;5062:79;;:::i;:::-;5026:117;5175:92;5259:7;5250:6;5239:9;5235:22;5175:92;:::i;:::-;5157:110;;;;4952:325;4417:867;;;;;;;:::o;5290:122::-;5363:24;5381:5;5363:24;:::i;:::-;5356:5;5353:35;5343:63;;5402:1;5399;5392:12;5343:63;5290:122;:::o;5418:139::-;5464:5;5502:6;5489:20;5480:29;;5518:33;5545:5;5518:33;:::i;:::-;5418:139;;;;:::o;5563:329::-;5622:6;5671:2;5659:9;5650:7;5646:23;5642:32;5639:119;;;5677:79;;:::i;:::-;5639:119;5797:1;5822:53;5867:7;5858:6;5847:9;5843:22;5822:53;:::i;:::-;5812:63;;5768:117;5563:329;;;;:::o;5898:60::-;5926:3;5947:5;5940:12;;5898:60;;;:::o;5964:142::-;6014:9;6047:53;6065:34;6074:24;6092:5;6074:24;:::i;:::-;6065:34;:::i;:::-;6047:53;:::i;:::-;6034:66;;5964:142;;;:::o;6112:126::-;6162:9;6195:37;6226:5;6195:37;:::i;:::-;6182:50;;6112:126;;;:::o;6244:140::-;6308:9;6341:37;6372:5;6341:37;:::i;:::-;6328:50;;6244:140;;;:::o;6390:159::-;6491:51;6536:5;6491:51;:::i;:::-;6486:3;6479:64;6390:159;;:::o;6555:250::-;6662:4;6700:2;6689:9;6685:18;6677:26;;6713:85;6795:1;6784:9;6780:17;6771:6;6713:85;:::i;:::-;6555:250;;;;:::o;6811:619::-;6888:6;6896;6904;6953:2;6941:9;6932:7;6928:23;6924:32;6921:119;;;6959:79;;:::i;:::-;6921:119;7079:1;7104:53;7149:7;7140:6;7129:9;7125:22;7104:53;:::i;:::-;7094:63;;7050:117;7206:2;7232:53;7277:7;7268:6;7257:9;7253:22;7232:53;:::i;:::-;7222:63;;7177:118;7334:2;7360:53;7405:7;7396:6;7385:9;7381:22;7360:53;:::i;:::-;7350:63;;7305:118;6811:619;;;;;:::o;7436:77::-;7473:7;7502:5;7491:16;;7436:77;;;:::o;7519:122::-;7592:24;7610:5;7592:24;:::i;:::-;7585:5;7582:35;7572:63;;7631:1;7628;7621:12;7572:63;7519:122;:::o;7647:139::-;7693:5;7731:6;7718:20;7709:29;;7747:33;7774:5;7747:33;:::i;:::-;7647:139;;;;:::o;7792:102::-;7833:6;7884:2;7880:7;7875:2;7868:5;7864:14;7860:28;7850:38;;7792:102;;;:::o;7900:180::-;7948:77;7945:1;7938:88;8045:4;8042:1;8035:15;8069:4;8066:1;8059:15;8086:281;8169:27;8191:4;8169:27;:::i;:::-;8161:6;8157:40;8299:6;8287:10;8284:22;8263:18;8251:10;8248:34;8245:62;8242:88;;;8310:18;;:::i;:::-;8242:88;8350:10;8346:2;8339:22;8129:238;8086:281;;:::o;8373:129::-;8407:6;8434:20;;:::i;:::-;8424:30;;8463:33;8491:4;8483:6;8463:33;:::i;:::-;8373:129;;;:::o;8508:311::-;8585:4;8675:18;8667:6;8664:30;8661:56;;;8697:18;;:::i;:::-;8661:56;8747:4;8739:6;8735:17;8727:25;;8807:4;8801;8797:15;8789:23;;8508:311;;;:::o;8842:710::-;8938:5;8963:81;8979:64;9036:6;8979:64;:::i;:::-;8963:81;:::i;:::-;8954:90;;9064:5;9093:6;9086:5;9079:21;9127:4;9120:5;9116:16;9109:23;;9180:4;9172:6;9168:17;9160:6;9156:30;9209:3;9201:6;9198:15;9195:122;;;9228:79;;:::i;:::-;9195:122;9343:6;9326:220;9360:6;9355:3;9352:15;9326:220;;;9435:3;9464:37;9497:3;9485:10;9464:37;:::i;:::-;9459:3;9452:50;9531:4;9526:3;9522:14;9515:21;;9402:144;9386:4;9381:3;9377:14;9370:21;;9326:220;;;9330:21;8944:608;;8842:710;;;;;:::o;9575:370::-;9646:5;9695:3;9688:4;9680:6;9676:17;9672:27;9662:122;;9703:79;;:::i;:::-;9662:122;9820:6;9807:20;9845:94;9935:3;9927:6;9920:4;9912:6;9908:17;9845:94;:::i;:::-;9836:103;;9652:293;9575:370;;;;:::o;9951:311::-;10028:4;10118:18;10110:6;10107:30;10104:56;;;10140:18;;:::i;:::-;10104:56;10190:4;10182:6;10178:17;10170:25;;10250:4;10244;10240:15;10232:23;;9951:311;;;:::o;10285:710::-;10381:5;10406:81;10422:64;10479:6;10422:64;:::i;:::-;10406:81;:::i;:::-;10397:90;;10507:5;10536:6;10529:5;10522:21;10570:4;10563:5;10559:16;10552:23;;10623:4;10615:6;10611:17;10603:6;10599:30;10652:3;10644:6;10641:15;10638:122;;;10671:79;;:::i;:::-;10638:122;10786:6;10769:220;10803:6;10798:3;10795:15;10769:220;;;10878:3;10907:37;10940:3;10928:10;10907:37;:::i;:::-;10902:3;10895:50;10974:4;10969:3;10965:14;10958:21;;10845:144;10829:4;10824:3;10820:14;10813:21;;10769:220;;;10773:21;10387:608;;10285:710;;;;;:::o;11018:370::-;11089:5;11138:3;11131:4;11123:6;11119:17;11115:27;11105:122;;11146:79;;:::i;:::-;11105:122;11263:6;11250:20;11288:94;11378:3;11370:6;11363:4;11355:6;11351:17;11288:94;:::i;:::-;11279:103;;11095:293;11018:370;;;;:::o;11394:1473::-;11546:6;11554;11562;11570;11578;11586;11635:3;11623:9;11614:7;11610:23;11606:33;11603:120;;;11642:79;;:::i;:::-;11603:120;11762:1;11787:51;11830:7;11821:6;11810:9;11806:22;11787:51;:::i;:::-;11777:61;;11733:115;11887:2;11913:53;11958:7;11949:6;11938:9;11934:22;11913:53;:::i;:::-;11903:63;;11858:118;12015:2;12041:53;12086:7;12077:6;12066:9;12062:22;12041:53;:::i;:::-;12031:63;;11986:118;12143:2;12169:53;12214:7;12205:6;12194:9;12190:22;12169:53;:::i;:::-;12159:63;;12114:118;12299:3;12288:9;12284:19;12271:33;12331:18;12323:6;12320:30;12317:117;;;12353:79;;:::i;:::-;12317:117;12458:78;12528:7;12519:6;12508:9;12504:22;12458:78;:::i;:::-;12448:88;;12242:304;12613:3;12602:9;12598:19;12585:33;12645:18;12637:6;12634:30;12631:117;;;12667:79;;:::i;:::-;12631:117;12772:78;12842:7;12833:6;12822:9;12818:22;12772:78;:::i;:::-;12762:88;;12556:304;11394:1473;;;;;;;;:::o;12873:114::-;12940:6;12974:5;12968:12;12958:22;;12873:114;;;:::o;12993:184::-;13092:11;13126:6;13121:3;13114:19;13166:4;13161:3;13157:14;13142:29;;12993:184;;;;:::o;13183:132::-;13250:4;13273:3;13265:11;;13303:4;13298:3;13294:14;13286:22;;13183:132;;;:::o;13321:108::-;13398:24;13416:5;13398:24;:::i;:::-;13393:3;13386:37;13321:108;;:::o;13435:179::-;13504:10;13525:46;13567:3;13559:6;13525:46;:::i;:::-;13603:4;13598:3;13594:14;13580:28;;13435:179;;;;:::o;13620:113::-;13690:4;13722;13717:3;13713:14;13705:22;;13620:113;;;:::o;13769:732::-;13888:3;13917:54;13965:5;13917:54;:::i;:::-;13987:86;14066:6;14061:3;13987:86;:::i;:::-;13980:93;;14097:56;14147:5;14097:56;:::i;:::-;14176:7;14207:1;14192:284;14217:6;14214:1;14211:13;14192:284;;;14293:6;14287:13;14320:63;14379:3;14364:13;14320:63;:::i;:::-;14313:70;;14406:60;14459:6;14406:60;:::i;:::-;14396:70;;14252:224;14239:1;14236;14232:9;14227:14;;14192:284;;;14196:14;14492:3;14485:10;;13893:608;;;13769:732;;;;:::o;14507:373::-;14650:4;14688:2;14677:9;14673:18;14665:26;;14737:9;14731:4;14727:20;14723:1;14712:9;14708:17;14701:47;14765:108;14868:4;14859:6;14765:108;:::i;:::-;14757:116;;14507:373;;;;:::o;14886:112::-;14969:22;14985:5;14969:22;:::i;:::-;14964:3;14957:35;14886:112;;:::o;15004:214::-;15093:4;15131:2;15120:9;15116:18;15108:26;;15144:67;15208:1;15197:9;15193:17;15184:6;15144:67;:::i;:::-;15004:214;;;;:::o;15224:118::-;15311:24;15329:5;15311:24;:::i;:::-;15306:3;15299:37;15224:118;;:::o;15348:115::-;15433:23;15450:5;15433:23;:::i;:::-;15428:3;15421:36;15348:115;;:::o;15469:648::-;15666:4;15704:3;15693:9;15689:19;15681:27;;15718:71;15786:1;15775:9;15771:17;15762:6;15718:71;:::i;:::-;15799:72;15867:2;15856:9;15852:18;15843:6;15799:72;:::i;:::-;15881;15949:2;15938:9;15934:18;15925:6;15881:72;:::i;:::-;15963:66;16025:2;16014:9;16010:18;16001:6;15963:66;:::i;:::-;16039:71;16105:3;16094:9;16090:19;16081:6;16039:71;:::i;:::-;15469:648;;;;;;;;:::o;16123:180::-;16171:77;16168:1;16161:88;16268:4;16265:1;16258:15;16292:4;16289:1;16282:15;16309:180;16357:77;16354:1;16347:88;16454:4;16451:1;16444:15;16478:4;16475:1;16468:15;16495:233;16534:3;16557:24;16575:5;16557:24;:::i;:::-;16548:33;;16603:66;16596:5;16593:77;16590:103;;16673:18;;:::i;:::-;16590:103;16720:1;16713:5;16709:13;16702:20;;16495:233;;;:::o;16734:169::-;16818:11;16852:6;16847:3;16840:19;16892:4;16887:3;16883:14;16868:29;;16734:169;;;;:::o;16909:230::-;17049:34;17045:1;17037:6;17033:14;17026:58;17118:13;17113:2;17105:6;17101:15;17094:38;16909:230;:::o;17145:366::-;17287:3;17308:67;17372:2;17367:3;17308:67;:::i;:::-;17301:74;;17384:93;17473:3;17384:93;:::i;:::-;17502:2;17497:3;17493:12;17486:19;;17145:366;;;:::o;17517:419::-;17683:4;17721:2;17710:9;17706:18;17698:26;;17770:9;17764:4;17760:20;17756:1;17745:9;17741:17;17734:47;17798:131;17924:4;17798:131;:::i;:::-;17790:139;;17517:419;;;:::o;17942:232::-;18082:34;18078:1;18070:6;18066:14;18059:58;18151:15;18146:2;18138:6;18134:15;18127:40;17942:232;:::o;18180:366::-;18322:3;18343:67;18407:2;18402:3;18343:67;:::i;:::-;18336:74;;18419:93;18508:3;18419:93;:::i;:::-;18537:2;18532:3;18528:12;18521:19;;18180:366;;;:::o;18552:419::-;18718:4;18756:2;18745:9;18741:18;18733:26;;18805:9;18799:4;18795:20;18791:1;18780:9;18776:17;18769:47;18833:131;18959:4;18833:131;:::i;:::-;18825:139;;18552:419;;;:::o;18977:174::-;19117:26;19113:1;19105:6;19101:14;19094:50;18977:174;:::o;19157:366::-;19299:3;19320:67;19384:2;19379:3;19320:67;:::i;:::-;19313:74;;19396:93;19485:3;19396:93;:::i;:::-;19514:2;19509:3;19505:12;19498:19;;19157:366;;;:::o;19529:419::-;19695:4;19733:2;19722:9;19718:18;19710:26;;19782:9;19776:4;19772:20;19768:1;19757:9;19753:17;19746:47;19810:131;19936:4;19810:131;:::i;:::-;19802:139;;19529:419;;;:::o;19954:168::-;20094:20;20090:1;20082:6;20078:14;20071:44;19954:168;:::o;20128:366::-;20270:3;20291:67;20355:2;20350:3;20291:67;:::i;:::-;20284:74;;20367:93;20456:3;20367:93;:::i;:::-;20485:2;20480:3;20476:12;20469:19;;20128:366;;;:::o;20500:419::-;20666:4;20704:2;20693:9;20689:18;20681:26;;20753:9;20747:4;20743:20;20739:1;20728:9;20724:17;20717:47;20781:131;20907:4;20781:131;:::i;:::-;20773:139;;20500:419;;;:::o;20925:194::-;20965:4;20985:20;21003:1;20985:20;:::i;:::-;20980:25;;21019:20;21037:1;21019:20;:::i;:::-;21014:25;;21063:1;21060;21056:9;21048:17;;21087:1;21081:4;21078:11;21075:37;;;21092:18;;:::i;:::-;21075:37;20925:194;;;;:::o;21125:191::-;21165:3;21184:20;21202:1;21184:20;:::i;:::-;21179:25;;21218:20;21236:1;21218:20;:::i;:::-;21213:25;;21261:1;21258;21254:9;21247:16;;21282:3;21279:1;21276:10;21273:36;;;21289:18;;:::i;:::-;21273:36;21125:191;;;;:::o;21322:171::-;21360:3;21383:23;21400:5;21383:23;:::i;:::-;21374:32;;21428:6;21421:5;21418:17;21415:43;;21438:18;;:::i;:::-;21415:43;21485:1;21478:5;21474:13;21467:20;;21322:171;;;:::o;21499:175::-;21639:27;21635:1;21627:6;21623:14;21616:51;21499:175;:::o;21680:366::-;21822:3;21843:67;21907:2;21902:3;21843:67;:::i;:::-;21836:74;;21919:93;22008:3;21919:93;:::i;:::-;22037:2;22032:3;22028:12;22021:19;;21680:366;;;:::o;22052:419::-;22218:4;22256:2;22245:9;22241:18;22233:26;;22305:9;22299:4;22295:20;22291:1;22280:9;22276:17;22269:47;22333:131;22459:4;22333:131;:::i;:::-;22325:139;;22052:419;;;:::o;22477:410::-;22517:7;22540:20;22558:1;22540:20;:::i;:::-;22535:25;;22574:20;22592:1;22574:20;:::i;:::-;22569:25;;22629:1;22626;22622:9;22651:30;22669:11;22651:30;:::i;:::-;22640:41;;22830:1;22821:7;22817:15;22814:1;22811:22;22791:1;22784:9;22764:83;22741:139;;22860:18;;:::i;:::-;22741:139;22525:362;22477:410;;;;:::o;22893:180::-;22941:77;22938:1;22931:88;23038:4;23035:1;23028:15;23062:4;23059:1;23052:15;23079:185;23119:1;23136:20;23154:1;23136:20;:::i;:::-;23131:25;;23170:20;23188:1;23170:20;:::i;:::-;23165:25;;23209:1;23199:35;;23214:18;;:::i;:::-;23199:35;23256:1;23253;23249:9;23244:14;;23079:185;;;;:::o;23270:332::-;23391:4;23429:2;23418:9;23414:18;23406:26;;23442:71;23510:1;23499:9;23495:17;23486:6;23442:71;:::i;:::-;23523:72;23591:2;23580:9;23576:18;23567:6;23523:72;:::i;:::-;23270:332;;;;;:::o;23608:116::-;23678:21;23693:5;23678:21;:::i;:::-;23671:5;23668:32;23658:60;;23714:1;23711;23704:12;23658:60;23608:116;:::o;23730:137::-;23784:5;23815:6;23809:13;23800:22;;23831:30;23855:5;23831:30;:::i;:::-;23730:137;;;;:::o;23873:345::-;23940:6;23989:2;23977:9;23968:7;23964:23;23960:32;23957:119;;;23995:79;;:::i;:::-;23957:119;24115:1;24140:61;24193:7;24184:6;24173:9;24169:22;24140:61;:::i;:::-;24130:71;;24086:125;23873:345;;;;:::o;24224:171::-;24364:23;24360:1;24352:6;24348:14;24341:47;24224:171;:::o;24401:366::-;24543:3;24564:67;24628:2;24623:3;24564:67;:::i;:::-;24557:74;;24640:93;24729:3;24640:93;:::i;:::-;24758:2;24753:3;24749:12;24742:19;;24401:366;;;:::o;24773:419::-;24939:4;24977:2;24966:9;24962:18;24954:26;;25026:9;25020:4;25016:20;25012:1;25001:9;24997:17;24990:47;25054:131;25180:4;25054:131;:::i;:::-;25046:139;;24773:419;;;:::o;25198:541::-;25369:4;25407:3;25396:9;25392:19;25384:27;;25421:67;25485:1;25474:9;25470:17;25461:6;25421:67;:::i;:::-;25498:72;25566:2;25555:9;25551:18;25542:6;25498:72;:::i;:::-;25580:70;25646:2;25635:9;25631:18;25622:6;25580:70;:::i;:::-;25660:72;25728:2;25717:9;25713:18;25704:6;25660:72;:::i;:::-;25198:541;;;;;;;:::o;25745:324::-;25862:4;25900:2;25889:9;25885:18;25877:26;;25913:67;25977:1;25966:9;25962:17;25953:6;25913:67;:::i;:::-;25990:72;26058:2;26047:9;26043:18;26034:6;25990:72;:::i;:::-;25745:324;;;;;:::o;26075:173::-;26215:25;26211:1;26203:6;26199:14;26192:49;26075:173;:::o;26254:366::-;26396:3;26417:67;26481:2;26476:3;26417:67;:::i;:::-;26410:74;;26493:93;26582:3;26493:93;:::i;:::-;26611:2;26606:3;26602:12;26595:19;;26254:366;;;:::o;26626:419::-;26792:4;26830:2;26819:9;26815:18;26807:26;;26879:9;26873:4;26869:20;26865:1;26854:9;26850:17;26843:47;26907:131;27033:4;26907:131;:::i;:::-;26899:139;;26626:419;;;:::o;27051:220::-;27191:34;27187:1;27179:6;27175:14;27168:58;27260:3;27255:2;27247:6;27243:15;27236:28;27051:220;:::o;27277:366::-;27419:3;27440:67;27504:2;27499:3;27440:67;:::i;:::-;27433:74;;27516:93;27605:3;27516:93;:::i;:::-;27634:2;27629:3;27625:12;27618:19;;27277:366;;;:::o;27649:419::-;27815:4;27853:2;27842:9;27838:18;27830:26;;27902:9;27896:4;27892:20;27888:1;27877:9;27873:17;27866:47;27930:131;28056:4;27930:131;:::i;:::-;27922:139;;27649:419;;;:::o;28074:98::-;28125:6;28159:5;28153:12;28143:22;;28074:98;;;:::o;28178:147::-;28279:11;28316:3;28301:18;;28178:147;;;;:::o;28331:246::-;28412:1;28422:113;28436:6;28433:1;28430:13;28422:113;;;28521:1;28516:3;28512:11;28506:18;28502:1;28497:3;28493:11;28486:39;28458:2;28455:1;28451:10;28446:15;;28422:113;;;28569:1;28560:6;28555:3;28551:16;28544:27;28393:184;28331:246;;;:::o;28583:386::-;28687:3;28715:38;28747:5;28715:38;:::i;:::-;28769:88;28850:6;28845:3;28769:88;:::i;:::-;28762:95;;28866:65;28924:6;28919:3;28912:4;28905:5;28901:16;28866:65;:::i;:::-;28956:6;28951:3;28947:16;28940:23;;28691:278;28583:386;;;;:::o;28975:271::-;29105:3;29127:93;29216:3;29207:6;29127:93;:::i;:::-;29120:100;;29237:3;29230:10;;28975:271;;;;:::o;29252:170::-;29392:22;29388:1;29380:6;29376:14;29369:46;29252:170;:::o;29428:366::-;29570:3;29591:67;29655:2;29650:3;29591:67;:::i;:::-;29584:74;;29667:93;29756:3;29667:93;:::i;:::-;29785:2;29780:3;29776:12;29769:19;;29428:366;;;:::o;29800:419::-;29966:4;30004:2;29993:9;29989:18;29981:26;;30053:9;30047:4;30043:20;30039:1;30028:9;30024:17;30017:47;30081:131;30207:4;30081:131;:::i;:::-;30073:139;;29800:419;;;:::o;30225:173::-;30365:25;30361:1;30353:6;30349:14;30342:49;30225:173;:::o;30404:366::-;30546:3;30567:67;30631:2;30626:3;30567:67;:::i;:::-;30560:74;;30643:93;30732:3;30643:93;:::i;:::-;30761:2;30756:3;30752:12;30745:19;;30404:366;;;:::o;30776:419::-;30942:4;30980:2;30969:9;30965:18;30957:26;;31029:9;31023:4;31019:20;31015:1;31004:9;31000:17;30993:47;31057:131;31183:4;31057:131;:::i;:::-;31049:139;;30776:419;;;:::o;31201:226::-;31341:34;31337:1;31329:6;31325:14;31318:58;31410:9;31405:2;31397:6;31393:15;31386:34;31201:226;:::o;31433:366::-;31575:3;31596:67;31660:2;31655:3;31596:67;:::i;:::-;31589:74;;31672:93;31761:3;31672:93;:::i;:::-;31790:2;31785:3;31781:12;31774:19;;31433:366;;;:::o;31805:419::-;31971:4;32009:2;31998:9;31994:18;31986:26;;32058:9;32052:4;32048:20;32044:1;32033:9;32029:17;32022:47;32086:131;32212:4;32086:131;:::i;:::-;32078:139;;31805:419;;;:::o;32230:171::-;32370:23;32366:1;32358:6;32354:14;32347:47;32230:171;:::o;32407:366::-;32549:3;32570:67;32634:2;32629:3;32570:67;:::i;:::-;32563:74;;32646:93;32735:3;32646:93;:::i;:::-;32764:2;32759:3;32755:12;32748:19;;32407:366;;;:::o;32779:419::-;32945:4;32983:2;32972:9;32968:18;32960:26;;33032:9;33026:4;33022:20;33018:1;33007:9;33003:17;32996:47;33060:131;33186:4;33060:131;:::i;:::-;33052:139;;32779:419;;;:::o;33204:178::-;33344:30;33340:1;33332:6;33328:14;33321:54;33204:178;:::o;33388:366::-;33530:3;33551:67;33615:2;33610:3;33551:67;:::i;:::-;33544:74;;33627:93;33716:3;33627:93;:::i;:::-;33745:2;33740:3;33736:12;33729:19;;33388:366;;;:::o;33760:419::-;33926:4;33964:2;33953:9;33949:18;33941:26;;34013:9;34007:4;34003:20;33999:1;33988:9;33984:17;33977:47;34041:131;34167:4;34041:131;:::i;:::-;34033:139;;33760:419;;;:::o;34185:222::-;34325:34;34321:1;34313:6;34309:14;34302:58;34394:5;34389:2;34381:6;34377:15;34370:30;34185:222;:::o;34413:366::-;34555:3;34576:67;34640:2;34635:3;34576:67;:::i;:::-;34569:74;;34652:93;34741:3;34652:93;:::i;:::-;34770:2;34765:3;34761:12;34754:19;;34413:366;;;:::o;34785:419::-;34951:4;34989:2;34978:9;34974:18;34966:26;;35038:9;35032:4;35028:20;35024:1;35013:9;35009:17;35002:47;35066:131;35192:4;35066:131;:::i;:::-;35058:139;;34785:419;;;:::o;35210:181::-;35350:33;35346:1;35338:6;35334:14;35327:57;35210:181;:::o;35397:366::-;35539:3;35560:67;35624:2;35619:3;35560:67;:::i;:::-;35553:74;;35636:93;35725:3;35636:93;:::i;:::-;35754:2;35749:3;35745:12;35738:19;;35397:366;;;:::o;35769:419::-;35935:4;35973:2;35962:9;35958:18;35950:26;;36022:9;36016:4;36012:20;36008:1;35997:9;35993:17;35986:47;36050:131;36176:4;36050:131;:::i;:::-;36042:139;;35769:419;;;:::o;36194:332::-;36315:4;36353:2;36342:9;36338:18;36330:26;;36366:71;36434:1;36423:9;36419:17;36410:6;36366:71;:::i;:::-;36447:72;36515:2;36504:9;36500:18;36491:6;36447:72;:::i;:::-;36194:332;;;;;:::o;36532:143::-;36589:5;36620:6;36614:13;36605:22;;36636:33;36663:5;36636:33;:::i;:::-;36532:143;;;;:::o;36681:351::-;36751:6;36800:2;36788:9;36779:7;36775:23;36771:32;36768:119;;;36806:79;;:::i;:::-;36768:119;36926:1;36951:64;37007:7;36998:6;36987:9;36983:22;36951:64;:::i;:::-;36941:74;;36897:128;36681:351;;;;:::o;37038:170::-;37178:22;37174:1;37166:6;37162:14;37155:46;37038:170;:::o;37214:366::-;37356:3;37377:67;37441:2;37436:3;37377:67;:::i;:::-;37370:74;;37453:93;37542:3;37453:93;:::i;:::-;37571:2;37566:3;37562:12;37555:19;;37214:366;;;:::o;37586:419::-;37752:4;37790:2;37779:9;37775:18;37767:26;;37839:9;37833:4;37829:20;37825:1;37814:9;37810:17;37803:47;37867:131;37993:4;37867:131;:::i;:::-;37859:139;;37586:419;;;:::o;38011:442::-;38160:4;38198:2;38187:9;38183:18;38175:26;;38211:71;38279:1;38268:9;38264:17;38255:6;38211:71;:::i;:::-;38292:72;38360:2;38349:9;38345:18;38336:6;38292:72;:::i;:::-;38374;38442:2;38431:9;38427:18;38418:6;38374:72;:::i;:::-;38011:442;;;;;;:::o;38459:114::-;;:::o;38579:398::-;38738:3;38759:83;38840:1;38835:3;38759:83;:::i;:::-;38752:90;;38851:93;38940:3;38851:93;:::i;:::-;38969:1;38964:3;38960:11;38953:18;;38579:398;;;:::o;38983:379::-;39167:3;39189:147;39332:3;39189:147;:::i;:::-;39182:154;;39353:3;39346:10;;38983:379;;;:::o;39368:164::-;39508:16;39504:1;39496:6;39492:14;39485:40;39368:164;:::o;39538:366::-;39680:3;39701:67;39765:2;39760:3;39701:67;:::i;:::-;39694:74;;39777:93;39866:3;39777:93;:::i;:::-;39895:2;39890:3;39886:12;39879:19;;39538:366;;;:::o;39910:419::-;40076:4;40114:2;40103:9;40099:18;40091:26;;40163:9;40157:4;40153:20;40149:1;40138:9;40134:17;40127:47;40191:131;40317:4;40191:131;:::i;:::-;40183:139;;39910:419;;;:::o;40335:225::-;40475:34;40471:1;40463:6;40459:14;40452:58;40544:8;40539:2;40531:6;40527:15;40520:33;40335:225;:::o;40566:366::-;40708:3;40729:67;40793:2;40788:3;40729:67;:::i;:::-;40722:74;;40805:93;40894:3;40805:93;:::i;:::-;40923:2;40918:3;40914:12;40907:19;;40566:366;;;:::o;40938:419::-;41104:4;41142:2;41131:9;41127:18;41119:26;;41191:9;41185:4;41181:20;41177:1;41166:9;41162:17;41155:47;41219:131;41345:4;41219:131;:::i;:::-;41211:139;;40938:419;;;:::o;41363:182::-;41503:34;41499:1;41491:6;41487:14;41480:58;41363:182;:::o;41551:366::-;41693:3;41714:67;41778:2;41773:3;41714:67;:::i;:::-;41707:74;;41790:93;41879:3;41790:93;:::i;:::-;41908:2;41903:3;41899:12;41892:19;;41551:366;;;:::o;41923:419::-;42089:4;42127:2;42116:9;42112:18;42104:26;;42176:9;42170:4;42166:20;42162:1;42151:9;42147:17;42140:47;42204:131;42330:4;42204:131;:::i;:::-;42196:139;;41923:419;;;:::o;42348:180::-;42396:77;42393:1;42386:88;42493:4;42490:1;42483:15;42517:4;42514:1;42507:15

Swarm Source

ipfs://d505bc529d1ddd7e0179f2ec9de50fe322d7a1af4891cb138936f5ab3b5f5d9d

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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