Contract Overview
Balance: 90.000000000000000027 Ether
Transactions: 574 txns
 Latest 25 transactions from a total of 574 transactions

TxHash Age From To Value [TxFee]
0x112ec3df164d8dc6b6c0de73f460d470416cd561b9fff9497e47b9dff659e9ae39 days 10 hrs ago0x59ff920f52eea96b0d9835671abca1f9a80c9fb9  IN  0x35aee25c474069c2e41e0d91b3b59060fec72afc0.0766037084 Ether0.000030321
0xd9a99673aa8e7fee5a74d0de222e51d43556ee3394039ca0f95e4b587e0495be59 days 23 hrs ago0x546d8d9ee1aeb42326096fcb0741ef66cc8d77b3  IN  0x35aee25c474069c2e41e0d91b3b59060fec72afc0.07624988999 Ether0.000074899
0x5c36854e5651f608967cab858c0b7de02ac82e80c31be64efb182b3a16b7a72a60 days 1 hr ago0x59ff920f52eea96b0d9835671abca1f9a80c9fb9  IN  0x35aee25c474069c2e41e0d91b3b59060fec72afc0.0766037084 Ether0.000071234
0x27df2d5b9198d8d8827d34a10c02ac9e2f7077ae16fc0d8a8054e0d46e991d7560 days 21 hrs ago0x546d8d9ee1aeb42326096fcb0741ef66cc8d77b3  IN  0x35aee25c474069c2e41e0d91b3b59060fec72afc0.08987490564 Ether0.000071234
0xccf007c912347f514ab9931acabc6c0ae7d965eff86307ec3cae09c0ac7ed50361 days 4 hrs ago0x174c025b7de59869efe67a0cd80fbd919339a6ae  IN  0x35aee25c474069c2e41e0d91b3b59060fec72afc0.0916450553 Ether0.000071234
0x9befaefc59385a71b2e84692912a53939231463392c979b931830b7af89ecd2362 days 57 mins ago0x9d34152d6eb41b17623c4e007675abe7f8978443  IN  0x35aee25c474069c2e41e0d91b3b59060fec72afc0.08710714902 Ether0.000061634
0x5431c39cd029221133b81c2977d330e6295ed7842e328d8b61a197f3e976fa5962 days 1 hr ago0x9d34152d6eb41b17623c4e007675abe7f8978443  IN  0x35aee25c474069c2e41e0d91b3b59060fec72afc0.08710714902 Ether0.000061634
0x438bab09b34008218905a62a574fcd4bd03042689cd41075812b55dc9b32d4fa62 days 1 hr ago0x9d34152d6eb41b17623c4e007675abe7f8978443  IN  0x35aee25c474069c2e41e0d91b3b59060fec72afc0.08710714902 Ether0.000061634
0xb0a2f27d273428f2067ed05e3eb42a303de93f802ed33e825d436eb2664fc13362 days 1 hr ago0x9d34152d6eb41b17623c4e007675abe7f8978443  IN  0x35aee25c474069c2e41e0d91b3b59060fec72afc0.08710714902 Ether0.000061634
0x4be07c781aec927bb8523e947f0fcd54b8441c17342664b04a47425928eb352362 days 1 hr ago0x9d34152d6eb41b17623c4e007675abe7f8978443  IN  0x35aee25c474069c2e41e0d91b3b59060fec72afc0.08710714902 Ether0.000076634
0x966ff63aa5f89dd6ffc96865dcd2796a65e3ec11c0d67712ff903a8737b65d3962 days 1 hr ago0xee29242c4218ba498e53b5453bcb59170db3154c  IN  0x35aee25c474069c2e41e0d91b3b59060fec72afc0.08710714902 Ether0.000061634
0x14bb96a877b47c680ad9d7607e0d7936d461fffe49de4b92309bb3348c60704062 days 1 hr ago0xee29242c4218ba498e53b5453bcb59170db3154c  IN  0x35aee25c474069c2e41e0d91b3b59060fec72afc0.08710714902 Ether0.000061634
0x09a2ada4ec6c583a53aee22c1121123afd23732804a0db8463a0ab70d381772062 days 1 hr ago0xee29242c4218ba498e53b5453bcb59170db3154c  IN  0x35aee25c474069c2e41e0d91b3b59060fec72afc0.08710714902 Ether0.000061634
0x6b85fd7eaf801486d60e1863e0e70446b0722ce186234f8a00e40c56c836baf262 days 1 hr ago0xee29242c4218ba498e53b5453bcb59170db3154c  IN  0x35aee25c474069c2e41e0d91b3b59060fec72afc0.08710714902 Ether0.000061634
0x8010e5032d5a12ce5ada8ee34afe967118f4ead507a31a847db9751a388b35ed62 days 1 hr ago0xee29242c4218ba498e53b5453bcb59170db3154c  IN  0x35aee25c474069c2e41e0d91b3b59060fec72afc0.08710714902 Ether0.000061634
0x09d37409c179bde5810c7930bf93836b1e7934ad7ab4044cd484babbdcb2820962 days 1 hr ago0xee29242c4218ba498e53b5453bcb59170db3154c  IN  0x35aee25c474069c2e41e0d91b3b59060fec72afc0.08710714902 Ether0.000061634
0x0c12c49935744ad6f6ee2712ade50ae58e9938e46d880d57e42024ff253529d162 days 1 hr ago0xee29242c4218ba498e53b5453bcb59170db3154c  IN  0x35aee25c474069c2e41e0d91b3b59060fec72afc0.08710714902 Ether0.000061634
0xe97c40a63bd24a2e58aea89ab6c0d7dde25e7819554a0d330e50844ada08e26862 days 1 hr ago0xee29242c4218ba498e53b5453bcb59170db3154c  IN  0x35aee25c474069c2e41e0d91b3b59060fec72afc0.08710714902 Ether0.000061634
0xd791c50a327ede1c99caba9db57217d135de8b5905d1811a11ae61c3efbe57cf62 days 1 hr ago0xee29242c4218ba498e53b5453bcb59170db3154c  IN  0x35aee25c474069c2e41e0d91b3b59060fec72afc0.08710714902 Ether0.000061634
0x0be119f4865924e23a8a5a73ab875ccf64975902dab8d038b407d5120b37107262 days 1 hr ago0xee29242c4218ba498e53b5453bcb59170db3154c  IN  0x35aee25c474069c2e41e0d91b3b59060fec72afc0.08710714902 Ether0.000061634
0xa3963454f041fd62f4e4de0ee6f1f134d3d499d9c625c940f157022aba2dc1ee62 days 1 hr ago0xee29242c4218ba498e53b5453bcb59170db3154c  IN  0x35aee25c474069c2e41e0d91b3b59060fec72afc0.08710714902 Ether0.000061634
0xc8e18f0ee44c0b2d424639ced71604999ea704a0d5c899efbf527b99bf2230b362 days 1 hr ago0xee29242c4218ba498e53b5453bcb59170db3154c  IN  0x35aee25c474069c2e41e0d91b3b59060fec72afc0.08710714902 Ether0.000061634
0xac856a36ed4d881b3e4696a0b06edb059f2c25a9444a89a6059bd99bc105c73162 days 1 hr ago0xee29242c4218ba498e53b5453bcb59170db3154c  IN  0x35aee25c474069c2e41e0d91b3b59060fec72afc0.08710714902 Ether0.000061634
0x7ea0c6b3b00dfe9fd42c5b1355f93e8eb31cfb8dbaddcbe08bd9c9a5796fc33962 days 1 hr ago0xee29242c4218ba498e53b5453bcb59170db3154c  IN  0x35aee25c474069c2e41e0d91b3b59060fec72afc0.08710714902 Ether0.000065299
0xa3318a36d48ee09d1848479e4a232c33e87d072f6c1131b9bac9f9b5a513fc3762 days 1 hr ago0x174c025b7de59869efe67a0cd80fbd919339a6ae  IN  0x35aee25c474069c2e41e0d91b3b59060fec72afc0.08710714902 Ether0.000076634
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 25 Internal Txns, Click here To View More View All
ParentTxHash Block Age From To Value
0x112ec3df164d8dc6b6c0de73f460d470416cd561b9fff9497e47b9dff659e9ae481641539 days 10 hrs ago0x35aee25c474069c2e41e0d91b3b59060fec72afc0x2cde56e5c8235d6360ccbb0c57ce248ca9c809090 Ether
0xd9a99673aa8e7fee5a74d0de222e51d43556ee3394039ca0f95e4b587e0495be468250859 days 23 hrs ago0x35aee25c474069c2e41e0d91b3b59060fec72afc0x35e068889e3fa8e8fa066c7ddc251e5c4c22e96a0 Ether
0xd9a99673aa8e7fee5a74d0de222e51d43556ee3394039ca0f95e4b587e0495be468250859 days 23 hrs ago0x35aee25c474069c2e41e0d91b3b59060fec72afc0x35e068889e3fa8e8fa066c7ddc251e5c4c22e96a0 Ether
0xd9a99673aa8e7fee5a74d0de222e51d43556ee3394039ca0f95e4b587e0495be468250859 days 23 hrs ago0x35aee25c474069c2e41e0d91b3b59060fec72afc0x35e068889e3fa8e8fa066c7ddc251e5c4c22e96a0 Ether
0xd9a99673aa8e7fee5a74d0de222e51d43556ee3394039ca0f95e4b587e0495be468250859 days 23 hrs ago0x35aee25c474069c2e41e0d91b3b59060fec72afc0x35e068889e3fa8e8fa066c7ddc251e5c4c22e96a0 Ether
0xd9a99673aa8e7fee5a74d0de222e51d43556ee3394039ca0f95e4b587e0495be468250859 days 23 hrs ago0x35aee25c474069c2e41e0d91b3b59060fec72afc0x7b9b8fe76f9041a9dddab1ad800c31f70716e1560.07624988999 Ether
0xd9a99673aa8e7fee5a74d0de222e51d43556ee3394039ca0f95e4b587e0495be468250859 days 23 hrs ago0x35aee25c474069c2e41e0d91b3b59060fec72afc0x2cde56e5c8235d6360ccbb0c57ce248ca9c809090 Ether
0x5c36854e5651f608967cab858c0b7de02ac82e80c31be64efb182b3a16b7a72a468194860 days 1 hr ago0x35aee25c474069c2e41e0d91b3b59060fec72afc0x35e068889e3fa8e8fa066c7ddc251e5c4c22e96a0 Ether
0x5c36854e5651f608967cab858c0b7de02ac82e80c31be64efb182b3a16b7a72a468194860 days 1 hr ago0x35aee25c474069c2e41e0d91b3b59060fec72afc0x35e068889e3fa8e8fa066c7ddc251e5c4c22e96a0 Ether
0x5c36854e5651f608967cab858c0b7de02ac82e80c31be64efb182b3a16b7a72a468194860 days 1 hr ago0x35aee25c474069c2e41e0d91b3b59060fec72afc0x35e068889e3fa8e8fa066c7ddc251e5c4c22e96a0 Ether
0x5c36854e5651f608967cab858c0b7de02ac82e80c31be64efb182b3a16b7a72a468194860 days 1 hr ago0x35aee25c474069c2e41e0d91b3b59060fec72afc0x7b9b8fe76f9041a9dddab1ad800c31f70716e1560.0766037084 Ether
0x5c36854e5651f608967cab858c0b7de02ac82e80c31be64efb182b3a16b7a72a468194860 days 1 hr ago0x35aee25c474069c2e41e0d91b3b59060fec72afc0x2cde56e5c8235d6360ccbb0c57ce248ca9c809090 Ether
0x27df2d5b9198d8d8827d34a10c02ac9e2f7077ae16fc0d8a8054e0d46e991d75467748460 days 21 hrs ago0x35aee25c474069c2e41e0d91b3b59060fec72afc0x35e068889e3fa8e8fa066c7ddc251e5c4c22e96a0 Ether
0x27df2d5b9198d8d8827d34a10c02ac9e2f7077ae16fc0d8a8054e0d46e991d75467748460 days 21 hrs ago0x35aee25c474069c2e41e0d91b3b59060fec72afc0x35e068889e3fa8e8fa066c7ddc251e5c4c22e96a0 Ether
0x27df2d5b9198d8d8827d34a10c02ac9e2f7077ae16fc0d8a8054e0d46e991d75467748460 days 21 hrs ago0x35aee25c474069c2e41e0d91b3b59060fec72afc0x35e068889e3fa8e8fa066c7ddc251e5c4c22e96a0 Ether
0x27df2d5b9198d8d8827d34a10c02ac9e2f7077ae16fc0d8a8054e0d46e991d75467748460 days 21 hrs ago0x35aee25c474069c2e41e0d91b3b59060fec72afc0x7b9b8fe76f9041a9dddab1ad800c31f70716e1560.08987490564 Ether
0x27df2d5b9198d8d8827d34a10c02ac9e2f7077ae16fc0d8a8054e0d46e991d75467748460 days 21 hrs ago0x35aee25c474069c2e41e0d91b3b59060fec72afc0x2cde56e5c8235d6360ccbb0c57ce248ca9c809090 Ether
0xccf007c912347f514ab9931acabc6c0ae7d965eff86307ec3cae09c0ac7ed503467569661 days 4 hrs ago0x35aee25c474069c2e41e0d91b3b59060fec72afc0x35e068889e3fa8e8fa066c7ddc251e5c4c22e96a0 Ether
0xccf007c912347f514ab9931acabc6c0ae7d965eff86307ec3cae09c0ac7ed503467569661 days 4 hrs ago0x35aee25c474069c2e41e0d91b3b59060fec72afc0x35e068889e3fa8e8fa066c7ddc251e5c4c22e96a0 Ether
0xccf007c912347f514ab9931acabc6c0ae7d965eff86307ec3cae09c0ac7ed503467569661 days 4 hrs ago0x35aee25c474069c2e41e0d91b3b59060fec72afc0x35e068889e3fa8e8fa066c7ddc251e5c4c22e96a0 Ether
0xccf007c912347f514ab9931acabc6c0ae7d965eff86307ec3cae09c0ac7ed503467569661 days 4 hrs ago0x35aee25c474069c2e41e0d91b3b59060fec72afc0x7b9b8fe76f9041a9dddab1ad800c31f70716e1560.0916450553 Ether
0xccf007c912347f514ab9931acabc6c0ae7d965eff86307ec3cae09c0ac7ed503467569661 days 4 hrs ago0x35aee25c474069c2e41e0d91b3b59060fec72afc0x2cde56e5c8235d6360ccbb0c57ce248ca9c809090 Ether
0x9befaefc59385a71b2e84692912a53939231463392c979b931830b7af89ecd23466886762 days 57 mins ago0x35aee25c474069c2e41e0d91b3b59060fec72afc0x35e068889e3fa8e8fa066c7ddc251e5c4c22e96a0 Ether
0x9befaefc59385a71b2e84692912a53939231463392c979b931830b7af89ecd23466886762 days 57 mins ago0x35aee25c474069c2e41e0d91b3b59060fec72afc0x35e068889e3fa8e8fa066c7ddc251e5c4c22e96a0 Ether
0x9befaefc59385a71b2e84692912a53939231463392c979b931830b7af89ecd23466886762 days 57 mins ago0x35aee25c474069c2e41e0d91b3b59060fec72afc0x35e068889e3fa8e8fa066c7ddc251e5c4c22e96a0 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: Lottery
Compiler Version: v0.4.24+commit.e67f0147
Optimization Enabled: No
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.24;


contract Lottery  {
    
    using SafeMath for *;
    Random random;
    struct Consumer {
        uint id_user;
        address _address;
        address _addressContract;
        uint _amount;
        string _numberDial;
        uint  _feeDialNumbe;
        string  number_DialNumberWon;
    }
    FiatContract private price;
    mapping (address => uint256)  mapAddressDial;//luu dia chi va lan quay
    address  addressOwner; // dia chi nguoi tao hop dong
    address public addressContract; // dia chi hop dong
    address public addressReceive = 0x7B9b8fe76F9041A9dddAb1AD800C31F70716E156; // dia chi nhan tien
    uint public percentWiner = 80;// phan tram  nguoi nhan
    uint256 public feeDialNumber = 100000000000000000;//or 0.1 ether
    string public number_DialNumberWon = "888";// so chien thang
    uint public tx_fee_paid_by_the_game = 1;// Ai tra phi ( 1 : owner tra)
    uint256 public gasLimit = 100000;
    
    uint256 public isMainNet = 0;//1: Mainnet ,0: TestNet(Ropsten)
    uint256 public feeUsd = 1;//fee quay USD
    uint public probability = 1000;// xac suat quay
    uint256 public totalMoneyPaid ;// tong tien phai tra
  
    // Affiliate
    mapping (address => address[])  mapAddressInvite;//luu dia chi va array dia chi invite
    uint public percentInvite = 2;// phan tram nguoi moi nhan dc 2%
    uint public percentIntivedPeople = 3;// phan tram nguoi duoc moi nhan 3%
    uint public tx_fee_paid_by_the_game_invite =0;// Ai tra phi ( 1 : owner tra , 0 user tra)
    /**
     * @dev Test
     */
    // string public TEST_NUMBER_RANDOM_WIN ="888";
    // uint256 public TEST_PRICE_USE_TO_ETH ;
    // uint256 public TEST_PRICE_FEE_DIAL ;
    
 
    // function ADMIN_SET_TEST_RANDOM(string testNumber) public payable
    // onlyOwner
    // returns(string)
    // {
    //     TEST_NUMBER_RANDOM_WIN = testNumber;
    //     return TEST_NUMBER_RANDOM_WIN;
    // }
    // function ADMIN_GET_USD(uint  _feeUsd) public payable
    // onlyOwner
    // returns(uint256)
    // {
    //     TEST_PRICE_USE_TO_ETH = price.USD(0) * 100 * _feeUsd;
    //     return TEST_PRICE_USE_TO_ETH;
    // }
    // function ADMIN_GET_FEE() public payable
    // onlyOwner
    // returns(uint256)
    // {
    //     TEST_PRICE_FEE_DIAL = (msg.value * probability * percentWiner)  /100;
    //     return  TEST_PRICE_FEE_DIAL;
    // }
 
    constructor() public payable{
        addressOwner = msg.sender;
        random = new Random();
        addressContract = address(this);
        //use FiatContract get price usd -> eth every 1 hour 
        if( isMainNet == 1){
            price = FiatContract(0x8055d0504666e2B6942BeB8D6014c964658Ca591); // MAINNET ADDRESS
        }else{
          price = FiatContract(0x2CDe56E5c8235D6360CCbb0c57Ce248Ca9C80909); // TESTNET ADDRESS (ROPSTEN)
        }
    }

    /**
    * @dev Event 
    */
    event LogDeposit(address sender, uint amount);
    event LogTransfer(address sender, address to, uint amount);
    event LogTransferToWiner(
        address sender, 
        address _addressContract, 
        uint amount, 
        string _numberDial, 
        uint256  _feeDialNumbe,
        string _number_DialNumberWon,
        uint _amountReceive,
        uint id_user
    );
    event LogTransferLose(
        address sender, 
        address _addressContract, 
        uint amount, 
        string _numberDial, 
        uint256  _feeDialNumbe,
        string  _number_DialNumberWon,
        uint id_user
    );
    event LogAdminChangeRequest(
        address _addressContract,
        uint256 balance_address_contract, 
        address _address_receive,
        uint256 _gas_limit,
        uint  _percent_winer,
        string  _number_dial_NumberWon,
        uint  _tx_fee_paid_by_the_game,
        uint256  _feeDialNumber,
        uint _feeUsd,
        uint  _isMainNet,
        uint  _tx_fee_paid_by_the_game_invite,
        uint  _percent_invite,
        uint  _percent_invited_people
      
    );
    /**
    * @dev Validate 
    */
    
    modifier onlyValidAddress(address _to){
        require(_to != address(0x00),"Address invalid !");
        _;
    }
    modifier onlyOwner(){
        require(msg.sender == addressOwner ,"UnAthentication !");
        _;
    }
    modifier checkIdUser(uint _number){
        require(_number > 0 ,"Id User  must is Number and > 0 !");
        _;
    }
    modifier checkBalanceContractSendUser(){
        totalMoneyPaid =  (msg.value * probability * percentWiner) /100;
        require( totalMoneyPaid <= address(this).balance ,"Balance address contract not enough money!");
        _;
    }
    modifier checkGasLimit(uint256 _gasLimit){
        require(_gasLimit >= 21000 && _gasLimit <= 100000 ,"Gas Limit must be >= 21000 and <= 100000  ");
        _;
    }
    modifier checkLegthNumber(uint _number){
        require(_number < 10 ,"Number length must be < 10 !");
        _;
    }
    modifier onlyValidValue(uint _amount){
        require(msg.value >= _amount ,"Value  not enough money  !");
        _;
    }
    modifier checkFeeDialNumber(){
        feeDialNumber = getEthfromUSD();
        if ( tx_fee_paid_by_the_game == 1){//fee paid owner
            uint256 txCostEstimate =  msg.value + ( tx.gasprice * gasLimit);
            require(feeDialNumber <= txCostEstimate,"Value not enough money!");
              _;
        }else{
            require(msg.value >= feeDialNumber ,"Value  not enough money  !");
              _;
        }
    }
    modifier checkTxFeePaidTheGame(uint _tx_fee_paid_by_the_game){
        require(_tx_fee_paid_by_the_game == 0 || _tx_fee_paid_by_the_game == 1 ,"Tx Fee Paid Game must is 1 or 0 !");
        _;
    }
    modifier checkEnviromentNet(uint _enviroment){
        require(_enviroment == 0 || _enviroment == 1 ,"Enviroment must is 1 or 0 !");
        _;
    }
    modifier onlyPercentInvite(uint percentInvite,uint percentInvitedPeople ){
        require(percentInvite >= 0 && percentInvite <= 100,"Percent Invite  >= 0 <=100  !");
        require(percentInvitedPeople >= 0 && percentInvitedPeople <= 100,"Percent Invited People  >= 0 <=100  !");
        require( (percentInvite + percentInvitedPeople  ) == 100 ,"Total percent = 100 "  );
        _;
    }
    
    modifier onlyPercent(uint _percentWiner ){
        require(_percentWiner >= 0 && _percentWiner <= 100,"Percent Winer >= 0 <=100  !");
        _;
    }
    
    function adminGetFeeDial() public constant 
    returns(
        uint256 _feeETH,
        address _address_contract,
        uint256 balance_address_contract, 
        address _address_receive,
        uint256 _gas_limit,
        uint  _percent_winer,
        string  _number_dial_NumberWon,
        uint  _tx_fee_paid_by_the_game,
        uint256  _feeDialNumber,
        uint _feeUsd,
        uint  _isMainNet,
        uint  _tx_fee_paid_by_the_game_invite,
        uint  _percent_invite,
        uint  _percent_invited_people
      ){
        uint256 ethCent = price.USD(0);
        return (
            ethCent * 100 * feeUsd,
            address(this),
            address(this).balance,
            addressReceive,
            gasLimit,
            percentWiner,
            number_DialNumberWon,
            tx_fee_paid_by_the_game,
            feeDialNumber,feeUsd,isMainNet,
            tx_fee_paid_by_the_game_invite,
            percentInvite,percentIntivedPeople
        );
    }
    //GET balance 
    function getBalance(address _addr) public constant returns(uint256){
        return address(_addr).balance;
    }

    /**
    * @dev Send ETH
    */
    // returns $10 USD to ETH wei.  
    function getEthfromUSD() private constant 
    returns (uint256) {
        uint256 ethCent = price.USD(0);// returns $0.01 ETH wei , 0 : gía trị mặc định 
        // $0.01 * 100 * feeUsd 
        return ethCent * 100 * feeUsd;
    }
    // send ETH from sender to add another ETH
    function sendEther(address _addr) private  {
         address(_addr).transfer(msg.value);
    }
    // send ETH from address contract to add another ETH
    function sendEtherFromAddContract(address _addr)private {
         address(_addr).transfer(address(this).balance);
    }
    // withdraw to msg.sender.
    function withdraw(uint256 _amount) private {
        msg.sender.transfer(_amount);
    }
 	function getStringZero(uint lengthNumberRandom, uint length) private constant 
 	checkLegthNumber(lengthNumberRandom)
 	checkLegthNumber(length)
 	returns(string){
			 string memory zeros = "";
			 uint index = lengthNumberRandom ;//2
			 if( length < 10){
    		     while ( index < length) {
    			 zeros = random.append(zeros,"0");
    			 index ++;	
    		     }
			 }
		return zeros;
	}
    //Check Number and return
    function formatNumber(uint24 number,uint lengthWonStr) private constant
    returns(string){
          string memory numberDialStr = random.uint2str(number) ;
          uint  lengthNumber = bytes(numberDialStr).length;
          return random.append( getStringZero(lengthNumber,lengthWonStr), numberDialStr);
    }
    function playGame(uint _idUser) public payable 
    onlyValidAddress(msg.sender)
    checkFeeDialNumber()
    checkBalanceContractSendUser()// check balance address du tien tra thuong ko
    {
        //Chuyen tien phi Sender choi cho address Contract,address contract chuyen cho -> dia chi nhan tien
        sendEther(addressReceive);
        emit LogTransfer(addressReceive,address(this),msg.value);
        // get Length number won
        // string memory numberWonStr = random.uint2str(number_DialNumberWon) ;
        uint  lengthWonStr = bytes(number_DialNumberWon).length;
        string memory numberRandomStr = formatNumber (random.getRandom(lengthWonStr),lengthWonStr) ;  // check Number ( vd : truong hop 9 -> 009 )
        // uint numberRandom = random.stringToUint(numberRandomStr) ;// chuoi thanh so
        //luu thong tin quay
        // Consumer memory comsumer = Consumer(_idUser,msg.sender,address(this),msg.value,numberRandomStr,feeDialNumber,number_DialNumberWon);
        //update so lan quay theo dia chi
        mapAddressDial[msg.sender] +=1;
        if( keccak256(abi.encodePacked(numberRandomStr) ) == keccak256(abi.encodePacked(number_DialNumberWon)) ){
            //tinh % so tien nhan va chuyen cho ng choi,tu thien,bao duong
            uint256 amountReceive  = totalMoneyPaid;
            if(percentWiner > 0 ){
                msg.sender.transfer(amountReceive);
                emit LogTransferToWiner(msg.sender,address(this),msg.value, numberRandomStr,feeDialNumber,number_DialNumberWon,amountReceive,_idUser);
            }
        }else{
              emit LogTransferLose(msg.sender,address(this),msg.value, numberRandomStr,feeDialNumber,number_DialNumberWon,_idUser);
            
        }
    }

    /**
    * @dev Admin
    */
    // Set Number Dial
    function adminSetRandomInput(string number ) public  
    onlyOwner
    returns(string)
    {
        //update Xac suat
        probability = (10).pwr( bytes(number).length);
        number_DialNumberWon = number;
        // update lại giá USD -> ETH
         feeDialNumber = getEthfromUSD();
        emit LogAdminChangeRequest(address(this),address(this).balance,addressReceive,gasLimit,percentWiner,number_DialNumberWon,tx_fee_paid_by_the_game,
        feeDialNumber,feeUsd,isMainNet,tx_fee_paid_by_the_game_invite,percentInvite,percentIntivedPeople);
        return number_DialNumberWon ;
    }
    // Set Fee USD Dial Number
    function adminSetFeeUsdDialNumber(uint usd ) public  
    onlyOwner
    returns(bool)
    {
        feeUsd = usd;
         // update lại giá USD -> ETH
         feeDialNumber = getEthfromUSD();
        emit LogAdminChangeRequest(address(this),address(this).balance,addressReceive,gasLimit,percentWiner,number_DialNumberWon,tx_fee_paid_by_the_game,
        feeDialNumber,feeUsd,isMainNet,tx_fee_paid_by_the_game_invite,percentInvite,percentIntivedPeople);
        return true ;
    }
    // Set Fee Dial Number
    // function adminSetFeeDialNumber(uint256 fee_dial_number ) public  
    // onlyOwner
    // returns(bool)
    // {
    //     feeDialNumber = fee_dial_number;
    //     emit LogAdminChangeRequest(address(this),address(this).balance,addressReceive,gasLimit,percentWiner,number_DialNumberWon,tx_fee_paid_by_the_game,
    //     feeDialNumber,feeUsd,isMainNet,tx_fee_paid_by_the_game_invite,percentInvite,percentIntivedPeople);
    //     return true ;
    // }
    // Set address
    function adminSetAddress(address Receive ) public  
    onlyOwner
    onlyValidAddress(Receive)
    returns(bool)
    {
        addressReceive = Receive;
        feeDialNumber = getEthfromUSD();
        emit LogAdminChangeRequest(address(this),address(this).balance,addressReceive,gasLimit,percentWiner,number_DialNumberWon,tx_fee_paid_by_the_game,
        feeDialNumber,feeUsd,isMainNet,tx_fee_paid_by_the_game_invite,percentInvite,percentIntivedPeople);
        return true ;
    }
    // Set percent
    function adminSetPercent(uint256 pcWiner ) public  
    onlyOwner
    onlyPercent(pcWiner)
    returns(bool)
    {
        percentWiner = pcWiner;
        feeDialNumber = getEthfromUSD();
        emit LogAdminChangeRequest(address(this),address(this).balance,addressReceive,gasLimit,percentWiner,number_DialNumberWon,tx_fee_paid_by_the_game,
        feeDialNumber,feeUsd,isMainNet,tx_fee_paid_by_the_game_invite,percentInvite,percentIntivedPeople);
        return true ;
    }
    // Set percent Invite
    function adminSetPercentInvite(uint256 pcInvite,uint256 pcInvitedPeople  ) public  
    onlyOwner
    onlyPercentInvite(pcInvite,pcInvitedPeople)
    returns(bool)
    {
        percentInvite = pcInvite;
        feeDialNumber = getEthfromUSD();
        percentIntivedPeople = pcInvitedPeople;
        emit LogAdminChangeRequest(address(this),address(this).balance,addressReceive,gasLimit,percentWiner,number_DialNumberWon,tx_fee_paid_by_the_game,
        feeDialNumber,feeUsd,isMainNet,tx_fee_paid_by_the_game_invite,percentInvite,percentIntivedPeople);
        return true ;
    }
    // get dia chi va so lan quay
    function adminGetAmountAddressDial(address _address ) public   
    onlyOwner
    onlyValidAddress(_address)
    view
    returns(uint256)
    {
        return mapAddressDial[_address] ;
    }
    // admin sent ETH to address Contract
    function adminSendEthtoAddContract() public payable 
    onlyValidAddress(msg.sender)
    onlyOwner
    onlyValidValue(0)
    returns(bool)
    {
        feeDialNumber = getEthfromUSD();
        emit LogAdminChangeRequest(address(this),address(this).balance,addressReceive,gasLimit,percentWiner,number_DialNumberWon,tx_fee_paid_by_the_game,
        feeDialNumber,feeUsd,isMainNet,tx_fee_paid_by_the_game_invite,percentInvite,percentIntivedPeople);
        return true ;
    }
    // admin set gasLimit
    function adminSetGasLimit(uint256 _gasLimit) public payable
    onlyOwner
    checkGasLimit(_gasLimit)
    returns(uint256)
    {
        gasLimit = _gasLimit;
        feeDialNumber = getEthfromUSD();
        emit LogAdminChangeRequest(address(this),address(this).balance,addressReceive,gasLimit,percentWiner,number_DialNumberWon,tx_fee_paid_by_the_game,
        feeDialNumber,feeUsd,isMainNet,tx_fee_paid_by_the_game_invite,percentInvite,percentIntivedPeople);
        return gasLimit;
    }
    // admin set txCose Fee
    function adminSetTxFeePaidGame(uint _tx_fee_paid_by_the_game) public payable
    onlyOwner
    checkTxFeePaidTheGame(_tx_fee_paid_by_the_game)
    returns(uint)
    {
        tx_fee_paid_by_the_game = _tx_fee_paid_by_the_game;
        feeDialNumber = getEthfromUSD();
        emit LogAdminChangeRequest(address(this),address(this).balance,addressReceive,gasLimit,percentWiner,number_DialNumberWon,tx_fee_paid_by_the_game,
        feeDialNumber,feeUsd,isMainNet,tx_fee_paid_by_the_game_invite,percentInvite,percentIntivedPeople);
        return tx_fee_paid_by_the_game;
    }
    
    //admin set Enviroment 
    function adminSetEnviroment(uint net) public payable
    onlyOwner
    checkEnviromentNet(net)
    returns(uint)
    {
        isMainNet = net;
        feeDialNumber = getEthfromUSD();
        emit LogAdminChangeRequest(address(this),address(this).balance,addressReceive,gasLimit,percentWiner,number_DialNumberWon,tx_fee_paid_by_the_game,
        feeDialNumber,feeUsd,isMainNet,tx_fee_paid_by_the_game_invite,percentInvite,percentIntivedPeople);
        return isMainNet;
    }
    // admin set txCose Fee Invite
    function adminSetTxFeeInviteGame(uint _tx_fee_invite) public payable
    onlyOwner
    checkTxFeePaidTheGame(_tx_fee_invite)
    returns(uint)
    {
        feeDialNumber = getEthfromUSD();
        tx_fee_paid_by_the_game_invite = _tx_fee_invite;
        return tx_fee_paid_by_the_game_invite;
    }
}


contract Random {
    using SafeMath for *;
    constructor() public  payable{}
    string public timestamp;
    event LogRandomNumber(address sender, uint24 numberRandom);
     /**
     * @dev generates a random number between 0-999
     */
    function getRandom(uint lengthNumberWon)
        public 
        constant 
        returns(uint24)
    {
        uint256 seed = uint256(keccak256(abi.encodePacked(
                (block.timestamp).add
                (block.difficulty).add
                ((uint256(keccak256(abi.encodePacked(block.coinbase)))) / (now)).add
                (block.gaslimit).add
                ((uint256(keccak256(abi.encodePacked(msg.sender)))) / (now)).add
                (block.number)

        )));
        uint pwrNumber = (10).pwr(lengthNumberWon);
        uint24 numberRandom = uint24( seed - ((seed / pwrNumber) * pwrNumber ) );
        return numberRandom ;
    }
    /**
    * @dev Convert unit to String
    */
    function uint2str(uint i) public pure returns (string){
        if (i == 0) return "0";
        uint j = i;
        uint length;
        while (j != 0){
            length++;
            j /= 10;
        }
        bytes memory bstr = new bytes(length);
        uint k = length - 1;
        while (i != 0){
            bstr[k--] = byte(48 + i % 10);
            i /= 10;
        }
        return string(bstr);
    }
    /**
    * @dev Concat string to string
    */
    function append(string a, string b) public  pure returns (string) {
        return string(abi.encodePacked(a, b));

    }
     /**
    * @dev Convert  string to uint
    */
    function stringToUint(string s) public pure returns (uint256 result) {
        bytes memory b = bytes(s);
        uint256 i;
        result = 0;
        for (i = 0; i < b.length; i++) {
            uint c = uint(b[i]);
            if (c >= 48 && c <= 57) {
                result = result * 10 + (c - 48);
            }
        }
    }
}

contract FiatContract {
  function USD(uint _id) constant returns (uint256);
}
library SafeMath {
    /**
    * @dev Adds two numbers, throws on overflow.
    */
    function add(uint256 a, uint256 b)
        internal
        pure
        returns (uint256 c) 
    {
        c = a + b;
        require(c >= a, "SafeMath add failed");
        return c;
    }
      /**
    * @dev Multiplies two numbers, throws on overflow.
    */
    function mul(uint256 a, uint256 b) 
        internal 
        pure 
        returns (uint256 c) 
    {
        if (a == 0) {
            return 0;
        }
        c = a * b;
        require(c / a == b, "SafeMath mul failed");
        return c;
    }
    /**
    * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
    */
    function sub(uint256 a, uint256 b)
        internal
        pure
        returns (uint256) 
    {
        require(b <= a, "SafeMath sub failed");
        return a - b;
    }
    /**
     * @dev x to the power of y 
     */
    function pwr(uint256 x, uint256 y)
        internal 
        pure 
        returns (uint256)
    {
        if (x==0)
            return (0);
        else if (y==0)
            return (1);
        else 
        {
            uint256 z = x;
            for (uint256 i=1; i < y; i++)
                z = mul(z,x);
            return (z);
        }
    }
}

    Contract ABI  
[{"constant":false,"inputs":[{"name":"usd","type":"uint256"}],"name":"adminSetFeeUsdDialNumber","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tx_fee_paid_by_the_game","type":"uint256"}],"name":"adminSetTxFeePaidGame","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"net","type":"uint256"}],"name":"adminSetEnviroment","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"percentWiner","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"percentIntivedPeople","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"probability","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"adminGetFeeDial","outputs":[{"name":"_feeETH","type":"uint256"},{"name":"_address_contract","type":"address"},{"name":"balance_address_contract","type":"uint256"},{"name":"_address_receive","type":"address"},{"name":"_gas_limit","type":"uint256"},{"name":"_percent_winer","type":"uint256"},{"name":"_number_dial_NumberWon","type":"string"},{"name":"_tx_fee_paid_by_the_game","type":"uint256"},{"name":"_feeDialNumber","type":"uint256"},{"name":"_feeUsd","type":"uint256"},{"name":"_isMainNet","type":"uint256"},{"name":"_tx_fee_paid_by_the_game_invite","type":"uint256"},{"name":"_percent_invite","type":"uint256"},{"name":"_percent_invited_people","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_idUser","type":"uint256"}],"name":"playGame","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"totalMoneyPaid","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"feeDialNumber","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tx_fee_paid_by_the_game","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_gasLimit","type":"uint256"}],"name":"adminSetGasLimit","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"adminGetAmountAddressDial","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"number","type":"string"}],"name":"adminSetRandomInput","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"addressContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"pcInvite","type":"uint256"},{"name":"pcInvitedPeople","type":"uint256"}],"name":"adminSetPercentInvite","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isMainNet","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"number_DialNumberWon","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"percentInvite","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"Receive","type":"address"}],"name":"adminSetAddress","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"feeUsd","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tx_fee_invite","type":"uint256"}],"name":"adminSetTxFeeInviteGame","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"pcWiner","type":"uint256"}],"name":"adminSetPercent","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"adminSendEthtoAddContract","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"gasLimit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tx_fee_paid_by_the_game_invite","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"getBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"addressReceive","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":true,"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"sender","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"LogDeposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"sender","type":"address"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"LogTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"sender","type":"address"},{"indexed":false,"name":"_addressContract","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"_numberDial","type":"string"},{"indexed":false,"name":"_feeDialNumbe","type":"uint256"},{"indexed":false,"name":"_number_DialNumberWon","type":"string"},{"indexed":false,"name":"_amountReceive","type":"uint256"},{"indexed":false,"name":"id_user","type":"uint256"}],"name":"LogTransferToWiner","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"sender","type":"address"},{"indexed":false,"name":"_addressContract","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"_numberDial","type":"string"},{"indexed":false,"name":"_feeDialNumbe","type":"uint256"},{"indexed":false,"name":"_number_DialNumberWon","type":"string"},{"indexed":false,"name":"id_user","type":"uint256"}],"name":"LogTransferLose","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_addressContract","type":"address"},{"indexed":false,"name":"balance_address_contract","type":"uint256"},{"indexed":false,"name":"_address_receive","type":"address"},{"indexed":false,"name":"_gas_limit","type":"uint256"},{"indexed":false,"name":"_percent_winer","type":"uint256"},{"indexed":false,"name":"_number_dial_NumberWon","type":"string"},{"indexed":false,"name":"_tx_fee_paid_by_the_game","type":"uint256"},{"indexed":false,"name":"_feeDialNumber","type":"uint256"},{"indexed":false,"name":"_feeUsd","type":"uint256"},{"indexed":false,"name":"_isMainNet","type":"uint256"},{"indexed":false,"name":"_tx_fee_paid_by_the_game_invite","type":"uint256"},{"indexed":false,"name":"_percent_invite","type":"uint256"},{"indexed":false,"name":"_percent_invited_people","type":"uint256"}],"name":"LogAdminChangeRequest","type":"event"}]

  Contract Creation Code Switch To Opcodes View
6080604052737b9b8fe76f9041a9dddab1ad800c31f70716e156600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550605060065567016345785d8a00006007556040805190810160405280600381526020017f383838000000000000000000000000000000000000000000000000000000000081525060089080519060200190620000b79291906200028f565b506001600955620186a0600a556000600b556001600c556103e8600d5560026010556003601155600060125533600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200012e62000316565b604051809103906000f0801580156200014b573d6000803e3d6000fd5b506000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555030600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b5414156200023357738055d0504666e2b6942beb8d6014c964658ca591600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000289565b732cde56e5c8235d6360ccbb0c57ce248ca9c80909600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6200034f565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002d257805160ff191683800117855562000303565b8280016001018555821562000303579182015b8281111562000302578251825591602001919060010190620002e5565b5b50905062000312919062000327565b5090565b604051610ba48062004e0183390190565b6200034c91905b80821115620003485760008160009055506001016200032e565b5090565b90565b614aa2806200035f6000396000f30060806040526004361061016a576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806314c3512d1461016f578063190c23c4146101b45780631dd85687146101e857806324f1c0611461021c5780633ecb9ba414610247578063481456f9146102725780634c28a0431461029d5780635873533d146103e05780635c1f8ca2146104005780635e5790f11461042b578063655031d2146104565780636aad1a6b1461048157806374c4fd8c146104b55780638152c7ed1461050c5780638609b2fc146105ee57806389666fd6146106455780638c51c5cd146106945780638ca5569d146106bf57806397ee2a281461074f578063b8d85d231461077a578063bee742de146107d5578063c89547f914610800578063d90d870b14610834578063dfe1dcf614610879578063f68016b71461089b578063f68342c2146108c6578063f8b2cb4f146108f1578063fed3623614610948575b600080fd5b34801561017b57600080fd5b5061019a6004803603810190808035906020019092919050505061099f565b604051808215151515815260200191505060405180910390f35b6101d260048036038101908080359060200190929190505050610c41565b6040518082815260200191505060405180910390f35b61020660048036038101908080359060200190929190505050610f8f565b6040518082815260200191505060405180910390f35b34801561022857600080fd5b506102316112b7565b6040518082815260200191505060405180910390f35b34801561025357600080fd5b5061025c6112bd565b6040518082815260200191505060405180910390f35b34801561027e57600080fd5b506102876112c3565b6040518082815260200191505060405180910390f35b3480156102a957600080fd5b506102b26112c9565b604051808f81526020018e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018d81526020018c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a81526020018060200189815260200188815260200187815260200186815260200185815260200184815260200183815260200182810382528a818151815260200191508051906020019080838360005b8381101561039857808201518184015260208101905061037d565b50505050905090810190601f1680156103c55780820380516001836020036101000a031916815260200191505b509f5050505050505050505050505050505060405180910390f35b6103fe600480360381019080803590602001909291905050506114d9565b005b34801561040c57600080fd5b50610415612777565b6040518082815260200191505060405180910390f35b34801561043757600080fd5b5061044061277d565b6040518082815260200191505060405180910390f35b34801561046257600080fd5b5061046b612783565b6040518082815260200191505060405180910390f35b61049f60048036038101908080359060200190929190505050612789565b6040518082815260200191505060405180910390f35b3480156104c157600080fd5b506104f6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612add565b6040518082815260200191505060405180910390f35b34801561051857600080fd5b50610573600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050612c92565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105b3578082015181840152602081019050610598565b50505050905090810190601f1680156105e05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105fa57600080fd5b50610603612ff8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561065157600080fd5b5061067a600480360381019080803590602001909291908035906020019092919050505061301e565b604051808215151515815260200191505060405180910390f35b3480156106a057600080fd5b506106a9613478565b6040518082815260200191505060405180910390f35b3480156106cb57600080fd5b506106d461347e565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107145780820151818401526020810190506106f9565b50505050905090810190601f1680156107415780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561075b57600080fd5b5061076461351c565b6040518082815260200191505060405180910390f35b34801561078657600080fd5b506107bb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613522565b604051808215151515815260200191505060405180910390f35b3480156107e157600080fd5b506107ea6138a5565b6040518082815260200191505060405180910390f35b61081e600480360381019080803590602001909291905050506138ab565b6040518082815260200191505060405180910390f35b34801561084057600080fd5b5061085f60048036038101908080359060200190929190505050613a3c565b604051808215151515815260200191505060405180910390f35b610881613d66565b604051808215151515815260200191505060405180910390f35b3480156108a757600080fd5b506108b0614121565b6040518082815260200191505060405180910390f35b3480156108d257600080fd5b506108db614127565b6040518082815260200191505060405180910390f35b3480156108fd57600080fd5b50610932600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061412d565b6040518082815260200191505060405180910390f35b34801561095457600080fd5b5061095d61414e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a66576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f556e417468656e7469636174696f6e202100000000000000000000000000000081525060200191505060405180910390fd5b81600c81905550610a75614174565b6007819055507f8fd6f7e099fae4eba248209cd5c9515f20230f4398d71376399b8ee136e9f193303073ffffffffffffffffffffffffffffffffffffffff1631600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a546006546008600954600754600c54600b54601254601054601154604051808e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018d81526020018c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a81526020018060200189815260200188815260200187815260200186815260200185815260200184815260200183815260200182810382528a818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015610c1e5780601f10610bf357610100808354040283529160200191610c1e565b820191906000526020600020905b815481529060010190602001808311610c0157829003601f168201915b50509e50505050505050505050505050505060405180910390a160019050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f556e417468656e7469636174696f6e202100000000000000000000000000000081525060200191505060405180910390fd5b816000811480610d185750600181145b1515610db2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f54782046656520506169642047616d65206d7573742069732031206f7220302081526020017f210000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b82600981905550610dc1614174565b6007819055507f8fd6f7e099fae4eba248209cd5c9515f20230f4398d71376399b8ee136e9f193303073ffffffffffffffffffffffffffffffffffffffff1631600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a546006546008600954600754600c54600b54601254601054601154604051808e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018d81526020018c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a81526020018060200189815260200188815260200187815260200186815260200185815260200184815260200183815260200182810382528a818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015610f6a5780601f10610f3f57610100808354040283529160200191610f6a565b820191906000526020600020905b815481529060010190602001808311610f4d57829003601f168201915b50509e50505050505050505050505050505060405180910390a1600954915050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611056576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f556e417468656e7469636174696f6e202100000000000000000000000000000081525060200191505060405180910390fd5b8160008114806110665750600181145b15156110da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f456e7669726f6d656e74206d7573742069732031206f7220302021000000000081525060200191505060405180910390fd5b82600b819055506110e9614174565b6007819055507f8fd6f7e099fae4eba248209cd5c9515f20230f4398d71376399b8ee136e9f193303073ffffffffffffffffffffffffffffffffffffffff1631600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a546006546008600954600754600c54600b54601254601054601154604051808e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018d81526020018c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a81526020018060200189815260200188815260200187815260200186815260200185815260200184815260200183815260200182810382528a8181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156112925780601f1061126757610100808354040283529160200191611292565b820191906000526020600020905b81548152906001019060200180831161127557829003601f168201915b50509e50505050505050505050505050505060405180910390a1600b54915050919050565b60065481565b60115481565b600d5481565b6000806000806000806060600080600080600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630c560c6460006040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561137257600080fd5b505af1158015611386573d6000803e3d6000fd5b505050506040513d602081101561139c57600080fd5b81019080805190602001909291905050509050600c546064820202303073ffffffffffffffffffffffffffffffffffffffff1631600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a546006546008600954600754600c54600b54601254601054601154878054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114a55780601f1061147a576101008083540402835291602001916114a5565b820191906000526020600020905b81548152906001019060200180831161148857829003601f168201915b505050505097509e509e509e509e509e509e509e509e509e509e509e509e509e509e5050909192939495969798999a9b9c9d565b60006060600033600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611585576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4164647265737320696e76616c6964202100000000000000000000000000000081525060200191505060405180910390fd5b600061158f614174565b60078190555060016009541415611e8e57600a543a02340190508060075411151515611623576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f56616c7565206e6f7420656e6f756768206d6f6e65792100000000000000000081525060200191505060405180910390fd5b6064600654600d5434020281151561163757fe5b04600e819055503073ffffffffffffffffffffffffffffffffffffffff1631600e54111515156116f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f42616c616e6365206164647265737320636f6e7472616374206e6f7420656e6f81526020017f756768206d6f6e6579210000000000000000000000000000000000000000000081525060400191505060405180910390fd5b611720600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16614254565b7f0a85107a334eae0d22d21cdf13af0f8e8125039ec60baaa843d2c4c5b0680174600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff163034604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1600880546001816001161561010002031660029004905094506118ce6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd4b6914876040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561188d57600080fd5b505af11580156118a1573d6000803e3d6000fd5b505050506040513d60208110156118b757600080fd5b81019080805190602001909291905050508661429e565b93506001600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506008604051602001808280546001816001161561010002031660029004801561197e5780601f1061195c57610100808354040283529182019161197e565b820191906000526020600020905b81548152906001019060200180831161196a575b50509150506040516020818303038152906040526040518082805190602001908083835b6020831015156119c757805182526020820191506020810190506020830392506119a2565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916846040516020018082805190602001908083835b602083101515611a315780518252602082019150602081019050602083039250611a0c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083101515611a9a5780518252602082019150602081019050602083039250611a75565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600019161415611cdf57600e54925060006006541115611cda573373ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015611b27573d6000803e3d6000fd5b507f7e8a25a5ca9a58d702708f809e4e9723ea4e5dceebad0fd7569eb67307821a08333034876007546008898d604051808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018781526020018060200186815260200180602001858152602001848152602001838103835288818151815260200191508051906020019080838360005b83811015611c14578082015181840152602081019050611bf9565b50505050905090810190601f168015611c415780820380516001836020036101000a031916815260200191505b50838103825286818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015611cc35780601f10611c9857610100808354040283529160200191611cc3565b820191906000526020600020905b815481529060010190602001808311611ca657829003601f168201915b50509a505050505050505050505060405180910390a15b611e89565b7f9f20bb448a728f77c25e1890bbd1c74af6b577d077b6827eb0668d12ac799b823330348760075460088c604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018060200185815260200180602001848152602001838103835287818151815260200191508051906020019080838360005b83811015611dc4578082015181840152602081019050611da9565b50505050905090810190601f168015611df15780820380516001836020036101000a031916815260200191505b50838103825285818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015611e735780601f10611e4857610100808354040283529160200191611e73565b820191906000526020600020905b815481529060010190602001808311611e5657829003601f168201915b5050995050505050505050505060405180910390a15b61276f565b6007543410151515611f08576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f56616c756520206e6f7420656e6f756768206d6f6e657920202100000000000081525060200191505060405180910390fd5b6064600654600d54340202811515611f1c57fe5b04600e819055503073ffffffffffffffffffffffffffffffffffffffff1631600e5411151515611fda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f42616c616e6365206164647265737320636f6e7472616374206e6f7420656e6f81526020017f756768206d6f6e6579210000000000000000000000000000000000000000000081525060400191505060405180910390fd5b612005600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16614254565b7f0a85107a334eae0d22d21cdf13af0f8e8125039ec60baaa843d2c4c5b0680174600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff163034604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1600880546001816001161561010002031660029004905094506121b36000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd4b6914876040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561217257600080fd5b505af1158015612186573d6000803e3d6000fd5b505050506040513d602081101561219c57600080fd5b81019080805190602001909291905050508661429e565b93506001600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600860405160200180828054600181600116156101000203166002900480156122635780601f10612241576101008083540402835291820191612263565b820191906000526020600020905b81548152906001019060200180831161224f575b50509150506040516020818303038152906040526040518082805190602001908083835b6020831015156122ac5780518252602082019150602081019050602083039250612287565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916846040516020018082805190602001908083835b60208310151561231657805182526020820191506020810190506020830392506122f1565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b60208310151561237f578051825260208201915060208101905060208303925061235a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191614156125c457600e549250600060065411156125bf573373ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015801561240c573d6000803e3d6000fd5b507f7e8a25a5ca9a58d702708f809e4e9723ea4e5dceebad0fd7569eb67307821a08333034876007546008898d604051808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018781526020018060200186815260200180602001858152602001848152602001838103835288818151815260200191508051906020019080838360005b838110156124f95780820151818401526020810190506124de565b50505050905090810190601f1680156125265780820380516001836020036101000a031916815260200191505b508381038252868181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156125a85780601f1061257d576101008083540402835291602001916125a8565b820191906000526020600020905b81548152906001019060200180831161258b57829003601f168201915b50509a505050505050505050505060405180910390a15b61276e565b7f9f20bb448a728f77c25e1890bbd1c74af6b577d077b6827eb0668d12ac799b823330348760075460088c604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018060200185815260200180602001848152602001838103835287818151815260200191508051906020019080838360005b838110156126a957808201518184015260208101905061268e565b50505050905090810190601f1680156126d65780820380516001836020036101000a031916815260200191505b508381038252858181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156127585780601f1061272d57610100808354040283529160200191612758565b820191906000526020600020905b81548152906001019060200180831161273b57829003601f168201915b5050995050505050505050505060405180910390a15b5b505050505050565b600e5481565b60075481565b60095481565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612850576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f556e417468656e7469636174696f6e202100000000000000000000000000000081525060200191505060405180910390fd5b8161520881101580156128665750620186a08111155b1515612900576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f476173204c696d6974206d757374206265203e3d20323130303020616e64203c81526020017f3d2031303030303020200000000000000000000000000000000000000000000081525060400191505060405180910390fd5b82600a8190555061290f614174565b6007819055507f8fd6f7e099fae4eba248209cd5c9515f20230f4398d71376399b8ee136e9f193303073ffffffffffffffffffffffffffffffffffffffff1631600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a546006546008600954600754600c54600b54601254601054601154604051808e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018d81526020018c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a81526020018060200189815260200188815260200187815260200186815260200185815260200184815260200183815260200182810382528a818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015612ab85780601f10612a8d57610100808354040283529160200191612ab8565b820191906000526020600020905b815481529060010190602001808311612a9b57829003601f168201915b50509e50505050505050505050505050505060405180910390a1600a54915050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612ba4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f556e417468656e7469636174696f6e202100000000000000000000000000000081525060200191505060405180910390fd5b81600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612c4a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4164647265737320696e76616c6964202100000000000000000000000000000081525060200191505060405180910390fd5b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054915050919050565b6060600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612d59576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f556e417468656e7469636174696f6e202100000000000000000000000000000081525060200191505060405180910390fd5b612d6e8251600a6145d590919063ffffffff16565b600d819055508160089080519060200190612d8a9291906149d1565b50612d93614174565b6007819055507f8fd6f7e099fae4eba248209cd5c9515f20230f4398d71376399b8ee136e9f193303073ffffffffffffffffffffffffffffffffffffffff1631600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a546006546008600954600754600c54600b54601254601054601154604051808e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018d81526020018c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a81526020018060200189815260200188815260200187815260200186815260200185815260200184815260200183815260200182810382528a818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015612f3c5780601f10612f1157610100808354040283529160200191612f3c565b820191906000526020600020905b815481529060010190602001808311612f1f57829003601f168201915b50509e50505050505050505050505050505060405180910390a160088054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612fec5780601f10612fc157610100808354040283529160200191612fec565b820191906000526020600020905b815481529060010190602001808311612fcf57829003601f168201915b50505050509050919050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156130e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f556e417468656e7469636174696f6e202100000000000000000000000000000081525060200191505060405180910390fd5b8282600082101580156130f9575060648211155b151561316d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f50657263656e7420496e7669746520203e3d2030203c3d31303020202100000081525060200191505060405180910390fd5b6000811015801561317f575060648111155b1515613219576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f50657263656e7420496e76697465642050656f706c6520203e3d2030203c3d3181526020017f303020202100000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6064818301141515613293576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f546f74616c2070657263656e74203d203130302000000000000000000000000081525060200191505060405180910390fd5b846010819055506132a2614174565b600781905550836011819055507f8fd6f7e099fae4eba248209cd5c9515f20230f4398d71376399b8ee136e9f193303073ffffffffffffffffffffffffffffffffffffffff1631600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a546006546008600954600754600c54600b54601254601054601154604051808e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018d81526020018c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a81526020018060200189815260200188815260200187815260200186815260200185815260200184815260200183815260200182810382528a8181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156134525780601f1061342757610100808354040283529160200191613452565b820191906000526020600020905b81548152906001019060200180831161343557829003601f168201915b50509e50505050505050505050505050505060405180910390a160019250505092915050565b600b5481565b60088054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156135145780601f106134e957610100808354040283529160200191613514565b820191906000526020600020905b8154815290600101906020018083116134f757829003601f168201915b505050505081565b60105481565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156135e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f556e417468656e7469636174696f6e202100000000000000000000000000000081525060200191505060405180910390fd5b81600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561368f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4164647265737320696e76616c6964202100000000000000000000000000000081525060200191505060405180910390fd5b82600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506136d8614174565b6007819055507f8fd6f7e099fae4eba248209cd5c9515f20230f4398d71376399b8ee136e9f193303073ffffffffffffffffffffffffffffffffffffffff1631600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a546006546008600954600754600c54600b54601254601054601154604051808e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018d81526020018c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a81526020018060200189815260200188815260200187815260200186815260200185815260200184815260200183815260200182810382528a8181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156138815780601f1061385657610100808354040283529160200191613881565b820191906000526020600020905b81548152906001019060200180831161386457829003601f168201915b50509e50505050505050505050505050505060405180910390a16001915050919050565b600c5481565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613972576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f556e417468656e7469636174696f6e202100000000000000000000000000000081525060200191505060405180910390fd5b8160008114806139825750600181145b1515613a1c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f54782046656520506169642047616d65206d7573742069732031206f7220302081526020017f210000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b613a24614174565b60078190555082601281905550601254915050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613b03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f556e417468656e7469636174696f6e202100000000000000000000000000000081525060200191505060405180910390fd5b8160008110158015613b16575060648111155b1515613b8a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f50657263656e742057696e6572203e3d2030203c3d313030202021000000000081525060200191505060405180910390fd5b82600681905550613b99614174565b6007819055507f8fd6f7e099fae4eba248209cd5c9515f20230f4398d71376399b8ee136e9f193303073ffffffffffffffffffffffffffffffffffffffff1631600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a546006546008600954600754600c54600b54601254601054601154604051808e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018d81526020018c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a81526020018060200189815260200188815260200187815260200186815260200185815260200184815260200183815260200182810382528a818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015613d425780601f10613d1757610100808354040283529160200191613d42565b820191906000526020600020905b815481529060010190602001808311613d2557829003601f168201915b50509e50505050505050505050505050505060405180910390a16001915050919050565b600033600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515613e0e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4164647265737320696e76616c6964202100000000000000000000000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613ed3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f556e417468656e7469636174696f6e202100000000000000000000000000000081525060200191505060405180910390fd5b6000803410151515613f4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f56616c756520206e6f7420656e6f756768206d6f6e657920202100000000000081525060200191505060405180910390fd5b613f55614174565b6007819055507f8fd6f7e099fae4eba248209cd5c9515f20230f4398d71376399b8ee136e9f193303073ffffffffffffffffffffffffffffffffffffffff1631600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a546006546008600954600754600c54600b54601254601054601154604051808e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018d81526020018c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a81526020018060200189815260200188815260200187815260200186815260200185815260200184815260200183815260200182810382528a8181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156140fe5780601f106140d3576101008083540402835291602001916140fe565b820191906000526020600020905b8154815290600101906020018083116140e157829003601f168201915b50509e50505050505050505050505050505060405180910390a160019250505090565b600a5481565b60125481565b60008173ffffffffffffffffffffffffffffffffffffffff16319050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630c560c6460006040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561420957600080fd5b505af115801561421d573d6000803e3d6000fd5b505050506040513d602081101561423357600080fd5b81019080805190602001909291905050509050600c54606482020291505090565b8073ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015801561429a573d6000803e3d6000fd5b5050565b60608060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f76f950e866040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808262ffffff168152602001915050600060405180830381600087803b15801561433857600080fd5b505af115801561434c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561437657600080fd5b81019080805164010000000081111561438e57600080fd5b828101905060208101848111156143a457600080fd5b81518560018202830111640100000000821117156143c157600080fd5b50509291905050509150815190506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663591c515f6144168387614632565b846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808060200180602001838103835285818151815260200191508051906020019080838360005b8381101561448657808201518184015260208101905061446b565b50505050905090810190601f1680156144b35780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b838110156144ec5780820151818401526020810190506144d1565b50505050905090810190601f1680156145195780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561453a57600080fd5b505af115801561454e573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561457857600080fd5b81019080805164010000000081111561459057600080fd5b828101905060208101848111156145a657600080fd5b81518560018202830111640100000000821117156145c357600080fd5b50509291905050509250505092915050565b6000806000808514156145eb576000925061462a565b60008414156145fd576001925061462a565b849150600190505b8381101561462657614617828661492d565b91508080600101915050614605565b8192505b505092915050565b606080600084600a811015156146b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4e756d626572206c656e677468206d757374206265203c20313020210000000081525060200191505060405180910390fd5b84600a81101515614729576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4e756d626572206c656e677468206d757374206265203c20313020210000000081525060200191505060405180910390fd5b60206040519081016040528060008152509350869250600a861015614920575b8583101561491f576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663591c515f856040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808060200180602001838103835284818151815260200191508051906020019080838360005b838110156147fe5780820151818401526020810190506147e3565b50505050905090810190601f16801561482b5780820380516001836020036101000a031916815260200191505b50838103825260018152602001807f30000000000000000000000000000000000000000000000000000000000000008152506020019350505050600060405180830381600087803b15801561487f57600080fd5b505af1158015614893573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156148bd57600080fd5b8101908080516401000000008111156148d557600080fd5b828101905060208101848111156148eb57600080fd5b815185600182028301116401000000008211171561490857600080fd5b505092919050505093508280600101935050614749565b5b8394505050505092915050565b60008083141561494057600090506149cb565b818302905081838281151561495157fe5b041415156149c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f536166654d617468206d756c206661696c65640000000000000000000000000081525060200191505060405180910390fd5b8090505b92915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10614a1257805160ff1916838001178555614a40565b82800160010185558215614a40579182015b82811115614a3f578251825591602001919060010190614a24565b5b509050614a4d9190614a51565b5090565b614a7391905b80821115614a6f576000816000905550600101614a57565b5090565b905600a165627a7a72305820eb6ceb6ccd6235d3efb6cc06b28c29f617fe83bd6bb234dc8c7945a7ecd0a00200296080604052610b91806100136000396000f30060806040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631bd9515514610072578063591c515f146100ef578063b80777ea14610217578063cd4b6914146102a7578063f76f950e146102f2575b600080fd5b34801561007e57600080fd5b506100d9600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610398565b6040518082815260200191505060405180910390f35b3480156100fb57600080fd5b5061019c600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061046a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101dc5780820151818401526020810190506101c1565b50505050905090810190601f1680156102095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561022357600080fd5b5061022c610536565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561026c578082015181840152602081019050610251565b50505050905090810190601f1680156102995780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102b357600080fd5b506102d2600480360381019080803590602001909291905050506105d4565b604051808262ffffff1662ffffff16815260200191505060405180910390f35b3480156102fe57600080fd5b5061031d60048036038101908080359060200190929190505050610885565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561035d578082015181840152602081019050610342565b50505050905090810190601f16801561038a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000606060008084925060009350600091505b82518210156104625782828151811015156103c257fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f01000000000000000000000000000000000000000000000000000000000000009004905060308110158015610444575060398111155b156104555760308103600a85020193505b81806001019250506103ab565b505050919050565b606082826040516020018083805190602001908083835b6020831015156104a65780518252602082019150602081019050602083039250610481565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b6020831015156104f957805182526020820191506020810190506020830392506104d4565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052905092915050565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105cc5780601f106105a1576101008083540402835291602001916105cc565b820191906000526020600020905b8154815290600101906020018083116105af57829003601f168201915b505050505081565b6000806000806107cb436107bd4233604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515610672578051825260208201915060208101905060208303925061064d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600190048115156106ac57fe5b046107af456107a14241604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b6020831015156107455780518252602082019150602081019050602083039250610720565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206001900481151561077f57fe5b0461079344426109dc90919063ffffffff16565b6109dc90919063ffffffff16565b6109dc90919063ffffffff16565b6109dc90919063ffffffff16565b6109dc90919063ffffffff16565b604051602001808281526020019150506040516020818303038152906040526040518082805190602001908083835b60208310151561081f57805182526020820191506020810190506020830392506107fa565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060019004925061086685600a610a6490919063ffffffff16565b915081828481151561087457fe5b040283039050809350505050919050565b606060008060606000808614156108d3576040805190810160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525094506109d3565b8593505b6000841415156108fd578280600101935050600a848115156108f557fe5b0493506108d7565b826040519080825280601f01601f1916602001820160405280156109305781602001602082028038833980820191505090505b5091506001830390505b6000861415156109cf57600a8681151561095057fe5b066030017f01000000000000000000000000000000000000000000000000000000000000000282828060019003935081518110151561098b57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a868115156109c757fe5b04955061093a565b8194505b50505050919050565b60008183019050828110151515610a5b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f536166654d61746820616464206661696c65640000000000000000000000000081525060200191505060405180910390fd5b80905092915050565b600080600080851415610a7a5760009250610ab9565b6000841415610a8c5760019250610ab9565b849150600190505b83811015610ab557610aa68286610ac1565b91508080600101915050610a94565b8192505b505092915050565b600080831415610ad45760009050610b5f565b8183029050818382811515610ae557fe5b04141515610b5b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f536166654d617468206d756c206661696c65640000000000000000000000000081525060200191505060405180910390fd5b8090505b929150505600a165627a7a723058207b1507d2dea436a30e0a108c874a5bc2f880f77d3e6b1ccb81edcc838b7028f40029

   Swarm Source:
bzzr://7b1507d2dea436a30e0a108c874a5bc2f880f77d3e6b1ccb81edcc838b7028f4

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward