ETH Price: $3,241.65 (-0.40%)
Gas: 1 Gwei

Contract

0x048c2eb8DfB1Eb5DCf7eCFef9cF027ba85ea6cf7
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw Crypto164009482023-01-13 22:46:11561 days ago1673649971IN
0x048c2eb8...a85ea6cf7
0 ETH0.0009389830.22077063
Claim Token163863562023-01-11 21:50:47563 days ago1673473847IN
0x048c2eb8...a85ea6cf7
0 ETH0.0013962122.20761543
Exchange ET Hfor...163863422023-01-11 21:47:59563 days ago1673473679IN
0x048c2eb8...a85ea6cf7
1 ETH0.0022787525.59645824
Claim Token163824812023-01-11 8:49:35563 days ago1673426975IN
0x048c2eb8...a85ea6cf7
0 ETH0.0008686313.81616002
Exchange ET Hfor...163824742023-01-11 8:48:11563 days ago1673426891IN
0x048c2eb8...a85ea6cf7
0.3 ETH0.0012998514.60089165
Claim Token163773602023-01-10 15:39:47564 days ago1673365187IN
0x048c2eb8...a85ea6cf7
0 ETH0.0013922622.14485123
Exchange ET Hfor...163773372023-01-10 15:35:11564 days ago1673364911IN
0x048c2eb8...a85ea6cf7
0.31 ETH0.0021616524.2811811
Claim Token163708072023-01-09 17:41:59565 days ago1673286119IN
0x048c2eb8...a85ea6cf7
0 ETH0.0019597831.17157259
Exchange ET Hfor...163708022023-01-09 17:40:59565 days ago1673286059IN
0x048c2eb8...a85ea6cf7
0.1002 ETH0.0026629329.9118705
Claim Token163706902023-01-09 17:18:35565 days ago1673284715IN
0x048c2eb8...a85ea6cf7
0 ETH0.0010661740.96413176
Claim Token163706902023-01-09 17:18:35565 days ago1673284715IN
0x048c2eb8...a85ea6cf7
0 ETH0.0018126339.60215764
Exchange ET Hfor...163706592023-01-09 17:12:23565 days ago1673284343IN
0x048c2eb8...a85ea6cf7
0.01 ETH0.0028471739.58475419
Claim Token163682132023-01-09 9:01:23565 days ago1673254883IN
0x048c2eb8...a85ea6cf7
0 ETH0.0009130614.52278431
Exchange ET Hfor...163681912023-01-09 8:56:59565 days ago1673254619IN
0x048c2eb8...a85ea6cf7
0.05 ETH0.0012006713.48676468
Claim Token163656482023-01-09 0:27:23566 days ago1673224043IN
0x048c2eb8...a85ea6cf7
0 ETH0.0013521821.50732822
Exchange ET Hfor...163656222023-01-09 0:22:11566 days ago1673223731IN
0x048c2eb8...a85ea6cf7
0.03 ETH0.0019398221.78945191
Claim Token163620242023-01-08 12:18:59566 days ago1673180339IN
0x048c2eb8...a85ea6cf7
0 ETH0.000840513.36871909
Claim Token163584122023-01-08 0:13:11567 days ago1673136791IN
0x048c2eb8...a85ea6cf7
0 ETH0.0009102514.4782069
Exchange ET Hfor...163583272023-01-07 23:56:11567 days ago1673135771IN
0x048c2eb8...a85ea6cf7
0.5 ETH0.0011933113.40411627
Claim Token163581432023-01-07 23:19:11567 days ago1673133551IN
0x048c2eb8...a85ea6cf7
0 ETH0.000916314.57440708
Exchange ET Hfor...163581292023-01-07 23:16:23567 days ago1673133383IN
0x048c2eb8...a85ea6cf7
0.18 ETH0.0011493812.91062952
Claim Token163581162023-01-07 23:13:47567 days ago1673133227IN
0x048c2eb8...a85ea6cf7
0 ETH0.0008716213.86363883
Exchange ET Hfor...163581032023-01-07 23:11:11567 days ago1673133071IN
0x048c2eb8...a85ea6cf7
0.09 ETH0.001172913.17481715
Claim Token163499032023-01-06 19:42:59568 days ago1673034179IN
0x048c2eb8...a85ea6cf7
0 ETH0.0012358427.0006809
Exchange ET Hfor...163497362023-01-06 19:09:35568 days ago1673032175IN
0x048c2eb8...a85ea6cf7
0.065 ETH0.0018463825.670632
View all transactions

Latest 2 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
164009482023-01-13 22:46:11561 days ago1673649971
0x048c2eb8...a85ea6cf7
2.7082 ETH
163345492023-01-04 16:14:23570 days ago1672848863
0x048c2eb8...a85ea6cf7
83.65123079 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AIETokenPresaleRound1

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-24
*/

//SPDX-License-Identifier: MIT

pragma solidity 0.8.7;
/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        assert(c / a == b);
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // assert(b > 0); // Solidity automatically throws when dividing by 0
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(b <= a);
        return a - b;
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        assert(c >= a);
        return c;
    }
}


contract Ownable  {
    address payable public _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor ()  {
        _owner = payable(msg.sender);
        emit OwnershipTransferred(address(0), msg.sender);
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == msg.sender, "Ownable: caller is not the owner");
        _;
    }


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


interface Token {
    function transfer(address to, uint256 value) external returns (bool);
    function transferFrom(address from, address to, uint256 value) external returns (bool);
    function balanceOf(address who) external view returns (uint256);
    function approve(address spender, uint256 value) external returns (bool);

}


contract AIETokenPresaleRound1 is Ownable {
    using SafeMath for uint;

    address public tokenAddr;
    
    uint256 public tokenPriceBnb = 60000000000000;
    uint256 public tokenDecimal = 18;
    uint256 public bnbDecimal = 18;
    uint256 public totalTransaction;
    uint256 public totalHardCap;
    uint256 public minContribution = 81000000000000000; 
    uint256 public maxContribution = 41000000000000000000; 
    uint256 public hardCap = 660000000000000000000; 
    

    event TokenTransfer(address beneficiary, uint amount);
    event amountTransfered(address indexed fromAddress,address contractAddress,address indexed toAddress, uint256 indexed amount);
    event TokenDeposited(address indexed beneficiary, uint amount);
    event BnbDeposited(address indexed beneficiary, uint amount);
    
    mapping(address => uint256) public balances;
    mapping(address => bool) public whitelisted;
    mapping(address => uint256) public tokenExchanged;

    bool public whitelist = false;
    bool public claim = true;
 

    constructor(address _tokenAddr)  {
        tokenAddr = _tokenAddr;
    }
   
    /* This Function Will Airdrop ETH to Multiple Users */
    function transferCrypto(uint256[] memory amounts, address payable[] memory receivers) payable public  onlyOwner returns (bool){
        uint total = 0;
        require(amounts.length == receivers.length);
        require(receivers.length <= 100); //maximum receievers can be 100
        for(uint j = 0; j < amounts.length; j++) {
            total = total.add(amounts[j]);
        }
        require(total <= msg.value);
            
        for(uint i = 0; i< receivers.length; i++){
            receivers[i].transfer(amounts[i]);
            emit amountTransfered(msg.sender,address(this) ,receivers[i],amounts[i]);
        }
        return true;
    }
    
    /* This Function will Airdrop Tokens to Multiple Users */
    function AirdropTokens(address[] memory _recipients, uint256[] memory _amount) public onlyOwner returns (bool) {
        uint total = 0;
        require(_recipients.length == _amount.length);
        require(_recipients.length <= 100); //maximum receievers can be 100
        for(uint j = 0; j < _amount.length; j++) {
            total = total.add(_amount[j]);
        }        

        for (uint i = 0; i < _recipients.length; i++) {
            require(_recipients[i] != address(0),"Address should not be Zero");
            balances[_recipients[i]] = _amount[i];
        }

        return true;
    }

    /* This Function will whitelist Addresses for presale */
    function whitelistAddress(address[] memory _recipients) public onlyOwner returns (bool) {
        require(_recipients.length <= 100); //maximum receievers can be 500
        for (uint i = 0; i < _recipients.length; i++) {
            whitelisted[_recipients[i]] = true;
        }
        return true;
    }

    /* This Function will Remove Whitelist addresss */
    function RemoveWhitelist(address[] memory _recipients) public onlyOwner returns (bool) {
        require(_recipients.length <= 100); //maximum receievers can be 500
        for (uint i = 0; i < _recipients.length; i++) {
            whitelisted[_recipients[i]] = false;
        }
        return true;
    }
    

    /* This function will deposit Tokens in the smart contract (Token must be approved first) */    
    function depositTokens(uint256  _amount) public returns (bool) {
        require(_amount <= Token(tokenAddr).balanceOf(msg.sender),"Token Balance of user is less");
        require(Token(tokenAddr).transferFrom(msg.sender,address(this), _amount));
        emit TokenDeposited(msg.sender, _amount);
        return true;
    }

    /* This will deposit BNB to Contract */
    function depositCrypto() payable public returns (bool){
        uint256 amount = msg.value;
        address userAddress = msg.sender;
        emit BnbDeposited(userAddress, amount);
        return true;
    }
    
    /* This Function will be used by users to claim token */
    function claimToken() public returns (bool){
        address userAdd = msg.sender;
        uint256 amountToClaim = tokenExchanged[userAdd];
        require(claim,"Cannot Claim Now");
        require(amountToClaim>0,"There is no amount to claim");
        require(amountToClaim <= Token(tokenAddr).balanceOf(address(this)),"Token Balance of contract is less");
        Token(tokenAddr).transfer(userAdd, amountToClaim);
        
        emit TokenTransfer(userAdd, amountToClaim);
        tokenExchanged[userAdd] = 0;
        return true;
    }
    
    /* This function will accept ETH directly sent to the address */
    receive() payable external {
        ExchangeBNBforToken(msg.sender, msg.value);
    }

    /* This Function will exchange BNB to Token */    
    function ExchangeBNBforToken(address _addr, uint256 _amount) private {
        uint256 amount = _amount;
        address userAdd = _addr;
        uint256 bnbAmount = 0;
         balances[msg.sender] = balances[msg.sender].add(msg.value);
        
        if(whitelist){
            require(whitelisted[userAdd],"User is not Whitelisted");
        }
        require(totalHardCap < hardCap, "BNB Hardcap Reached");
        require(balances[msg.sender] >= minContribution && balances[msg.sender] <= maxContribution,"Contribution should satisfy min max case");
        totalTransaction.add(1);
        totalHardCap.add(_amount);
        bnbAmount = ((amount.mul(10 ** uint256(tokenDecimal)).div(tokenPriceBnb)).mul(10 ** uint256(tokenDecimal))).div(10 ** uint256(tokenDecimal));
        tokenExchanged[userAdd] += bnbAmount;
        
        emit BnbDeposited(msg.sender,msg.value);
    }


    /* This Function will exchange BNB to Token in Mannual Call */
    function ExchangeETHforTokenMannual() public payable {
        uint256 amount = msg.value;
        address userAdd = msg.sender;
        uint256 bnbAmount = 0;
        balances[msg.sender] = balances[msg.sender].add(msg.value);
        
        if(whitelist){
            require(whitelisted[userAdd],"User is not Whitelisted");
        }
        require(totalHardCap < hardCap, "BNB Hardcap Reached");
        require(balances[msg.sender] >= minContribution && balances[msg.sender] <= maxContribution,"Contribution should satisfy min max case");
        totalTransaction.add(1);
        totalHardCap.add(amount);
        bnbAmount = ((amount.mul(10 ** uint256(tokenDecimal)).div(tokenPriceBnb)).mul(10 ** uint256(tokenDecimal))).div(10 ** uint256(tokenDecimal));
        tokenExchanged[userAdd] += bnbAmount;
        
        emit BnbDeposited(msg.sender,msg.value);

        
    }
    
    /* ONLY OWNER FUNCTIONS */

    /* This Function will be used to turn on or off whitelisting process */
    function turnWhitelist() public onlyOwner returns (bool success)  {
        if (whitelist) {
            whitelist = false;
        } else {
            whitelist = true;
        }
        return true;
        
    }

    /* This Function will be used to turn on or off claim process */
    function claimIn() public onlyOwner returns (bool success)  {
        if (claim) {
            claim = false;
        } else {
            claim = true;
        }
        return true;
        
    }
    
    /* Update Token Price */
    function updateTokenPrice(uint256 newTokenValue) public onlyOwner {
        tokenPriceBnb = newTokenValue;
    }

    /* Update Hard Cap */
    function updateHardCap(uint256 newHardcapValue) public onlyOwner {
        hardCap = newHardcapValue;
    }

    /* Update Min Max Contribution */
    function updateTokenContribution(uint256 min, uint256 max) public onlyOwner {
        minContribution = min;
        maxContribution = max;
    }
    
    /* Update Token Decimal */
    function updateTokenDecimal(uint256 newDecimal) public onlyOwner {
        tokenDecimal = newDecimal;
    }

    /* Update Token Address */
    function updateTokenAddress(address newTokenAddr) public onlyOwner {
        tokenAddr = newTokenAddr;
    }

    /* Withdraw Remaining token after sale */
    function withdrawTokens(address beneficiary) public onlyOwner {
        require(Token(tokenAddr).transfer(beneficiary, Token(tokenAddr).balanceOf(address(this))));
    }

    /* Withdraw Crypto remaining in contract */
    function withdrawCrypto(address payable beneficiary) public onlyOwner {
        beneficiary.transfer(address(this).balance);
    }

    /* ONLY OWNER FUNCTION ENDS HERE */


    /* VIEW FUNCTIONS */

    /* View Token Balance */
    function tokenBalance() public view returns (uint256){
        return Token(tokenAddr).balanceOf(address(this));
    }

    /* View BNB Balance */
    function bnbBalance() public view returns (uint256){
        return address(this).balance;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BnbDeposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokenDeposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokenTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"fromAddress","type":"address"},{"indexed":false,"internalType":"address","name":"contractAddress","type":"address"},{"indexed":true,"internalType":"address","name":"toAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"amountTransfered","type":"event"},{"inputs":[{"internalType":"address[]","name":"_recipients","type":"address[]"},{"internalType":"uint256[]","name":"_amount","type":"uint256[]"}],"name":"AirdropTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ExchangeETHforTokenMannual","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_recipients","type":"address[]"}],"name":"RemoveWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bnbBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bnbDecimal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claim","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimIn","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"depositCrypto","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"depositTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"hardCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxContribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minContribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenDecimal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tokenExchanged","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenPriceBnb","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalHardCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address payable[]","name":"receivers","type":"address[]"}],"name":"transferCrypto","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"turnWhitelist","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newHardcapValue","type":"uint256"}],"name":"updateHardCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTokenAddr","type":"address"}],"name":"updateTokenAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"min","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"updateTokenContribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newDecimal","type":"uint256"}],"name":"updateTokenDecimal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTokenValue","type":"uint256"}],"name":"updateTokenPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"whitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_recipients","type":"address[]"}],"name":"whitelistAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"beneficiary","type":"address"}],"name":"withdrawCrypto","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"beneficiary","type":"address"}],"name":"withdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052653691d6afc0006002556012600355601260045567011fc51222ce8000600755680238fd42c5cf0400006008556823c757072b8dd000006009556000600d60006101000a81548160ff0219169083151502179055506001600d60016101000a81548160ff0219169083151502179055503480156200008157600080fd5b5060405162003a1d38038062003a1d8339818101604052810190620000a79190620001a1565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000226565b6000815190506200019b816200020c565b92915050565b600060208284031215620001ba57620001b962000207565b5b6000620001ca848285016200018a565b91505092915050565b6000620001e082620001e7565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200021781620001d3565b81146200022357600080fd5b50565b6137e780620002366000396000f3fe6080604052600436106102135760003560e01c80638d3d657611610118578063b31d61b0116100a0578063d9b01dd81161006f578063d9b01dd814610795578063dd49756e146107c0578063f2fde38b146107fd578063f6a620b814610826578063fb86a4041461084f57610224565b8063b31d61b0146106c5578063b8dcee5314610702578063d013cbe21461072d578063d936547e1461075857610224565b80639e1a4d19116100e75780639e1a4d19146105d7578063aaffadf314610602578063ad1ffdd41461062d578063aefb4d811461066a578063b2bdfa7b1461069a57610224565b80638d3d6576146105385780638da5cb5b146105635780639334efa01461058e57806393e59dc1146105ac57610224565b80635238e8ef1161019b578063676c0d771161016a578063676c0d771461045557806367a3eb651461047e578063703df793146104a957806388716fdd146104d25780638a647e6c146104fb57610224565b80635238e8ef146103ab5780635caed029146103d65780635fbe4d1d146104015780636691461a1461042c57610224565b806327e235e3116101e257806327e235e3146102b257806339be86e8146102ef5780634451d89f1461032c57806349df728c146103575780634e71d92d1461038057610224565b80630147d79c146102295780630778bc3714610254578063082ae3a71461025e5780630ab910331461028757610224565b3661022457610222333461087a565b005b600080fd5b34801561023557600080fd5b5061023e610c23565b60405161024b9190613031565b60405180910390f35b61025c610c29565b005b34801561026a57600080fd5b5061028560048036038101906102809190612c66565b610fd0565b005b34801561029357600080fd5b5061029c611070565b6040516102a99190613031565b60405180910390f35b3480156102be57600080fd5b506102d960048036038101906102d49190612a4c565b611076565b6040516102e69190613031565b60405180910390f35b3480156102fb57600080fd5b5061031660048036038101906103119190612a4c565b61108e565b6040516103239190613031565b60405180910390f35b34801561033857600080fd5b506103416110a6565b60405161034e9190612ed6565b60405180910390f35b34801561036357600080fd5b5061037e60048036038101906103799190612a4c565b6113a6565b005b34801561038c57600080fd5b50610395611599565b6040516103a29190612ed6565b60405180910390f35b3480156103b757600080fd5b506103c06115ac565b6040516103cd9190612ed6565b60405180910390f35b3480156103e257600080fd5b506103eb611694565b6040516103f89190613031565b60405180910390f35b34801561040d57600080fd5b5061041661169a565b6040516104239190612e40565b60405180910390f35b34801561043857600080fd5b50610453600480360381019061044e9190612a4c565b6116c0565b005b34801561046157600080fd5b5061047c60048036038101906104779190612c0c565b611792565b005b34801561048a57600080fd5b5061049361182a565b6040516104a09190613031565b60405180910390f35b3480156104b557600080fd5b506104d060048036038101906104cb9190612c0c565b611830565b005b3480156104de57600080fd5b506104f960048036038101906104f49190612a79565b6118c8565b005b34801561050757600080fd5b50610522600480360381019061051d9190612aef565b6119a0565b60405161052f9190612ed6565b60405180910390f35b34801561054457600080fd5b5061054d611bcb565b60405161055a9190613031565b60405180910390f35b34801561056f57600080fd5b50610578611bd1565b6040516105859190612e40565b60405180910390f35b610596611bfa565b6040516105a39190612ed6565b60405180910390f35b3480156105b857600080fd5b506105c1611c5c565b6040516105ce9190612ed6565b60405180910390f35b3480156105e357600080fd5b506105ec611c6f565b6040516105f99190613031565b60405180910390f35b34801561060e57600080fd5b50610617611d21565b6040516106249190613031565b60405180910390f35b34801561063957600080fd5b50610654600480360381019061064f9190612aa6565b611d27565b6040516106619190612ed6565b60405180910390f35b610684600480360381019061067f9190612b67565b611e61565b6040516106919190612ed6565b60405180910390f35b3480156106a657600080fd5b506106af6120ac565b6040516106bc9190612e5b565b60405180910390f35b3480156106d157600080fd5b506106ec60048036038101906106e79190612aa6565b6120d0565b6040516106f99190612ed6565b60405180910390f35b34801561070e57600080fd5b5061071761220a565b6040516107249190613031565b60405180910390f35b34801561073957600080fd5b50610742612210565b60405161074f9190613031565b60405180910390f35b34801561076457600080fd5b5061077f600480360381019061077a9190612a4c565b612218565b60405161078c9190612ed6565b60405180910390f35b3480156107a157600080fd5b506107aa612238565b6040516107b79190612ed6565b60405180910390f35b3480156107cc57600080fd5b506107e760048036038101906107e29190612c0c565b612320565b6040516107f49190612ed6565b60405180910390f35b34801561080957600080fd5b50610824600480360381019061081f9190612a79565b612520565b005b34801561083257600080fd5b5061084d60048036038101906108489190612c0c565b6126db565b005b34801561085b57600080fd5b50610864612773565b6040516108719190613031565b60405180910390f35b6000819050600083905060006108d834600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461277990919063ffffffff16565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d60009054906101000a900460ff16156109bd57600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166109bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b390612f71565b60405180910390fd5b5b60095460065410610a03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fa90613011565b60405180910390fd5b600754600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610a955750600854600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411155b610ad4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acb90612f11565b60405180910390fd5b610aea600160055461277990919063ffffffff16565b50610b008460065461277990919063ffffffff16565b50610b76600354600a610b1391906131e0565b610b68600354600a610b2591906131e0565b610b5a600254610b4c600354600a610b3d91906131e0565b8a6127a590919063ffffffff16565b6127ee90919063ffffffff16565b6127a590919063ffffffff16565b6127ee90919063ffffffff16565b905080600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610bc79190613106565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167fd1120c2462a15052020f7da1c8241ce60c93668d44b0e5fc91a3e3b0b591e29134604051610c149190613031565b60405180910390a25050505050565b60055481565b600034905060003390506000610c8734600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461277990919063ffffffff16565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d60009054906101000a900460ff1615610d6c57600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610d6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6290612f71565b60405180910390fd5b5b60095460065410610db2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da990613011565b60405180910390fd5b600754600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610e445750600854600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411155b610e83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7a90612f11565b60405180910390fd5b610e99600160055461277990919063ffffffff16565b50610eaf8360065461277990919063ffffffff16565b50610f25600354600a610ec291906131e0565b610f17600354600a610ed491906131e0565b610f09600254610efb600354600a610eec91906131e0565b8a6127a590919063ffffffff16565b6127ee90919063ffffffff16565b6127a590919063ffffffff16565b6127ee90919063ffffffff16565b905080600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610f769190613106565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167fd1120c2462a15052020f7da1c8241ce60c93668d44b0e5fc91a3e3b0b591e29134604051610fc39190613031565b60405180910390a2505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461105e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105590612f91565b60405180910390fd5b81600781905550806008819055505050565b60025481565b600a6020528060005260406000206000915090505481565b600c6020528060005260406000206000915090505481565b6000803390506000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600d60019054906101000a900460ff1661113f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113690612ef1565b60405180910390fd5b60008111611182576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117990612f51565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016111dd9190612e40565b60206040518083038186803b1580156111f557600080fd5b505afa158015611209573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122d9190612c39565b81111561126f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126690612fd1565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016112cc929190612ead565b602060405180830381600087803b1580156112e657600080fd5b505af11580156112fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131e9190612bdf565b507f1d72140a7ccdb496bef50918d2598dd7edefb514f70e6d4beb528cbd16c80b7d8282604051611350929190612ead565b60405180910390a16000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060019250505090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611434576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142b90612f91565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016114ce9190612e40565b60206040518083038186803b1580156114e657600080fd5b505afa1580156114fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151e9190612c39565b6040518363ffffffff1660e01b815260040161153b929190612ead565b602060405180830381600087803b15801561155557600080fd5b505af1158015611569573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158d9190612bdf565b61159657600080fd5b50565b600d60019054906101000a900460ff1681565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461163c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163390612f91565b60405180910390fd5b600d60019054906101000a900460ff1615611671576000600d60016101000a81548160ff02191690831515021790555061168d565b6001600d60016101000a81548160ff0219169083151502179055505b6001905090565b60035481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461174e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174590612f91565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611820576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181790612f91565b60405180910390fd5b8060028190555050565b60065481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b590612f91565b60405180910390fd5b8060098190555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194d90612f91565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561199c573d6000803e3d6000fd5b5050565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2790612f91565b60405180910390fd5b60008251845114611a4057600080fd5b606484511115611a4f57600080fd5b60005b8351811015611a9d57611a88848281518110611a7157611a706134b9565b5b60200260200101518361277990919063ffffffff16565b91508080611a95906133e3565b915050611a52565b5060005b8451811015611bbf57600073ffffffffffffffffffffffffffffffffffffffff16858281518110611ad557611ad46134b9565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415611b34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2b90612fb1565b60405180910390fd5b838181518110611b4757611b466134b9565b5b6020026020010151600a6000878481518110611b6657611b656134b9565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080611bb7906133e3565b915050611aa1565b50600191505092915050565b60085481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008034905060003390508073ffffffffffffffffffffffffffffffffffffffff167fd1120c2462a15052020f7da1c8241ce60c93668d44b0e5fc91a3e3b0b591e29183604051611c4b9190613031565b60405180910390a260019250505090565b600d60009054906101000a900460ff1681565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611ccc9190612e40565b60206040518083038186803b158015611ce457600080fd5b505afa158015611cf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1c9190612c39565b905090565b60075481565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611db7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dae90612f91565b60405180910390fd5b606482511115611dc657600080fd5b60005b8251811015611e57576000600b6000858481518110611deb57611dea6134b9565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611e4f906133e3565b915050611dc9565b5060019050919050565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ef1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee890612f91565b60405180910390fd5b60008251845114611f0157600080fd5b606483511115611f1057600080fd5b60005b8451811015611f5e57611f49858281518110611f3257611f316134b9565b5b60200260200101518361277990919063ffffffff16565b91508080611f56906133e3565b915050611f13565b5034811115611f6c57600080fd5b60005b83518110156120a057838181518110611f8b57611f8a6134b9565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166108fc868381518110611fbf57611fbe6134b9565b5b60200260200101519081150290604051600060405180830381858888f19350505050158015611ff2573d6000803e3d6000fd5b50848181518110612006576120056134b9565b5b6020026020010151848281518110612021576120206134b9565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fe15b05c89de142b36f58fef76fc06540732740f3647797137a3827e7f820cf75306040516120859190612e40565b60405180910390a48080612098906133e3565b915050611f6f565b50600191505092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612160576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215790612f91565b60405180910390fd5b60648251111561216f57600080fd5b60005b8251811015612200576001600b6000858481518110612194576121936134b9565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806121f8906133e3565b915050612172565b5060019050919050565b60045481565b600047905090565b600b6020528060005260406000206000915054906101000a900460ff1681565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bf90612f91565b60405180910390fd5b600d60009054906101000a900460ff16156122fd576000600d60006101000a81548160ff021916908315150217905550612319565b6001600d60006101000a81548160ff0219169083151502179055505b6001905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161237d9190612e40565b60206040518083038186803b15801561239557600080fd5b505afa1580156123a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123cd9190612c39565b82111561240f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240690612ff1565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b815260040161246e93929190612e76565b602060405180830381600087803b15801561248857600080fd5b505af115801561249c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c09190612bdf565b6124c957600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167fbc7c8a4d8049a3f99a02f2a20640c206a2e4d3f2fa54fd20da9f01fda3620cda8360405161250f9190613031565b60405180910390a260019050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a590612f91565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561261e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261590612f31565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612769576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276090612f91565b60405180910390fd5b8060038190555050565b60095481565b60008082846127889190613106565b90508381101561279b5761279a61342c565b5b8091505092915050565b6000808314156127b857600090506127e8565b600082846127c691906132fe565b90508284826127d5919061315c565b146127e3576127e261342c565b5b809150505b92915050565b60008082846127fd919061315c565b90508091505092915050565b600061281c61281784613071565b61304c565b9050808382526020820190508285602086028201111561283f5761283e61351c565b5b60005b8581101561286f57816128558882612959565b845260208401935060208301925050600181019050612842565b5050509392505050565b600061288c6128878461309d565b61304c565b905080838252602082019050828560208602820111156128af576128ae61351c565b5b60005b858110156128df57816128c5888261296e565b8452602084019350602083019250506001810190506128b2565b5050509392505050565b60006128fc6128f7846130c9565b61304c565b9050808382526020820190508285602086028201111561291f5761291e61351c565b5b60005b8581101561294f57816129358882612a22565b845260208401935060208301925050600181019050612922565b5050509392505050565b60008135905061296881613755565b92915050565b60008135905061297d8161376c565b92915050565b600082601f83011261299857612997613517565b5b81356129a8848260208601612809565b91505092915050565b600082601f8301126129c6576129c5613517565b5b81356129d6848260208601612879565b91505092915050565b600082601f8301126129f4576129f3613517565b5b8135612a048482602086016128e9565b91505092915050565b600081519050612a1c81613783565b92915050565b600081359050612a318161379a565b92915050565b600081519050612a468161379a565b92915050565b600060208284031215612a6257612a61613526565b5b6000612a7084828501612959565b91505092915050565b600060208284031215612a8f57612a8e613526565b5b6000612a9d8482850161296e565b91505092915050565b600060208284031215612abc57612abb613526565b5b600082013567ffffffffffffffff811115612ada57612ad9613521565b5b612ae684828501612983565b91505092915050565b60008060408385031215612b0657612b05613526565b5b600083013567ffffffffffffffff811115612b2457612b23613521565b5b612b3085828601612983565b925050602083013567ffffffffffffffff811115612b5157612b50613521565b5b612b5d858286016129df565b9150509250929050565b60008060408385031215612b7e57612b7d613526565b5b600083013567ffffffffffffffff811115612b9c57612b9b613521565b5b612ba8858286016129df565b925050602083013567ffffffffffffffff811115612bc957612bc8613521565b5b612bd5858286016129b1565b9150509250929050565b600060208284031215612bf557612bf4613526565b5b6000612c0384828501612a0d565b91505092915050565b600060208284031215612c2257612c21613526565b5b6000612c3084828501612a22565b91505092915050565b600060208284031215612c4f57612c4e613526565b5b6000612c5d84828501612a37565b91505092915050565b60008060408385031215612c7d57612c7c613526565b5b6000612c8b85828601612a22565b9250506020612c9c85828601612a22565b9150509250929050565b612caf8161336a565b82525050565b612cbe81613358565b82525050565b612ccd8161337c565b82525050565b6000612ce06010836130f5565b9150612ceb82613549565b602082019050919050565b6000612d036028836130f5565b9150612d0e82613572565b604082019050919050565b6000612d266026836130f5565b9150612d31826135c1565b604082019050919050565b6000612d49601b836130f5565b9150612d5482613610565b602082019050919050565b6000612d6c6017836130f5565b9150612d7782613639565b602082019050919050565b6000612d8f6020836130f5565b9150612d9a82613662565b602082019050919050565b6000612db2601a836130f5565b9150612dbd8261368b565b602082019050919050565b6000612dd56021836130f5565b9150612de0826136b4565b604082019050919050565b6000612df8601d836130f5565b9150612e0382613703565b602082019050919050565b6000612e1b6013836130f5565b9150612e268261372c565b602082019050919050565b612e3a816133a8565b82525050565b6000602082019050612e556000830184612cb5565b92915050565b6000602082019050612e706000830184612ca6565b92915050565b6000606082019050612e8b6000830186612cb5565b612e986020830185612cb5565b612ea56040830184612e31565b949350505050565b6000604082019050612ec26000830185612cb5565b612ecf6020830184612e31565b9392505050565b6000602082019050612eeb6000830184612cc4565b92915050565b60006020820190508181036000830152612f0a81612cd3565b9050919050565b60006020820190508181036000830152612f2a81612cf6565b9050919050565b60006020820190508181036000830152612f4a81612d19565b9050919050565b60006020820190508181036000830152612f6a81612d3c565b9050919050565b60006020820190508181036000830152612f8a81612d5f565b9050919050565b60006020820190508181036000830152612faa81612d82565b9050919050565b60006020820190508181036000830152612fca81612da5565b9050919050565b60006020820190508181036000830152612fea81612dc8565b9050919050565b6000602082019050818103600083015261300a81612deb565b9050919050565b6000602082019050818103600083015261302a81612e0e565b9050919050565b60006020820190506130466000830184612e31565b92915050565b6000613056613067565b905061306282826133b2565b919050565b6000604051905090565b600067ffffffffffffffff82111561308c5761308b6134e8565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156130b8576130b76134e8565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156130e4576130e36134e8565b5b602082029050602081019050919050565b600082825260208201905092915050565b6000613111826133a8565b915061311c836133a8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156131515761315061345b565b5b828201905092915050565b6000613167826133a8565b9150613172836133a8565b9250826131825761318161348a565b5b828204905092915050565b6000808291508390505b60018511156131d7578086048111156131b3576131b261345b565b5b60018516156131c25780820291505b80810290506131d08561353c565b9450613197565b94509492505050565b60006131eb826133a8565b91506131f6836133a8565b92506132237fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461322b565b905092915050565b60008261323b57600190506132f7565b8161324957600090506132f7565b816001811461325f576002811461326957613298565b60019150506132f7565b60ff84111561327b5761327a61345b565b5b8360020a9150848211156132925761329161345b565b5b506132f7565b5060208310610133831016604e8410600b84101617156132cd5782820a9050838111156132c8576132c761345b565b5b6132f7565b6132da848484600161318d565b925090508184048111156132f1576132f061345b565b5b81810290505b9392505050565b6000613309826133a8565b9150613314836133a8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561334d5761334c61345b565b5b828202905092915050565b600061336382613388565b9050919050565b600061337582613388565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6133bb8261352b565b810181811067ffffffffffffffff821117156133da576133d96134e8565b5b80604052505050565b60006133ee826133a8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156134215761342061345b565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f43616e6e6f7420436c61696d204e6f7700000000000000000000000000000000600082015250565b7f436f6e747269627574696f6e2073686f756c642073617469736679206d696e2060008201527f6d61782063617365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f5468657265206973206e6f20616d6f756e7420746f20636c61696d0000000000600082015250565b7f55736572206973206e6f742057686974656c6973746564000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f416464726573732073686f756c64206e6f74206265205a65726f000000000000600082015250565b7f546f6b656e2042616c616e6365206f6620636f6e7472616374206973206c657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f546f6b656e2042616c616e6365206f662075736572206973206c657373000000600082015250565b7f424e422048617264636170205265616368656400000000000000000000000000600082015250565b61375e81613358565b811461376957600080fd5b50565b6137758161336a565b811461378057600080fd5b50565b61378c8161337c565b811461379757600080fd5b50565b6137a3816133a8565b81146137ae57600080fd5b5056fea2646970667358221220faa018c0156b5bffe9c68c7bd6cacf66e497a51561ae4b35bae3a7ba194c439d64736f6c634300080700330000000000000000000000007050dc49ec7a7eebc60b9358e0ab5893b7a707f6

Deployed Bytecode

0x6080604052600436106102135760003560e01c80638d3d657611610118578063b31d61b0116100a0578063d9b01dd81161006f578063d9b01dd814610795578063dd49756e146107c0578063f2fde38b146107fd578063f6a620b814610826578063fb86a4041461084f57610224565b8063b31d61b0146106c5578063b8dcee5314610702578063d013cbe21461072d578063d936547e1461075857610224565b80639e1a4d19116100e75780639e1a4d19146105d7578063aaffadf314610602578063ad1ffdd41461062d578063aefb4d811461066a578063b2bdfa7b1461069a57610224565b80638d3d6576146105385780638da5cb5b146105635780639334efa01461058e57806393e59dc1146105ac57610224565b80635238e8ef1161019b578063676c0d771161016a578063676c0d771461045557806367a3eb651461047e578063703df793146104a957806388716fdd146104d25780638a647e6c146104fb57610224565b80635238e8ef146103ab5780635caed029146103d65780635fbe4d1d146104015780636691461a1461042c57610224565b806327e235e3116101e257806327e235e3146102b257806339be86e8146102ef5780634451d89f1461032c57806349df728c146103575780634e71d92d1461038057610224565b80630147d79c146102295780630778bc3714610254578063082ae3a71461025e5780630ab910331461028757610224565b3661022457610222333461087a565b005b600080fd5b34801561023557600080fd5b5061023e610c23565b60405161024b9190613031565b60405180910390f35b61025c610c29565b005b34801561026a57600080fd5b5061028560048036038101906102809190612c66565b610fd0565b005b34801561029357600080fd5b5061029c611070565b6040516102a99190613031565b60405180910390f35b3480156102be57600080fd5b506102d960048036038101906102d49190612a4c565b611076565b6040516102e69190613031565b60405180910390f35b3480156102fb57600080fd5b5061031660048036038101906103119190612a4c565b61108e565b6040516103239190613031565b60405180910390f35b34801561033857600080fd5b506103416110a6565b60405161034e9190612ed6565b60405180910390f35b34801561036357600080fd5b5061037e60048036038101906103799190612a4c565b6113a6565b005b34801561038c57600080fd5b50610395611599565b6040516103a29190612ed6565b60405180910390f35b3480156103b757600080fd5b506103c06115ac565b6040516103cd9190612ed6565b60405180910390f35b3480156103e257600080fd5b506103eb611694565b6040516103f89190613031565b60405180910390f35b34801561040d57600080fd5b5061041661169a565b6040516104239190612e40565b60405180910390f35b34801561043857600080fd5b50610453600480360381019061044e9190612a4c565b6116c0565b005b34801561046157600080fd5b5061047c60048036038101906104779190612c0c565b611792565b005b34801561048a57600080fd5b5061049361182a565b6040516104a09190613031565b60405180910390f35b3480156104b557600080fd5b506104d060048036038101906104cb9190612c0c565b611830565b005b3480156104de57600080fd5b506104f960048036038101906104f49190612a79565b6118c8565b005b34801561050757600080fd5b50610522600480360381019061051d9190612aef565b6119a0565b60405161052f9190612ed6565b60405180910390f35b34801561054457600080fd5b5061054d611bcb565b60405161055a9190613031565b60405180910390f35b34801561056f57600080fd5b50610578611bd1565b6040516105859190612e40565b60405180910390f35b610596611bfa565b6040516105a39190612ed6565b60405180910390f35b3480156105b857600080fd5b506105c1611c5c565b6040516105ce9190612ed6565b60405180910390f35b3480156105e357600080fd5b506105ec611c6f565b6040516105f99190613031565b60405180910390f35b34801561060e57600080fd5b50610617611d21565b6040516106249190613031565b60405180910390f35b34801561063957600080fd5b50610654600480360381019061064f9190612aa6565b611d27565b6040516106619190612ed6565b60405180910390f35b610684600480360381019061067f9190612b67565b611e61565b6040516106919190612ed6565b60405180910390f35b3480156106a657600080fd5b506106af6120ac565b6040516106bc9190612e5b565b60405180910390f35b3480156106d157600080fd5b506106ec60048036038101906106e79190612aa6565b6120d0565b6040516106f99190612ed6565b60405180910390f35b34801561070e57600080fd5b5061071761220a565b6040516107249190613031565b60405180910390f35b34801561073957600080fd5b50610742612210565b60405161074f9190613031565b60405180910390f35b34801561076457600080fd5b5061077f600480360381019061077a9190612a4c565b612218565b60405161078c9190612ed6565b60405180910390f35b3480156107a157600080fd5b506107aa612238565b6040516107b79190612ed6565b60405180910390f35b3480156107cc57600080fd5b506107e760048036038101906107e29190612c0c565b612320565b6040516107f49190612ed6565b60405180910390f35b34801561080957600080fd5b50610824600480360381019061081f9190612a79565b612520565b005b34801561083257600080fd5b5061084d60048036038101906108489190612c0c565b6126db565b005b34801561085b57600080fd5b50610864612773565b6040516108719190613031565b60405180910390f35b6000819050600083905060006108d834600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461277990919063ffffffff16565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d60009054906101000a900460ff16156109bd57600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166109bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b390612f71565b60405180910390fd5b5b60095460065410610a03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fa90613011565b60405180910390fd5b600754600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610a955750600854600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411155b610ad4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acb90612f11565b60405180910390fd5b610aea600160055461277990919063ffffffff16565b50610b008460065461277990919063ffffffff16565b50610b76600354600a610b1391906131e0565b610b68600354600a610b2591906131e0565b610b5a600254610b4c600354600a610b3d91906131e0565b8a6127a590919063ffffffff16565b6127ee90919063ffffffff16565b6127a590919063ffffffff16565b6127ee90919063ffffffff16565b905080600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610bc79190613106565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167fd1120c2462a15052020f7da1c8241ce60c93668d44b0e5fc91a3e3b0b591e29134604051610c149190613031565b60405180910390a25050505050565b60055481565b600034905060003390506000610c8734600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461277990919063ffffffff16565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d60009054906101000a900460ff1615610d6c57600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610d6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6290612f71565b60405180910390fd5b5b60095460065410610db2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da990613011565b60405180910390fd5b600754600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610e445750600854600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411155b610e83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7a90612f11565b60405180910390fd5b610e99600160055461277990919063ffffffff16565b50610eaf8360065461277990919063ffffffff16565b50610f25600354600a610ec291906131e0565b610f17600354600a610ed491906131e0565b610f09600254610efb600354600a610eec91906131e0565b8a6127a590919063ffffffff16565b6127ee90919063ffffffff16565b6127a590919063ffffffff16565b6127ee90919063ffffffff16565b905080600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610f769190613106565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167fd1120c2462a15052020f7da1c8241ce60c93668d44b0e5fc91a3e3b0b591e29134604051610fc39190613031565b60405180910390a2505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461105e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105590612f91565b60405180910390fd5b81600781905550806008819055505050565b60025481565b600a6020528060005260406000206000915090505481565b600c6020528060005260406000206000915090505481565b6000803390506000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600d60019054906101000a900460ff1661113f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113690612ef1565b60405180910390fd5b60008111611182576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117990612f51565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016111dd9190612e40565b60206040518083038186803b1580156111f557600080fd5b505afa158015611209573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122d9190612c39565b81111561126f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126690612fd1565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016112cc929190612ead565b602060405180830381600087803b1580156112e657600080fd5b505af11580156112fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131e9190612bdf565b507f1d72140a7ccdb496bef50918d2598dd7edefb514f70e6d4beb528cbd16c80b7d8282604051611350929190612ead565b60405180910390a16000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060019250505090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611434576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142b90612f91565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016114ce9190612e40565b60206040518083038186803b1580156114e657600080fd5b505afa1580156114fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151e9190612c39565b6040518363ffffffff1660e01b815260040161153b929190612ead565b602060405180830381600087803b15801561155557600080fd5b505af1158015611569573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158d9190612bdf565b61159657600080fd5b50565b600d60019054906101000a900460ff1681565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461163c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163390612f91565b60405180910390fd5b600d60019054906101000a900460ff1615611671576000600d60016101000a81548160ff02191690831515021790555061168d565b6001600d60016101000a81548160ff0219169083151502179055505b6001905090565b60035481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461174e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174590612f91565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611820576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181790612f91565b60405180910390fd5b8060028190555050565b60065481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b590612f91565b60405180910390fd5b8060098190555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194d90612f91565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561199c573d6000803e3d6000fd5b5050565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2790612f91565b60405180910390fd5b60008251845114611a4057600080fd5b606484511115611a4f57600080fd5b60005b8351811015611a9d57611a88848281518110611a7157611a706134b9565b5b60200260200101518361277990919063ffffffff16565b91508080611a95906133e3565b915050611a52565b5060005b8451811015611bbf57600073ffffffffffffffffffffffffffffffffffffffff16858281518110611ad557611ad46134b9565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415611b34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2b90612fb1565b60405180910390fd5b838181518110611b4757611b466134b9565b5b6020026020010151600a6000878481518110611b6657611b656134b9565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080611bb7906133e3565b915050611aa1565b50600191505092915050565b60085481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008034905060003390508073ffffffffffffffffffffffffffffffffffffffff167fd1120c2462a15052020f7da1c8241ce60c93668d44b0e5fc91a3e3b0b591e29183604051611c4b9190613031565b60405180910390a260019250505090565b600d60009054906101000a900460ff1681565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611ccc9190612e40565b60206040518083038186803b158015611ce457600080fd5b505afa158015611cf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1c9190612c39565b905090565b60075481565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611db7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dae90612f91565b60405180910390fd5b606482511115611dc657600080fd5b60005b8251811015611e57576000600b6000858481518110611deb57611dea6134b9565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611e4f906133e3565b915050611dc9565b5060019050919050565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ef1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee890612f91565b60405180910390fd5b60008251845114611f0157600080fd5b606483511115611f1057600080fd5b60005b8451811015611f5e57611f49858281518110611f3257611f316134b9565b5b60200260200101518361277990919063ffffffff16565b91508080611f56906133e3565b915050611f13565b5034811115611f6c57600080fd5b60005b83518110156120a057838181518110611f8b57611f8a6134b9565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166108fc868381518110611fbf57611fbe6134b9565b5b60200260200101519081150290604051600060405180830381858888f19350505050158015611ff2573d6000803e3d6000fd5b50848181518110612006576120056134b9565b5b6020026020010151848281518110612021576120206134b9565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fe15b05c89de142b36f58fef76fc06540732740f3647797137a3827e7f820cf75306040516120859190612e40565b60405180910390a48080612098906133e3565b915050611f6f565b50600191505092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612160576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215790612f91565b60405180910390fd5b60648251111561216f57600080fd5b60005b8251811015612200576001600b6000858481518110612194576121936134b9565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806121f8906133e3565b915050612172565b5060019050919050565b60045481565b600047905090565b600b6020528060005260406000206000915054906101000a900460ff1681565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bf90612f91565b60405180910390fd5b600d60009054906101000a900460ff16156122fd576000600d60006101000a81548160ff021916908315150217905550612319565b6001600d60006101000a81548160ff0219169083151502179055505b6001905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161237d9190612e40565b60206040518083038186803b15801561239557600080fd5b505afa1580156123a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123cd9190612c39565b82111561240f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240690612ff1565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b815260040161246e93929190612e76565b602060405180830381600087803b15801561248857600080fd5b505af115801561249c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c09190612bdf565b6124c957600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167fbc7c8a4d8049a3f99a02f2a20640c206a2e4d3f2fa54fd20da9f01fda3620cda8360405161250f9190613031565b60405180910390a260019050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a590612f91565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561261e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261590612f31565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612769576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276090612f91565b60405180910390fd5b8060038190555050565b60095481565b60008082846127889190613106565b90508381101561279b5761279a61342c565b5b8091505092915050565b6000808314156127b857600090506127e8565b600082846127c691906132fe565b90508284826127d5919061315c565b146127e3576127e261342c565b5b809150505b92915050565b60008082846127fd919061315c565b90508091505092915050565b600061281c61281784613071565b61304c565b9050808382526020820190508285602086028201111561283f5761283e61351c565b5b60005b8581101561286f57816128558882612959565b845260208401935060208301925050600181019050612842565b5050509392505050565b600061288c6128878461309d565b61304c565b905080838252602082019050828560208602820111156128af576128ae61351c565b5b60005b858110156128df57816128c5888261296e565b8452602084019350602083019250506001810190506128b2565b5050509392505050565b60006128fc6128f7846130c9565b61304c565b9050808382526020820190508285602086028201111561291f5761291e61351c565b5b60005b8581101561294f57816129358882612a22565b845260208401935060208301925050600181019050612922565b5050509392505050565b60008135905061296881613755565b92915050565b60008135905061297d8161376c565b92915050565b600082601f83011261299857612997613517565b5b81356129a8848260208601612809565b91505092915050565b600082601f8301126129c6576129c5613517565b5b81356129d6848260208601612879565b91505092915050565b600082601f8301126129f4576129f3613517565b5b8135612a048482602086016128e9565b91505092915050565b600081519050612a1c81613783565b92915050565b600081359050612a318161379a565b92915050565b600081519050612a468161379a565b92915050565b600060208284031215612a6257612a61613526565b5b6000612a7084828501612959565b91505092915050565b600060208284031215612a8f57612a8e613526565b5b6000612a9d8482850161296e565b91505092915050565b600060208284031215612abc57612abb613526565b5b600082013567ffffffffffffffff811115612ada57612ad9613521565b5b612ae684828501612983565b91505092915050565b60008060408385031215612b0657612b05613526565b5b600083013567ffffffffffffffff811115612b2457612b23613521565b5b612b3085828601612983565b925050602083013567ffffffffffffffff811115612b5157612b50613521565b5b612b5d858286016129df565b9150509250929050565b60008060408385031215612b7e57612b7d613526565b5b600083013567ffffffffffffffff811115612b9c57612b9b613521565b5b612ba8858286016129df565b925050602083013567ffffffffffffffff811115612bc957612bc8613521565b5b612bd5858286016129b1565b9150509250929050565b600060208284031215612bf557612bf4613526565b5b6000612c0384828501612a0d565b91505092915050565b600060208284031215612c2257612c21613526565b5b6000612c3084828501612a22565b91505092915050565b600060208284031215612c4f57612c4e613526565b5b6000612c5d84828501612a37565b91505092915050565b60008060408385031215612c7d57612c7c613526565b5b6000612c8b85828601612a22565b9250506020612c9c85828601612a22565b9150509250929050565b612caf8161336a565b82525050565b612cbe81613358565b82525050565b612ccd8161337c565b82525050565b6000612ce06010836130f5565b9150612ceb82613549565b602082019050919050565b6000612d036028836130f5565b9150612d0e82613572565b604082019050919050565b6000612d266026836130f5565b9150612d31826135c1565b604082019050919050565b6000612d49601b836130f5565b9150612d5482613610565b602082019050919050565b6000612d6c6017836130f5565b9150612d7782613639565b602082019050919050565b6000612d8f6020836130f5565b9150612d9a82613662565b602082019050919050565b6000612db2601a836130f5565b9150612dbd8261368b565b602082019050919050565b6000612dd56021836130f5565b9150612de0826136b4565b604082019050919050565b6000612df8601d836130f5565b9150612e0382613703565b602082019050919050565b6000612e1b6013836130f5565b9150612e268261372c565b602082019050919050565b612e3a816133a8565b82525050565b6000602082019050612e556000830184612cb5565b92915050565b6000602082019050612e706000830184612ca6565b92915050565b6000606082019050612e8b6000830186612cb5565b612e986020830185612cb5565b612ea56040830184612e31565b949350505050565b6000604082019050612ec26000830185612cb5565b612ecf6020830184612e31565b9392505050565b6000602082019050612eeb6000830184612cc4565b92915050565b60006020820190508181036000830152612f0a81612cd3565b9050919050565b60006020820190508181036000830152612f2a81612cf6565b9050919050565b60006020820190508181036000830152612f4a81612d19565b9050919050565b60006020820190508181036000830152612f6a81612d3c565b9050919050565b60006020820190508181036000830152612f8a81612d5f565b9050919050565b60006020820190508181036000830152612faa81612d82565b9050919050565b60006020820190508181036000830152612fca81612da5565b9050919050565b60006020820190508181036000830152612fea81612dc8565b9050919050565b6000602082019050818103600083015261300a81612deb565b9050919050565b6000602082019050818103600083015261302a81612e0e565b9050919050565b60006020820190506130466000830184612e31565b92915050565b6000613056613067565b905061306282826133b2565b919050565b6000604051905090565b600067ffffffffffffffff82111561308c5761308b6134e8565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156130b8576130b76134e8565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156130e4576130e36134e8565b5b602082029050602081019050919050565b600082825260208201905092915050565b6000613111826133a8565b915061311c836133a8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156131515761315061345b565b5b828201905092915050565b6000613167826133a8565b9150613172836133a8565b9250826131825761318161348a565b5b828204905092915050565b6000808291508390505b60018511156131d7578086048111156131b3576131b261345b565b5b60018516156131c25780820291505b80810290506131d08561353c565b9450613197565b94509492505050565b60006131eb826133a8565b91506131f6836133a8565b92506132237fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461322b565b905092915050565b60008261323b57600190506132f7565b8161324957600090506132f7565b816001811461325f576002811461326957613298565b60019150506132f7565b60ff84111561327b5761327a61345b565b5b8360020a9150848211156132925761329161345b565b5b506132f7565b5060208310610133831016604e8410600b84101617156132cd5782820a9050838111156132c8576132c761345b565b5b6132f7565b6132da848484600161318d565b925090508184048111156132f1576132f061345b565b5b81810290505b9392505050565b6000613309826133a8565b9150613314836133a8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561334d5761334c61345b565b5b828202905092915050565b600061336382613388565b9050919050565b600061337582613388565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6133bb8261352b565b810181811067ffffffffffffffff821117156133da576133d96134e8565b5b80604052505050565b60006133ee826133a8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156134215761342061345b565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f43616e6e6f7420436c61696d204e6f7700000000000000000000000000000000600082015250565b7f436f6e747269627574696f6e2073686f756c642073617469736679206d696e2060008201527f6d61782063617365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f5468657265206973206e6f20616d6f756e7420746f20636c61696d0000000000600082015250565b7f55736572206973206e6f742057686974656c6973746564000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f416464726573732073686f756c64206e6f74206265205a65726f000000000000600082015250565b7f546f6b656e2042616c616e6365206f6620636f6e7472616374206973206c657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f546f6b656e2042616c616e6365206f662075736572206973206c657373000000600082015250565b7f424e422048617264636170205265616368656400000000000000000000000000600082015250565b61375e81613358565b811461376957600080fd5b50565b6137758161336a565b811461378057600080fd5b50565b61378c8161337c565b811461379757600080fd5b50565b6137a3816133a8565b81146137ae57600080fd5b5056fea2646970667358221220faa018c0156b5bffe9c68c7bd6cacf66e497a51561ae4b35bae3a7ba194c439d64736f6c63430008070033

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

0000000000000000000000007050dc49ec7a7eebc60b9358e0ab5893b7a707f6

-----Decoded View---------------
Arg [0] : _tokenAddr (address): 0x7050dC49Ec7a7EebC60b9358e0aB5893B7a707f6

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007050dc49ec7a7eebc60b9358e0ab5893b7a707f6


Deployed Bytecode Sourcemap

2477:8993:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7263:42;7283:10;7295:9;7263:19;:42::i;:::-;2477:8993;;;;;2723:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8356:902;;;:::i;:::-;;10236:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2595:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3310:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3410:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6589:554;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10742:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3504:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9683:206;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2647:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2558:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10577:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9931:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2761:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10080:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10970:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4427:619;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2853:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1433:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6302:213;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3468:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11213:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2795:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5492:312;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3685:667;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1000:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5116:312;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2686:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11369:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3360:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9381:224;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5920:329;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1879:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10428:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2914:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7377:901;7457:14;7474:7;7457:24;;7492:15;7510:5;7492:23;;7526:17;7582:35;7607:9;7582:8;:20;7591:10;7582:20;;;;;;;;;;;;;;;;:24;;:35;;;;:::i;:::-;7559:8;:20;7568:10;7559:20;;;;;;;;;;;;;;;:58;;;;7641:9;;;;;;;;;;;7638:95;;;7674:11;:20;7686:7;7674:20;;;;;;;;;;;;;;;;;;;;;;;;;7666:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;7638:95;7766:7;;7751:12;;:22;7743:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;7840:15;;7816:8;:20;7825:10;7816:20;;;;;;;;;;;;;;;;:39;;:82;;;;;7883:15;;7859:8;:20;7868:10;7859:20;;;;;;;;;;;;;;;;:39;;7816:82;7808:134;;;;;;;;;;;;:::i;:::-;;;;;;;;;7953:23;7974:1;7953:16;;:20;;:23;;;;:::i;:::-;;7987:25;8004:7;7987:12;;:16;;:25;;;;:::i;:::-;;8035:128;8149:12;;8135:2;:27;;;;:::i;:::-;8036:93;8115:12;;8101:2;:27;;;;:::i;:::-;8037:58;8081:13;;8037:39;8062:12;;8048:2;:27;;;;:::i;:::-;8037:6;:10;;:39;;;;:::i;:::-;:43;;:58;;;;:::i;:::-;8036:64;;:93;;;;:::i;:::-;8035:99;;:128;;;;:::i;:::-;8023:140;;8201:9;8174:14;:23;8189:7;8174:23;;;;;;;;;;;;;;;;:36;;;;;;;:::i;:::-;;;;;;;;8249:10;8236:34;;;8260:9;8236:34;;;;;;:::i;:::-;;;;;;;;7446:832;;;7377:901;;:::o;2723:31::-;;;;:::o;8356:902::-;8420:14;8437:9;8420:26;;8457:15;8475:10;8457:28;;8496:17;8551:35;8576:9;8551:8;:20;8560:10;8551:20;;;;;;;;;;;;;;;;:24;;:35;;;;:::i;:::-;8528:8;:20;8537:10;8528:20;;;;;;;;;;;;;;;:58;;;;8610:9;;;;;;;;;;;8607:95;;;8643:11;:20;8655:7;8643:20;;;;;;;;;;;;;;;;;;;;;;;;;8635:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;8607:95;8735:7;;8720:12;;:22;8712:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;8809:15;;8785:8;:20;8794:10;8785:20;;;;;;;;;;;;;;;;:39;;:82;;;;;8852:15;;8828:8;:20;8837:10;8828:20;;;;;;;;;;;;;;;;:39;;8785:82;8777:134;;;;;;;;;;;;:::i;:::-;;;;;;;;;8922:23;8943:1;8922:16;;:20;;:23;;;;:::i;:::-;;8956:24;8973:6;8956:12;;:16;;:24;;;;:::i;:::-;;9003:128;9117:12;;9103:2;:27;;;;:::i;:::-;9004:93;9083:12;;9069:2;:27;;;;:::i;:::-;9005:58;9049:13;;9005:39;9030:12;;9016:2;:27;;;;:::i;:::-;9005:6;:10;;:39;;;;:::i;:::-;:43;;:58;;;;:::i;:::-;9004:64;;:93;;;;:::i;:::-;9003:99;;:128;;;;:::i;:::-;8991:140;;9169:9;9142:14;:23;9157:7;9142:23;;;;;;;;;;;;;;;;:36;;;;;;;:::i;:::-;;;;;;;;9217:10;9204:34;;;9228:9;9204:34;;;;;;:::i;:::-;;;;;;;;8409:849;;;8356:902::o;10236:148::-;1655:10;1645:20;;:6;;;;;;;;;;:20;;;1637:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;10341:3:::1;10323:15;:21;;;;10373:3;10355:15;:21;;;;10236:148:::0;;:::o;2595:45::-;;;;:::o;3310:43::-;;;;;;;;;;;;;;;;;:::o;3410:49::-;;;;;;;;;;;;;;;;;:::o;6589:554::-;6627:4;6643:15;6661:10;6643:28;;6682:21;6706:14;:23;6721:7;6706:23;;;;;;;;;;;;;;;;6682:47;;6748:5;;;;;;;;;;;6740:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;6806:1;6792:13;:15;6784:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;6880:9;;;;;;;;;;;6874:26;;;6909:4;6874:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6857:13;:58;;6849:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;6969:9;;;;;;;;;;;6963:25;;;6989:7;6998:13;6963:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7038:37;7052:7;7061:13;7038:37;;;;;;;:::i;:::-;;;;;;;;7112:1;7086:14;:23;7101:7;7086:23;;;;;;;;;;;;;;;:27;;;;7131:4;7124:11;;;;6589:554;:::o;10742:171::-;1655:10;1645:20;;:6;;;;;;;;;;:20;;;1637:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;10829:9:::1;;;;;;;;;;;10823:25;;;10849:11;10868:9;;;;;;;;;;;10862:26;;;10897:4;10862:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10823:81;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10815:90;;;::::0;::::1;;10742:171:::0;:::o;3504:24::-;;;;;;;;;;;;;:::o;9683:206::-;9728:12;1655:10;1645:20;;:6;;;;;;;;;;:20;;;1637:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;9758:5:::1;;;;;;;;;;;9754:96;;;9788:5;9780;;:13;;;;;;;;;;;;;;;;;;9754:96;;;9834:4;9826:5;;:12;;;;;;;;;;;;;;;;;;9754:96;9867:4;9860:11;;9683:206:::0;:::o;2647:32::-;;;;:::o;2558:24::-;;;;;;;;;;;;;:::o;10577:110::-;1655:10;1645:20;;:6;;;;;;;;;;:20;;;1637:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;10667:12:::1;10655:9;;:24;;;;;;;;;;;;;;;;;;10577:110:::0;:::o;9931:114::-;1655:10;1645:20;;:6;;;;;;;;;;:20;;;1637:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;10024:13:::1;10008;:29;;;;9931:114:::0;:::o;2761:27::-;;;;:::o;10080:109::-;1655:10;1645:20;;:6;;;;;;;;;;:20;;;1637:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;10166:15:::1;10156:7;:25;;;;10080:109:::0;:::o;10970:132::-;1655:10;1645:20;;:6;;;;;;;;;;:20;;;1637:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;11051:11:::1;:20;;:43;11072:21;11051:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;10970:132:::0;:::o;4427:619::-;4532:4;1655:10;1645:20;;:6;;;;;;;;;;:20;;;1637:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;4549:10:::1;4604:7;:14;4582:11;:18;:36;4574:45;;;::::0;::::1;;4660:3;4638:11;:18;:25;;4630:34;;;::::0;::::1;;4711:6;4707:97;4727:7;:14;4723:1;:18;4707:97;;;4771:21;4781:7;4789:1;4781:10;;;;;;;;:::i;:::-;;;;;;;;4771:5;:9;;:21;;;;:::i;:::-;4763:29;;4743:3;;;;;:::i;:::-;;;;4707:97;;;;4829:6;4824:191;4845:11;:18;4841:1;:22;4824:191;;;4919:1;4893:28;;:11;4905:1;4893:14;;;;;;;;:::i;:::-;;;;;;;;:28;;;;4885:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;4993:7;5001:1;4993:10;;;;;;;;:::i;:::-;;;;;;;;4966:8;:24;4975:11;4987:1;4975:14;;;;;;;;:::i;:::-;;;;;;;;4966:24;;;;;;;;;;;;;;;:37;;;;4865:3;;;;;:::i;:::-;;;;4824:191;;;;5034:4;5027:11;;;4427:619:::0;;;;:::o;2853:53::-;;;;:::o;1433:79::-;1471:7;1498:6;;;;;;;;;;;1491:13;;1433:79;:::o;6302:213::-;6351:4;6367:14;6384:9;6367:26;;6404:19;6426:10;6404:32;;6465:11;6452:33;;;6478:6;6452:33;;;;;;:::i;:::-;;;;;;;;6503:4;6496:11;;;;6302:213;:::o;3468:29::-;;;;;;;;;;;;;:::o;11213:120::-;11258:7;11290:9;;;;;;;;;;;11284:26;;;11319:4;11284:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11277:48;;11213:120;:::o;2795:50::-;;;;:::o;5492:312::-;5573:4;1655:10;1645:20;;:6;;;;;;;;;;:20;;;1637:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;5620:3:::1;5598:11;:18;:25;;5590:34;;;::::0;::::1;;5672:6;5667:108;5688:11;:18;5684:1;:22;5667:108;;;5758:5;5728:11;:27;5740:11;5752:1;5740:14;;;;;;;;:::i;:::-;;;;;;;;5728:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;5708:3;;;;;:::i;:::-;;;;5667:108;;;;5792:4;5785:11;;5492:312:::0;;;:::o;3685:667::-;3806:4;1655:10;1645:20;;:6;;;;;;;;;;:20;;;1637:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;3822:10:::1;3873:9;:16;3855:7;:14;:34;3847:43;;;::::0;::::1;;3929:3;3909:9;:16;:23;;3901:32;;;::::0;::::1;;3980:6;3976:97;3996:7;:14;3992:1;:18;3976:97;;;4040:21;4050:7;4058:1;4050:10;;;;;;;;:::i;:::-;;;;;;;;4040:5;:9;;:21;;;;:::i;:::-;4032:29;;4012:3;;;;;:::i;:::-;;;;3976:97;;;;4100:9;4091:5;:18;;4083:27;;;::::0;::::1;;4139:6;4135:188;4154:9;:16;4151:1;:19;4135:188;;;4191:9;4201:1;4191:12;;;;;;;;:::i;:::-;;;;;;;;:21;;:33;4213:7;4221:1;4213:10;;;;;;;;:::i;:::-;;;;;;;;4191:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;4300:7;4308:1;4300:10;;;;;;;;:::i;:::-;;;;;;;;4287:9;4297:1;4287:12;;;;;;;;:::i;:::-;;;;;;;;4244:67;;4261:10;4244:67;;;4280:4;4244:67;;;;;;:::i;:::-;;;;;;;;4172:3;;;;;:::i;:::-;;;;4135:188;;;;4340:4;4333:11;;;3685:667:::0;;;;:::o;1000:29::-;;;;;;;;;;;;:::o;5116:312::-;5198:4;1655:10;1645:20;;:6;;;;;;;;;;:20;;;1637:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;5245:3:::1;5223:11;:18;:25;;5215:34;;;::::0;::::1;;5297:6;5292:107;5313:11;:18;5309:1;:22;5292:107;;;5383:4;5353:11;:27;5365:11;5377:1;5365:14;;;;;;;;:::i;:::-;;;;;;;;5353:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;5333:3;;;;;:::i;:::-;;;;5292:107;;;;5416:4;5409:11;;5116:312:::0;;;:::o;2686:30::-;;;;:::o;11369:98::-;11412:7;11438:21;11431:28;;11369:98;:::o;3360:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;9381:224::-;9432:12;1655:10;1645:20;;:6;;;;;;;;;;:20;;;1637:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;9462:9:::1;;;;;;;;;;;9458:108;;;9500:5;9488:9;;:17;;;;;;;;;;;;;;;;;;9458:108;;;9550:4;9538:9;;:16;;;;;;;;;;;;;;;;;;9458:108;9583:4;9576:11;;9381:224:::0;:::o;5920:329::-;5977:4;6019:9;;;;;;;;;;;6013:26;;;6040:10;6013:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6002:7;:49;;5994:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;6109:9;;;;;;;;;;;6103:29;;;6133:10;6152:4;6159:7;6103:64;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6095:73;;;;;;6199:10;6184:35;;;6211:7;6184:35;;;;;;:::i;:::-;;;;;;;;6237:4;6230:11;;5920:329;;;:::o;1879:244::-;1655:10;1645:20;;:6;;;;;;;;;;:20;;;1637:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;1988:1:::1;1968:22;;:8;:22;;;;1960:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2078:8;2049:38;;2070:6;::::0;::::1;;;;;;;;2049:38;;;;;;;;;;;;2107:8;2098:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1879:244:::0;:::o;10428:109::-;1655:10;1645:20;;:6;;;;;;;;;;:20;;;1637:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;10519:10:::1;10504:12;:25;;;;10428:109:::0;:::o;2914:46::-;;;;:::o;819:147::-;877:7;897:9;913:1;909;:5;;;;:::i;:::-;897:17;;937:1;932;:6;;925:14;;;;:::i;:::-;;957:1;950:8;;;819:147;;;;:::o;176:208::-;234:7;263:1;258;:6;254:47;;;288:1;281:8;;;;254:47;311:9;327:1;323;:5;;;;:::i;:::-;311:17;;355:1;350;346;:5;;;;:::i;:::-;:10;339:18;;;;:::i;:::-;;375:1;368:8;;;176:208;;;;;:::o;392:288::-;450:7;549:9;565:1;561;:5;;;;:::i;:::-;549:17;;671:1;664:8;;;392:288;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;777:746::-;881:5;906:89;922:72;987:6;922:72;:::i;:::-;906:89;:::i;:::-;897:98;;1015:5;1044:6;1037:5;1030:21;1078:4;1071:5;1067:16;1060:23;;1104:6;1154:3;1146:4;1138:6;1134:17;1129:3;1125:27;1122:36;1119:143;;;1173:79;;:::i;:::-;1119:143;1286:1;1271:246;1296:6;1293:1;1290:13;1271:246;;;1364:3;1393:45;1434:3;1422:10;1393:45;:::i;:::-;1388:3;1381:58;1468:4;1463:3;1459:14;1452:21;;1502:4;1497:3;1493:14;1486:21;;1331:186;1318:1;1315;1311:9;1306:14;;1271:246;;;1275:14;887:636;;777:746;;;;;:::o;1546:722::-;1642:5;1667:81;1683:64;1740:6;1683:64;:::i;:::-;1667:81;:::i;:::-;1658:90;;1768:5;1797:6;1790:5;1783:21;1831:4;1824:5;1820:16;1813:23;;1857:6;1907:3;1899:4;1891:6;1887:17;1882:3;1878:27;1875:36;1872:143;;;1926:79;;:::i;:::-;1872:143;2039:1;2024:238;2049:6;2046:1;2043:13;2024:238;;;2117:3;2146:37;2179:3;2167:10;2146:37;:::i;:::-;2141:3;2134:50;2213:4;2208:3;2204:14;2197:21;;2247:4;2242:3;2238:14;2231:21;;2084:178;2071:1;2068;2064:9;2059:14;;2024:238;;;2028:14;1648:620;;1546:722;;;;;:::o;2274:139::-;2320:5;2358:6;2345:20;2336:29;;2374:33;2401:5;2374:33;:::i;:::-;2274:139;;;;:::o;2419:155::-;2473:5;2511:6;2498:20;2489:29;;2527:41;2562:5;2527:41;:::i;:::-;2419:155;;;;:::o;2597:370::-;2668:5;2717:3;2710:4;2702:6;2698:17;2694:27;2684:122;;2725:79;;:::i;:::-;2684:122;2842:6;2829:20;2867:94;2957:3;2949:6;2942:4;2934:6;2930:17;2867:94;:::i;:::-;2858:103;;2674:293;2597:370;;;;:::o;2998:386::-;3077:5;3126:3;3119:4;3111:6;3107:17;3103:27;3093:122;;3134:79;;:::i;:::-;3093:122;3251:6;3238:20;3276:102;3374:3;3366:6;3359:4;3351:6;3347:17;3276:102;:::i;:::-;3267:111;;3083:301;2998:386;;;;:::o;3407:370::-;3478:5;3527:3;3520:4;3512:6;3508:17;3504:27;3494:122;;3535:79;;:::i;:::-;3494:122;3652:6;3639:20;3677:94;3767:3;3759:6;3752:4;3744:6;3740:17;3677:94;:::i;:::-;3668:103;;3484:293;3407:370;;;;:::o;3783:137::-;3837:5;3868:6;3862:13;3853:22;;3884:30;3908:5;3884:30;:::i;:::-;3783:137;;;;:::o;3926:139::-;3972:5;4010:6;3997:20;3988:29;;4026:33;4053:5;4026:33;:::i;:::-;3926:139;;;;:::o;4071:143::-;4128:5;4159:6;4153:13;4144:22;;4175:33;4202:5;4175:33;:::i;:::-;4071:143;;;;:::o;4220:329::-;4279:6;4328:2;4316:9;4307:7;4303:23;4299:32;4296:119;;;4334:79;;:::i;:::-;4296:119;4454:1;4479:53;4524:7;4515:6;4504:9;4500:22;4479:53;:::i;:::-;4469:63;;4425:117;4220:329;;;;:::o;4555:345::-;4622:6;4671:2;4659:9;4650:7;4646:23;4642:32;4639:119;;;4677:79;;:::i;:::-;4639:119;4797:1;4822:61;4875:7;4866:6;4855:9;4851:22;4822:61;:::i;:::-;4812:71;;4768:125;4555:345;;;;:::o;4906:539::-;4990:6;5039:2;5027:9;5018:7;5014:23;5010:32;5007:119;;;5045:79;;:::i;:::-;5007:119;5193:1;5182:9;5178:17;5165:31;5223:18;5215:6;5212:30;5209:117;;;5245:79;;:::i;:::-;5209:117;5350:78;5420:7;5411:6;5400:9;5396:22;5350:78;:::i;:::-;5340:88;;5136:302;4906:539;;;;:::o;5451:894::-;5569:6;5577;5626:2;5614:9;5605:7;5601:23;5597:32;5594:119;;;5632:79;;:::i;:::-;5594:119;5780:1;5769:9;5765:17;5752:31;5810:18;5802:6;5799:30;5796:117;;;5832:79;;:::i;:::-;5796:117;5937:78;6007:7;5998:6;5987:9;5983:22;5937:78;:::i;:::-;5927:88;;5723:302;6092:2;6081:9;6077:18;6064:32;6123:18;6115:6;6112:30;6109:117;;;6145:79;;:::i;:::-;6109:117;6250:78;6320:7;6311:6;6300:9;6296:22;6250:78;:::i;:::-;6240:88;;6035:303;5451:894;;;;;:::o;6351:910::-;6477:6;6485;6534:2;6522:9;6513:7;6509:23;6505:32;6502:119;;;6540:79;;:::i;:::-;6502:119;6688:1;6677:9;6673:17;6660:31;6718:18;6710:6;6707:30;6704:117;;;6740:79;;:::i;:::-;6704:117;6845:78;6915:7;6906:6;6895:9;6891:22;6845:78;:::i;:::-;6835:88;;6631:302;7000:2;6989:9;6985:18;6972:32;7031:18;7023:6;7020:30;7017:117;;;7053:79;;:::i;:::-;7017:117;7158:86;7236:7;7227:6;7216:9;7212:22;7158:86;:::i;:::-;7148:96;;6943:311;6351:910;;;;;:::o;7267:345::-;7334:6;7383:2;7371:9;7362:7;7358:23;7354:32;7351:119;;;7389:79;;:::i;:::-;7351:119;7509:1;7534:61;7587:7;7578:6;7567:9;7563:22;7534:61;:::i;:::-;7524:71;;7480:125;7267:345;;;;:::o;7618:329::-;7677:6;7726:2;7714:9;7705:7;7701:23;7697:32;7694:119;;;7732:79;;:::i;:::-;7694:119;7852:1;7877:53;7922:7;7913:6;7902:9;7898:22;7877:53;:::i;:::-;7867:63;;7823:117;7618:329;;;;:::o;7953:351::-;8023:6;8072:2;8060:9;8051:7;8047:23;8043:32;8040:119;;;8078:79;;:::i;:::-;8040:119;8198:1;8223:64;8279:7;8270:6;8259:9;8255:22;8223:64;:::i;:::-;8213:74;;8169:128;7953:351;;;;:::o;8310:474::-;8378:6;8386;8435:2;8423:9;8414:7;8410:23;8406:32;8403:119;;;8441:79;;:::i;:::-;8403:119;8561:1;8586:53;8631:7;8622:6;8611:9;8607:22;8586:53;:::i;:::-;8576:63;;8532:117;8688:2;8714:53;8759:7;8750:6;8739:9;8735:22;8714:53;:::i;:::-;8704:63;;8659:118;8310:474;;;;;:::o;8790:142::-;8893:32;8919:5;8893:32;:::i;:::-;8888:3;8881:45;8790:142;;:::o;8938:118::-;9025:24;9043:5;9025:24;:::i;:::-;9020:3;9013:37;8938:118;;:::o;9062:109::-;9143:21;9158:5;9143:21;:::i;:::-;9138:3;9131:34;9062:109;;:::o;9177:366::-;9319:3;9340:67;9404:2;9399:3;9340:67;:::i;:::-;9333:74;;9416:93;9505:3;9416:93;:::i;:::-;9534:2;9529:3;9525:12;9518:19;;9177:366;;;:::o;9549:::-;9691:3;9712:67;9776:2;9771:3;9712:67;:::i;:::-;9705:74;;9788:93;9877:3;9788:93;:::i;:::-;9906:2;9901:3;9897:12;9890:19;;9549:366;;;:::o;9921:::-;10063:3;10084:67;10148:2;10143:3;10084:67;:::i;:::-;10077:74;;10160:93;10249:3;10160:93;:::i;:::-;10278:2;10273:3;10269:12;10262:19;;9921:366;;;:::o;10293:::-;10435:3;10456:67;10520:2;10515:3;10456:67;:::i;:::-;10449:74;;10532:93;10621:3;10532:93;:::i;:::-;10650:2;10645:3;10641:12;10634:19;;10293:366;;;:::o;10665:::-;10807:3;10828:67;10892:2;10887:3;10828:67;:::i;:::-;10821:74;;10904:93;10993:3;10904:93;:::i;:::-;11022:2;11017:3;11013:12;11006:19;;10665:366;;;:::o;11037:::-;11179:3;11200:67;11264:2;11259:3;11200:67;:::i;:::-;11193:74;;11276:93;11365:3;11276:93;:::i;:::-;11394:2;11389:3;11385:12;11378:19;;11037:366;;;:::o;11409:::-;11551:3;11572:67;11636:2;11631:3;11572:67;:::i;:::-;11565:74;;11648:93;11737:3;11648:93;:::i;:::-;11766:2;11761:3;11757:12;11750:19;;11409:366;;;:::o;11781:::-;11923:3;11944:67;12008:2;12003:3;11944:67;:::i;:::-;11937:74;;12020:93;12109:3;12020:93;:::i;:::-;12138:2;12133:3;12129:12;12122:19;;11781:366;;;:::o;12153:::-;12295:3;12316:67;12380:2;12375:3;12316:67;:::i;:::-;12309:74;;12392:93;12481:3;12392:93;:::i;:::-;12510:2;12505:3;12501:12;12494:19;;12153:366;;;:::o;12525:::-;12667:3;12688:67;12752:2;12747:3;12688:67;:::i;:::-;12681:74;;12764:93;12853:3;12764:93;:::i;:::-;12882:2;12877:3;12873:12;12866:19;;12525:366;;;:::o;12897:118::-;12984:24;13002:5;12984:24;:::i;:::-;12979:3;12972:37;12897:118;;:::o;13021:222::-;13114:4;13152:2;13141:9;13137:18;13129:26;;13165:71;13233:1;13222:9;13218:17;13209:6;13165:71;:::i;:::-;13021:222;;;;:::o;13249:254::-;13358:4;13396:2;13385:9;13381:18;13373:26;;13409:87;13493:1;13482:9;13478:17;13469:6;13409:87;:::i;:::-;13249:254;;;;:::o;13509:442::-;13658:4;13696:2;13685:9;13681:18;13673:26;;13709:71;13777:1;13766:9;13762:17;13753:6;13709:71;:::i;:::-;13790:72;13858:2;13847:9;13843:18;13834:6;13790:72;:::i;:::-;13872;13940:2;13929:9;13925:18;13916:6;13872:72;:::i;:::-;13509:442;;;;;;:::o;13957:332::-;14078:4;14116:2;14105:9;14101:18;14093:26;;14129:71;14197:1;14186:9;14182:17;14173:6;14129:71;:::i;:::-;14210:72;14278:2;14267:9;14263:18;14254:6;14210:72;:::i;:::-;13957:332;;;;;:::o;14295:210::-;14382:4;14420:2;14409:9;14405:18;14397:26;;14433:65;14495:1;14484:9;14480:17;14471:6;14433:65;:::i;:::-;14295:210;;;;:::o;14511:419::-;14677:4;14715:2;14704:9;14700:18;14692:26;;14764:9;14758:4;14754:20;14750:1;14739:9;14735:17;14728:47;14792:131;14918:4;14792:131;:::i;:::-;14784:139;;14511:419;;;:::o;14936:::-;15102:4;15140:2;15129:9;15125:18;15117:26;;15189:9;15183:4;15179:20;15175:1;15164:9;15160:17;15153:47;15217:131;15343:4;15217:131;:::i;:::-;15209:139;;14936:419;;;:::o;15361:::-;15527:4;15565:2;15554:9;15550:18;15542:26;;15614:9;15608:4;15604:20;15600:1;15589:9;15585:17;15578:47;15642:131;15768:4;15642:131;:::i;:::-;15634:139;;15361:419;;;:::o;15786:::-;15952:4;15990:2;15979:9;15975:18;15967:26;;16039:9;16033:4;16029:20;16025:1;16014:9;16010:17;16003:47;16067:131;16193:4;16067:131;:::i;:::-;16059:139;;15786:419;;;:::o;16211:::-;16377:4;16415:2;16404:9;16400:18;16392:26;;16464:9;16458:4;16454:20;16450:1;16439:9;16435:17;16428:47;16492:131;16618:4;16492:131;:::i;:::-;16484:139;;16211:419;;;:::o;16636:::-;16802:4;16840:2;16829:9;16825:18;16817:26;;16889:9;16883:4;16879:20;16875:1;16864:9;16860:17;16853:47;16917:131;17043:4;16917:131;:::i;:::-;16909:139;;16636:419;;;:::o;17061:::-;17227:4;17265:2;17254:9;17250:18;17242:26;;17314:9;17308:4;17304:20;17300:1;17289:9;17285:17;17278:47;17342:131;17468:4;17342:131;:::i;:::-;17334:139;;17061:419;;;:::o;17486:::-;17652:4;17690:2;17679:9;17675:18;17667:26;;17739:9;17733:4;17729:20;17725:1;17714:9;17710:17;17703:47;17767:131;17893:4;17767:131;:::i;:::-;17759:139;;17486:419;;;:::o;17911:::-;18077:4;18115:2;18104:9;18100:18;18092:26;;18164:9;18158:4;18154:20;18150:1;18139:9;18135:17;18128:47;18192:131;18318:4;18192:131;:::i;:::-;18184:139;;17911:419;;;:::o;18336:::-;18502:4;18540:2;18529:9;18525:18;18517:26;;18589:9;18583:4;18579:20;18575:1;18564:9;18560:17;18553:47;18617:131;18743:4;18617:131;:::i;:::-;18609:139;;18336:419;;;:::o;18761:222::-;18854:4;18892:2;18881:9;18877:18;18869:26;;18905:71;18973:1;18962:9;18958:17;18949:6;18905:71;:::i;:::-;18761:222;;;;:::o;18989:129::-;19023:6;19050:20;;:::i;:::-;19040:30;;19079:33;19107:4;19099:6;19079:33;:::i;:::-;18989:129;;;:::o;19124:75::-;19157:6;19190:2;19184:9;19174:19;;19124:75;:::o;19205:311::-;19282:4;19372:18;19364:6;19361:30;19358:56;;;19394:18;;:::i;:::-;19358:56;19444:4;19436:6;19432:17;19424:25;;19504:4;19498;19494:15;19486:23;;19205:311;;;:::o;19522:319::-;19607:4;19697:18;19689:6;19686:30;19683:56;;;19719:18;;:::i;:::-;19683:56;19769:4;19761:6;19757:17;19749:25;;19829:4;19823;19819:15;19811:23;;19522:319;;;:::o;19847:311::-;19924:4;20014:18;20006:6;20003:30;20000:56;;;20036:18;;:::i;:::-;20000:56;20086:4;20078:6;20074:17;20066:25;;20146:4;20140;20136:15;20128:23;;19847:311;;;:::o;20164:169::-;20248:11;20282:6;20277:3;20270:19;20322:4;20317:3;20313:14;20298:29;;20164:169;;;;:::o;20339:305::-;20379:3;20398:20;20416:1;20398:20;:::i;:::-;20393:25;;20432:20;20450:1;20432:20;:::i;:::-;20427:25;;20586:1;20518:66;20514:74;20511:1;20508:81;20505:107;;;20592:18;;:::i;:::-;20505:107;20636:1;20633;20629:9;20622:16;;20339:305;;;;:::o;20650:185::-;20690:1;20707:20;20725:1;20707:20;:::i;:::-;20702:25;;20741:20;20759:1;20741:20;:::i;:::-;20736:25;;20780:1;20770:35;;20785:18;;:::i;:::-;20770:35;20827:1;20824;20820:9;20815:14;;20650:185;;;;:::o;20841:848::-;20902:5;20909:4;20933:6;20924:15;;20957:5;20948:14;;20971:712;20992:1;20982:8;20979:15;20971:712;;;21087:4;21082:3;21078:14;21072:4;21069:24;21066:50;;;21096:18;;:::i;:::-;21066:50;21146:1;21136:8;21132:16;21129:451;;;21561:4;21554:5;21550:16;21541:25;;21129:451;21611:4;21605;21601:15;21593:23;;21641:32;21664:8;21641:32;:::i;:::-;21629:44;;20971:712;;;20841:848;;;;;;;:::o;21695:285::-;21755:5;21779:23;21797:4;21779:23;:::i;:::-;21771:31;;21823:27;21841:8;21823:27;:::i;:::-;21811:39;;21869:104;21906:66;21896:8;21890:4;21869:104;:::i;:::-;21860:113;;21695:285;;;;:::o;21986:1073::-;22040:5;22231:8;22221:40;;22252:1;22243:10;;22254:5;;22221:40;22280:4;22270:36;;22297:1;22288:10;;22299:5;;22270:36;22366:4;22414:1;22409:27;;;;22450:1;22445:191;;;;22359:277;;22409:27;22427:1;22418:10;;22429:5;;;22445:191;22490:3;22480:8;22477:17;22474:43;;;22497:18;;:::i;:::-;22474:43;22546:8;22543:1;22539:16;22530:25;;22581:3;22574:5;22571:14;22568:40;;;22588:18;;:::i;:::-;22568:40;22621:5;;;22359:277;;22745:2;22735:8;22732:16;22726:3;22720:4;22717:13;22713:36;22695:2;22685:8;22682:16;22677:2;22671:4;22668:12;22664:35;22648:111;22645:246;;;22801:8;22795:4;22791:19;22782:28;;22836:3;22829:5;22826:14;22823:40;;;22843:18;;:::i;:::-;22823:40;22876:5;;22645:246;22916:42;22954:3;22944:8;22938:4;22935:1;22916:42;:::i;:::-;22901:57;;;;22990:4;22985:3;22981:14;22974:5;22971:25;22968:51;;;22999:18;;:::i;:::-;22968:51;23048:4;23041:5;23037:16;23028:25;;21986:1073;;;;;;:::o;23065:348::-;23105:7;23128:20;23146:1;23128:20;:::i;:::-;23123:25;;23162:20;23180:1;23162:20;:::i;:::-;23157:25;;23350:1;23282:66;23278:74;23275:1;23272:81;23267:1;23260:9;23253:17;23249:105;23246:131;;;23357:18;;:::i;:::-;23246:131;23405:1;23402;23398:9;23387:20;;23065:348;;;;:::o;23419:96::-;23456:7;23485:24;23503:5;23485:24;:::i;:::-;23474:35;;23419:96;;;:::o;23521:104::-;23566:7;23595:24;23613:5;23595:24;:::i;:::-;23584:35;;23521:104;;;:::o;23631:90::-;23665:7;23708:5;23701:13;23694:21;23683:32;;23631:90;;;:::o;23727:126::-;23764:7;23804:42;23797:5;23793:54;23782:65;;23727:126;;;:::o;23859:77::-;23896:7;23925:5;23914:16;;23859:77;;;:::o;23942:281::-;24025:27;24047:4;24025:27;:::i;:::-;24017:6;24013:40;24155:6;24143:10;24140:22;24119:18;24107:10;24104:34;24101:62;24098:88;;;24166:18;;:::i;:::-;24098:88;24206:10;24202:2;24195:22;23985:238;23942:281;;:::o;24229:233::-;24268:3;24291:24;24309:5;24291:24;:::i;:::-;24282:33;;24337:66;24330:5;24327:77;24324:103;;;24407:18;;:::i;:::-;24324:103;24454:1;24447:5;24443:13;24436:20;;24229:233;;;:::o;24468:180::-;24516:77;24513:1;24506:88;24613:4;24610:1;24603:15;24637:4;24634:1;24627:15;24654:180;24702:77;24699:1;24692:88;24799:4;24796:1;24789:15;24823:4;24820:1;24813:15;24840:180;24888:77;24885:1;24878:88;24985:4;24982:1;24975:15;25009:4;25006:1;24999:15;25026:180;25074:77;25071:1;25064:88;25171:4;25168:1;25161:15;25195:4;25192:1;25185:15;25212:180;25260:77;25257:1;25250:88;25357:4;25354:1;25347:15;25381:4;25378:1;25371:15;25398:117;25507:1;25504;25497:12;25521:117;25630:1;25627;25620:12;25644:117;25753:1;25750;25743:12;25767:117;25876:1;25873;25866:12;25890:102;25931:6;25982:2;25978:7;25973:2;25966:5;25962:14;25958:28;25948:38;;25890:102;;;:::o;25998:::-;26040:8;26087:5;26084:1;26080:13;26059:34;;25998:102;;;:::o;26106:166::-;26246:18;26242:1;26234:6;26230:14;26223:42;26106:166;:::o;26278:227::-;26418:34;26414:1;26406:6;26402:14;26395:58;26487:10;26482:2;26474:6;26470:15;26463:35;26278:227;:::o;26511:225::-;26651:34;26647:1;26639:6;26635:14;26628:58;26720:8;26715:2;26707:6;26703:15;26696:33;26511:225;:::o;26742:177::-;26882:29;26878:1;26870:6;26866:14;26859:53;26742:177;:::o;26925:173::-;27065:25;27061:1;27053:6;27049:14;27042:49;26925:173;:::o;27104:182::-;27244:34;27240:1;27232:6;27228:14;27221:58;27104:182;:::o;27292:176::-;27432:28;27428:1;27420:6;27416:14;27409:52;27292:176;:::o;27474:220::-;27614:34;27610:1;27602:6;27598:14;27591:58;27683:3;27678:2;27670:6;27666:15;27659:28;27474:220;:::o;27700:179::-;27840:31;27836:1;27828:6;27824:14;27817:55;27700:179;:::o;27885:169::-;28025:21;28021:1;28013:6;28009:14;28002:45;27885:169;:::o;28060:122::-;28133:24;28151:5;28133:24;:::i;:::-;28126:5;28123:35;28113:63;;28172:1;28169;28162:12;28113:63;28060:122;:::o;28188:138::-;28269:32;28295:5;28269:32;:::i;:::-;28262:5;28259:43;28249:71;;28316:1;28313;28306:12;28249:71;28188:138;:::o;28332:116::-;28402:21;28417:5;28402:21;:::i;:::-;28395:5;28392:32;28382:60;;28438:1;28435;28428:12;28382:60;28332:116;:::o;28454:122::-;28527:24;28545:5;28527:24;:::i;:::-;28520:5;28517:35;28507:63;;28566:1;28563;28556:12;28507:63;28454:122;:::o

Swarm Source

ipfs://faa018c0156b5bffe9c68c7bd6cacf66e497a51561ae4b35bae3a7ba194c439d

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  ]
[ 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.