- Contract name:
- LuckyCat
- Optimization enabled
- false
- Compiler version
- v0.8.9+commit.e5eed63a
- EVM Version
- default
- Verified at
- 2022-04-09T19:39:11.610261Z
Contract source code
// SPDX-License-Identifier: MIT library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } pragma solidity 0.8.9; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public onlyOwner { _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } contract LuckyCat is Context, Ownable { using SafeMath for uint256; uint256 private EGGS_TO_HATCH_1MINERS = 1080000;//for final version should be seconds in a day uint256 private PSN = 10000; uint256 private PSNH = 5000; uint256 private devFeeVal = 1; bool private initialized = false; address payable private recAdd; mapping (address => uint256) private hatcheryMiners; mapping (address => uint256) private claimedEggs; mapping (address => uint256) private lastHatch; mapping (address => address) private referrals; uint256 private marketEggs; constructor() { recAdd = payable(msg.sender); } function hatchEggs(address ref) public { require(initialized); if(ref == msg.sender) { ref = address(0); } if(referrals[msg.sender] == address(0) && referrals[msg.sender] != msg.sender) { referrals[msg.sender] = ref; } uint256 eggsUsed = getMyEggs(msg.sender); uint256 newMiners = SafeMath.div(eggsUsed,EGGS_TO_HATCH_1MINERS); hatcheryMiners[msg.sender] = SafeMath.add(hatcheryMiners[msg.sender],newMiners); claimedEggs[msg.sender] = 0; lastHatch[msg.sender] = block.timestamp; //send referral eggs claimedEggs[referrals[msg.sender]] = SafeMath.add(claimedEggs[referrals[msg.sender]],SafeMath.div(eggsUsed,8)); //boost market to nerf miners hoarding marketEggs=SafeMath.add(marketEggs,SafeMath.div(eggsUsed,5)); } function sellEggs() public { require(initialized); uint256 hasEggs = getMyEggs(msg.sender); uint256 eggValue = calculateEggSell(hasEggs); uint256 fee = devFee(eggValue); claimedEggs[msg.sender] = 0; lastHatch[msg.sender] = block.timestamp; marketEggs = SafeMath.add(marketEggs,hasEggs); recAdd.transfer(fee); payable (msg.sender).transfer(SafeMath.sub(eggValue,fee)); } function beanRewards(address adr) public view returns(uint256) { uint256 hasEggs = getMyEggs(adr); uint256 eggValue = calculateEggSell(hasEggs); return eggValue; } function buyEggs(address ref) public payable { require(initialized); uint256 eggsBought = calculateEggBuy(msg.value,SafeMath.sub(address(this).balance,msg.value)); eggsBought = SafeMath.sub(eggsBought,devFee(eggsBought)); uint256 fee = devFee(msg.value); recAdd.transfer(fee); claimedEggs[msg.sender] = SafeMath.add(claimedEggs[msg.sender],eggsBought); hatchEggs(ref); } function calculateTrade(uint256 rt,uint256 rs, uint256 bs) private view returns(uint256) { return SafeMath.div(SafeMath.mul(PSN,bs),SafeMath.add(PSNH,SafeMath.div(SafeMath.add(SafeMath.mul(PSN,rs),SafeMath.mul(PSNH,rt)),rt))); } function calculateEggSell(uint256 eggs) public view returns(uint256) { return calculateTrade(eggs,marketEggs,address(this).balance); } function calculateEggBuy(uint256 eth,uint256 contractBalance) public view returns(uint256) { return calculateTrade(eth,contractBalance,marketEggs); } function calculateEggBuySimple(uint256 eth) public view returns(uint256) { return calculateEggBuy(eth,address(this).balance); } function devFee(uint256 amount) private view returns(uint256) { return SafeMath.div(SafeMath.mul(amount,devFeeVal),100); } function seedMarket() public payable onlyOwner { require(marketEggs == 0); initialized = true; marketEggs = 108000000000; } function getBalance() public view returns(uint256) { return address(this).balance; } function getMyMiners(address adr) public view returns(uint256) { return hatcheryMiners[adr]; } function getMyEggs(address adr) public view returns(uint256) { return SafeMath.add(claimedEggs[adr],getEggsSinceLastHatch(adr)); } function getEggsSinceLastHatch(address adr) public view returns(uint256) { uint256 secondsPassed=min(EGGS_TO_HATCH_1MINERS,SafeMath.sub(block.timestamp,lastHatch[adr])); return SafeMath.mul(secondsPassed,hatcheryMiners[adr]); } function min(uint256 a, uint256 b) private pure returns (uint256) { return a < b ? a : b; } }
Contract ABI
[{"type":"constructor","stateMutability":"nonpayable","inputs":[]},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","internalType":"address","indexed":true},{"type":"address","name":"newOwner","internalType":"address","indexed":true}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"beanRewards","inputs":[{"type":"address","name":"adr","internalType":"address"}]},{"type":"function","stateMutability":"payable","outputs":[],"name":"buyEggs","inputs":[{"type":"address","name":"ref","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"calculateEggBuy","inputs":[{"type":"uint256","name":"eth","internalType":"uint256"},{"type":"uint256","name":"contractBalance","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"calculateEggBuySimple","inputs":[{"type":"uint256","name":"eth","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"calculateEggSell","inputs":[{"type":"uint256","name":"eggs","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getBalance","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getEggsSinceLastHatch","inputs":[{"type":"address","name":"adr","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getMyEggs","inputs":[{"type":"address","name":"adr","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getMyMiners","inputs":[{"type":"address","name":"adr","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"hatchEggs","inputs":[{"type":"address","name":"ref","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"owner","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"renounceOwnership","inputs":[]},{"type":"function","stateMutability":"payable","outputs":[],"name":"seedMarket","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"sellEggs","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"newOwner","internalType":"address"}]}]
Deployed ByteCode
0x6080604052600436106100e85760003560e01c8063715018a61161008a578063a507abee11610059578063a507abee146102d5578063d7c8843b14610312578063db6638651461034f578063f2fde38b1461036b576100e8565b8063715018a6146102195780637e56fde5146102305780638da5cb5b1461026d5780638e31632714610298576100e8565b80633955f0fe116100c65780633955f0fe146101925780633c5f07cb146101a95780633ec862a8146101b35780634b634b06146101dc576100e8565b806312065fe0146100ed57806326fd8422146101185780632ef6a74314610155575b600080fd5b3480156100f957600080fd5b50610102610394565b60405161010f91906111f9565b60405180910390f35b34801561012457600080fd5b5061013f600480360381019061013a9190611245565b61039c565b60405161014c91906111f9565b60405180910390f35b34801561016157600080fd5b5061017c600480360381019061017791906112e3565b6103b3565b60405161018991906111f9565b60405180910390f35b34801561019e57600080fd5b506101a761040d565b005b6101b16105a6565b005b3480156101bf57600080fd5b506101da60048036038101906101d591906112e3565b610673565b005b3480156101e857600080fd5b5061020360048036038101906101fe91906112e3565b610b16565b60405161021091906111f9565b60405180910390f35b34801561022557600080fd5b5061022e610b5f565b005b34801561023c57600080fd5b5061025760048036038101906102529190611310565b610cb2565b60405161026491906111f9565b60405180910390f35b34801561027957600080fd5b50610282610cc5565b60405161028f919061134c565b60405180910390f35b3480156102a457600080fd5b506102bf60048036038101906102ba9190611310565b610cee565b6040516102cc91906111f9565b60405180910390f35b3480156102e157600080fd5b506102fc60048036038101906102f791906112e3565b610d04565b60405161030991906111f9565b60405180910390f35b34801561031e57600080fd5b50610339600480360381019061033491906112e3565b610d29565b60405161034691906111f9565b60405180910390f35b610369600480360381019061036491906112e3565b610dd3565b005b34801561037757600080fd5b50610392600480360381019061038d91906112e3565b610f27565b005b600047905090565b60006103ab8383600a54610fc8565b905092915050565b6000610406600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461040184610d29565b61101b565b9050919050565b600560009054906101000a900460ff1661042657600080fd5b6000610431336103b3565b9050600061043e82610cee565b9050600061044b82611031565b90506000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506104e2600a548461101b565b600a81905550600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610550573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff166108fc6105758484611050565b9081150290604051600060405180830381858888f193505050501580156105a0573d6000803e3d6000fd5b50505050565b6105ae611066565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461063b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610632906113c4565b60405180910390fd5b6000600a541461064a57600080fd5b6001600560006101000a81548160ff0219169083151502179055506419254d3800600a81905550565b600560009054906101000a900460ff1661068c57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156106c557600090505b600073ffffffffffffffffffffffffffffffffffffffff16600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156107eb57503373ffffffffffffffffffffffffffffffffffffffff16600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b1561086f5780600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600061087a336103b3565b9050600061088a8260015461106e565b90506108d5600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261101b565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a5360076000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a4e84600861106e565b61101b565b60076000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b0b600a54610b0684600561106e565b61101b565b600a81905550505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b67611066565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610beb906113c4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000610cbe824761039c565b9050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000610cfd82600a5447610fc8565b9050919050565b600080610d10836103b3565b90506000610d1d82610cee565b90508092505050919050565b600080610d80600154610d7b42600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611050565b611084565b9050610dcb81600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461109d565b915050919050565b600560009054906101000a900460ff16610dec57600080fd5b6000610e0134610dfc4734611050565b61039c565b9050610e1581610e1083611031565b611050565b90506000610e2234611031565b9050600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610e8c573d6000803e3d6000fd5b50610ed6600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361101b565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f2283610673565b505050565b610f2f611066565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb3906113c4565b60405180910390fd5b610fc5816110b3565b50565b6000611012610fd96002548461109d565b61100d600354611008611002610ff16002548a61109d565b610ffd6003548c61109d565b61101b565b8961106e565b61101b565b61106e565b90509392505050565b600081836110299190611413565b905092915050565b60006110496110428360045461109d565b606461106e565b9050919050565b6000818361105e9190611469565b905092915050565b600033905090565b6000818361107c91906114cc565b905092915050565b60008183106110935781611095565b825b905092915050565b600081836110ab91906114fd565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611123576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111a906115c9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000819050919050565b6111f3816111e0565b82525050565b600060208201905061120e60008301846111ea565b92915050565b600080fd5b611222816111e0565b811461122d57600080fd5b50565b60008135905061123f81611219565b92915050565b6000806040838503121561125c5761125b611214565b5b600061126a85828601611230565b925050602061127b85828601611230565b9150509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006112b082611285565b9050919050565b6112c0816112a5565b81146112cb57600080fd5b50565b6000813590506112dd816112b7565b92915050565b6000602082840312156112f9576112f8611214565b5b6000611307848285016112ce565b91505092915050565b60006020828403121561132657611325611214565b5b600061133484828501611230565b91505092915050565b611346816112a5565b82525050565b6000602082019050611361600083018461133d565b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006113ae602083611367565b91506113b982611378565b602082019050919050565b600060208201905081810360008301526113dd816113a1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061141e826111e0565b9150611429836111e0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561145e5761145d6113e4565b5b828201905092915050565b6000611474826111e0565b915061147f836111e0565b925082821015611492576114916113e4565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006114d7826111e0565b91506114e2836111e0565b9250826114f2576114f161149d565b5b828204905092915050565b6000611508826111e0565b9150611513836111e0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561154c5761154b6113e4565b5b828202905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006115b3602683611367565b91506115be82611557565b604082019050919050565b600060208201905081810360008301526115e2816115a6565b905091905056fea2646970667358221220bb05973a3651548d36a27a4a829bcd98893941a69c60ecf9c680d54b8f840bd764736f6c63430008090033