ETH Price: $3,341.13 (-1.72%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Deposit185684812023-11-14 6:54:23438 days ago1699944863IN
0xfe72f615...6a66D2914
0 ETH0.0018501622.29092253
Add New Game Con...185558542023-11-12 12:33:11440 days ago1699792391IN
0xfe72f615...6a66D2914
0 ETH0.0022718833.15456496

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
KEKW_Casino

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

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

// SPDX-License-Identifier: MIT

// KEKW Casino Contract: 10 November 2023
// Version: 1.0

// Website: https://kekw.gg/
// telegram: https://t.me/kekw_gg
// X.com/Twtter: https://x.com/kekw_gg
// Token: ($KEKW) 0x0DF596AD12F927e41EC317AF7DD666cA3574845f
// Uniswap: https://app.uniswap.org/swap?outputCurrency=0x0DF596AD12F927e41EC317AF7DD666cA3574845f
// Dextools: https://www.dextools.io/app/en/ether/pair-explorer/0x14ba508aaf2c15231f9df265980d1d461e54192b

pragma solidity ^0.8.18;

interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );

    function totalSupply() external view returns (uint256);

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

    function transfer(address to, 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 from,
        address to,
        uint256 amount
    ) external returns (bool);
}

error BetTooHigh(uint256 maximumBet);

contract KEKW_Casino {
    IERC20 public token;
    address public manager;
    mapping(address => uint256) public casinoBalances;
    uint256 MAX_INT =
        115792089237316195423570985008687907853269984665640564039457584007913129639935;

    struct Game {
        uint256 index; // servers as Id
        uint256 betAmount;
        uint256 totalBetAmount;
        address player1;
        address player2;
        address winner;
        address gameContractAddress;
        string player1Outcome;
        string player2Outcome;
    }

    Game[] public games;
    address[] public gameContracts;
    uint256 public winnerPercentage = 95;
    uint256 public casinoPercentage = 3;
    uint256 public devPercentage = 100 - winnerPercentage - casinoPercentage;

    event GameCreated(uint256 gameIndex, uint256 betAmount);
    event GameJoined(uint256 gameIndex, address playerAddress);
    event GameCanceled(uint256 gameIndex);
    event GameLeft(uint256 gameIndex, address playerAddress);

    constructor(address _token) {
        manager = msg.sender;
        token = IERC20(_token);
    }

    function addNewGameContrtact(address _gameContract) public restricted {
        gameContracts.push(_gameContract);
    }

    function removeGameContract(uint256 _gameContractIndex) public restricted {
        if (_gameContractIndex >= gameContracts.length) return;

        for (
            uint256 i = _gameContractIndex;
            i < gameContracts.length - 1;
            i++
        ) {
            gameContracts[i] = gameContracts[i + 1];
        }
        gameContracts.pop();
    }

    function updateFees(
        uint256 _winnerFees,
        uint256 _casinoFees,
        uint256 _devFees
    ) public restricted {
        require(
            (_winnerFees + _devFees + _casinoFees) == 100,
            "Total should be 100."
        );
        winnerPercentage = _winnerFees;
        devPercentage = _devFees;
        casinoPercentage = _casinoFees;
    }

    function getSmartContractBalance() external view returns (uint256) {
        return token.balanceOf(address(this));
    }

    function getPlayersCasinoBalanace(address playerAddress)
        external
        view
        returns (uint256)
    {
        return casinoBalances[playerAddress];
    }

    function deposit(uint256 _amount) public {
        require(_amount > 0, "Minimum Amount should be greater than 0.");
        token.transferFrom(msg.sender, address(this), _amount);
        casinoBalances[msg.sender] += _amount;
    }

    function withdraw(uint256 _amount) public {
        require(
            casinoBalances[msg.sender] >= _amount,
            "You can't withdraw more than your balance."
        );
        token.transferFrom(address(this), msg.sender, _amount);
        casinoBalances[msg.sender] -= _amount;
    }

    function donate(uint256 _amount) public {
        require(_amount > 0, "Minimum Amount should be greater than 0.");
        token.transferFrom(msg.sender, address(this), _amount);
        casinoBalances[address(this)] += _amount;
    }

    function houseWithdraw(uint256 _amount) public restricted {
        require(
            casinoBalances[address(this)] >= _amount,
            "You can't withdraw more than your balance."
        );
        token.transferFrom(address(this), manager, _amount);
        casinoBalances[address(this)] -= _amount;
    }

    function createGame(uint256 _betAmount, address _gameContractAddress)
        public
    {
        require(_betAmount > 0, "Bet Amount should be greater than 0.");
        require(
            existingGameContract(_gameContractAddress),
            "Invalid Game contract."
        );
        Game storage game = games.push();
        uint256 _index = games.length - 1;

        game.index = _index;
        game.betAmount = _betAmount;
        game.gameContractAddress = _gameContractAddress;
        game.player1 = msg.sender;
        casinoBalances[msg.sender] -= _betAmount;
        game.totalBetAmount += _betAmount;
        emit GameCreated(_index, _betAmount);
    }

    function cancelGame(uint256 _index) public {
        require(_index >= 0, "Index should be greater than 0.");
        Game storage game = games[_index];
        require(game.winner == address(0), "Game already Played.");
        require(
            game.player1 == msg.sender,
            "Game creator can only cancel the game."
        );
        require(
            game.totalBetAmount > 0,
            "total bet amount should not be zero."
        );
        require(game.betAmount > 0, "bet amount should not be zero.");
        if (game.player2 != address(0)) {
            game.totalBetAmount -= game.betAmount;
            casinoBalances[game.player2] += game.betAmount;
        }
        game.totalBetAmount -= game.betAmount;
        casinoBalances[game.player1] += game.betAmount;
        game.player1 = address(0);
        game.player2 = address(0);
        emit GameCanceled(_index);
    }

    function ensureGameIsNotPlayed(uint256 _index)
        public
        view
        returns (Game memory)
    {
        require(_index >= 0, "Index should be greater than 0.");
        Game memory game = games[_index];
        require(game.betAmount > 0, "Bet is played or canceled.");
        require(game.totalBetAmount > 0, "Bet is played or canceled.");
        require(game.winner == address(0), "Game already Played.");
        require(game.player1 != address(0), "Player1 shuld join the game.");
        require(game.player2 != address(0), "Player2 shuld join the game.");
        return game;
    }

    function getUnplayedGames() public view returns (Game[] memory) {
        Game[] memory unPlayedGames = new Game[](games.length);

        uint256 count = 0;
        for (uint256 i = 0; i < games.length; i++) {
            if (
                games[i].betAmount > 0 &&
                games[i].totalBetAmount > 0 &&
                games[i].winner == address(0) &&
                games[i].player2 == address(0) &&
                games[i].player1 != address(0)
            ) {
                unPlayedGames[count] = games[i];
                count++;
            }
        }

        // Resize the array to remove any empty slots
        assembly {
            mstore(unPlayedGames, count)
        }

        return unPlayedGames;
    }

    function joinGame(uint256 _index) public {
        require(_index >= 0, "Index should be greater than 0.");
        Game storage game = games[_index];
        require(game.winner == address(0), "Game has ended.");
        require(game.player2 == address(0), "Game is full now.");
        require(
            casinoBalances[msg.sender] >= game.betAmount,
            "You do not have enough balance to join game."
        );
        casinoBalances[msg.sender] -= game.betAmount;
        game.player2 = msg.sender;
        game.totalBetAmount += game.betAmount;
        emit GameJoined(_index, msg.sender);
    }

    function leaveGame(uint256 _index) public {
        require(_index >= 0, "Index should be greater than 0.");
        Game storage game = games[_index];
        require(game.totalBetAmount > 0, "Bet is reset.");
        require(game.betAmount > 0, "Bet is reset.");
        require(game.winner == address(0), "Game has ended.");
        require(game.player2 == msg.sender, "You haven't joined this game.");
        game.player2 = address(0);
        game.totalBetAmount -= game.betAmount;
        casinoBalances[msg.sender] += game.betAmount;
        emit GameLeft(_index, msg.sender);
    }

    function inviteHouse(uint256 _index) public {
        require(_index >= 0, "Index should be greater than 0.");
        Game storage game = games[_index];
        require(
            game.player1 == msg.sender,
            "Game creator can only invite house to play."
        );
        require(game.winner == address(0), "Game has ended.");
        require(game.player2 == address(0), "Game is full now.");
        require(
            casinoBalances[address(this)] >= game.betAmount,
            "House does not have enough balance to join game."
        );
        uint256 maximumBet = (casinoBalances[address(this)] * 1) / 100;
        if (game.betAmount > maximumBet) {
            // https://soliditylang.org/blog/2021/04/21/custom-errors/
            revert BetTooHigh({maximumBet: maximumBet});
        }
        casinoBalances[address(this)] -= game.betAmount;
        game.player2 = address(this);
        game.totalBetAmount += game.betAmount;
        emit GameJoined(_index, address(this));
    }

    function existingGameContract(address _gameContract)
        public
        view
        returns (bool)
    {
        for (uint256 i = 0; i < gameContracts.length; i++) {
            if (gameContracts[i] == _gameContract) {
                return true;
            }
        }

        return false;
    }

    function winnerCallback(
        uint256 gameIndex,
        address winnerAddress,
        string memory _player1Outcome,
        string memory _player2Outcome
    ) public {
        require(
            existingGameContract(msg.sender),
            "You are not Authorized Game Contract Address."
        );
        require(gameIndex >= 0, "Invalid Game.");
        Game storage game = games[gameIndex];
        require(game.player1 != address(0), "Player1 shuld join the game.");
        require(game.player2 != address(0), "Player2 shuld join the game.");
        require(game.winner == address(0), "Game already Played.");
        require(
            game.gameContractAddress == msg.sender,
            "Game type is not correct."
        );
        game.player1Outcome = _player1Outcome;
        game.player2Outcome = _player2Outcome;

        casinoBalances[manager] += (game.totalBetAmount * devPercentage) / 100;
        casinoBalances[address(this)] +=
            (game.totalBetAmount * casinoPercentage) /
            100;

        game.winner = winnerAddress;

        casinoBalances[winnerAddress] += ((game.totalBetAmount *
            winnerPercentage) / 100);

        game.totalBetAmount = 0;
    }

    modifier restricted() {
        require(msg.sender == manager);
        _;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"maximumBet","type":"uint256"}],"name":"BetTooHigh","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"gameIndex","type":"uint256"}],"name":"GameCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"gameIndex","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"betAmount","type":"uint256"}],"name":"GameCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"gameIndex","type":"uint256"},{"indexed":false,"internalType":"address","name":"playerAddress","type":"address"}],"name":"GameJoined","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"gameIndex","type":"uint256"},{"indexed":false,"internalType":"address","name":"playerAddress","type":"address"}],"name":"GameLeft","type":"event"},{"inputs":[{"internalType":"address","name":"_gameContract","type":"address"}],"name":"addNewGameContrtact","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"cancelGame","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"casinoBalances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"casinoPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_betAmount","type":"uint256"},{"internalType":"address","name":"_gameContractAddress","type":"address"}],"name":"createGame","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"donate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"ensureGameIsNotPlayed","outputs":[{"components":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"betAmount","type":"uint256"},{"internalType":"uint256","name":"totalBetAmount","type":"uint256"},{"internalType":"address","name":"player1","type":"address"},{"internalType":"address","name":"player2","type":"address"},{"internalType":"address","name":"winner","type":"address"},{"internalType":"address","name":"gameContractAddress","type":"address"},{"internalType":"string","name":"player1Outcome","type":"string"},{"internalType":"string","name":"player2Outcome","type":"string"}],"internalType":"struct KEKW_Casino.Game","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_gameContract","type":"address"}],"name":"existingGameContract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"gameContracts","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"games","outputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"betAmount","type":"uint256"},{"internalType":"uint256","name":"totalBetAmount","type":"uint256"},{"internalType":"address","name":"player1","type":"address"},{"internalType":"address","name":"player2","type":"address"},{"internalType":"address","name":"winner","type":"address"},{"internalType":"address","name":"gameContractAddress","type":"address"},{"internalType":"string","name":"player1Outcome","type":"string"},{"internalType":"string","name":"player2Outcome","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"playerAddress","type":"address"}],"name":"getPlayersCasinoBalanace","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSmartContractBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnplayedGames","outputs":[{"components":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"betAmount","type":"uint256"},{"internalType":"uint256","name":"totalBetAmount","type":"uint256"},{"internalType":"address","name":"player1","type":"address"},{"internalType":"address","name":"player2","type":"address"},{"internalType":"address","name":"winner","type":"address"},{"internalType":"address","name":"gameContractAddress","type":"address"},{"internalType":"string","name":"player1Outcome","type":"string"},{"internalType":"string","name":"player2Outcome","type":"string"}],"internalType":"struct KEKW_Casino.Game[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"houseWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"inviteHouse","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"joinGame","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"leaveGame","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_gameContractIndex","type":"uint256"}],"name":"removeGameContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_winnerFees","type":"uint256"},{"internalType":"uint256","name":"_casinoFees","type":"uint256"},{"internalType":"uint256","name":"_devFees","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gameIndex","type":"uint256"},{"internalType":"address","name":"winnerAddress","type":"address"},{"internalType":"string","name":"_player1Outcome","type":"string"},{"internalType":"string","name":"_player2Outcome","type":"string"}],"name":"winnerCallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"winnerPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600355605f6006556003600755600754600654606462000046919062000149565b62000052919062000149565b6008553480156200006257600080fd5b5060405162004f0338038062004f038339818101604052810190620000889190620001ee565b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000220565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620001568262000110565b9150620001638362000110565b92508282039050818111156200017e576200017d6200011a565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620001b68262000189565b9050919050565b620001c881620001a9565b8114620001d457600080fd5b50565b600081519050620001e881620001bd565b92915050565b60006020828403121562000207576200020662000184565b5b60006200021784828501620001d7565b91505092915050565b614cd380620002306000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c80638c01d16d116100de578063c449731b11610097578063efaa55a011610071578063efaa55a014610487578063f14faf6f146104a3578063fa638764146104bf578063fc0c546a146104db5761018e565b8063c449731b1461040b578063cd3b356e14610427578063d8bfcf96146104575761018e565b80638c01d16d1461035d578063a169f86f14610379578063a43f15d814610397578063a4a2ca80146103b3578063b6b55f25146103d1578063c3a43824146103ed5761018e565b80633ea112221161014b5780635145cbc0116101255780635145cbc0146102e957806369958ab9146103075780637a1126f01461032357806382b98f9d1461033f5761018e565b80633ea11222146102935780633feef58a146102af578063481c6a75146102cb5761018e565b8063027b7d5b14610193578063117a5b90146101c35780631a1dd086146101fb578063224290851461022b5780632c32bde0146102475780632e1a7d4d14610277575b600080fd5b6101ad60048036038101906101a89190613368565b6104f9565b6040516101ba9190613541565b60405180910390f35b6101dd60048036038101906101d89190613368565b610a01565b6040516101f2999897969594939291906135cb565b60405180910390f35b61021560048036038101906102109190613692565b610bef565b60405161022291906136da565b60405180910390f35b610245600480360381019061024091906136f5565b610c9d565b005b610261600480360381019061025c9190613692565b610d6a565b60405161026e9190613748565b60405180910390f35b610291600480360381019061028c9190613368565b610d82565b005b6102ad60048036038101906102a89190613763565b610efe565b005b6102c960048036038101906102c49190613368565b61110b565b005b6102d3611422565b6040516102e091906137a3565b60405180910390f35b6102f1611448565b6040516102fe9190613748565b60405180910390f35b610321600480360381019061031c9190613368565b6114ea565b005b61033d60048036038101906103389190613368565b61195d565b005b610347611b55565b6040516103549190613748565b60405180910390f35b61037760048036038101906103729190613368565b611b5b565b005b610381611ce7565b60405161038e919061394c565b60405180910390f35b6103b160048036038101906103ac9190613368565b612242565b005b6103bb612689565b6040516103c89190613748565b60405180910390f35b6103eb60048036038101906103e69190613368565b61268f565b005b6103f56127cc565b6040516104029190613748565b60405180910390f35b61042560048036038101906104209190613aa3565b6127d2565b005b610441600480360381019061043c9190613368565b612cc2565b60405161044e91906137a3565b60405180910390f35b610471600480360381019061046c9190613692565b612d01565b60405161047e9190613748565b60405180910390f35b6104a1600480360381019061049c9190613368565b612d4a565b005b6104bd60048036038101906104b89190613368565b613059565b005b6104d960048036038101906104d49190613692565b613196565b005b6104e3613256565b6040516104f09190613ba1565b60405180910390f35b61050161327a565b6000821015610545576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053c90613c08565b60405180910390fd5b60006004838154811061055b5761055a613c28565b5b9060005260206000209060090201604051806101200160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016005820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016006820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016007820180546106fb90613c86565b80601f016020809104026020016040519081016040528092919081815260200182805461072790613c86565b80156107745780601f1061074957610100808354040283529160200191610774565b820191906000526020600020905b81548152906001019060200180831161075757829003601f168201915b5050505050815260200160088201805461078d90613c86565b80601f01602080910402602001604051908101604052809291908181526020018280546107b990613c86565b80156108065780601f106107db57610100808354040283529160200191610806565b820191906000526020600020905b8154815290600101906020018083116107e957829003601f168201915b50505050508152505090506000816020015111610858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084f90613d03565b60405180910390fd5b600081604001511161089f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089690613d03565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168160a0015173ffffffffffffffffffffffffffffffffffffffff1614610912576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090990613d6f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16816060015173ffffffffffffffffffffffffffffffffffffffff1603610985576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097c90613ddb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16816080015173ffffffffffffffffffffffffffffffffffffffff16036109f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ef90613e47565b60405180910390fd5b80915050919050565b60048181548110610a1157600080fd5b90600052602060002090600902016000915090508060000154908060010154908060020154908060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060060160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806007018054610ade90613c86565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0a90613c86565b8015610b575780601f10610b2c57610100808354040283529160200191610b57565b820191906000526020600020905b815481529060010190602001808311610b3a57829003601f168201915b505050505090806008018054610b6c90613c86565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9890613c86565b8015610be55780601f10610bba57610100808354040283529160200191610be5565b820191906000526020600020905b815481529060010190602001808311610bc857829003601f168201915b5050505050905089565b600080600090505b600580549050811015610c92578273ffffffffffffffffffffffffffffffffffffffff1660058281548110610c2f57610c2e613c28565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610c7f576001915050610c98565b8080610c8a90613e96565b915050610bf7565b50600090505b919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cf757600080fd5b6064828285610d069190613ede565b610d109190613ede565b14610d50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4790613f5e565b60405180910390fd5b826006819055508060088190555081600781905550505050565b60026020528060005260406000206000915090505481565b80600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfb90613ff0565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3033846040518463ffffffff1660e01b8152600401610e6193929190614010565b6020604051808303816000875af1158015610e80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea49190614073565b5080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ef491906140a0565b9250508190555050565b60008211610f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3890614146565b60405180910390fd5b610f4a81610bef565b610f89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f80906141b2565b60405180910390fd5b60006004600181600181540180825580915050039060005260206000209060090201905060006001600480549050610fc191906140a0565b9050808260000181905550838260010181905550828260060160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550338260030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110aa91906140a0565b92505081905550838260020160008282546110c59190613ede565b925050819055507fa26856d25e558c79e1632806bc6824075cf59885a115825f2aab62385a3f714281856040516110fd9291906141d2565b60405180910390a150505050565b600081101561114f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114690613c08565b60405180910390fd5b60006004828154811061116557611164613c28565b5b9060005260206000209060090201905060008160020154116111bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b390614247565b60405180910390fd5b6000816001015411611203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fa90614247565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168160050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128d906142b3565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168160040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131f9061431f565b60405180910390fd5b60008160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806001015481600201600082825461138491906140a0565b925050819055508060010154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113de9190613ede565b925050819055507f601fc33e47b454ed8aee9a1e0d7ed7add91efc6b3398783e1944bbd1f50a2583823360405161141692919061433f565b60405180910390a15050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016114a491906137a3565b602060405180830381865afa1580156114c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e5919061437d565b905090565b600081101561152e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152590613c08565b60405180910390fd5b60006004828154811061154457611543613c28565b5b90600052602060002090600902019050600073ffffffffffffffffffffffffffffffffffffffff168160050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115de90613d6f565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168160030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611679576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116709061441c565b60405180910390fd5b60008160020154116116c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b7906144ae565b60405180910390fd5b6000816001015411611707576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fe9061451a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168160040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117fd57806001015481600201600082825461177791906140a0565b925050819055508060010154600260008360040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117f59190613ede565b925050819055505b806001015481600201600082825461181591906140a0565b925050819055508060010154600260008360030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118939190613ede565b9250508190555060008160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f8f1ffb72cf9e5acc4eddafab2be9e2951d12377b9e1e4bdc7bd686b19c91fd89826040516119519190613748565b60405180910390a15050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119b757600080fd5b80600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611a39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3090613ff0565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401611ab893929190614010565b6020604051808303816000875af1158015611ad7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611afb9190614073565b5080600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611b4b91906140a0565b9250508190555050565b60065481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611bb557600080fd5b600580549050811015611ce45760008190505b6001600580549050611bda91906140a0565b811015611c9b576005600182611bf09190613ede565b81548110611c0157611c00613c28565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660058281548110611c4057611c3f613c28565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508080611c9390613e96565b915050611bc8565b506005805480611cae57611cad61453a565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590555b50565b6060600060048054905067ffffffffffffffff811115611d0a57611d09613978565b5b604051908082528060200260200182016040528015611d4357816020015b611d3061327a565b815260200190600190039081611d285790505b5090506000805b60048054905081101561223657600060048281548110611d6d57611d6c613c28565b5b906000526020600020906009020160010154118015611db15750600060048281548110611d9d57611d9c613c28565b5b906000526020600020906009020160020154115b8015611e2e5750600073ffffffffffffffffffffffffffffffffffffffff1660048281548110611de457611de3613c28565b5b906000526020600020906009020160050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b8015611eab5750600073ffffffffffffffffffffffffffffffffffffffff1660048281548110611e6157611e60613c28565b5b906000526020600020906009020160040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b8015611f295750600073ffffffffffffffffffffffffffffffffffffffff1660048281548110611ede57611edd613c28565b5b906000526020600020906009020160030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b156122235760048181548110611f4257611f41613c28565b5b9060005260206000209060090201604051806101200160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016005820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016006820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016007820180546120e290613c86565b80601f016020809104026020016040519081016040528092919081815260200182805461210e90613c86565b801561215b5780601f106121305761010080835404028352916020019161215b565b820191906000526020600020905b81548152906001019060200180831161213e57829003601f168201915b5050505050815260200160088201805461217490613c86565b80601f01602080910402602001604051908101604052809291908181526020018280546121a090613c86565b80156121ed5780601f106121c2576101008083540402835291602001916121ed565b820191906000526020600020905b8154815290600101906020018083116121d057829003601f168201915b50505050508152505083838151811061220957612208613c28565b5b6020026020010181905250818061221f90613e96565b9250505b808061222e90613e96565b915050611d4a565b50808252819250505090565b6000811015612286576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227d90613c08565b60405180910390fd5b60006004828154811061229c5761229b613c28565b5b906000526020600020906009020190503373ffffffffffffffffffffffffffffffffffffffff168160030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461233e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612335906145db565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168160050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c8906142b3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168160040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245b90614647565b60405180910390fd5b8060010154600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156124ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e1906146d9565b60405180910390fd5b600060646001600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461253a91906146f9565b612544919061476a565b9050808260010154111561258f57806040517f33028ba00000000000000000000000000000000000000000000000000000000081526004016125869190613748565b60405180910390fd5b8160010154600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125e291906140a0565b92505081905550308260040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600101548260020160008282546126449190613ede565b925050819055507f45c4f9cbafe186141862608c493f28b823fde4c2142bedc3f5169961a73fdd22833060405161267c92919061433f565b60405180910390a1505050565b60075481565b600081116126d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c99061480d565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b815260040161272f93929190614010565b6020604051808303816000875af115801561274e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127729190614073565b5080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127c29190613ede565b9250508190555050565b60085481565b6127db33610bef565b61281a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128119061489f565b60405180910390fd5b600084101561285e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128559061490b565b60405180910390fd5b60006004858154811061287457612873613c28565b5b90600052602060002090600902019050600073ffffffffffffffffffffffffffffffffffffffff168160030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612917576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290e90613ddb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168160040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036129aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a190613e47565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168160050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3490613d6f565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168160060160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612acf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac690614977565b60405180910390fd5b82816007019081612ae09190614b39565b5081816008019081612af29190614b39565b5060646008548260020154612b0791906146f9565b612b11919061476a565b60026000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b819190613ede565b9250508190555060646007548260020154612b9c91906146f9565b612ba6919061476a565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612bf49190613ede565b92505081905550838160050160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060646006548260020154612c5291906146f9565b612c5c919061476a565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612caa9190613ede565b92505081905550600081600201819055505050505050565b60058181548110612cd257600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000811015612d8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8590613c08565b60405180910390fd5b600060048281548110612da457612da3613c28565b5b90600052602060002090600902019050600073ffffffffffffffffffffffffffffffffffffffff168160050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3e906142b3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168160040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612eda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed190614647565b60405180910390fd5b8060010154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612f60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5790614c7d565b60405180910390fd5b8060010154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612fb391906140a0565b92505081905550338160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600101548160020160008282546130159190613ede565b925050819055507f45c4f9cbafe186141862608c493f28b823fde4c2142bedc3f5169961a73fdd22823360405161304d92919061433f565b60405180910390a15050565b6000811161309c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130939061480d565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b81526004016130f993929190614010565b6020604051808303816000875af1158015613118573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061313c9190614073565b5080600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461318c9190613ede565b9250508190555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146131f057600080fd5b6005819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b604051806101200160405280600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160608152602001606081525090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61334581613332565b811461335057600080fd5b50565b6000813590506133628161333c565b92915050565b60006020828403121561337e5761337d613328565b5b600061338c84828501613353565b91505092915050565b61339e81613332565b82525050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006133cf826133a4565b9050919050565b6133df816133c4565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561341f578082015181840152602081019050613404565b60008484015250505050565b6000601f19601f8301169050919050565b6000613447826133e5565b61345181856133f0565b9350613461818560208601613401565b61346a8161342b565b840191505092915050565b60006101208301600083015161348e6000860182613395565b5060208301516134a16020860182613395565b5060408301516134b46040860182613395565b5060608301516134c760608601826133d6565b5060808301516134da60808601826133d6565b5060a08301516134ed60a08601826133d6565b5060c083015161350060c08601826133d6565b5060e083015184820360e0860152613518828261343c565b915050610100830151848203610100860152613534828261343c565b9150508091505092915050565b6000602082019050818103600083015261355b8184613475565b905092915050565b61356c81613332565b82525050565b61357b816133c4565b82525050565b600082825260208201905092915050565b600061359d826133e5565b6135a78185613581565b93506135b7818560208601613401565b6135c08161342b565b840191505092915050565b6000610120820190506135e1600083018c613563565b6135ee602083018b613563565b6135fb604083018a613563565b6136086060830189613572565b6136156080830188613572565b61362260a0830187613572565b61362f60c0830186613572565b81810360e08301526136418185613592565b90508181036101008301526136568184613592565b90509a9950505050505050505050565b61366f816133c4565b811461367a57600080fd5b50565b60008135905061368c81613666565b92915050565b6000602082840312156136a8576136a7613328565b5b60006136b68482850161367d565b91505092915050565b60008115159050919050565b6136d4816136bf565b82525050565b60006020820190506136ef60008301846136cb565b92915050565b60008060006060848603121561370e5761370d613328565b5b600061371c86828701613353565b935050602061372d86828701613353565b925050604061373e86828701613353565b9150509250925092565b600060208201905061375d6000830184613563565b92915050565b6000806040838503121561377a57613779613328565b5b600061378885828601613353565b92505060206137998582860161367d565b9150509250929050565b60006020820190506137b86000830184613572565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000610120830160008301516138036000860182613395565b5060208301516138166020860182613395565b5060408301516138296040860182613395565b50606083015161383c60608601826133d6565b50608083015161384f60808601826133d6565b5060a083015161386260a08601826133d6565b5060c083015161387560c08601826133d6565b5060e083015184820360e086015261388d828261343c565b9150506101008301518482036101008601526138a9828261343c565b9150508091505092915050565b60006138c283836137ea565b905092915050565b6000602082019050919050565b60006138e2826137be565b6138ec81856137c9565b9350836020820285016138fe856137da565b8060005b8581101561393a578484038952815161391b85826138b6565b9450613926836138ca565b925060208a01995050600181019050613902565b50829750879550505050505092915050565b6000602082019050818103600083015261396681846138d7565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6139b08261342b565b810181811067ffffffffffffffff821117156139cf576139ce613978565b5b80604052505050565b60006139e261331e565b90506139ee82826139a7565b919050565b600067ffffffffffffffff821115613a0e57613a0d613978565b5b613a178261342b565b9050602081019050919050565b82818337600083830152505050565b6000613a46613a41846139f3565b6139d8565b905082815260208101848484011115613a6257613a61613973565b5b613a6d848285613a24565b509392505050565b600082601f830112613a8a57613a8961396e565b5b8135613a9a848260208601613a33565b91505092915050565b60008060008060808587031215613abd57613abc613328565b5b6000613acb87828801613353565b9450506020613adc8782880161367d565b935050604085013567ffffffffffffffff811115613afd57613afc61332d565b5b613b0987828801613a75565b925050606085013567ffffffffffffffff811115613b2a57613b2961332d565b5b613b3687828801613a75565b91505092959194509250565b6000819050919050565b6000613b67613b62613b5d846133a4565b613b42565b6133a4565b9050919050565b6000613b7982613b4c565b9050919050565b6000613b8b82613b6e565b9050919050565b613b9b81613b80565b82525050565b6000602082019050613bb66000830184613b92565b92915050565b7f496e6465782073686f756c642062652067726561746572207468616e20302e00600082015250565b6000613bf2601f83613581565b9150613bfd82613bbc565b602082019050919050565b60006020820190508181036000830152613c2181613be5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613c9e57607f821691505b602082108103613cb157613cb0613c57565b5b50919050565b7f42657420697320706c61796564206f722063616e63656c65642e000000000000600082015250565b6000613ced601a83613581565b9150613cf882613cb7565b602082019050919050565b60006020820190508181036000830152613d1c81613ce0565b9050919050565b7f47616d6520616c726561647920506c617965642e000000000000000000000000600082015250565b6000613d59601483613581565b9150613d6482613d23565b602082019050919050565b60006020820190508181036000830152613d8881613d4c565b9050919050565b7f506c6179657231207368756c64206a6f696e207468652067616d652e00000000600082015250565b6000613dc5601c83613581565b9150613dd082613d8f565b602082019050919050565b60006020820190508181036000830152613df481613db8565b9050919050565b7f506c6179657232207368756c64206a6f696e207468652067616d652e00000000600082015250565b6000613e31601c83613581565b9150613e3c82613dfb565b602082019050919050565b60006020820190508181036000830152613e6081613e24565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613ea182613332565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613ed357613ed2613e67565b5b600182019050919050565b6000613ee982613332565b9150613ef483613332565b9250828201905080821115613f0c57613f0b613e67565b5b92915050565b7f546f74616c2073686f756c64206265203130302e000000000000000000000000600082015250565b6000613f48601483613581565b9150613f5382613f12565b602082019050919050565b60006020820190508181036000830152613f7781613f3b565b9050919050565b7f596f752063616e2774207769746864726177206d6f7265207468616e20796f7560008201527f722062616c616e63652e00000000000000000000000000000000000000000000602082015250565b6000613fda602a83613581565b9150613fe582613f7e565b604082019050919050565b6000602082019050818103600083015261400981613fcd565b9050919050565b60006060820190506140256000830186613572565b6140326020830185613572565b61403f6040830184613563565b949350505050565b614050816136bf565b811461405b57600080fd5b50565b60008151905061406d81614047565b92915050565b60006020828403121561408957614088613328565b5b60006140978482850161405e565b91505092915050565b60006140ab82613332565b91506140b683613332565b92508282039050818111156140ce576140cd613e67565b5b92915050565b7f42657420416d6f756e742073686f756c6420626520677265617465722074686160008201527f6e20302e00000000000000000000000000000000000000000000000000000000602082015250565b6000614130602483613581565b915061413b826140d4565b604082019050919050565b6000602082019050818103600083015261415f81614123565b9050919050565b7f496e76616c69642047616d6520636f6e74726163742e00000000000000000000600082015250565b600061419c601683613581565b91506141a782614166565b602082019050919050565b600060208201905081810360008301526141cb8161418f565b9050919050565b60006040820190506141e76000830185613563565b6141f46020830184613563565b9392505050565b7f4265742069732072657365742e00000000000000000000000000000000000000600082015250565b6000614231600d83613581565b915061423c826141fb565b602082019050919050565b6000602082019050818103600083015261426081614224565b9050919050565b7f47616d652068617320656e6465642e0000000000000000000000000000000000600082015250565b600061429d600f83613581565b91506142a882614267565b602082019050919050565b600060208201905081810360008301526142cc81614290565b9050919050565b7f596f7520686176656e2774206a6f696e656420746869732067616d652e000000600082015250565b6000614309601d83613581565b9150614314826142d3565b602082019050919050565b60006020820190508181036000830152614338816142fc565b9050919050565b60006040820190506143546000830185613563565b6143616020830184613572565b9392505050565b6000815190506143778161333c565b92915050565b60006020828403121561439357614392613328565b5b60006143a184828501614368565b91505092915050565b7f47616d652063726561746f722063616e206f6e6c792063616e63656c2074686560008201527f2067616d652e0000000000000000000000000000000000000000000000000000602082015250565b6000614406602683613581565b9150614411826143aa565b604082019050919050565b60006020820190508181036000830152614435816143f9565b9050919050565b7f746f74616c2062657420616d6f756e742073686f756c64206e6f74206265207a60008201527f65726f2e00000000000000000000000000000000000000000000000000000000602082015250565b6000614498602483613581565b91506144a38261443c565b604082019050919050565b600060208201905081810360008301526144c78161448b565b9050919050565b7f62657420616d6f756e742073686f756c64206e6f74206265207a65726f2e0000600082015250565b6000614504601e83613581565b915061450f826144ce565b602082019050919050565b60006020820190508181036000830152614533816144f7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f47616d652063726561746f722063616e206f6e6c7920696e7669746520686f7560008201527f736520746f20706c61792e000000000000000000000000000000000000000000602082015250565b60006145c5602b83613581565b91506145d082614569565b604082019050919050565b600060208201905081810360008301526145f4816145b8565b9050919050565b7f47616d652069732066756c6c206e6f772e000000000000000000000000000000600082015250565b6000614631601183613581565b915061463c826145fb565b602082019050919050565b6000602082019050818103600083015261466081614624565b9050919050565b7f486f75736520646f6573206e6f74206861766520656e6f7567682062616c616e60008201527f636520746f206a6f696e2067616d652e00000000000000000000000000000000602082015250565b60006146c3603083613581565b91506146ce82614667565b604082019050919050565b600060208201905081810360008301526146f2816146b6565b9050919050565b600061470482613332565b915061470f83613332565b925082820261471d81613332565b9150828204841483151761473457614733613e67565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061477582613332565b915061478083613332565b9250826147905761478f61473b565b5b828204905092915050565b7f4d696e696d756d20416d6f756e742073686f756c64206265206772656174657260008201527f207468616e20302e000000000000000000000000000000000000000000000000602082015250565b60006147f7602883613581565b91506148028261479b565b604082019050919050565b60006020820190508181036000830152614826816147ea565b9050919050565b7f596f7520617265206e6f7420417574686f72697a65642047616d6520436f6e7460008201527f7261637420416464726573732e00000000000000000000000000000000000000602082015250565b6000614889602d83613581565b91506148948261482d565b604082019050919050565b600060208201905081810360008301526148b88161487c565b9050919050565b7f496e76616c69642047616d652e00000000000000000000000000000000000000600082015250565b60006148f5600d83613581565b9150614900826148bf565b602082019050919050565b60006020820190508181036000830152614924816148e8565b9050919050565b7f47616d652074797065206973206e6f7420636f72726563742e00000000000000600082015250565b6000614961601983613581565b915061496c8261492b565b602082019050919050565b6000602082019050818103600083015261499081614954565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026149f97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826149bc565b614a0386836149bc565b95508019841693508086168417925050509392505050565b6000614a36614a31614a2c84613332565b613b42565b613332565b9050919050565b6000819050919050565b614a5083614a1b565b614a64614a5c82614a3d565b8484546149c9565b825550505050565b600090565b614a79614a6c565b614a84818484614a47565b505050565b5b81811015614aa857614a9d600082614a71565b600181019050614a8a565b5050565b601f821115614aed57614abe81614997565b614ac7846149ac565b81016020851015614ad6578190505b614aea614ae2856149ac565b830182614a89565b50505b505050565b600082821c905092915050565b6000614b1060001984600802614af2565b1980831691505092915050565b6000614b298383614aff565b9150826002028217905092915050565b614b42826133e5565b67ffffffffffffffff811115614b5b57614b5a613978565b5b614b658254613c86565b614b70828285614aac565b600060209050601f831160018114614ba35760008415614b91578287015190505b614b9b8582614b1d565b865550614c03565b601f198416614bb186614997565b60005b82811015614bd957848901518255600182019150602085019450602081019050614bb4565b86831015614bf65784890151614bf2601f891682614aff565b8355505b6001600288020188555050505b505050505050565b7f596f7520646f206e6f74206861766520656e6f7567682062616c616e6365207460008201527f6f206a6f696e2067616d652e0000000000000000000000000000000000000000602082015250565b6000614c67602c83613581565b9150614c7282614c0b565b604082019050919050565b60006020820190508181036000830152614c9681614c5a565b905091905056fea26469706673582212200abec44a2572531affe7a9eb45e7e6adfb34d77d5830ac8fd64e58418dbaf90564736f6c634300081200330000000000000000000000000df596ad12f927e41ec317af7dd666ca3574845f

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061018e5760003560e01c80638c01d16d116100de578063c449731b11610097578063efaa55a011610071578063efaa55a014610487578063f14faf6f146104a3578063fa638764146104bf578063fc0c546a146104db5761018e565b8063c449731b1461040b578063cd3b356e14610427578063d8bfcf96146104575761018e565b80638c01d16d1461035d578063a169f86f14610379578063a43f15d814610397578063a4a2ca80146103b3578063b6b55f25146103d1578063c3a43824146103ed5761018e565b80633ea112221161014b5780635145cbc0116101255780635145cbc0146102e957806369958ab9146103075780637a1126f01461032357806382b98f9d1461033f5761018e565b80633ea11222146102935780633feef58a146102af578063481c6a75146102cb5761018e565b8063027b7d5b14610193578063117a5b90146101c35780631a1dd086146101fb578063224290851461022b5780632c32bde0146102475780632e1a7d4d14610277575b600080fd5b6101ad60048036038101906101a89190613368565b6104f9565b6040516101ba9190613541565b60405180910390f35b6101dd60048036038101906101d89190613368565b610a01565b6040516101f2999897969594939291906135cb565b60405180910390f35b61021560048036038101906102109190613692565b610bef565b60405161022291906136da565b60405180910390f35b610245600480360381019061024091906136f5565b610c9d565b005b610261600480360381019061025c9190613692565b610d6a565b60405161026e9190613748565b60405180910390f35b610291600480360381019061028c9190613368565b610d82565b005b6102ad60048036038101906102a89190613763565b610efe565b005b6102c960048036038101906102c49190613368565b61110b565b005b6102d3611422565b6040516102e091906137a3565b60405180910390f35b6102f1611448565b6040516102fe9190613748565b60405180910390f35b610321600480360381019061031c9190613368565b6114ea565b005b61033d60048036038101906103389190613368565b61195d565b005b610347611b55565b6040516103549190613748565b60405180910390f35b61037760048036038101906103729190613368565b611b5b565b005b610381611ce7565b60405161038e919061394c565b60405180910390f35b6103b160048036038101906103ac9190613368565b612242565b005b6103bb612689565b6040516103c89190613748565b60405180910390f35b6103eb60048036038101906103e69190613368565b61268f565b005b6103f56127cc565b6040516104029190613748565b60405180910390f35b61042560048036038101906104209190613aa3565b6127d2565b005b610441600480360381019061043c9190613368565b612cc2565b60405161044e91906137a3565b60405180910390f35b610471600480360381019061046c9190613692565b612d01565b60405161047e9190613748565b60405180910390f35b6104a1600480360381019061049c9190613368565b612d4a565b005b6104bd60048036038101906104b89190613368565b613059565b005b6104d960048036038101906104d49190613692565b613196565b005b6104e3613256565b6040516104f09190613ba1565b60405180910390f35b61050161327a565b6000821015610545576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053c90613c08565b60405180910390fd5b60006004838154811061055b5761055a613c28565b5b9060005260206000209060090201604051806101200160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016005820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016006820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016007820180546106fb90613c86565b80601f016020809104026020016040519081016040528092919081815260200182805461072790613c86565b80156107745780601f1061074957610100808354040283529160200191610774565b820191906000526020600020905b81548152906001019060200180831161075757829003601f168201915b5050505050815260200160088201805461078d90613c86565b80601f01602080910402602001604051908101604052809291908181526020018280546107b990613c86565b80156108065780601f106107db57610100808354040283529160200191610806565b820191906000526020600020905b8154815290600101906020018083116107e957829003601f168201915b50505050508152505090506000816020015111610858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084f90613d03565b60405180910390fd5b600081604001511161089f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089690613d03565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168160a0015173ffffffffffffffffffffffffffffffffffffffff1614610912576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090990613d6f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16816060015173ffffffffffffffffffffffffffffffffffffffff1603610985576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097c90613ddb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16816080015173ffffffffffffffffffffffffffffffffffffffff16036109f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ef90613e47565b60405180910390fd5b80915050919050565b60048181548110610a1157600080fd5b90600052602060002090600902016000915090508060000154908060010154908060020154908060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060060160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806007018054610ade90613c86565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0a90613c86565b8015610b575780601f10610b2c57610100808354040283529160200191610b57565b820191906000526020600020905b815481529060010190602001808311610b3a57829003601f168201915b505050505090806008018054610b6c90613c86565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9890613c86565b8015610be55780601f10610bba57610100808354040283529160200191610be5565b820191906000526020600020905b815481529060010190602001808311610bc857829003601f168201915b5050505050905089565b600080600090505b600580549050811015610c92578273ffffffffffffffffffffffffffffffffffffffff1660058281548110610c2f57610c2e613c28565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610c7f576001915050610c98565b8080610c8a90613e96565b915050610bf7565b50600090505b919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cf757600080fd5b6064828285610d069190613ede565b610d109190613ede565b14610d50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4790613f5e565b60405180910390fd5b826006819055508060088190555081600781905550505050565b60026020528060005260406000206000915090505481565b80600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfb90613ff0565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3033846040518463ffffffff1660e01b8152600401610e6193929190614010565b6020604051808303816000875af1158015610e80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea49190614073565b5080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ef491906140a0565b9250508190555050565b60008211610f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3890614146565b60405180910390fd5b610f4a81610bef565b610f89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f80906141b2565b60405180910390fd5b60006004600181600181540180825580915050039060005260206000209060090201905060006001600480549050610fc191906140a0565b9050808260000181905550838260010181905550828260060160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550338260030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110aa91906140a0565b92505081905550838260020160008282546110c59190613ede565b925050819055507fa26856d25e558c79e1632806bc6824075cf59885a115825f2aab62385a3f714281856040516110fd9291906141d2565b60405180910390a150505050565b600081101561114f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114690613c08565b60405180910390fd5b60006004828154811061116557611164613c28565b5b9060005260206000209060090201905060008160020154116111bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b390614247565b60405180910390fd5b6000816001015411611203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fa90614247565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168160050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128d906142b3565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168160040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131f9061431f565b60405180910390fd5b60008160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806001015481600201600082825461138491906140a0565b925050819055508060010154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113de9190613ede565b925050819055507f601fc33e47b454ed8aee9a1e0d7ed7add91efc6b3398783e1944bbd1f50a2583823360405161141692919061433f565b60405180910390a15050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016114a491906137a3565b602060405180830381865afa1580156114c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e5919061437d565b905090565b600081101561152e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152590613c08565b60405180910390fd5b60006004828154811061154457611543613c28565b5b90600052602060002090600902019050600073ffffffffffffffffffffffffffffffffffffffff168160050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115de90613d6f565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168160030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611679576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116709061441c565b60405180910390fd5b60008160020154116116c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b7906144ae565b60405180910390fd5b6000816001015411611707576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fe9061451a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168160040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117fd57806001015481600201600082825461177791906140a0565b925050819055508060010154600260008360040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117f59190613ede565b925050819055505b806001015481600201600082825461181591906140a0565b925050819055508060010154600260008360030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118939190613ede565b9250508190555060008160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f8f1ffb72cf9e5acc4eddafab2be9e2951d12377b9e1e4bdc7bd686b19c91fd89826040516119519190613748565b60405180910390a15050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119b757600080fd5b80600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611a39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3090613ff0565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401611ab893929190614010565b6020604051808303816000875af1158015611ad7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611afb9190614073565b5080600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611b4b91906140a0565b9250508190555050565b60065481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611bb557600080fd5b600580549050811015611ce45760008190505b6001600580549050611bda91906140a0565b811015611c9b576005600182611bf09190613ede565b81548110611c0157611c00613c28565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660058281548110611c4057611c3f613c28565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508080611c9390613e96565b915050611bc8565b506005805480611cae57611cad61453a565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590555b50565b6060600060048054905067ffffffffffffffff811115611d0a57611d09613978565b5b604051908082528060200260200182016040528015611d4357816020015b611d3061327a565b815260200190600190039081611d285790505b5090506000805b60048054905081101561223657600060048281548110611d6d57611d6c613c28565b5b906000526020600020906009020160010154118015611db15750600060048281548110611d9d57611d9c613c28565b5b906000526020600020906009020160020154115b8015611e2e5750600073ffffffffffffffffffffffffffffffffffffffff1660048281548110611de457611de3613c28565b5b906000526020600020906009020160050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b8015611eab5750600073ffffffffffffffffffffffffffffffffffffffff1660048281548110611e6157611e60613c28565b5b906000526020600020906009020160040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b8015611f295750600073ffffffffffffffffffffffffffffffffffffffff1660048281548110611ede57611edd613c28565b5b906000526020600020906009020160030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b156122235760048181548110611f4257611f41613c28565b5b9060005260206000209060090201604051806101200160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016005820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016006820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016007820180546120e290613c86565b80601f016020809104026020016040519081016040528092919081815260200182805461210e90613c86565b801561215b5780601f106121305761010080835404028352916020019161215b565b820191906000526020600020905b81548152906001019060200180831161213e57829003601f168201915b5050505050815260200160088201805461217490613c86565b80601f01602080910402602001604051908101604052809291908181526020018280546121a090613c86565b80156121ed5780601f106121c2576101008083540402835291602001916121ed565b820191906000526020600020905b8154815290600101906020018083116121d057829003601f168201915b50505050508152505083838151811061220957612208613c28565b5b6020026020010181905250818061221f90613e96565b9250505b808061222e90613e96565b915050611d4a565b50808252819250505090565b6000811015612286576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227d90613c08565b60405180910390fd5b60006004828154811061229c5761229b613c28565b5b906000526020600020906009020190503373ffffffffffffffffffffffffffffffffffffffff168160030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461233e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612335906145db565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168160050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c8906142b3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168160040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245b90614647565b60405180910390fd5b8060010154600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156124ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e1906146d9565b60405180910390fd5b600060646001600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461253a91906146f9565b612544919061476a565b9050808260010154111561258f57806040517f33028ba00000000000000000000000000000000000000000000000000000000081526004016125869190613748565b60405180910390fd5b8160010154600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125e291906140a0565b92505081905550308260040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600101548260020160008282546126449190613ede565b925050819055507f45c4f9cbafe186141862608c493f28b823fde4c2142bedc3f5169961a73fdd22833060405161267c92919061433f565b60405180910390a1505050565b60075481565b600081116126d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c99061480d565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b815260040161272f93929190614010565b6020604051808303816000875af115801561274e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127729190614073565b5080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127c29190613ede565b9250508190555050565b60085481565b6127db33610bef565b61281a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128119061489f565b60405180910390fd5b600084101561285e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128559061490b565b60405180910390fd5b60006004858154811061287457612873613c28565b5b90600052602060002090600902019050600073ffffffffffffffffffffffffffffffffffffffff168160030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612917576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290e90613ddb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168160040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036129aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a190613e47565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168160050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3490613d6f565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168160060160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612acf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac690614977565b60405180910390fd5b82816007019081612ae09190614b39565b5081816008019081612af29190614b39565b5060646008548260020154612b0791906146f9565b612b11919061476a565b60026000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b819190613ede565b9250508190555060646007548260020154612b9c91906146f9565b612ba6919061476a565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612bf49190613ede565b92505081905550838160050160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060646006548260020154612c5291906146f9565b612c5c919061476a565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612caa9190613ede565b92505081905550600081600201819055505050505050565b60058181548110612cd257600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000811015612d8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8590613c08565b60405180910390fd5b600060048281548110612da457612da3613c28565b5b90600052602060002090600902019050600073ffffffffffffffffffffffffffffffffffffffff168160050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3e906142b3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168160040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612eda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed190614647565b60405180910390fd5b8060010154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612f60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5790614c7d565b60405180910390fd5b8060010154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612fb391906140a0565b92505081905550338160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600101548160020160008282546130159190613ede565b925050819055507f45c4f9cbafe186141862608c493f28b823fde4c2142bedc3f5169961a73fdd22823360405161304d92919061433f565b60405180910390a15050565b6000811161309c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130939061480d565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b81526004016130f993929190614010565b6020604051808303816000875af1158015613118573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061313c9190614073565b5080600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461318c9190613ede565b9250508190555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146131f057600080fd5b6005819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b604051806101200160405280600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160608152602001606081525090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61334581613332565b811461335057600080fd5b50565b6000813590506133628161333c565b92915050565b60006020828403121561337e5761337d613328565b5b600061338c84828501613353565b91505092915050565b61339e81613332565b82525050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006133cf826133a4565b9050919050565b6133df816133c4565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561341f578082015181840152602081019050613404565b60008484015250505050565b6000601f19601f8301169050919050565b6000613447826133e5565b61345181856133f0565b9350613461818560208601613401565b61346a8161342b565b840191505092915050565b60006101208301600083015161348e6000860182613395565b5060208301516134a16020860182613395565b5060408301516134b46040860182613395565b5060608301516134c760608601826133d6565b5060808301516134da60808601826133d6565b5060a08301516134ed60a08601826133d6565b5060c083015161350060c08601826133d6565b5060e083015184820360e0860152613518828261343c565b915050610100830151848203610100860152613534828261343c565b9150508091505092915050565b6000602082019050818103600083015261355b8184613475565b905092915050565b61356c81613332565b82525050565b61357b816133c4565b82525050565b600082825260208201905092915050565b600061359d826133e5565b6135a78185613581565b93506135b7818560208601613401565b6135c08161342b565b840191505092915050565b6000610120820190506135e1600083018c613563565b6135ee602083018b613563565b6135fb604083018a613563565b6136086060830189613572565b6136156080830188613572565b61362260a0830187613572565b61362f60c0830186613572565b81810360e08301526136418185613592565b90508181036101008301526136568184613592565b90509a9950505050505050505050565b61366f816133c4565b811461367a57600080fd5b50565b60008135905061368c81613666565b92915050565b6000602082840312156136a8576136a7613328565b5b60006136b68482850161367d565b91505092915050565b60008115159050919050565b6136d4816136bf565b82525050565b60006020820190506136ef60008301846136cb565b92915050565b60008060006060848603121561370e5761370d613328565b5b600061371c86828701613353565b935050602061372d86828701613353565b925050604061373e86828701613353565b9150509250925092565b600060208201905061375d6000830184613563565b92915050565b6000806040838503121561377a57613779613328565b5b600061378885828601613353565b92505060206137998582860161367d565b9150509250929050565b60006020820190506137b86000830184613572565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000610120830160008301516138036000860182613395565b5060208301516138166020860182613395565b5060408301516138296040860182613395565b50606083015161383c60608601826133d6565b50608083015161384f60808601826133d6565b5060a083015161386260a08601826133d6565b5060c083015161387560c08601826133d6565b5060e083015184820360e086015261388d828261343c565b9150506101008301518482036101008601526138a9828261343c565b9150508091505092915050565b60006138c283836137ea565b905092915050565b6000602082019050919050565b60006138e2826137be565b6138ec81856137c9565b9350836020820285016138fe856137da565b8060005b8581101561393a578484038952815161391b85826138b6565b9450613926836138ca565b925060208a01995050600181019050613902565b50829750879550505050505092915050565b6000602082019050818103600083015261396681846138d7565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6139b08261342b565b810181811067ffffffffffffffff821117156139cf576139ce613978565b5b80604052505050565b60006139e261331e565b90506139ee82826139a7565b919050565b600067ffffffffffffffff821115613a0e57613a0d613978565b5b613a178261342b565b9050602081019050919050565b82818337600083830152505050565b6000613a46613a41846139f3565b6139d8565b905082815260208101848484011115613a6257613a61613973565b5b613a6d848285613a24565b509392505050565b600082601f830112613a8a57613a8961396e565b5b8135613a9a848260208601613a33565b91505092915050565b60008060008060808587031215613abd57613abc613328565b5b6000613acb87828801613353565b9450506020613adc8782880161367d565b935050604085013567ffffffffffffffff811115613afd57613afc61332d565b5b613b0987828801613a75565b925050606085013567ffffffffffffffff811115613b2a57613b2961332d565b5b613b3687828801613a75565b91505092959194509250565b6000819050919050565b6000613b67613b62613b5d846133a4565b613b42565b6133a4565b9050919050565b6000613b7982613b4c565b9050919050565b6000613b8b82613b6e565b9050919050565b613b9b81613b80565b82525050565b6000602082019050613bb66000830184613b92565b92915050565b7f496e6465782073686f756c642062652067726561746572207468616e20302e00600082015250565b6000613bf2601f83613581565b9150613bfd82613bbc565b602082019050919050565b60006020820190508181036000830152613c2181613be5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613c9e57607f821691505b602082108103613cb157613cb0613c57565b5b50919050565b7f42657420697320706c61796564206f722063616e63656c65642e000000000000600082015250565b6000613ced601a83613581565b9150613cf882613cb7565b602082019050919050565b60006020820190508181036000830152613d1c81613ce0565b9050919050565b7f47616d6520616c726561647920506c617965642e000000000000000000000000600082015250565b6000613d59601483613581565b9150613d6482613d23565b602082019050919050565b60006020820190508181036000830152613d8881613d4c565b9050919050565b7f506c6179657231207368756c64206a6f696e207468652067616d652e00000000600082015250565b6000613dc5601c83613581565b9150613dd082613d8f565b602082019050919050565b60006020820190508181036000830152613df481613db8565b9050919050565b7f506c6179657232207368756c64206a6f696e207468652067616d652e00000000600082015250565b6000613e31601c83613581565b9150613e3c82613dfb565b602082019050919050565b60006020820190508181036000830152613e6081613e24565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613ea182613332565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613ed357613ed2613e67565b5b600182019050919050565b6000613ee982613332565b9150613ef483613332565b9250828201905080821115613f0c57613f0b613e67565b5b92915050565b7f546f74616c2073686f756c64206265203130302e000000000000000000000000600082015250565b6000613f48601483613581565b9150613f5382613f12565b602082019050919050565b60006020820190508181036000830152613f7781613f3b565b9050919050565b7f596f752063616e2774207769746864726177206d6f7265207468616e20796f7560008201527f722062616c616e63652e00000000000000000000000000000000000000000000602082015250565b6000613fda602a83613581565b9150613fe582613f7e565b604082019050919050565b6000602082019050818103600083015261400981613fcd565b9050919050565b60006060820190506140256000830186613572565b6140326020830185613572565b61403f6040830184613563565b949350505050565b614050816136bf565b811461405b57600080fd5b50565b60008151905061406d81614047565b92915050565b60006020828403121561408957614088613328565b5b60006140978482850161405e565b91505092915050565b60006140ab82613332565b91506140b683613332565b92508282039050818111156140ce576140cd613e67565b5b92915050565b7f42657420416d6f756e742073686f756c6420626520677265617465722074686160008201527f6e20302e00000000000000000000000000000000000000000000000000000000602082015250565b6000614130602483613581565b915061413b826140d4565b604082019050919050565b6000602082019050818103600083015261415f81614123565b9050919050565b7f496e76616c69642047616d6520636f6e74726163742e00000000000000000000600082015250565b600061419c601683613581565b91506141a782614166565b602082019050919050565b600060208201905081810360008301526141cb8161418f565b9050919050565b60006040820190506141e76000830185613563565b6141f46020830184613563565b9392505050565b7f4265742069732072657365742e00000000000000000000000000000000000000600082015250565b6000614231600d83613581565b915061423c826141fb565b602082019050919050565b6000602082019050818103600083015261426081614224565b9050919050565b7f47616d652068617320656e6465642e0000000000000000000000000000000000600082015250565b600061429d600f83613581565b91506142a882614267565b602082019050919050565b600060208201905081810360008301526142cc81614290565b9050919050565b7f596f7520686176656e2774206a6f696e656420746869732067616d652e000000600082015250565b6000614309601d83613581565b9150614314826142d3565b602082019050919050565b60006020820190508181036000830152614338816142fc565b9050919050565b60006040820190506143546000830185613563565b6143616020830184613572565b9392505050565b6000815190506143778161333c565b92915050565b60006020828403121561439357614392613328565b5b60006143a184828501614368565b91505092915050565b7f47616d652063726561746f722063616e206f6e6c792063616e63656c2074686560008201527f2067616d652e0000000000000000000000000000000000000000000000000000602082015250565b6000614406602683613581565b9150614411826143aa565b604082019050919050565b60006020820190508181036000830152614435816143f9565b9050919050565b7f746f74616c2062657420616d6f756e742073686f756c64206e6f74206265207a60008201527f65726f2e00000000000000000000000000000000000000000000000000000000602082015250565b6000614498602483613581565b91506144a38261443c565b604082019050919050565b600060208201905081810360008301526144c78161448b565b9050919050565b7f62657420616d6f756e742073686f756c64206e6f74206265207a65726f2e0000600082015250565b6000614504601e83613581565b915061450f826144ce565b602082019050919050565b60006020820190508181036000830152614533816144f7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f47616d652063726561746f722063616e206f6e6c7920696e7669746520686f7560008201527f736520746f20706c61792e000000000000000000000000000000000000000000602082015250565b60006145c5602b83613581565b91506145d082614569565b604082019050919050565b600060208201905081810360008301526145f4816145b8565b9050919050565b7f47616d652069732066756c6c206e6f772e000000000000000000000000000000600082015250565b6000614631601183613581565b915061463c826145fb565b602082019050919050565b6000602082019050818103600083015261466081614624565b9050919050565b7f486f75736520646f6573206e6f74206861766520656e6f7567682062616c616e60008201527f636520746f206a6f696e2067616d652e00000000000000000000000000000000602082015250565b60006146c3603083613581565b91506146ce82614667565b604082019050919050565b600060208201905081810360008301526146f2816146b6565b9050919050565b600061470482613332565b915061470f83613332565b925082820261471d81613332565b9150828204841483151761473457614733613e67565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061477582613332565b915061478083613332565b9250826147905761478f61473b565b5b828204905092915050565b7f4d696e696d756d20416d6f756e742073686f756c64206265206772656174657260008201527f207468616e20302e000000000000000000000000000000000000000000000000602082015250565b60006147f7602883613581565b91506148028261479b565b604082019050919050565b60006020820190508181036000830152614826816147ea565b9050919050565b7f596f7520617265206e6f7420417574686f72697a65642047616d6520436f6e7460008201527f7261637420416464726573732e00000000000000000000000000000000000000602082015250565b6000614889602d83613581565b91506148948261482d565b604082019050919050565b600060208201905081810360008301526148b88161487c565b9050919050565b7f496e76616c69642047616d652e00000000000000000000000000000000000000600082015250565b60006148f5600d83613581565b9150614900826148bf565b602082019050919050565b60006020820190508181036000830152614924816148e8565b9050919050565b7f47616d652074797065206973206e6f7420636f72726563742e00000000000000600082015250565b6000614961601983613581565b915061496c8261492b565b602082019050919050565b6000602082019050818103600083015261499081614954565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026149f97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826149bc565b614a0386836149bc565b95508019841693508086168417925050509392505050565b6000614a36614a31614a2c84613332565b613b42565b613332565b9050919050565b6000819050919050565b614a5083614a1b565b614a64614a5c82614a3d565b8484546149c9565b825550505050565b600090565b614a79614a6c565b614a84818484614a47565b505050565b5b81811015614aa857614a9d600082614a71565b600181019050614a8a565b5050565b601f821115614aed57614abe81614997565b614ac7846149ac565b81016020851015614ad6578190505b614aea614ae2856149ac565b830182614a89565b50505b505050565b600082821c905092915050565b6000614b1060001984600802614af2565b1980831691505092915050565b6000614b298383614aff565b9150826002028217905092915050565b614b42826133e5565b67ffffffffffffffff811115614b5b57614b5a613978565b5b614b658254613c86565b614b70828285614aac565b600060209050601f831160018114614ba35760008415614b91578287015190505b614b9b8582614b1d565b865550614c03565b601f198416614bb186614997565b60005b82811015614bd957848901518255600182019150602085019450602081019050614bb4565b86831015614bf65784890151614bf2601f891682614aff565b8355505b6001600288020188555050505b505050505050565b7f596f7520646f206e6f74206861766520656e6f7567682062616c616e6365207460008201527f6f206a6f696e2067616d652e0000000000000000000000000000000000000000602082015250565b6000614c67602c83613581565b9150614c7282614c0b565b604082019050919050565b60006020820190508181036000830152614c9681614c5a565b905091905056fea26469706673582212200abec44a2572531affe7a9eb45e7e6adfb34d77d5830ac8fd64e58418dbaf90564736f6c63430008120033

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

0000000000000000000000000df596ad12f927e41ec317af7dd666ca3574845f

-----Decoded View---------------
Arg [0] : _token (address): 0x0DF596AD12F927e41EC317AF7DD666cA3574845f

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000000df596ad12f927e41ec317af7dd666ca3574845f


Deployed Bytecode Sourcemap

1311:10466:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6434:618;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1873:19;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;10109:317;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2961:383;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1394:49;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3912:303;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4800:691;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8461:601;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1365:22;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3352:123;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5499:927;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4470:322;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1936:36;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2576:377;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7060:761;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9070:1031;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1979:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3667:237;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2021:72;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10434:1249;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1899:30;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3483:176;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7829:624;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4223:239;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2446:122;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1339:19;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6434:618;6529:11;;:::i;:::-;6576:1;6566:6;:11;;6558:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;6624:16;6643:5;6649:6;6643:13;;;;;;;;:::i;:::-;;;;;;;;;;;;6624:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6692:1;6675:4;:14;;;:18;6667:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;6765:1;6743:4;:19;;;:23;6735:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;6839:1;6816:25;;:4;:11;;;:25;;;6808:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;6909:1;6885:26;;:4;:12;;;:26;;;6877:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6987:1;6963:26;;:4;:12;;;:26;;;6955:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7040:4;7033:11;;;6434:618;;;:::o;1873:19::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10109:317::-;10210:4;10237:9;10249:1;10237:13;;10232:162;10256:13;:20;;;;10252:1;:24;10232:162;;;10322:13;10302:33;;:13;10316:1;10302:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:33;;;10298:85;;10363:4;10356:11;;;;;10298:85;10278:3;;;;;:::i;:::-;;;;10232:162;;;;10413:5;10406:12;;10109:317;;;;:::o;2961:383::-;11746:7;;;;;;;;;;;11732:21;;:10;:21;;;11724:30;;;;;;3168:3:::1;3152:11;3141:8;3127:11;:22;;;;:::i;:::-;:36;;;;:::i;:::-;3126:45;3104:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;3249:11;3230:16;:30;;;;3287:8;3271:13;:24;;;;3325:11;3306:16;:30;;;;2961:383:::0;;;:::o;1394:49::-;;;;;;;;;;;;;;;;;:::o;3912:303::-;4017:7;3987:14;:26;4002:10;3987:26;;;;;;;;;;;;;;;;:37;;3965:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;4105:5;;;;;;;;;;:18;;;4132:4;4139:10;4151:7;4105:54;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4200:7;4170:14;:26;4185:10;4170:26;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;3912:303;:::o;4800:691::-;4923:1;4910:10;:14;4902:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;4998:42;5019:20;4998;:42::i;:::-;4976:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;5101:17;5121:5;:12;;;;;;;;;;;;;;;;;;;;;;;;5101:32;;5144:14;5176:1;5161:5;:12;;;;:16;;;;:::i;:::-;5144:33;;5203:6;5190:4;:10;;:19;;;;5237:10;5220:4;:14;;:27;;;;5285:20;5258:4;:24;;;:47;;;;;;;;;;;;;;;;;;5331:10;5316:4;:12;;;:25;;;;;;;;;;;;;;;;;;5382:10;5352:14;:26;5367:10;5352:26;;;;;;;;;;;;;;;;:40;;;;;;;:::i;:::-;;;;;;;;5426:10;5403:4;:19;;;:33;;;;;;;:::i;:::-;;;;;;;;5452:31;5464:6;5472:10;5452:31;;;;;;;:::i;:::-;;;;;;;;4891:600;;4800:691;;:::o;8461:601::-;8532:1;8522:6;:11;;8514:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;8580:17;8600:5;8606:6;8600:13;;;;;;;;:::i;:::-;;;;;;;;;;;;8580:33;;8654:1;8632:4;:19;;;:23;8624:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;8709:1;8692:4;:14;;;:18;8684:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;8770:1;8747:25;;:4;:11;;;;;;;;;;;;:25;;;8739:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;8827:10;8811:26;;:4;:12;;;;;;;;;;;;:26;;;8803:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8905:1;8882:4;:12;;;:25;;;;;;;;;;;;;;;;;;8941:4;:14;;;8918:4;:19;;;:37;;;;;;;:::i;:::-;;;;;;;;8996:4;:14;;;8966;:26;8981:10;8966:26;;;;;;;;;;;;;;;;:44;;;;;;;:::i;:::-;;;;;;;;9026:28;9035:6;9043:10;9026:28;;;;;;;:::i;:::-;;;;;;;;8503:559;8461:601;:::o;1365:22::-;;;;;;;;;;;;;:::o;3352:123::-;3410:7;3437:5;;;;;;;;;;;:15;;;3461:4;3437:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3430:37;;3352:123;:::o;5499:927::-;5571:1;5561:6;:11;;5553:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;5619:17;5639:5;5645:6;5639:13;;;;;;;;:::i;:::-;;;;;;;;;;;;5619:33;;5694:1;5671:25;;:4;:11;;;;;;;;;;;;:25;;;5663:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;5770:10;5754:26;;:4;:12;;;;;;;;;;;;:26;;;5732:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;5901:1;5879:4;:19;;;:23;5857:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;6002:1;5985:4;:14;;;:18;5977:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;6077:1;6053:26;;:4;:12;;;;;;;;;;;;:26;;;6049:157;;6119:4;:14;;;6096:4;:19;;;:37;;;;;;;:::i;:::-;;;;;;;;6180:4;:14;;;6148;:28;6163:4;:12;;;;;;;;;;;;6148:28;;;;;;;;;;;;;;;;:46;;;;;;;:::i;:::-;;;;;;;;6049:157;6239:4;:14;;;6216:4;:19;;;:37;;;;;;;:::i;:::-;;;;;;;;6296:4;:14;;;6264;:28;6279:4;:12;;;;;;;;;;;;6264:28;;;;;;;;;;;;;;;;:46;;;;;;;:::i;:::-;;;;;;;;6344:1;6321:4;:12;;;:25;;;;;;;;;;;;;;;;;;6380:1;6357:4;:12;;;:25;;;;;;;;;;;;;;;;;;6398:20;6411:6;6398:20;;;;;;:::i;:::-;;;;;;;;5542:884;5499:927;:::o;4470:322::-;11746:7;;;;;;;;;;;11732:21;;:10;:21;;;11724:30;;;;;;4594:7:::1;4561:14;:29;4584:4;4561:29;;;;;;;;;;;;;;;;:40;;4539:132;;;;;;;;;;;;:::i;:::-;;;;;;;;;4682:5;::::0;::::1;;;;;;;;:18;;;4709:4;4716:7;;;;;;;;;;;4725;4682:51;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4777:7;4744:14;:29;4767:4;4744:29;;;;;;;;;;;;;;;;:40;;;;;;;:::i;:::-;;;;;;;;4470:322:::0;:::o;1936:36::-;;;;:::o;2576:377::-;11746:7;;;;;;;;;;;11732:21;;:10;:21;;;11724:30;;;;;;2687:13:::1;:20;;;;2665:18;:42;2661:55:::0;2709:7:::1;2661:55;2747:9;2759:18;2747:30;;2728:188;2819:1;2796:13;:20;;;;:24;;;;:::i;:::-;2792:1;:28;2728:188;;;2884:13;2902:1;2898;:5;;;;:::i;:::-;2884:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2865:13;2879:1;2865:16;;;;;;;;:::i;:::-;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2835:3;;;;;:::i;:::-;;;;2728:188;;;;2926:13;:19;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;11765:1;2576:377:::0;:::o;7060:761::-;7109:13;7135:27;7176:5;:12;;;;7165:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;7135:54;;7202:13;7235:9;7230:421;7254:5;:12;;;;7250:1;:16;7230:421;;;7331:1;7310:5;7316:1;7310:8;;;;;;;;:::i;:::-;;;;;;;;;;;;:18;;;:22;:70;;;;;7379:1;7353:5;7359:1;7353:8;;;;;;;;:::i;:::-;;;;;;;;;;;;:23;;;:27;7310:70;:120;;;;;7428:1;7401:29;;:5;7407:1;7401:8;;;;;;;;:::i;:::-;;;;;;;;;;;;:15;;;;;;;;;;;;:29;;;7310:120;:171;;;;;7479:1;7451:30;;:5;7457:1;7451:8;;;;;;;;:::i;:::-;;;;;;;;;;;;:16;;;;;;;;;;;;:30;;;7310:171;:222;;;;;7530:1;7502:30;;:5;7508:1;7502:8;;;;;;;;:::i;:::-;;;;;;;;;;;;:16;;;;;;;;;;;;:30;;;;7310:222;7288:352;;;7590:5;7596:1;7590:8;;;;;;;;:::i;:::-;;;;;;;;;;;;7567:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:13;7581:5;7567:20;;;;;;;;:::i;:::-;;;;;;;:31;;;;7617:7;;;;;:::i;:::-;;;;7288:352;7268:3;;;;;:::i;:::-;;;;7230:421;;;;7764:5;7749:13;7742:28;7800:13;7793:20;;;;7060:761;:::o;9070:1031::-;9143:1;9133:6;:11;;9125:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;9191:17;9211:5;9217:6;9211:13;;;;;;;;:::i;:::-;;;;;;;;;;;;9191:33;;9273:10;9257:26;;:4;:12;;;;;;;;;;;;:26;;;9235:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;9396:1;9373:25;;:4;:11;;;;;;;;;;;;:25;;;9365:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;9461:1;9437:26;;:4;:12;;;;;;;;;;;;:26;;;9429:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;9551:4;:14;;;9518;:29;9541:4;9518:29;;;;;;;;;;;;;;;;:47;;9496:145;;;;;;;;;;;;:::i;:::-;;;;;;;;;9652:18;9711:3;9706:1;9674:14;:29;9697:4;9674:29;;;;;;;;;;;;;;;;:33;;;;:::i;:::-;9673:41;;;;:::i;:::-;9652:62;;9746:10;9729:4;:14;;;:27;9725:175;;;9876:10;9852:36;;;;;;;;;;;:::i;:::-;;;;;;;;9725:175;9943:4;:14;;;9910;:29;9933:4;9910:29;;;;;;;;;;;;;;;;:47;;;;;;;:::i;:::-;;;;;;;;9991:4;9968;:12;;;:28;;;;;;;;;;;;;;;;;;10030:4;:14;;;10007:4;:19;;;:37;;;;;;;:::i;:::-;;;;;;;;10060:33;10071:6;10087:4;10060:33;;;;;;;:::i;:::-;;;;;;;;9114:987;;9070:1031;:::o;1979:35::-;;;;:::o;3667:237::-;3737:1;3727:7;:11;3719:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;3794:5;;;;;;;;;;:18;;;3813:10;3833:4;3840:7;3794:54;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3889:7;3859:14;:26;3874:10;3859:26;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;3667:237;:::o;2021:72::-;;;;:::o;10434:1249::-;10645:32;10666:10;10645:20;:32::i;:::-;10623:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;10782:1;10769:9;:14;;10761:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;10812:17;10832:5;10838:9;10832:16;;;;;;;;:::i;:::-;;;;;;;;;;;;10812:36;;10891:1;10867:26;;:4;:12;;;;;;;;;;;;:26;;;10859:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10969:1;10945:26;;:4;:12;;;;;;;;;;;;:26;;;10937:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11046:1;11023:25;;:4;:11;;;;;;;;;;;;:25;;;11015:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;11134:10;11106:38;;:4;:24;;;;;;;;;;;;:38;;;11084:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;11230:15;11208:4;:19;;:37;;;;;;:::i;:::-;;11278:15;11256:4;:19;;:37;;;;;;:::i;:::-;;11373:3;11356:13;;11334:4;:19;;;:35;;;;:::i;:::-;11333:43;;;;:::i;:::-;11306:14;:23;11321:7;;;;;;;;;;;11306:23;;;;;;;;;;;;;;;;:70;;;;;;;:::i;:::-;;;;;;;;11489:3;11456:16;;11434:4;:19;;;:38;;;;:::i;:::-;11433:59;;;;:::i;:::-;11387:14;:29;11410:4;11387:29;;;;;;;;;;;;;;;;:105;;;;;;;:::i;:::-;;;;;;;;11519:13;11505:4;:11;;;:27;;;;;;;;;;;;;;;;;;11635:3;11615:16;;11580:4;:19;;;:51;;;;:::i;:::-;11579:59;;;;:::i;:::-;11545:14;:29;11560:13;11545:29;;;;;;;;;;;;;;;;:94;;;;;;;:::i;:::-;;;;;;;;11674:1;11652:4;:19;;:23;;;;10612:1071;10434:1249;;;;:::o;1899:30::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3483:176::-;3590:7;3622:14;:29;3637:13;3622:29;;;;;;;;;;;;;;;;3615:36;;3483:176;;;:::o;7829:624::-;7899:1;7889:6;:11;;7881:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;7947:17;7967:5;7973:6;7967:13;;;;;;;;:::i;:::-;;;;;;;;;;;;7947:33;;8022:1;7999:25;;:4;:11;;;;;;;;;;;;:25;;;7991:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;8087:1;8063:26;;:4;:12;;;;;;;;;;;;:26;;;8055:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;8174:4;:14;;;8144;:26;8159:10;8144:26;;;;;;;;;;;;;;;;:44;;8122:138;;;;;;;;;;;;:::i;:::-;;;;;;;;;8301:4;:14;;;8271;:26;8286:10;8271:26;;;;;;;;;;;;;;;;:44;;;;;;;:::i;:::-;;;;;;;;8341:10;8326:4;:12;;;:25;;;;;;;;;;;;;;;;;;8385:4;:14;;;8362:4;:19;;;:37;;;;;;;:::i;:::-;;;;;;;;8415:30;8426:6;8434:10;8415:30;;;;;;;:::i;:::-;;;;;;;;7870:583;7829:624;:::o;4223:239::-;4292:1;4282:7;:11;4274:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;4349:5;;;;;;;;;;:18;;;4368:10;4388:4;4395:7;4349:54;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4447:7;4414:14;:29;4437:4;4414:29;;;;;;;;;;;;;;;;:40;;;;;;;:::i;:::-;;;;;;;;4223:239;:::o;2446:122::-;11746:7;;;;;;;;;;;11732:21;;:10;:21;;;11724:30;;;;;;2527:13:::1;2546;2527:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2446:122:::0;:::o;1339:19::-;;;;;;;;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:108::-;1102:24;1120:5;1102:24;:::i;:::-;1097:3;1090:37;1025:108;;:::o;1139:126::-;1176:7;1216:42;1209:5;1205:54;1194:65;;1139:126;;;:::o;1271:96::-;1308:7;1337:24;1355:5;1337:24;:::i;:::-;1326:35;;1271:96;;;:::o;1373:108::-;1450:24;1468:5;1450:24;:::i;:::-;1445:3;1438:37;1373:108;;:::o;1487:99::-;1539:6;1573:5;1567:12;1557:22;;1487:99;;;:::o;1592:159::-;1666:11;1700:6;1695:3;1688:19;1740:4;1735:3;1731:14;1716:29;;1592:159;;;;:::o;1757:246::-;1838:1;1848:113;1862:6;1859:1;1856:13;1848:113;;;1947:1;1942:3;1938:11;1932:18;1928:1;1923:3;1919:11;1912:39;1884:2;1881:1;1877:10;1872:15;;1848:113;;;1995:1;1986:6;1981:3;1977:16;1970:27;1819:184;1757:246;;;:::o;2009:102::-;2050:6;2101:2;2097:7;2092:2;2085:5;2081:14;2077:28;2067:38;;2009:102;;;:::o;2117:357::-;2195:3;2223:39;2256:5;2223:39;:::i;:::-;2278:61;2332:6;2327:3;2278:61;:::i;:::-;2271:68;;2348:65;2406:6;2401:3;2394:4;2387:5;2383:16;2348:65;:::i;:::-;2438:29;2460:6;2438:29;:::i;:::-;2433:3;2429:39;2422:46;;2199:275;2117:357;;;;:::o;2538:1952::-;2649:3;2685:6;2680:3;2676:16;2775:4;2768:5;2764:16;2758:23;2794:63;2851:4;2846:3;2842:14;2828:12;2794:63;:::i;:::-;2702:165;2954:4;2947:5;2943:16;2937:23;2973:63;3030:4;3025:3;3021:14;3007:12;2973:63;:::i;:::-;2877:169;3138:4;3131:5;3127:16;3121:23;3157:63;3214:4;3209:3;3205:14;3191:12;3157:63;:::i;:::-;3056:174;3315:4;3308:5;3304:16;3298:23;3334:63;3391:4;3386:3;3382:14;3368:12;3334:63;:::i;:::-;3240:167;3492:4;3485:5;3481:16;3475:23;3511:63;3568:4;3563:3;3559:14;3545:12;3511:63;:::i;:::-;3417:167;3668:4;3661:5;3657:16;3651:23;3687:63;3744:4;3739:3;3735:14;3721:12;3687:63;:::i;:::-;3594:166;3857:4;3850:5;3846:16;3840:23;3876:63;3933:4;3928:3;3924:14;3910:12;3876:63;:::i;:::-;3770:179;4041:4;4034:5;4030:16;4024:23;4094:3;4088:4;4084:14;4077:4;4072:3;4068:14;4061:38;4120:73;4188:4;4174:12;4120:73;:::i;:::-;4112:81;;3959:245;4296:6;4289:5;4285:18;4279:25;4353:3;4347:4;4343:14;4334:6;4329:3;4325:16;4318:40;4379:73;4447:4;4433:12;4379:73;:::i;:::-;4371:81;;4214:249;4480:4;4473:11;;2654:1836;2538:1952;;;;:::o;4496:357::-;4631:4;4669:2;4658:9;4654:18;4646:26;;4718:9;4712:4;4708:20;4704:1;4693:9;4689:17;4682:47;4746:100;4841:4;4832:6;4746:100;:::i;:::-;4738:108;;4496:357;;;;:::o;4859:118::-;4946:24;4964:5;4946:24;:::i;:::-;4941:3;4934:37;4859:118;;:::o;4983:::-;5070:24;5088:5;5070:24;:::i;:::-;5065:3;5058:37;4983:118;;:::o;5107:169::-;5191:11;5225:6;5220:3;5213:19;5265:4;5260:3;5256:14;5241:29;;5107:169;;;;:::o;5282:377::-;5370:3;5398:39;5431:5;5398:39;:::i;:::-;5453:71;5517:6;5512:3;5453:71;:::i;:::-;5446:78;;5533:65;5591:6;5586:3;5579:4;5572:5;5568:16;5533:65;:::i;:::-;5623:29;5645:6;5623:29;:::i;:::-;5618:3;5614:39;5607:46;;5374:285;5282:377;;;;:::o;5665:1290::-;6022:4;6060:3;6049:9;6045:19;6037:27;;6074:71;6142:1;6131:9;6127:17;6118:6;6074:71;:::i;:::-;6155:72;6223:2;6212:9;6208:18;6199:6;6155:72;:::i;:::-;6237;6305:2;6294:9;6290:18;6281:6;6237:72;:::i;:::-;6319;6387:2;6376:9;6372:18;6363:6;6319:72;:::i;:::-;6401:73;6469:3;6458:9;6454:19;6445:6;6401:73;:::i;:::-;6484;6552:3;6541:9;6537:19;6528:6;6484:73;:::i;:::-;6567;6635:3;6624:9;6620:19;6611:6;6567:73;:::i;:::-;6688:9;6682:4;6678:20;6672:3;6661:9;6657:19;6650:49;6716:78;6789:4;6780:6;6716:78;:::i;:::-;6708:86;;6842:9;6836:4;6832:20;6826:3;6815:9;6811:19;6804:49;6870:78;6943:4;6934:6;6870:78;:::i;:::-;6862:86;;5665:1290;;;;;;;;;;;;:::o;6961:122::-;7034:24;7052:5;7034:24;:::i;:::-;7027:5;7024:35;7014:63;;7073:1;7070;7063:12;7014:63;6961:122;:::o;7089:139::-;7135:5;7173:6;7160:20;7151:29;;7189:33;7216:5;7189:33;:::i;:::-;7089:139;;;;:::o;7234:329::-;7293:6;7342:2;7330:9;7321:7;7317:23;7313:32;7310:119;;;7348:79;;:::i;:::-;7310:119;7468:1;7493:53;7538:7;7529:6;7518:9;7514:22;7493:53;:::i;:::-;7483:63;;7439:117;7234:329;;;;:::o;7569:90::-;7603:7;7646:5;7639:13;7632:21;7621:32;;7569:90;;;:::o;7665:109::-;7746:21;7761:5;7746:21;:::i;:::-;7741:3;7734:34;7665:109;;:::o;7780:210::-;7867:4;7905:2;7894:9;7890:18;7882:26;;7918:65;7980:1;7969:9;7965:17;7956:6;7918:65;:::i;:::-;7780:210;;;;:::o;7996:619::-;8073:6;8081;8089;8138:2;8126:9;8117:7;8113:23;8109:32;8106:119;;;8144:79;;:::i;:::-;8106:119;8264:1;8289:53;8334:7;8325:6;8314:9;8310:22;8289:53;:::i;:::-;8279:63;;8235:117;8391:2;8417:53;8462:7;8453:6;8442:9;8438:22;8417:53;:::i;:::-;8407:63;;8362:118;8519:2;8545:53;8590:7;8581:6;8570:9;8566:22;8545:53;:::i;:::-;8535:63;;8490:118;7996:619;;;;;:::o;8621:222::-;8714:4;8752:2;8741:9;8737:18;8729:26;;8765:71;8833:1;8822:9;8818:17;8809:6;8765:71;:::i;:::-;8621:222;;;;:::o;8849:474::-;8917:6;8925;8974:2;8962:9;8953:7;8949:23;8945:32;8942:119;;;8980:79;;:::i;:::-;8942:119;9100:1;9125:53;9170:7;9161:6;9150:9;9146:22;9125:53;:::i;:::-;9115:63;;9071:117;9227:2;9253:53;9298:7;9289:6;9278:9;9274:22;9253:53;:::i;:::-;9243:63;;9198:118;8849:474;;;;;:::o;9329:222::-;9422:4;9460:2;9449:9;9445:18;9437:26;;9473:71;9541:1;9530:9;9526:17;9517:6;9473:71;:::i;:::-;9329:222;;;;:::o;9557:135::-;9645:6;9679:5;9673:12;9663:22;;9557:135;;;:::o;9698:205::-;9818:11;9852:6;9847:3;9840:19;9892:4;9887:3;9883:14;9868:29;;9698:205;;;;:::o;9909:153::-;9997:4;10020:3;10012:11;;10050:4;10045:3;10041:14;10033:22;;9909:153;;;:::o;10126:1942::-;10227:3;10263:6;10258:3;10254:16;10353:4;10346:5;10342:16;10336:23;10372:63;10429:4;10424:3;10420:14;10406:12;10372:63;:::i;:::-;10280:165;10532:4;10525:5;10521:16;10515:23;10551:63;10608:4;10603:3;10599:14;10585:12;10551:63;:::i;:::-;10455:169;10716:4;10709:5;10705:16;10699:23;10735:63;10792:4;10787:3;10783:14;10769:12;10735:63;:::i;:::-;10634:174;10893:4;10886:5;10882:16;10876:23;10912:63;10969:4;10964:3;10960:14;10946:12;10912:63;:::i;:::-;10818:167;11070:4;11063:5;11059:16;11053:23;11089:63;11146:4;11141:3;11137:14;11123:12;11089:63;:::i;:::-;10995:167;11246:4;11239:5;11235:16;11229:23;11265:63;11322:4;11317:3;11313:14;11299:12;11265:63;:::i;:::-;11172:166;11435:4;11428:5;11424:16;11418:23;11454:63;11511:4;11506:3;11502:14;11488:12;11454:63;:::i;:::-;11348:179;11619:4;11612:5;11608:16;11602:23;11672:3;11666:4;11662:14;11655:4;11650:3;11646:14;11639:38;11698:73;11766:4;11752:12;11698:73;:::i;:::-;11690:81;;11537:245;11874:6;11867:5;11863:18;11857:25;11931:3;11925:4;11921:14;11912:6;11907:3;11903:16;11896:40;11957:73;12025:4;12011:12;11957:73;:::i;:::-;11949:81;;11792:249;12058:4;12051:11;;10232:1836;10126:1942;;;;:::o;12074:240::-;12185:10;12220:88;12304:3;12296:6;12220:88;:::i;:::-;12206:102;;12074:240;;;;:::o;12320:134::-;12411:4;12443;12438:3;12434:14;12426:22;;12320:134;;;:::o;12522:1079::-;12683:3;12712:75;12781:5;12712:75;:::i;:::-;12803:107;12903:6;12898:3;12803:107;:::i;:::-;12796:114;;12936:3;12981:4;12973:6;12969:17;12964:3;12960:27;13011:77;13082:5;13011:77;:::i;:::-;13111:7;13142:1;13127:429;13152:6;13149:1;13146:13;13127:429;;;13223:9;13217:4;13213:20;13208:3;13201:33;13274:6;13268:13;13302:106;13403:4;13388:13;13302:106;:::i;:::-;13294:114;;13431:81;13505:6;13431:81;:::i;:::-;13421:91;;13541:4;13536:3;13532:14;13525:21;;13187:369;13174:1;13171;13167:9;13162:14;;13127:429;;;13131:14;13572:4;13565:11;;13592:3;13585:10;;12688:913;;;;;12522:1079;;;;:::o;13607:457::-;13792:4;13830:2;13819:9;13815:18;13807:26;;13879:9;13873:4;13869:20;13865:1;13854:9;13850:17;13843:47;13907:150;14052:4;14043:6;13907:150;:::i;:::-;13899:158;;13607:457;;;;:::o;14070:117::-;14179:1;14176;14169:12;14193:117;14302:1;14299;14292:12;14316:180;14364:77;14361:1;14354:88;14461:4;14458:1;14451:15;14485:4;14482:1;14475:15;14502:281;14585:27;14607:4;14585:27;:::i;:::-;14577:6;14573:40;14715:6;14703:10;14700:22;14679:18;14667:10;14664:34;14661:62;14658:88;;;14726:18;;:::i;:::-;14658:88;14766:10;14762:2;14755:22;14545:238;14502:281;;:::o;14789:129::-;14823:6;14850:20;;:::i;:::-;14840:30;;14879:33;14907:4;14899:6;14879:33;:::i;:::-;14789:129;;;:::o;14924:308::-;14986:4;15076:18;15068:6;15065:30;15062:56;;;15098:18;;:::i;:::-;15062:56;15136:29;15158:6;15136:29;:::i;:::-;15128:37;;15220:4;15214;15210:15;15202:23;;14924:308;;;:::o;15238:146::-;15335:6;15330:3;15325;15312:30;15376:1;15367:6;15362:3;15358:16;15351:27;15238:146;;;:::o;15390:425::-;15468:5;15493:66;15509:49;15551:6;15509:49;:::i;:::-;15493:66;:::i;:::-;15484:75;;15582:6;15575:5;15568:21;15620:4;15613:5;15609:16;15658:3;15649:6;15644:3;15640:16;15637:25;15634:112;;;15665:79;;:::i;:::-;15634:112;15755:54;15802:6;15797:3;15792;15755:54;:::i;:::-;15474:341;15390:425;;;;;:::o;15835:340::-;15891:5;15940:3;15933:4;15925:6;15921:17;15917:27;15907:122;;15948:79;;:::i;:::-;15907:122;16065:6;16052:20;16090:79;16165:3;16157:6;16150:4;16142:6;16138:17;16090:79;:::i;:::-;16081:88;;15897:278;15835:340;;;;:::o;16181:1125::-;16287:6;16295;16303;16311;16360:3;16348:9;16339:7;16335:23;16331:33;16328:120;;;16367:79;;:::i;:::-;16328:120;16487:1;16512:53;16557:7;16548:6;16537:9;16533:22;16512:53;:::i;:::-;16502:63;;16458:117;16614:2;16640:53;16685:7;16676:6;16665:9;16661:22;16640:53;:::i;:::-;16630:63;;16585:118;16770:2;16759:9;16755:18;16742:32;16801:18;16793:6;16790:30;16787:117;;;16823:79;;:::i;:::-;16787:117;16928:63;16983:7;16974:6;16963:9;16959:22;16928:63;:::i;:::-;16918:73;;16713:288;17068:2;17057:9;17053:18;17040:32;17099:18;17091:6;17088:30;17085:117;;;17121:79;;:::i;:::-;17085:117;17226:63;17281:7;17272:6;17261:9;17257:22;17226:63;:::i;:::-;17216:73;;17011:288;16181:1125;;;;;;;:::o;17312:60::-;17340:3;17361:5;17354:12;;17312:60;;;:::o;17378:142::-;17428:9;17461:53;17479:34;17488:24;17506:5;17488:24;:::i;:::-;17479:34;:::i;:::-;17461:53;:::i;:::-;17448:66;;17378:142;;;:::o;17526:126::-;17576:9;17609:37;17640:5;17609:37;:::i;:::-;17596:50;;17526:126;;;:::o;17658:139::-;17721:9;17754:37;17785:5;17754:37;:::i;:::-;17741:50;;17658:139;;;:::o;17803:157::-;17903:50;17947:5;17903:50;:::i;:::-;17898:3;17891:63;17803:157;;:::o;17966:248::-;18072:4;18110:2;18099:9;18095:18;18087:26;;18123:84;18204:1;18193:9;18189:17;18180:6;18123:84;:::i;:::-;17966:248;;;;:::o;18220:181::-;18360:33;18356:1;18348:6;18344:14;18337:57;18220:181;:::o;18407:366::-;18549:3;18570:67;18634:2;18629:3;18570:67;:::i;:::-;18563:74;;18646:93;18735:3;18646:93;:::i;:::-;18764:2;18759:3;18755:12;18748:19;;18407:366;;;:::o;18779:419::-;18945:4;18983:2;18972:9;18968:18;18960:26;;19032:9;19026:4;19022:20;19018:1;19007:9;19003:17;18996:47;19060:131;19186:4;19060:131;:::i;:::-;19052:139;;18779:419;;;:::o;19204:180::-;19252:77;19249:1;19242:88;19349:4;19346:1;19339:15;19373:4;19370:1;19363:15;19390:180;19438:77;19435:1;19428:88;19535:4;19532:1;19525:15;19559:4;19556:1;19549:15;19576:320;19620:6;19657:1;19651:4;19647:12;19637:22;;19704:1;19698:4;19694:12;19725:18;19715:81;;19781:4;19773:6;19769:17;19759:27;;19715:81;19843:2;19835:6;19832:14;19812:18;19809:38;19806:84;;19862:18;;:::i;:::-;19806:84;19627:269;19576:320;;;:::o;19902:176::-;20042:28;20038:1;20030:6;20026:14;20019:52;19902:176;:::o;20084:366::-;20226:3;20247:67;20311:2;20306:3;20247:67;:::i;:::-;20240:74;;20323:93;20412:3;20323:93;:::i;:::-;20441:2;20436:3;20432:12;20425:19;;20084:366;;;:::o;20456:419::-;20622:4;20660:2;20649:9;20645:18;20637:26;;20709:9;20703:4;20699:20;20695:1;20684:9;20680:17;20673:47;20737:131;20863:4;20737:131;:::i;:::-;20729:139;;20456:419;;;:::o;20881:170::-;21021:22;21017:1;21009:6;21005:14;20998:46;20881:170;:::o;21057:366::-;21199:3;21220:67;21284:2;21279:3;21220:67;:::i;:::-;21213:74;;21296:93;21385:3;21296:93;:::i;:::-;21414:2;21409:3;21405:12;21398:19;;21057:366;;;:::o;21429:419::-;21595:4;21633:2;21622:9;21618:18;21610:26;;21682:9;21676:4;21672:20;21668:1;21657:9;21653:17;21646:47;21710:131;21836:4;21710:131;:::i;:::-;21702:139;;21429:419;;;:::o;21854:178::-;21994:30;21990:1;21982:6;21978:14;21971:54;21854:178;:::o;22038:366::-;22180:3;22201:67;22265:2;22260:3;22201:67;:::i;:::-;22194:74;;22277:93;22366:3;22277:93;:::i;:::-;22395:2;22390:3;22386:12;22379:19;;22038:366;;;:::o;22410:419::-;22576:4;22614:2;22603:9;22599:18;22591:26;;22663:9;22657:4;22653:20;22649:1;22638:9;22634:17;22627:47;22691:131;22817:4;22691:131;:::i;:::-;22683:139;;22410:419;;;:::o;22835:178::-;22975:30;22971:1;22963:6;22959:14;22952:54;22835:178;:::o;23019:366::-;23161:3;23182:67;23246:2;23241:3;23182:67;:::i;:::-;23175:74;;23258:93;23347:3;23258:93;:::i;:::-;23376:2;23371:3;23367:12;23360:19;;23019:366;;;:::o;23391:419::-;23557:4;23595:2;23584:9;23580:18;23572:26;;23644:9;23638:4;23634:20;23630:1;23619:9;23615:17;23608:47;23672:131;23798:4;23672:131;:::i;:::-;23664:139;;23391:419;;;:::o;23816:180::-;23864:77;23861:1;23854:88;23961:4;23958:1;23951:15;23985:4;23982:1;23975:15;24002:233;24041:3;24064:24;24082:5;24064:24;:::i;:::-;24055:33;;24110:66;24103:5;24100:77;24097:103;;24180:18;;:::i;:::-;24097:103;24227:1;24220:5;24216:13;24209:20;;24002:233;;;:::o;24241:191::-;24281:3;24300:20;24318:1;24300:20;:::i;:::-;24295:25;;24334:20;24352:1;24334:20;:::i;:::-;24329:25;;24377:1;24374;24370:9;24363:16;;24398:3;24395:1;24392:10;24389:36;;;24405:18;;:::i;:::-;24389:36;24241:191;;;;:::o;24438:170::-;24578:22;24574:1;24566:6;24562:14;24555:46;24438:170;:::o;24614:366::-;24756:3;24777:67;24841:2;24836:3;24777:67;:::i;:::-;24770:74;;24853:93;24942:3;24853:93;:::i;:::-;24971:2;24966:3;24962:12;24955:19;;24614:366;;;:::o;24986:419::-;25152:4;25190:2;25179:9;25175:18;25167:26;;25239:9;25233:4;25229:20;25225:1;25214:9;25210:17;25203:47;25267:131;25393:4;25267:131;:::i;:::-;25259:139;;24986:419;;;:::o;25411:229::-;25551:34;25547:1;25539:6;25535:14;25528:58;25620:12;25615:2;25607:6;25603:15;25596:37;25411:229;:::o;25646:366::-;25788:3;25809:67;25873:2;25868:3;25809:67;:::i;:::-;25802:74;;25885:93;25974:3;25885:93;:::i;:::-;26003:2;25998:3;25994:12;25987:19;;25646:366;;;:::o;26018:419::-;26184:4;26222:2;26211:9;26207:18;26199:26;;26271:9;26265:4;26261:20;26257:1;26246:9;26242:17;26235:47;26299:131;26425:4;26299:131;:::i;:::-;26291:139;;26018:419;;;:::o;26443:442::-;26592:4;26630:2;26619:9;26615:18;26607:26;;26643:71;26711:1;26700:9;26696:17;26687:6;26643:71;:::i;:::-;26724:72;26792:2;26781:9;26777:18;26768:6;26724:72;:::i;:::-;26806;26874:2;26863:9;26859:18;26850:6;26806:72;:::i;:::-;26443:442;;;;;;:::o;26891:116::-;26961:21;26976:5;26961:21;:::i;:::-;26954:5;26951:32;26941:60;;26997:1;26994;26987:12;26941:60;26891:116;:::o;27013:137::-;27067:5;27098:6;27092:13;27083:22;;27114:30;27138:5;27114:30;:::i;:::-;27013:137;;;;:::o;27156:345::-;27223:6;27272:2;27260:9;27251:7;27247:23;27243:32;27240:119;;;27278:79;;:::i;:::-;27240:119;27398:1;27423:61;27476:7;27467:6;27456:9;27452:22;27423:61;:::i;:::-;27413:71;;27369:125;27156:345;;;;:::o;27507:194::-;27547:4;27567:20;27585:1;27567:20;:::i;:::-;27562:25;;27601:20;27619:1;27601:20;:::i;:::-;27596:25;;27645:1;27642;27638:9;27630:17;;27669:1;27663:4;27660:11;27657:37;;;27674:18;;:::i;:::-;27657:37;27507:194;;;;:::o;27707:223::-;27847:34;27843:1;27835:6;27831:14;27824:58;27916:6;27911:2;27903:6;27899:15;27892:31;27707:223;:::o;27936:366::-;28078:3;28099:67;28163:2;28158:3;28099:67;:::i;:::-;28092:74;;28175:93;28264:3;28175:93;:::i;:::-;28293:2;28288:3;28284:12;28277:19;;27936:366;;;:::o;28308:419::-;28474:4;28512:2;28501:9;28497:18;28489:26;;28561:9;28555:4;28551:20;28547:1;28536:9;28532:17;28525:47;28589:131;28715:4;28589:131;:::i;:::-;28581:139;;28308:419;;;:::o;28733:172::-;28873:24;28869:1;28861:6;28857:14;28850:48;28733:172;:::o;28911:366::-;29053:3;29074:67;29138:2;29133:3;29074:67;:::i;:::-;29067:74;;29150:93;29239:3;29150:93;:::i;:::-;29268:2;29263:3;29259:12;29252:19;;28911:366;;;:::o;29283:419::-;29449:4;29487:2;29476:9;29472:18;29464:26;;29536:9;29530:4;29526:20;29522:1;29511:9;29507:17;29500:47;29564:131;29690:4;29564:131;:::i;:::-;29556:139;;29283:419;;;:::o;29708:332::-;29829:4;29867:2;29856:9;29852:18;29844:26;;29880:71;29948:1;29937:9;29933:17;29924:6;29880:71;:::i;:::-;29961:72;30029:2;30018:9;30014:18;30005:6;29961:72;:::i;:::-;29708:332;;;;;:::o;30046:163::-;30186:15;30182:1;30174:6;30170:14;30163:39;30046:163;:::o;30215:366::-;30357:3;30378:67;30442:2;30437:3;30378:67;:::i;:::-;30371:74;;30454:93;30543:3;30454:93;:::i;:::-;30572:2;30567:3;30563:12;30556:19;;30215:366;;;:::o;30587:419::-;30753:4;30791:2;30780:9;30776:18;30768:26;;30840:9;30834:4;30830:20;30826:1;30815:9;30811:17;30804:47;30868:131;30994:4;30868:131;:::i;:::-;30860:139;;30587:419;;;:::o;31012:165::-;31152:17;31148:1;31140:6;31136:14;31129:41;31012:165;:::o;31183:366::-;31325:3;31346:67;31410:2;31405:3;31346:67;:::i;:::-;31339:74;;31422:93;31511:3;31422:93;:::i;:::-;31540:2;31535:3;31531:12;31524:19;;31183:366;;;:::o;31555:419::-;31721:4;31759:2;31748:9;31744:18;31736:26;;31808:9;31802:4;31798:20;31794:1;31783:9;31779:17;31772:47;31836:131;31962:4;31836:131;:::i;:::-;31828:139;;31555:419;;;:::o;31980:179::-;32120:31;32116:1;32108:6;32104:14;32097:55;31980:179;:::o;32165:366::-;32307:3;32328:67;32392:2;32387:3;32328:67;:::i;:::-;32321:74;;32404:93;32493:3;32404:93;:::i;:::-;32522:2;32517:3;32513:12;32506:19;;32165:366;;;:::o;32537:419::-;32703:4;32741:2;32730:9;32726:18;32718:26;;32790:9;32784:4;32780:20;32776:1;32765:9;32761:17;32754:47;32818:131;32944:4;32818:131;:::i;:::-;32810:139;;32537:419;;;:::o;32962:332::-;33083:4;33121:2;33110:9;33106:18;33098:26;;33134:71;33202:1;33191:9;33187:17;33178:6;33134:71;:::i;:::-;33215:72;33283:2;33272:9;33268:18;33259:6;33215:72;:::i;:::-;32962:332;;;;;:::o;33300:143::-;33357:5;33388:6;33382:13;33373:22;;33404:33;33431:5;33404:33;:::i;:::-;33300:143;;;;:::o;33449:351::-;33519:6;33568:2;33556:9;33547:7;33543:23;33539:32;33536:119;;;33574:79;;:::i;:::-;33536:119;33694:1;33719:64;33775:7;33766:6;33755:9;33751:22;33719:64;:::i;:::-;33709:74;;33665:128;33449:351;;;;:::o;33806:225::-;33946:34;33942:1;33934:6;33930:14;33923:58;34015:8;34010:2;34002:6;33998:15;33991:33;33806:225;:::o;34037:366::-;34179:3;34200:67;34264:2;34259:3;34200:67;:::i;:::-;34193:74;;34276:93;34365:3;34276:93;:::i;:::-;34394:2;34389:3;34385:12;34378:19;;34037:366;;;:::o;34409:419::-;34575:4;34613:2;34602:9;34598:18;34590:26;;34662:9;34656:4;34652:20;34648:1;34637:9;34633:17;34626:47;34690:131;34816:4;34690:131;:::i;:::-;34682:139;;34409:419;;;:::o;34834:223::-;34974:34;34970:1;34962:6;34958:14;34951:58;35043:6;35038:2;35030:6;35026:15;35019:31;34834:223;:::o;35063:366::-;35205:3;35226:67;35290:2;35285:3;35226:67;:::i;:::-;35219:74;;35302:93;35391:3;35302:93;:::i;:::-;35420:2;35415:3;35411:12;35404:19;;35063:366;;;:::o;35435:419::-;35601:4;35639:2;35628:9;35624:18;35616:26;;35688:9;35682:4;35678:20;35674:1;35663:9;35659:17;35652:47;35716:131;35842:4;35716:131;:::i;:::-;35708:139;;35435:419;;;:::o;35860:180::-;36000:32;35996:1;35988:6;35984:14;35977:56;35860:180;:::o;36046:366::-;36188:3;36209:67;36273:2;36268:3;36209:67;:::i;:::-;36202:74;;36285:93;36374:3;36285:93;:::i;:::-;36403:2;36398:3;36394:12;36387:19;;36046:366;;;:::o;36418:419::-;36584:4;36622:2;36611:9;36607:18;36599:26;;36671:9;36665:4;36661:20;36657:1;36646:9;36642:17;36635:47;36699:131;36825:4;36699:131;:::i;:::-;36691:139;;36418:419;;;:::o;36843:180::-;36891:77;36888:1;36881:88;36988:4;36985:1;36978:15;37012:4;37009:1;37002:15;37029:230;37169:34;37165:1;37157:6;37153:14;37146:58;37238:13;37233:2;37225:6;37221:15;37214:38;37029:230;:::o;37265:366::-;37407:3;37428:67;37492:2;37487:3;37428:67;:::i;:::-;37421:74;;37504:93;37593:3;37504:93;:::i;:::-;37622:2;37617:3;37613:12;37606:19;;37265:366;;;:::o;37637:419::-;37803:4;37841:2;37830:9;37826:18;37818:26;;37890:9;37884:4;37880:20;37876:1;37865:9;37861:17;37854:47;37918:131;38044:4;37918:131;:::i;:::-;37910:139;;37637:419;;;:::o;38062:167::-;38202:19;38198:1;38190:6;38186:14;38179:43;38062:167;:::o;38235:366::-;38377:3;38398:67;38462:2;38457:3;38398:67;:::i;:::-;38391:74;;38474:93;38563:3;38474:93;:::i;:::-;38592:2;38587:3;38583:12;38576:19;;38235:366;;;:::o;38607:419::-;38773:4;38811:2;38800:9;38796:18;38788:26;;38860:9;38854:4;38850:20;38846:1;38835:9;38831:17;38824:47;38888:131;39014:4;38888:131;:::i;:::-;38880:139;;38607:419;;;:::o;39032:235::-;39172:34;39168:1;39160:6;39156:14;39149:58;39241:18;39236:2;39228:6;39224:15;39217:43;39032:235;:::o;39273:366::-;39415:3;39436:67;39500:2;39495:3;39436:67;:::i;:::-;39429:74;;39512:93;39601:3;39512:93;:::i;:::-;39630:2;39625:3;39621:12;39614:19;;39273:366;;;:::o;39645:419::-;39811:4;39849:2;39838:9;39834:18;39826:26;;39898:9;39892:4;39888:20;39884:1;39873:9;39869:17;39862:47;39926:131;40052:4;39926:131;:::i;:::-;39918:139;;39645:419;;;:::o;40070:410::-;40110:7;40133:20;40151:1;40133:20;:::i;:::-;40128:25;;40167:20;40185:1;40167:20;:::i;:::-;40162:25;;40222:1;40219;40215:9;40244:30;40262:11;40244:30;:::i;:::-;40233:41;;40423:1;40414:7;40410:15;40407:1;40404:22;40384:1;40377:9;40357:83;40334:139;;40453:18;;:::i;:::-;40334:139;40118:362;40070:410;;;;:::o;40486:180::-;40534:77;40531:1;40524:88;40631:4;40628:1;40621:15;40655:4;40652:1;40645:15;40672:185;40712:1;40729:20;40747:1;40729:20;:::i;:::-;40724:25;;40763:20;40781:1;40763:20;:::i;:::-;40758:25;;40802:1;40792:35;;40807:18;;:::i;:::-;40792:35;40849:1;40846;40842:9;40837:14;;40672:185;;;;:::o;40863:227::-;41003:34;40999:1;40991:6;40987:14;40980:58;41072:10;41067:2;41059:6;41055:15;41048:35;40863:227;:::o;41096:366::-;41238:3;41259:67;41323:2;41318:3;41259:67;:::i;:::-;41252:74;;41335:93;41424:3;41335:93;:::i;:::-;41453:2;41448:3;41444:12;41437:19;;41096:366;;;:::o;41468:419::-;41634:4;41672:2;41661:9;41657:18;41649:26;;41721:9;41715:4;41711:20;41707:1;41696:9;41692:17;41685:47;41749:131;41875:4;41749:131;:::i;:::-;41741:139;;41468:419;;;:::o;41893:232::-;42033:34;42029:1;42021:6;42017:14;42010:58;42102:15;42097:2;42089:6;42085:15;42078:40;41893:232;:::o;42131:366::-;42273:3;42294:67;42358:2;42353:3;42294:67;:::i;:::-;42287:74;;42370:93;42459:3;42370:93;:::i;:::-;42488:2;42483:3;42479:12;42472:19;;42131:366;;;:::o;42503:419::-;42669:4;42707:2;42696:9;42692:18;42684:26;;42756:9;42750:4;42746:20;42742:1;42731:9;42727:17;42720:47;42784:131;42910:4;42784:131;:::i;:::-;42776:139;;42503:419;;;:::o;42928:163::-;43068:15;43064:1;43056:6;43052:14;43045:39;42928:163;:::o;43097:366::-;43239:3;43260:67;43324:2;43319:3;43260:67;:::i;:::-;43253:74;;43336:93;43425:3;43336:93;:::i;:::-;43454:2;43449:3;43445:12;43438:19;;43097:366;;;:::o;43469:419::-;43635:4;43673:2;43662:9;43658:18;43650:26;;43722:9;43716:4;43712:20;43708:1;43697:9;43693:17;43686:47;43750:131;43876:4;43750:131;:::i;:::-;43742:139;;43469:419;;;:::o;43894:175::-;44034:27;44030:1;44022:6;44018:14;44011:51;43894:175;:::o;44075:366::-;44217:3;44238:67;44302:2;44297:3;44238:67;:::i;:::-;44231:74;;44314:93;44403:3;44314:93;:::i;:::-;44432:2;44427:3;44423:12;44416:19;;44075:366;;;:::o;44447:419::-;44613:4;44651:2;44640:9;44636:18;44628:26;;44700:9;44694:4;44690:20;44686:1;44675:9;44671:17;44664:47;44728:131;44854:4;44728:131;:::i;:::-;44720:139;;44447:419;;;:::o;44872:141::-;44921:4;44944:3;44936:11;;44967:3;44964:1;44957:14;45001:4;44998:1;44988:18;44980:26;;44872:141;;;:::o;45019:93::-;45056:6;45103:2;45098;45091:5;45087:14;45083:23;45073:33;;45019:93;;;:::o;45118:107::-;45162:8;45212:5;45206:4;45202:16;45181:37;;45118:107;;;;:::o;45231:393::-;45300:6;45350:1;45338:10;45334:18;45373:97;45403:66;45392:9;45373:97;:::i;:::-;45491:39;45521:8;45510:9;45491:39;:::i;:::-;45479:51;;45563:4;45559:9;45552:5;45548:21;45539:30;;45612:4;45602:8;45598:19;45591:5;45588:30;45578:40;;45307:317;;45231:393;;;;;:::o;45630:142::-;45680:9;45713:53;45731:34;45740:24;45758:5;45740:24;:::i;:::-;45731:34;:::i;:::-;45713:53;:::i;:::-;45700:66;;45630:142;;;:::o;45778:75::-;45821:3;45842:5;45835:12;;45778:75;;;:::o;45859:269::-;45969:39;46000:7;45969:39;:::i;:::-;46030:91;46079:41;46103:16;46079:41;:::i;:::-;46071:6;46064:4;46058:11;46030:91;:::i;:::-;46024:4;46017:105;45935:193;45859:269;;;:::o;46134:73::-;46179:3;46134:73;:::o;46213:189::-;46290:32;;:::i;:::-;46331:65;46389:6;46381;46375:4;46331:65;:::i;:::-;46266:136;46213:189;;:::o;46408:186::-;46468:120;46485:3;46478:5;46475:14;46468:120;;;46539:39;46576:1;46569:5;46539:39;:::i;:::-;46512:1;46505:5;46501:13;46492:22;;46468:120;;;46408:186;;:::o;46600:543::-;46701:2;46696:3;46693:11;46690:446;;;46735:38;46767:5;46735:38;:::i;:::-;46819:29;46837:10;46819:29;:::i;:::-;46809:8;46805:44;47002:2;46990:10;46987:18;46984:49;;;47023:8;47008:23;;46984:49;47046:80;47102:22;47120:3;47102:22;:::i;:::-;47092:8;47088:37;47075:11;47046:80;:::i;:::-;46705:431;;46690:446;46600:543;;;:::o;47149:117::-;47203:8;47253:5;47247:4;47243:16;47222:37;;47149:117;;;;:::o;47272:169::-;47316:6;47349:51;47397:1;47393:6;47385:5;47382:1;47378:13;47349:51;:::i;:::-;47345:56;47430:4;47424;47420:15;47410:25;;47323:118;47272:169;;;;:::o;47446:295::-;47522:4;47668:29;47693:3;47687:4;47668:29;:::i;:::-;47660:37;;47730:3;47727:1;47723:11;47717:4;47714:21;47706:29;;47446:295;;;;:::o;47746:1395::-;47863:37;47896:3;47863:37;:::i;:::-;47965:18;47957:6;47954:30;47951:56;;;47987:18;;:::i;:::-;47951:56;48031:38;48063:4;48057:11;48031:38;:::i;:::-;48116:67;48176:6;48168;48162:4;48116:67;:::i;:::-;48210:1;48234:4;48221:17;;48266:2;48258:6;48255:14;48283:1;48278:618;;;;48940:1;48957:6;48954:77;;;49006:9;49001:3;48997:19;48991:26;48982:35;;48954:77;49057:67;49117:6;49110:5;49057:67;:::i;:::-;49051:4;49044:81;48913:222;48248:887;;48278:618;48330:4;48326:9;48318:6;48314:22;48364:37;48396:4;48364:37;:::i;:::-;48423:1;48437:208;48451:7;48448:1;48445:14;48437:208;;;48530:9;48525:3;48521:19;48515:26;48507:6;48500:42;48581:1;48573:6;48569:14;48559:24;;48628:2;48617:9;48613:18;48600:31;;48474:4;48471:1;48467:12;48462:17;;48437:208;;;48673:6;48664:7;48661:19;48658:179;;;48731:9;48726:3;48722:19;48716:26;48774:48;48816:4;48808:6;48804:17;48793:9;48774:48;:::i;:::-;48766:6;48759:64;48681:156;48658:179;48883:1;48879;48871:6;48867:14;48863:22;48857:4;48850:36;48285:611;;;48248:887;;47838:1303;;;47746:1395;;:::o;49147:231::-;49287:34;49283:1;49275:6;49271:14;49264:58;49356:14;49351:2;49343:6;49339:15;49332:39;49147:231;:::o;49384:366::-;49526:3;49547:67;49611:2;49606:3;49547:67;:::i;:::-;49540:74;;49623:93;49712:3;49623:93;:::i;:::-;49741:2;49736:3;49732:12;49725:19;;49384:366;;;:::o;49756:419::-;49922:4;49960:2;49949:9;49945:18;49937:26;;50009:9;50003:4;49999:20;49995:1;49984:9;49980:17;49973:47;50037:131;50163:4;50037:131;:::i;:::-;50029:139;;49756:419;;;:::o

Swarm Source

ipfs://0abec44a2572531affe7a9eb45e7e6adfb34d77d5830ac8fd64e58418dbaf905

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.