false
false
0

Contract Address Details

0x73E1a1909308047b6169B87804a64317905Ea404

Contract Name
SlotMachine
Creator
0xfc8f33–9a9935 at 0xfaab5b–baacdc
Balance
0 CLO
Tokens
Fetching tokens...
Transactions
9 Transactions
Transfers
0 Transfers
Gas Used
555,325
Last Balance Update
18596943
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
Contract name:
SlotMachine




Optimization enabled
false
Compiler version
v0.8.16+commit.07a7930e




EVM Version
default




Verified at
2024-09-26T15:34:04.985464Z

Contract source code

// SPDX-License-Identifier: GPL

pragma solidity ^0.8.16;

contract SlotMachine {

    uint256 solt; // соль исключит один и тот же результат рандома, если человек несколько раз дернет контракт в одном блоке 
    address public owner = msg.sender; // Владелец контракта
    address public owner2 = 0x000F0438b169F8CEcAF6D73f31a996810ed4E000; // Второй владелец
    mapping(uint256 => uint256) private listCombination; // Последовательный список всех комбинаций
    mapping(uint256 => uint256) private combinationPercent; // Проценты за комбинации
    uint256 index = 1; // последний свободный индекс у listCombination

    event Result(
        //uint indexed attempt,
        uint value // результат вращения барабана
    );

    modifier onlyOwners() {
        require((msg.sender == owner) || (msg.sender == owner2), "Only owners can call this.");
        _;
    }




    function game() public returns (uint256)
    {
        require(msg.sender == tx.origin, "Only EOA"); // другие контракты не могут вызывать данную функцию
        uint256 res = random();
        emit Result(res);

        solt += res;
        return res;
    }








    function RusselRND(uint256 _ind, uint256 _solt) public view returns (uint256[] memory, uint256 [] memory ){ // ДЛЯ РАССЕЛА (УДАЛИТЬ)
        uint256[] memory result = new uint256[](_ind); // массив RND
        uint256[] memory result2= new uint256[](_ind); // массив индексов

        for(uint256 i; i < _ind; i++){
            uint256 rnd;
            rnd = uint256(keccak256(abi.encodePacked(blockhash(block.number - 1), block.timestamp, block.coinbase, _solt)));
            _solt+=_solt;
            rnd = rnd % 1000;

            result[i] = rnd;
            result2[i] = i;
        }

        return (result,result2);
    }




    function searchCombinations(uint256 _rnd) public view returns (uint256) // вернуть процент за лучшую комбинацию
    {
        //uint256 symb1;
        require(_rnd < 1000, "err"); // проверяемое число должно иметь 3 знака или меньше
        uint256 result = getPercentByCombination(_rnd); // комбинация из 3 символов. Как пример (777)
        result = getPercentByCombination(_rnd / 10) > result ? getPercentByCombination(_rnd / 10) : result; // 77x
        result = getPercentByCombination(_rnd % 100) > result ? getPercentByCombination(_rnd % 100) : result; // x77
        result = getPercentByCombination(_rnd / 100) > result ? getPercentByCombination(_rnd / 100) : result; // 7xx
        result = getPercentByCombination((_rnd / 10) % 10) > result ? getPercentByCombination((_rnd / 10) % 10) : result; // x7x
        result = getPercentByCombination(_rnd % 10) > result ? getPercentByCombination(_rnd % 10) : result; // xx7

        //result[0] = _rnd;
        //result[1] = _rnd / 10; // 77x
        //result[2] = _rnd % 100; // x77
        //result[3] = _rnd / 100; // 7xx
        //result[4] = (_rnd / 10) % 10; // x7x
        //result[5] = _rnd % 10; // xx7

        return result;
    }


    function random() private view returns (uint256) // возвращаем число от 0 до 999
    {
        uint256 rnd;
        rnd = uint256(keccak256(abi.encodePacked(blockhash(block.number - 1), block.timestamp, block.coinbase, msg.sender, msg.value, solt)));
        return rnd % 1000;
    }

    function getPercent(uint256 _bid, uint256 _bidMax, uint256 _percentPool) public pure returns (uint256) // возвращает процент выплаты относительно ставки и процента за комбинацию
    {
        // _bid - ставка пользователя
        // _bidMax - максимально допустимая ставка
        // _percentPool - процент от пула за комбинацию
        uint res = _bid * (100 * 1e18) / _bidMax; // процент по ставке
        res = (res * _percentPool) / (100 * 1e18);
        return res;
    }

    function getPercentByCombination(uint256 _combination) public view returns (uint256) // вернуть процент установленный за комбинацию
    {
        return combinationPercent[_combination];
    }

    function getAllCombinationsAndPercents() public view returns (uint256[] memory, uint256 [] memory ){
        uint256[] memory result = new uint256[](index-1); // массив комбинаций
        uint256[] memory result2= new uint256[](index-1); // массив процентов

        for(uint256 i; i < index-1; i++){
            result[i] = listCombination[i+1];
            result2[i] = getPercentByCombination(result[i]);
        }

        return (result,result2); // возвращает массив с комбинациями и массив с процентами по комбинациям
    }

    // ФУНКЦИИ ДЛЯ ВЛАДЕЛЬЦЕВ

    function setPercentByCombination(uint256 _combination, uint256 _percent) public onlyOwners // установить процент за комбинацию
    {
        require(_combination < 1000, "err"); // комбинация это число от 0 до 999 включительно
        if(getPercentByCombination(_combination) > 0){ // процент по данной комбинации был установлен ранее
            if(_percent > 0){ // устанавливаем новый процент
                combinationPercent[_combination] = _percent;
            }
            else{ // удаление текущей комбинации
                combinationPercent[_combination] = 0;
                if(listCombination[index-1] == _combination){ // удаляемая комбинация последняя в списке
                    listCombination[index-1] = 0; // не обязательно, оставлена для читабельности, расход 2000 газа
                }
                else{
                    for(uint i = 1; i < index; i++){
                        if(listCombination[i] == _combination){
                            listCombination[i] = listCombination[index-1];
                            break;
                        }
                    }                    
                }
                index--;
            }
        }
        else{ // Процент по данной комбинации еще не был установлен
            if(_percent > 0){ // устанавливаем новый процент
                combinationPercent[_combination] = _percent;
                listCombination[index] = _combination;
                index++;
            }
        }
    }

/*
    function return_RND() public view returns (uint256)
    {
        return solt;
    }
*/

}
        

Contract ABI

[{"type":"event","name":"Result","inputs":[{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256[]","name":"","internalType":"uint256[]"},{"type":"uint256[]","name":"","internalType":"uint256[]"}],"name":"RusselRND","inputs":[{"type":"uint256","name":"_ind","internalType":"uint256"},{"type":"uint256","name":"_solt","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"game","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256[]","name":"","internalType":"uint256[]"},{"type":"uint256[]","name":"","internalType":"uint256[]"}],"name":"getAllCombinationsAndPercents","inputs":[]},{"type":"function","stateMutability":"pure","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getPercent","inputs":[{"type":"uint256","name":"_bid","internalType":"uint256"},{"type":"uint256","name":"_bidMax","internalType":"uint256"},{"type":"uint256","name":"_percentPool","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getPercentByCombination","inputs":[{"type":"uint256","name":"_combination","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"owner","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"owner2","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"searchCombinations","inputs":[{"type":"uint256","name":"_rnd","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setPercentByCombination","inputs":[{"type":"uint256","name":"_combination","internalType":"uint256"},{"type":"uint256","name":"_percent","internalType":"uint256"}]}]
              

Contract Creation Code

Verify & Publish
0x608060405233600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550720f0438b169f8cecaf6d73f31a996810ed4e000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016005553480156100aa57600080fd5b506112e8806100ba6000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80638da5cb5b116100665780638da5cb5b14610146578063b68f607f14610164578063bd6eff5014610183578063c3fe3e28146101b4578063fa6814c4146101d257610093565b8063252abe1d14610098578063291ab43b146100c857806352709725146100f85780637654be8a14610116575b600080fd5b6100b260048036038101906100ad9190610b44565b6101ee565b6040516100bf9190610b80565b60405180910390f35b6100e260048036038101906100dd9190610b9b565b61037d565b6040516100ef9190610b80565b60405180910390f35b6101006103cf565b60405161010d9190610c2f565b60405180910390f35b610130600480360381019061012b9190610b44565b6103f5565b60405161013d9190610b80565b60405180910390f35b61014e610412565b60405161015b9190610c2f565b60405180910390f35b61016c610438565b60405161017a929190610d08565b60405180910390f35b61019d60048036038101906101989190610d3f565b6105ab565b6040516101ab929190610d08565b60405180910390f35b6101bc610716565b6040516101c99190610b80565b60405180910390f35b6101ec60048036038101906101e79190610d3f565b6107e8565b005b60006103e88210610234576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161022b90610ddc565b60405180910390fd5b600061023f836103f5565b905080610257600a856102529190610e5a565b6103f5565b116102625780610278565b610277600a846102729190610e5a565b6103f5565b5b90508061029060648561028b9190610e8b565b6103f5565b1161029b57806102b1565b6102b06064846102ab9190610e8b565b6103f5565b5b9050806102c96064856102c49190610e5a565b6103f5565b116102d457806102ea565b6102e96064846102e49190610e5a565b6103f5565b5b90508061030d600a80866102fe9190610e5a565b6103089190610e8b565b6103f5565b116103185780610339565b610338600a80856103299190610e5a565b6103339190610e8b565b6103f5565b5b905080610351600a8561034c9190610e8b565b6103f5565b1161035c5780610372565b610371600a8461036c9190610e8b565b6103f5565b5b905080915050919050565b6000808368056bc75e2d63100000866103969190610ebc565b6103a09190610e5a565b905068056bc75e2d6310000083826103b89190610ebc565b6103c29190610e5a565b9050809150509392505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060046000838152602001908152602001600020549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060806000600160055461044c9190610f16565b67ffffffffffffffff81111561046557610464610f4a565b5b6040519080825280602002602001820160405280156104935781602001602082028036833780820191505090505b509050600060016005546104a79190610f16565b67ffffffffffffffff8111156104c0576104bf610f4a565b5b6040519080825280602002602001820160405280156104ee5781602001602082028036833780820191505090505b50905060005b60016005546105039190610f16565b81101561059e576003600060018361051b9190610f79565b81526020019081526020016000205483828151811061053d5761053c610fad565b5b60200260200101818152505061056c83828151811061055f5761055e610fad565b5b60200260200101516103f5565b82828151811061057f5761057e610fad565b5b602002602001018181525050808061059690610fdc565b9150506104f4565b5081819350935050509091565b60608060008467ffffffffffffffff8111156105ca576105c9610f4a565b5b6040519080825280602002602001820160405280156105f85781602001602082028036833780820191505090505b50905060008567ffffffffffffffff81111561061757610616610f4a565b5b6040519080825280602002602001820160405280156106455781602001602082028036833780820191505090505b50905060005b868110156107065760006001436106629190610f16565b4042418960405160200161067994939291906110ca565b6040516020818303038152906040528051906020012060001c905086876106a09190610f79565b96506103e8816106b09190610e8b565b9050808483815181106106c6576106c5610fad565b5b602002602001018181525050818383815181106106e6576106e5610fad565b5b6020026020010181815250505080806106fe90610fdc565b91505061064b565b5081819350935050509250929050565b60003273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077d90611164565b60405180910390fd5b6000610790610aad565b90507fa9bb0fa194e939eadb11be8d62dd4a16e0f5e89f37fb73fa7f0f8446f1abba61816040516107c19190610b80565b60405180910390a1806000808282546107da9190610f79565b925050819055508091505090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806108915750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6108d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c7906111d0565b60405180910390fd5b6103e88210610914576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090b90610ddc565b60405180910390fd5b600061091f836103f5565b1115610a5457600081111561094b57806004600084815260200190815260200160002081905550610a4f565b60006004600084815260200190815260200160002081905550816003600060016005546109789190610f16565b815260200190815260200160002054036109b85760006003600060016005546109a19190610f16565b815260200190815260200160002081905550610a36565b6000600190505b600554811015610a345782600360008381526020019081526020016000205403610a21576003600060016005546109f69190610f16565b8152602001908152602001600020546003600083815260200190815260200160002081905550610a34565b8080610a2c90610fdc565b9150506109bf565b505b60056000815480929190610a49906111f0565b91905055505b610aa9565b6000811115610aa857806004600084815260200190815260200160002081905550816003600060055481526020019081526020016000208190555060056000815480929190610aa290610fdc565b91905055505b5b5050565b600080600143610abd9190610f16565b4042413334600054604051602001610ada96959493929190611242565b6040516020818303038152906040528051906020012060001c90506103e881610b039190610e8b565b91505090565b600080fd5b6000819050919050565b610b2181610b0e565b8114610b2c57600080fd5b50565b600081359050610b3e81610b18565b92915050565b600060208284031215610b5a57610b59610b09565b5b6000610b6884828501610b2f565b91505092915050565b610b7a81610b0e565b82525050565b6000602082019050610b956000830184610b71565b92915050565b600080600060608486031215610bb457610bb3610b09565b5b6000610bc286828701610b2f565b9350506020610bd386828701610b2f565b9250506040610be486828701610b2f565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c1982610bee565b9050919050565b610c2981610c0e565b82525050565b6000602082019050610c446000830184610c20565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b610c7f81610b0e565b82525050565b6000610c918383610c76565b60208301905092915050565b6000602082019050919050565b6000610cb582610c4a565b610cbf8185610c55565b9350610cca83610c66565b8060005b83811015610cfb578151610ce28882610c85565b9750610ced83610c9d565b925050600181019050610cce565b5085935050505092915050565b60006040820190508181036000830152610d228185610caa565b90508181036020830152610d368184610caa565b90509392505050565b60008060408385031215610d5657610d55610b09565b5b6000610d6485828601610b2f565b9250506020610d7585828601610b2f565b9150509250929050565b600082825260208201905092915050565b7f6572720000000000000000000000000000000000000000000000000000000000600082015250565b6000610dc6600383610d7f565b9150610dd182610d90565b602082019050919050565b60006020820190508181036000830152610df581610db9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610e6582610b0e565b9150610e7083610b0e565b925082610e8057610e7f610dfc565b5b828204905092915050565b6000610e9682610b0e565b9150610ea183610b0e565b925082610eb157610eb0610dfc565b5b828206905092915050565b6000610ec782610b0e565b9150610ed283610b0e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610f0b57610f0a610e2b565b5b828202905092915050565b6000610f2182610b0e565b9150610f2c83610b0e565b9250828203905081811115610f4457610f43610e2b565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000610f8482610b0e565b9150610f8f83610b0e565b9250828201905080821115610fa757610fa6610e2b565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000610fe782610b0e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361101957611018610e2b565b5b600182019050919050565b6000819050919050565b6000819050919050565b61104961104482611024565b61102e565b82525050565b6000819050919050565b61106a61106582610b0e565b61104f565b82525050565b600061107b82610bee565b9050919050565b60008160601b9050919050565b600061109a82611082565b9050919050565b60006110ac8261108f565b9050919050565b6110c46110bf82611070565b6110a1565b82525050565b60006110d68287611038565b6020820191506110e68286611059565b6020820191506110f682856110b3565b6014820191506111068284611059565b60208201915081905095945050505050565b7f4f6e6c7920454f41000000000000000000000000000000000000000000000000600082015250565b600061114e600883610d7f565b915061115982611118565b602082019050919050565b6000602082019050818103600083015261117d81611141565b9050919050565b7f4f6e6c79206f776e6572732063616e2063616c6c20746869732e000000000000600082015250565b60006111ba601a83610d7f565b91506111c582611184565b602082019050919050565b600060208201905081810360008301526111e9816111ad565b9050919050565b60006111fb82610b0e565b91506000820361120e5761120d610e2b565b5b600182039050919050565b60006112248261108f565b9050919050565b61123c61123782610c0e565b611219565b82525050565b600061124e8289611038565b60208201915061125e8288611059565b60208201915061126e82876110b3565b60148201915061127e828661122b565b60148201915061128e8285611059565b60208201915061129e8284611059565b60208201915081905097965050505050505056fea2646970667358221220f25ac4b9f9007cd4a4627038fc35c4827f02d140a5d5254b8e96a5bf96f29e9764736f6c63430008100033

Deployed ByteCode

0x608060405234801561001057600080fd5b50600436106100935760003560e01c80638da5cb5b116100665780638da5cb5b14610146578063b68f607f14610164578063bd6eff5014610183578063c3fe3e28146101b4578063fa6814c4146101d257610093565b8063252abe1d14610098578063291ab43b146100c857806352709725146100f85780637654be8a14610116575b600080fd5b6100b260048036038101906100ad9190610b44565b6101ee565b6040516100bf9190610b80565b60405180910390f35b6100e260048036038101906100dd9190610b9b565b61037d565b6040516100ef9190610b80565b60405180910390f35b6101006103cf565b60405161010d9190610c2f565b60405180910390f35b610130600480360381019061012b9190610b44565b6103f5565b60405161013d9190610b80565b60405180910390f35b61014e610412565b60405161015b9190610c2f565b60405180910390f35b61016c610438565b60405161017a929190610d08565b60405180910390f35b61019d60048036038101906101989190610d3f565b6105ab565b6040516101ab929190610d08565b60405180910390f35b6101bc610716565b6040516101c99190610b80565b60405180910390f35b6101ec60048036038101906101e79190610d3f565b6107e8565b005b60006103e88210610234576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161022b90610ddc565b60405180910390fd5b600061023f836103f5565b905080610257600a856102529190610e5a565b6103f5565b116102625780610278565b610277600a846102729190610e5a565b6103f5565b5b90508061029060648561028b9190610e8b565b6103f5565b1161029b57806102b1565b6102b06064846102ab9190610e8b565b6103f5565b5b9050806102c96064856102c49190610e5a565b6103f5565b116102d457806102ea565b6102e96064846102e49190610e5a565b6103f5565b5b90508061030d600a80866102fe9190610e5a565b6103089190610e8b565b6103f5565b116103185780610339565b610338600a80856103299190610e5a565b6103339190610e8b565b6103f5565b5b905080610351600a8561034c9190610e8b565b6103f5565b1161035c5780610372565b610371600a8461036c9190610e8b565b6103f5565b5b905080915050919050565b6000808368056bc75e2d63100000866103969190610ebc565b6103a09190610e5a565b905068056bc75e2d6310000083826103b89190610ebc565b6103c29190610e5a565b9050809150509392505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060046000838152602001908152602001600020549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060806000600160055461044c9190610f16565b67ffffffffffffffff81111561046557610464610f4a565b5b6040519080825280602002602001820160405280156104935781602001602082028036833780820191505090505b509050600060016005546104a79190610f16565b67ffffffffffffffff8111156104c0576104bf610f4a565b5b6040519080825280602002602001820160405280156104ee5781602001602082028036833780820191505090505b50905060005b60016005546105039190610f16565b81101561059e576003600060018361051b9190610f79565b81526020019081526020016000205483828151811061053d5761053c610fad565b5b60200260200101818152505061056c83828151811061055f5761055e610fad565b5b60200260200101516103f5565b82828151811061057f5761057e610fad565b5b602002602001018181525050808061059690610fdc565b9150506104f4565b5081819350935050509091565b60608060008467ffffffffffffffff8111156105ca576105c9610f4a565b5b6040519080825280602002602001820160405280156105f85781602001602082028036833780820191505090505b50905060008567ffffffffffffffff81111561061757610616610f4a565b5b6040519080825280602002602001820160405280156106455781602001602082028036833780820191505090505b50905060005b868110156107065760006001436106629190610f16565b4042418960405160200161067994939291906110ca565b6040516020818303038152906040528051906020012060001c905086876106a09190610f79565b96506103e8816106b09190610e8b565b9050808483815181106106c6576106c5610fad565b5b602002602001018181525050818383815181106106e6576106e5610fad565b5b6020026020010181815250505080806106fe90610fdc565b91505061064b565b5081819350935050509250929050565b60003273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077d90611164565b60405180910390fd5b6000610790610aad565b90507fa9bb0fa194e939eadb11be8d62dd4a16e0f5e89f37fb73fa7f0f8446f1abba61816040516107c19190610b80565b60405180910390a1806000808282546107da9190610f79565b925050819055508091505090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806108915750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6108d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c7906111d0565b60405180910390fd5b6103e88210610914576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090b90610ddc565b60405180910390fd5b600061091f836103f5565b1115610a5457600081111561094b57806004600084815260200190815260200160002081905550610a4f565b60006004600084815260200190815260200160002081905550816003600060016005546109789190610f16565b815260200190815260200160002054036109b85760006003600060016005546109a19190610f16565b815260200190815260200160002081905550610a36565b6000600190505b600554811015610a345782600360008381526020019081526020016000205403610a21576003600060016005546109f69190610f16565b8152602001908152602001600020546003600083815260200190815260200160002081905550610a34565b8080610a2c90610fdc565b9150506109bf565b505b60056000815480929190610a49906111f0565b91905055505b610aa9565b6000811115610aa857806004600084815260200190815260200160002081905550816003600060055481526020019081526020016000208190555060056000815480929190610aa290610fdc565b91905055505b5b5050565b600080600143610abd9190610f16565b4042413334600054604051602001610ada96959493929190611242565b6040516020818303038152906040528051906020012060001c90506103e881610b039190610e8b565b91505090565b600080fd5b6000819050919050565b610b2181610b0e565b8114610b2c57600080fd5b50565b600081359050610b3e81610b18565b92915050565b600060208284031215610b5a57610b59610b09565b5b6000610b6884828501610b2f565b91505092915050565b610b7a81610b0e565b82525050565b6000602082019050610b956000830184610b71565b92915050565b600080600060608486031215610bb457610bb3610b09565b5b6000610bc286828701610b2f565b9350506020610bd386828701610b2f565b9250506040610be486828701610b2f565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c1982610bee565b9050919050565b610c2981610c0e565b82525050565b6000602082019050610c446000830184610c20565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b610c7f81610b0e565b82525050565b6000610c918383610c76565b60208301905092915050565b6000602082019050919050565b6000610cb582610c4a565b610cbf8185610c55565b9350610cca83610c66565b8060005b83811015610cfb578151610ce28882610c85565b9750610ced83610c9d565b925050600181019050610cce565b5085935050505092915050565b60006040820190508181036000830152610d228185610caa565b90508181036020830152610d368184610caa565b90509392505050565b60008060408385031215610d5657610d55610b09565b5b6000610d6485828601610b2f565b9250506020610d7585828601610b2f565b9150509250929050565b600082825260208201905092915050565b7f6572720000000000000000000000000000000000000000000000000000000000600082015250565b6000610dc6600383610d7f565b9150610dd182610d90565b602082019050919050565b60006020820190508181036000830152610df581610db9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610e6582610b0e565b9150610e7083610b0e565b925082610e8057610e7f610dfc565b5b828204905092915050565b6000610e9682610b0e565b9150610ea183610b0e565b925082610eb157610eb0610dfc565b5b828206905092915050565b6000610ec782610b0e565b9150610ed283610b0e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610f0b57610f0a610e2b565b5b828202905092915050565b6000610f2182610b0e565b9150610f2c83610b0e565b9250828203905081811115610f4457610f43610e2b565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000610f8482610b0e565b9150610f8f83610b0e565b9250828201905080821115610fa757610fa6610e2b565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000610fe782610b0e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361101957611018610e2b565b5b600182019050919050565b6000819050919050565b6000819050919050565b61104961104482611024565b61102e565b82525050565b6000819050919050565b61106a61106582610b0e565b61104f565b82525050565b600061107b82610bee565b9050919050565b60008160601b9050919050565b600061109a82611082565b9050919050565b60006110ac8261108f565b9050919050565b6110c46110bf82611070565b6110a1565b82525050565b60006110d68287611038565b6020820191506110e68286611059565b6020820191506110f682856110b3565b6014820191506111068284611059565b60208201915081905095945050505050565b7f4f6e6c7920454f41000000000000000000000000000000000000000000000000600082015250565b600061114e600883610d7f565b915061115982611118565b602082019050919050565b6000602082019050818103600083015261117d81611141565b9050919050565b7f4f6e6c79206f776e6572732063616e2063616c6c20746869732e000000000000600082015250565b60006111ba601a83610d7f565b91506111c582611184565b602082019050919050565b600060208201905081810360008301526111e9816111ad565b9050919050565b60006111fb82610b0e565b91506000820361120e5761120d610e2b565b5b600182039050919050565b60006112248261108f565b9050919050565b61123c61123782610c0e565b611219565b82525050565b600061124e8289611038565b60208201915061125e8288611059565b60208201915061126e82876110b3565b60148201915061127e828661122b565b60148201915061128e8285611059565b60208201915061129e8284611059565b60208201915081905097965050505050505056fea2646970667358221220f25ac4b9f9007cd4a4627038fc35c4827f02d140a5d5254b8e96a5bf96f29e9764736f6c63430008100033