Feature Tip: Add private address tag to any address under My Name Tag !
ERC-721
Overview
Max Total Supply
0 SETTLEMENT
Holders
0
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
0 SETTLEMENTLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
DoomsdaySettlersV2
Compiler Version
v0.8.21+commit.d9974bed
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: UNLICENSED pragma solidity 0.8.21; import "./interfaces/IERC721TokenReceiver.sol"; import "./interfaces/IDoomsdaySettlersDarkAge.sol"; import "./interfaces/IDoomsdaySettlersMetadata.sol"; import "./interfaces/IDoomsdaySettlersBlacklist.sol"; contract DoomsdaySettlersV2 { struct Settlement{ uint32 settleBlock; uint24 supplyAtMint; uint16 age; uint8 settlementType; uint80 relics; uint80 supplies; } uint80 constant CREATOR_PERCENT = 15; uint80 constant DESTRUCTION_FEE = 0.01 ether; uint80 constant DAMAGE_FEE = 0.008 ether; uint80 constant REINFORCE_PERCENT_WINNER = 85; uint80 constant REINFORCE_PERCENT_CREATOR = 15; uint256 constant BLOCK_TIME = 12 seconds; uint256 constant DISASTER_BLOCK_INTERVAL = 75; uint256 immutable BASE_DIFFICULTY; uint256 immutable DIFFICULTY_RAMP; uint256 immutable DIFFICULTY_COOLDOWN; uint256 immutable DIFFICULTY_COOLDOWN_SLOPE; address immutable DARK_AGE; uint256 immutable COLLAPSE_INITIAL; uint256 immutable COLLAPSE_RAMP; uint256 immutable COLLAPSE_MIN; uint16 age = 2; uint32 firstSettlement; uint32 abandoned; bool itIsTheDawnOfANewAge; address public owner; address creator; uint80 supplies; uint80 relics; uint80 mintFee; uint80 creatorEarnings; bytes32[] hashes; uint32[] public destroyed; mapping( uint32 => Settlement) public settlements; event Settle(uint32 _tokenId, bytes32 _hash, address _settler, uint24 _newSupply, uint80 _newMintFee, uint32 _collapseBlock, uint8 _settlementType, address indexed _data, uint32 _blockNumber); event Abandon(uint32 indexed _tokenId, bytes32 _hash, uint80 _growth, uint24 _supplyAtMint, uint32 _newAbandoned, uint80 _newMintFee, uint80 _eth, uint32 _settled, bool _itIsTheDawnOfANewAge, uint32 _blockNumber); event Reinforce(uint32 indexed _tokenId, uint8 _type); event Disaster(uint32 indexed _tokenId, uint8 _type, bool _destroyed, bool _darkAgeOver); constructor( address _darkAge, uint256 _BASE_DIFFICULTY, uint256 _DIFFICULTY_RAMP, uint256 _DIFFICULTY_COOLDOWN, uint256 _DIFFICULTY_COOLDOWN_SLOPE, uint256 _COLLAPSE_INITIAL, uint256 _COLLAPSE_RAMP, uint256 _COLLAPSE_MIN ) payable { BASE_DIFFICULTY = _BASE_DIFFICULTY; DIFFICULTY_RAMP = _DIFFICULTY_RAMP; DIFFICULTY_COOLDOWN = _DIFFICULTY_COOLDOWN; DIFFICULTY_COOLDOWN_SLOPE = _DIFFICULTY_COOLDOWN_SLOPE; COLLAPSE_INITIAL = _COLLAPSE_INITIAL; COLLAPSE_RAMP = _COLLAPSE_RAMP; COLLAPSE_MIN = _COLLAPSE_MIN; DARK_AGE = _darkAge; require(msg.value == DESTRUCTION_FEE,"destruction"); // ERC165 stuff supportsInterface[0x80ac58cd] = true; //ERC721 supportsInterface[0x5b5e139f] = true; //ERC721Metadata supportsInterface[0x01ffc9a7] = true; //ERC165 owner = msg.sender; creator = msg.sender; bytes32 _hash = blockhash(block.number - 1); uint256 _settlementType = settlementType(_hash,0); _mint(1,msg.sender,_hash); settlements[1] = Settlement(uint32(block.number),0,age,uint8(_settlementType), 0,0); mintFee += uint80((uint88(2363029719748390562045450) >> _settlementType * 9)%uint88(512)) * uint80(0.000001 ether); firstSettlement = 1; } function _settle(uint32 tokenId, bytes32 _hash, uint32 index, uint supply, uint32 collapseBlock, address data) internal returns(uint cost){ cost = uint256(mintFee) + DESTRUCTION_FEE; uint80 creatorFee = uint80(cost * CREATOR_PERCENT / 100); creatorEarnings += creatorFee; cost += creatorFee; bytes32 hash = keccak256(abi.encodePacked( _hash, index )); uint8 _settlementType = uint8(settlementType(hash,supply)); hash = keccak256(abi.encodePacked(hash,block.prevrandao)); settlements[tokenId] = Settlement( uint32(block.number), uint24(supply), age, _settlementType, 0, 0); relics += mintFee/2; mintFee += uint80((uint88(2363029719748390562045450) >> _settlementType * 9)%uint88(512)) * uint80(0.000001 ether); _mint(tokenId,msg.sender,hash); emit Settle(tokenId, hash, msg.sender, uint24(supply + 1), mintFee, collapseBlock, _settlementType, data, uint32(block.number)); return cost; } function settle(uint256 location, uint8 count, address data) external payable { require(!isDarkAge(),"dark age"); require(count != 0,"count min"); require(count <= 20,"count max"); unchecked{ require(address(this).balance < type(uint80).max,"balance overflow"); uint32 tokenId = uint32(hashes.length + 1); if(itIsTheDawnOfANewAge){ ++age; firstSettlement = tokenId; itIsTheDawnOfANewAge = false; } uint256 supply = (hashes.length - destroyed.length - abandoned); uint256 difficulty = BASE_DIFFICULTY - (DIFFICULTY_RAMP * supply); uint256 lastSettleBlock = settlements[uint32(hashes.length )].settleBlock; require(block.number > lastSettleBlock,"lastSettleBlock"); uint256 blockDif = (block.number - lastSettleBlock); if(blockDif < DIFFICULTY_COOLDOWN){ difficulty /= DIFFICULTY_COOLDOWN_SLOPE * (DIFFICULTY_COOLDOWN - blockDif); } bytes32 hash = keccak256(abi.encodePacked( msg.sender, hashes[hashes.length - 1], location )); require(uint256(hash) < difficulty,"difficulty"); uint32 collapseBlock; if((supply + count) * COLLAPSE_RAMP < COLLAPSE_INITIAL - COLLAPSE_MIN){ collapseBlock = uint32(block.number + (COLLAPSE_INITIAL - (supply + count) * COLLAPSE_RAMP) / BLOCK_TIME); } else{ collapseBlock = uint32(block.number + COLLAPSE_MIN / BLOCK_TIME); } uint256 cost; for(uint32 i = 0; i < uint32(count); ++i){ cost += _settle(tokenId + i, hash,i,supply + i,collapseBlock,data); } require(msg.value >= cost,"cost"); require(gasleft() > 10000,"gas"); if(msg.value > cost){ payable(msg.sender).transfer(msg.value - cost); } } } function abandon(uint32[] calldata _tokenIds, uint32 _data) external { unchecked{ require(_tokenIds.length != 0,"tokenIds"); uint256 total; for(uint256 i = 0; i < _tokenIds.length; ++i){ total += _abandon(_tokenIds[i],_data); } payable(msg.sender).transfer(total); } } function confirmDisaster(uint32 _tokenId, uint32 _data) external { require(isDarkAge(),"dark age"); require(_isValidToken(_tokenId),"invalid"); uint256 eliminationWindow = (block.number % DISASTER_BLOCK_INTERVAL); if(eliminationWindow < 25){ require(msg.sender == ownerOf(_tokenId),"owner"); }else if(eliminationWindow < 50){ require(balanceOf[msg.sender] != 0,"balance"); } uint8 _type; bool _destroyed; uint minted = hashes.length; uint supply = minted - destroyed.length - abandoned; unchecked{ (_type, _destroyed) = IDoomsdaySettlersDarkAge(DARK_AGE).disaster(_tokenId, supply); } bool darkAgeOver = false; uint80 disaster_fee; if(_destroyed){ unchecked{ uint80 tokenFee = uint80((uint88(2363029719748390562045450) >> settlements[_tokenId].settlementType * 9)%uint88(512)) * uint80(0.000001 ether); uint80 growth; if(_tokenId >= firstSettlement){ growth = uint80(minted - _tokenId); }else{ growth = uint80(minted - firstSettlement) + 1; } uint80 _relics = growth * tokenFee; relics += _relics/2 + settlements[_tokenId].relics + settlements[_tokenId].supplies + IDoomsdaySettlersDarkAge(DARK_AGE).getUnusedFees(_tokenId) * DAMAGE_FEE; destroyed.push(_tokenId); _burn(_tokenId); --supply; if(supply == 1){ _processWinner(_data); darkAgeOver = true; } } disaster_fee = DESTRUCTION_FEE; }else{ disaster_fee = DAMAGE_FEE; } emit Disaster(_tokenId,_type, _destroyed, darkAgeOver); payable(msg.sender).transfer(disaster_fee); } function reinforce(uint32 _tokenId, bool[4] memory _resources) external payable{ require(msg.sender == ownerOf(_tokenId),"ownerOf"); unchecked{ require(address(this).balance < type(uint80).max,"balance overflow"); uint80 cost = IDoomsdaySettlersDarkAge(DARK_AGE).reinforce( _tokenId, hashOf(_tokenId), _resources, isDarkAge() ); uint80 total; for(uint256 i = 0; i < 4; ++i){ if(_resources[i]){ total += DAMAGE_FEE; emit Reinforce(_tokenId,uint8(i)); } } require(total != 0,"empty"); cost *= mintFee / uint80(4); total += cost; require(total <= msg.value,"msg.value"); creatorEarnings += cost * REINFORCE_PERCENT_CREATOR / 100; supplies += cost * REINFORCE_PERCENT_WINNER / 100; require(gasleft() > 10000,"gas"); if(msg.value > total){ payable(msg.sender).transfer(msg.value - total); } } } function miningState() external view returns( bytes32 _lastHash, uint32 _settled, uint32 _abandoned, uint32 _lastSettleBlock, uint32 _collapseBlock, uint80 _mintFee, uint256 _blockNumber ){ uint256 collapseBlock = settlements[uint32(hashes.length )].settleBlock; uint32 collapseSupply = settlements[uint32(hashes.length)].supplyAtMint + 1; if(collapseSupply * COLLAPSE_RAMP < COLLAPSE_INITIAL - COLLAPSE_MIN){ collapseBlock += ( COLLAPSE_INITIAL - collapseSupply * COLLAPSE_RAMP ) / BLOCK_TIME; } else{ collapseBlock += COLLAPSE_MIN / BLOCK_TIME; } return ( hashes[hashes.length - 1], uint32(hashes.length), uint32(destroyed.length) + abandoned, settlements[uint32(hashes.length)].settleBlock, uint32(collapseBlock), mintFee, block.number ); } function currentState() external view returns( bool _itIsTheDawnOfANewAge, uint32 _firstSettlement, uint16 _age, uint80 _creatorEarnings, uint80 _relics, uint80 _supplies, uint256 _blockNumber ){ return ( itIsTheDawnOfANewAge, firstSettlement, age, creatorEarnings, relics, supplies, block.number ); } function settlementType(bytes32 hash, uint256 _supplyAtMint) public pure returns(uint256){ unchecked{ uint256 settlementTypeMax = _supplyAtMint / 1000 + 2 ; if(settlementTypeMax > 8) settlementTypeMax = 8; return (uint256(hash)%100)**2 * ( settlementTypeMax + 1 ) / 1_00_00; } } function isDarkAge() public view returns(bool){ unchecked{ uint minted = hashes.length; uint256 supply = (minted - destroyed.length - abandoned); uint256 collapseBlock = settlements[uint32(minted)].settleBlock; uint32 collapseSupply = settlements[uint32(minted)].supplyAtMint + 1; if(collapseSupply * COLLAPSE_RAMP < COLLAPSE_INITIAL - COLLAPSE_MIN){ collapseBlock += ( COLLAPSE_INITIAL - collapseSupply * COLLAPSE_RAMP ) / BLOCK_TIME; } else{ collapseBlock += COLLAPSE_MIN / BLOCK_TIME; } return supply > 1 && (block.number > collapseBlock ); } } function hashOf(uint32 _tokenId) public view returns(bytes32){ require(_isValidToken(_tokenId),"invalid"); unchecked{ return hashes[_tokenId - 1]; } } function _processWinner(uint32 _winner) private{ require(_isValidToken(_winner),"invalid"); unchecked{ settlements[_winner].relics += relics; settlements[_winner].supplies += supplies; uint80 tokenFee = uint80((uint88(2363029719748390562045450) >> settlements[_winner].settlementType * 9)%uint88(512)) * uint80(0.000001 ether); uint80 growth; if(_winner > firstSettlement){ growth = uint80(hashes.length) - uint80(_winner); }else{ growth = (uint80(hashes.length) - uint80(firstSettlement)) + 1; } uint80 _relics = growth * tokenFee; settlements[_winner].relics += _relics / 2; relics = 0; supplies = 0; mintFee = tokenFee; itIsTheDawnOfANewAge = true; } } function _abandon(uint32 _tokenId, uint32 _data) private returns(uint256){ unchecked{ require(msg.sender == ownerOf(_tokenId),"ownerOf"); bytes32 hash = hashes[_tokenId - 1]; uint80 growth; if(_tokenId >= firstSettlement){ growth = uint80(hashes.length - _tokenId); }else{ growth = uint80(hashes.length) - uint80(firstSettlement) + 1; } uint80 _relics; if(!itIsTheDawnOfANewAge){ _relics = growth * uint80((uint88(2363029719748390562045450) >> settlements[_tokenId].settlementType * 9)%uint88(512)) * uint80(0.000001 ether); } bool _isDarkAge = isDarkAge(); if(_isDarkAge){ require(!IDoomsdaySettlersDarkAge(DARK_AGE).checkVulnerable(_tokenId),"vulnerable"); _relics /= 2; uint80 __abandoned; uint80 __settled; if(age > 2){ ++__abandoned; ++__settled; } __abandoned += uint80(destroyed.length + abandoned) - (uint80(firstSettlement) - 1); __settled += uint80(hashes.length) - (uint80(firstSettlement) - 1); uint80 spoils = uint80(relics) / uint80(hashes.length - destroyed.length - abandoned) * (10_000_000_000 + ( 30_000_000_000 * __abandoned / __settled )) / 40_000_000_000; _relics += spoils; relics -= spoils; }else if(!itIsTheDawnOfANewAge){ relics -= _relics / 2; mintFee -= uint80((uint88(2363029719748390562045450) >> settlements[_tokenId].settlementType * 9)%uint88(512)) * uint80(0.000001 ether); } ++abandoned; _relics += DESTRUCTION_FEE + IDoomsdaySettlersDarkAge(DARK_AGE).getUnusedFees(_tokenId) * DAMAGE_FEE + settlements[_tokenId].relics + settlements[_tokenId].supplies; _burn(_tokenId); if(_isDarkAge){ if(hashes.length - destroyed.length - abandoned == 1){ _processWinner(_data); } } emit Abandon( _tokenId, hash, growth, settlements[_tokenId].supplyAtMint, uint32(destroyed.length) + abandoned, mintFee, _relics, uint32(hashes.length), itIsTheDawnOfANewAge, uint32(block.number) ); return _relics; } } //////===721 Standard event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); //////===721 Implementation mapping(address => uint256) public balanceOf; mapping (uint256 => address) internal allowance; mapping (address => mapping (address => bool)) public isApprovedForAll; mapping(uint256 => address) owners; // METADATA VARS string constant public name = "Doomsday: Settlers of the Wasteland"; string constant public symbol = "SETTLEMENT"; address private __metadata; function _mint(uint256 _tokenId,address _to, bytes32 _hash) private{ unchecked{ owners[_tokenId] = msg.sender; ++balanceOf[_to]; hashes.push(_hash); emit Transfer(address(0),_to,_tokenId); } } function _burn(uint256 _tokenId) private{ unchecked{ address _owner = owners[_tokenId]; --balanceOf[ _owner ]; delete owners[_tokenId]; emit Transfer(_owner,address(0),_tokenId); } } function _isValidToken(uint256 _tokenId) internal view returns(bool){ return owners[_tokenId] != address(0); } function ownerOf(uint256 _tokenId) public view returns(address){ require(_isValidToken(_tokenId),"invalid"); return owners[_tokenId]; } function approve(address _approved, uint256 _tokenId) external{ _noBlocked(_approved); address _owner = ownerOf(_tokenId); require( _owner == msg.sender || isApprovedForAll[_owner][msg.sender] ,"permission"); emit Approval(_owner, _approved, _tokenId); allowance[_tokenId] = _approved; } function getApproved(uint256 _tokenId) external view returns (address) { require(_isValidToken(_tokenId),"invalid"); return allowance[_tokenId]; } function setApprovalForAll(address _operator, bool _approved) external { _noBlocked(_operator); emit ApprovalForAll(msg.sender,_operator, _approved); isApprovedForAll[msg.sender][_operator] = _approved; } function transferFrom(address _from, address _to, uint256 _tokenId) public { address _owner = ownerOf(_tokenId); if(isDarkAge()){ require(!IDoomsdaySettlersDarkAge(DARK_AGE).checkVulnerable(uint32(_tokenId)),"vulnerable"); } if(_from != msg.sender){ _noBlocked(msg.sender); } require ( _owner == msg.sender || allowance[_tokenId] == msg.sender || isApprovedForAll[_owner][msg.sender] ,"permission"); require(_owner == _from,"owner"); require(_to != address(0),"zero"); emit Transfer(_from, _to, _tokenId); owners[_tokenId] =_to; --balanceOf[_from]; ++balanceOf[_to]; if(allowance[_tokenId] != address(0)){ delete allowance[_tokenId]; } } function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes memory data) public { transferFrom(_from, _to, _tokenId); uint32 size; assembly { size := extcodesize(_to) } if(size != 0){ IERC721TokenReceiver receiver = IERC721TokenReceiver(_to); require(receiver.onERC721Received(msg.sender,_from,_tokenId,data) == bytes4(0x150b7a02),"receiver"); } } function safeTransferFrom(address _from, address _to, uint256 _tokenId) external { safeTransferFrom(_from,_to,_tokenId,""); } function tokenURI(uint256 _tokenId) external view returns (string memory){ ownerOf(_tokenId); return IDoomsdaySettlersMetadata(__metadata).tokenURI( _tokenId ); } function totalSupply() external view returns (uint256){ unchecked{ return hashes.length - destroyed.length - abandoned; } } ///==End 721 ///////===165 Implementation mapping (bytes4 => bool) public supportsInterface; ///==End 165 //// ==== Admin function _onlyOwner() private view{ require(msg.sender == owner,"owner"); } function _onlyCreator() private view{ require(msg.sender == creator,"creator"); } function setOwner(address newOwner) external { _onlyOwner(); owner = newOwner; } function setMetadata(address _metadata) external { _onlyOwner(); __metadata = _metadata; } function creatorWithdraw() external { _onlyCreator(); uint256 toWithdraw = creatorEarnings; delete creatorEarnings; payable(msg.sender).transfer(toWithdraw); } function setCreator(address newCreator) external { _onlyCreator(); creator = newCreator; } //OPERATOR FILTER IDoomsdaySettlersBlacklist blacklist; function _noBlocked(address _addr) private view{ if (address(blacklist).code.length > 0) { try blacklist.checkBlocked(_addr) returns (bool result){ require(!result,"blocked"); } catch { //External error, let them cook } } } // function tryCatchExternalCall(uint _i) public { // try foo.myFunc(_i) returns (string memory result) { // emit Log(result); // } catch { // emit Log("external call failed"); // } // } function setBlacklist(address _newBlacklist) external{ _onlyOwner(); blacklist = IDoomsdaySettlersBlacklist(_newBlacklist); } }
// SPDX-License-Identifier: UNLICENSED pragma solidity 0.8.21; interface IDoomsdaySettlersBlacklist { function checkBlocked(address _addr) external view returns(bool); }
// SPDX-License-Identifier: UNLICENSED pragma solidity 0.8.21; interface IDoomsdaySettlersDarkAge { function checkVulnerable(uint32 _tokenId) external view returns (bool); function getUnusedFees(uint32 _tokenId) external view returns (uint80); function disaster(uint32 _tokenId, uint256 _totalSupply) external returns(uint8 _type, bool destroyed); function reinforce( uint32 _tokenId, bytes32 _tokenHash, bool[4] memory _resources, bool _isDarkAge ) external returns (uint80 _cost); }
// SPDX-License-Identifier: UNLICENSED pragma solidity 0.8.21; interface IDoomsdaySettlersMetadata { function tokenURI(uint256 _tokenId) external view returns (string memory); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; /// @dev Note: the ERC-165 identifier for this interface is 0x150b7a02. interface IERC721TokenReceiver { /// @notice Handle the receipt of an NFT /// @dev The ERC721 smart contract calls this function on the recipient /// after a `transfer`. This function MAY throw to revert and reject the /// transfer. Return of other than the magic value MUST result in the /// transaction being reverted. /// Note: the contract address is always the message sender. /// @param _operator The address which called `safeTransferFrom` function /// @param _from The address which previously owned the token /// @param _tokenId The NFT identifier which is being transferred /// @param _data Additional data with no specified format /// @return `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))` /// unless throwing function onERC721Received(address _operator, address _from, uint256 _tokenId, bytes calldata _data) external returns(bytes4); }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_darkAge","type":"address"},{"internalType":"uint256","name":"_BASE_DIFFICULTY","type":"uint256"},{"internalType":"uint256","name":"_DIFFICULTY_RAMP","type":"uint256"},{"internalType":"uint256","name":"_DIFFICULTY_COOLDOWN","type":"uint256"},{"internalType":"uint256","name":"_DIFFICULTY_COOLDOWN_SLOPE","type":"uint256"},{"internalType":"uint256","name":"_COLLAPSE_INITIAL","type":"uint256"},{"internalType":"uint256","name":"_COLLAPSE_RAMP","type":"uint256"},{"internalType":"uint256","name":"_COLLAPSE_MIN","type":"uint256"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint32","name":"_tokenId","type":"uint32"},{"indexed":false,"internalType":"bytes32","name":"_hash","type":"bytes32"},{"indexed":false,"internalType":"uint80","name":"_growth","type":"uint80"},{"indexed":false,"internalType":"uint24","name":"_supplyAtMint","type":"uint24"},{"indexed":false,"internalType":"uint32","name":"_newAbandoned","type":"uint32"},{"indexed":false,"internalType":"uint80","name":"_newMintFee","type":"uint80"},{"indexed":false,"internalType":"uint80","name":"_eth","type":"uint80"},{"indexed":false,"internalType":"uint32","name":"_settled","type":"uint32"},{"indexed":false,"internalType":"bool","name":"_itIsTheDawnOfANewAge","type":"bool"},{"indexed":false,"internalType":"uint32","name":"_blockNumber","type":"uint32"}],"name":"Abandon","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_operator","type":"address"},{"indexed":false,"internalType":"bool","name":"_approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint32","name":"_tokenId","type":"uint32"},{"indexed":false,"internalType":"uint8","name":"_type","type":"uint8"},{"indexed":false,"internalType":"bool","name":"_destroyed","type":"bool"},{"indexed":false,"internalType":"bool","name":"_darkAgeOver","type":"bool"}],"name":"Disaster","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint32","name":"_tokenId","type":"uint32"},{"indexed":false,"internalType":"uint8","name":"_type","type":"uint8"}],"name":"Reinforce","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"_tokenId","type":"uint32"},{"indexed":false,"internalType":"bytes32","name":"_hash","type":"bytes32"},{"indexed":false,"internalType":"address","name":"_settler","type":"address"},{"indexed":false,"internalType":"uint24","name":"_newSupply","type":"uint24"},{"indexed":false,"internalType":"uint80","name":"_newMintFee","type":"uint80"},{"indexed":false,"internalType":"uint32","name":"_collapseBlock","type":"uint32"},{"indexed":false,"internalType":"uint8","name":"_settlementType","type":"uint8"},{"indexed":true,"internalType":"address","name":"_data","type":"address"},{"indexed":false,"internalType":"uint32","name":"_blockNumber","type":"uint32"}],"name":"Settle","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint32[]","name":"_tokenIds","type":"uint32[]"},{"internalType":"uint32","name":"_data","type":"uint32"}],"name":"abandon","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_approved","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_tokenId","type":"uint32"},{"internalType":"uint32","name":"_data","type":"uint32"}],"name":"confirmDisaster","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"creatorWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentState","outputs":[{"internalType":"bool","name":"_itIsTheDawnOfANewAge","type":"bool"},{"internalType":"uint32","name":"_firstSettlement","type":"uint32"},{"internalType":"uint16","name":"_age","type":"uint16"},{"internalType":"uint80","name":"_creatorEarnings","type":"uint80"},{"internalType":"uint80","name":"_relics","type":"uint80"},{"internalType":"uint80","name":"_supplies","type":"uint80"},{"internalType":"uint256","name":"_blockNumber","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"destroyed","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_tokenId","type":"uint32"}],"name":"hashOf","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isDarkAge","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"miningState","outputs":[{"internalType":"bytes32","name":"_lastHash","type":"bytes32"},{"internalType":"uint32","name":"_settled","type":"uint32"},{"internalType":"uint32","name":"_abandoned","type":"uint32"},{"internalType":"uint32","name":"_lastSettleBlock","type":"uint32"},{"internalType":"uint32","name":"_collapseBlock","type":"uint32"},{"internalType":"uint80","name":"_mintFee","type":"uint80"},{"internalType":"uint256","name":"_blockNumber","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_tokenId","type":"uint32"},{"internalType":"bool[4]","name":"_resources","type":"bool[4]"}],"name":"reinforce","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newBlacklist","type":"address"}],"name":"setBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newCreator","type":"address"}],"name":"setCreator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_metadata","type":"address"}],"name":"setMetadata","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"location","type":"uint256"},{"internalType":"uint8","name":"count","type":"uint8"},{"internalType":"address","name":"data","type":"address"}],"name":"settle","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"uint256","name":"_supplyAtMint","type":"uint256"}],"name":"settlementType","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint32","name":"","type":"uint32"}],"name":"settlements","outputs":[{"internalType":"uint32","name":"settleBlock","type":"uint32"},{"internalType":"uint24","name":"supplyAtMint","type":"uint24"},{"internalType":"uint16","name":"age","type":"uint16"},{"internalType":"uint8","name":"settlementType","type":"uint8"},{"internalType":"uint80","name":"relics","type":"uint80"},{"internalType":"uint80","name":"supplies","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
61018060405260025f806101000a81548161ffff021916908361ffff16021790555060405162006a4538038062006a45833981810160405281019062000046919062000717565b86608081815250508560a081815250508460c081815250508360e081815250508261012081815250508161014081815250508061016081815250508773ffffffffffffffffffffffffffffffffffffffff166101008173ffffffffffffffffffffffffffffffffffffffff1681525050662386f26fc1000069ffffffffffffffffffff1634146200010e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001059062000839565b60405180910390fd5b6001600b5f6380ac58cd60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600b5f635b5e139f60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600b5f6301ffc9a760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020015f205f6101000a81548160ff021916908315150217905550335f600b6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f6001436200028b919062000886565b4090505f620002a1825f620004f260201b60201c565b9050620002b7600133846200055b60201b60201c565b6040518060c001604052804363ffffffff1681526020015f62ffffff1681526020015f8054906101000a900461ffff1661ffff1681526020018260ff1681526020015f69ffffffffffffffffffff1681526020015f69ffffffffffffffffffff1681525060055f600163ffffffff1681526020019081526020015f205f820151815f015f6101000a81548163ffffffff021916908363ffffffff1602179055506020820151815f0160046101000a81548162ffffff021916908362ffffff1602179055506040820151815f0160076101000a81548161ffff021916908361ffff1602179055506060820151815f0160096101000a81548160ff021916908360ff1602179055506080820151815f01600a6101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555060a0820151815f0160146101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555090505064e8d4a510006102006009836200043c9190620008c0565b6a01f4641908c320f0501e0a6affffffffffffffffffffff16901c6200046391906200094d565b6200046f919062000999565b6002600a8282829054906101000a900469ffffffffffffffffffff16620004979190620009de565b92506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555060015f60026101000a81548163ffffffff021916908363ffffffff1602179055505050505050505050505062000a22565b5f8060026103e884816200050b576200050a62000920565b5b0401905060088111156200051e57600890505b6127106001820160026064875f1c816200053d576200053c62000920565b5b060a028162000551576200055062000920565b5b0491505092915050565b3360095f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815460010191905081905550600381908060018154018082558091505060019003905f5260205f20015f9091909190915055828273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620006a9826200067e565b9050919050565b620006bb816200069d565b8114620006c6575f80fd5b50565b5f81519050620006d981620006b0565b92915050565b5f819050919050565b620006f381620006df565b8114620006fe575f80fd5b50565b5f815190506200071181620006e8565b92915050565b5f805f805f805f80610100898b0312156200073757620007366200067a565b5b5f620007468b828c01620006c9565b9850506020620007598b828c0162000701565b97505060406200076c8b828c0162000701565b96505060606200077f8b828c0162000701565b9550506080620007928b828c0162000701565b94505060a0620007a58b828c0162000701565b93505060c0620007b88b828c0162000701565b92505060e0620007cb8b828c0162000701565b9150509295985092959890939650565b5f82825260208201905092915050565b7f6465737472756374696f6e0000000000000000000000000000000000000000005f82015250565b5f62000821600b83620007db565b91506200082e82620007eb565b602082019050919050565b5f6020820190508181035f830152620008528162000813565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200089282620006df565b91506200089f83620006df565b9250828203905081811115620008ba57620008b962000859565b5b92915050565b5f620008cc82620006df565b9150620008d983620006df565b9250828202620008e981620006df565b9150828204841483151762000903576200090262000859565b5b5092915050565b5f6affffffffffffffffffffff82169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000959826200090a565b915062000966836200090a565b92508262000979576200097862000920565b5b828206905092915050565b5f69ffffffffffffffffffff82169050919050565b5f620009a58262000984565b9150620009b28362000984565b9250828202620009c28162000984565b9150808214620009d757620009d662000859565b5b5092915050565b5f620009ea8262000984565b9150620009f78362000984565b9250828201905069ffffffffffffffffffff81111562000a1c5762000a1b62000859565b5b92915050565b60805160a05160c05160e05161010051610120516101405161016051615f3462000b115f395f8181610b9e01528181610c77015281816116440152818161171b01528181612ae70152612be801525f8181610be101528181610c1201528181611687015281816116b701528181612b330152612b6d01525f8181610bbf01528181610c3b01528181611665015281816116df01528181612b080152612b9f01525f8181610d540152818161208d0152818161221e01528181612636015281816135dc0152613a6101525f61157801525f818161152d015261155601525f61146201525f6114840152615f345ff3fe6080604052600436106101d7575f3560e01c806364ec8bdb11610101578063bcccb53611610094578063e00d79ef11610063578063e00d79ef146106a0578063e985e9c5146106dc578063f06d67bb14610718578063f3cb838514610748576101d7565b8063bcccb536146105e4578063c259e1cc14610620578063c87b56dd14610648578063cfa5344014610684576101d7565b80638e30c766116100d05780638e30c7661461054257806395d89b411461056a578063a22cb46514610594578063b88d4fde146105bc576101d7565b806364ec8bdb146104855780636c2b836a1461049b57806370a08231146104dc5780638da5cb5b14610518576101d7565b806313af4035116101795780633f516018116101485780633f516018146103d157806342842e0e146103f95780634e054a67146104215780636352211e14610449576101d7565b806313af40351461033b57806318160ddd1461036357806323b872dd1461038d5780632579cb6d146103b5576101d7565b8063081812fc116101b5578063081812fc1461027d578063095ea7b3146102b95780630c3f6acf146102e157806311f6dcbd14610311576101d7565b806301ffc9a7146101db5780630357f5aa1461021757806306fdde0314610253575b5f80fd5b3480156101e6575f80fd5b5061020160048036038101906101fc919061421b565b610770565b60405161020e9190614260565b60405180910390f35b348015610222575f80fd5b5061023d600480360381019061023891906142b2565b61078d565b60405161024a91906142f5565b60405180910390f35b34801561025e575f80fd5b50610267610809565b6040516102749190614398565b60405180910390f35b348015610288575f80fd5b506102a3600480360381019061029e91906143eb565b610825565b6040516102b09190614455565b60405180910390f35b3480156102c4575f80fd5b506102df60048036038101906102da9190614498565b6108a6565b005b3480156102ec575f80fd5b506102f5610a64565b6040516103089796959493929190614534565b60405180910390f35b34801561031c575f80fd5b50610325610afc565b6040516103329190614260565b60405180910390f35b348015610346575f80fd5b50610361600480360381019061035c91906145a1565b610cc2565b005b34801561036e575f80fd5b50610377610d0d565b60405161038491906145cc565b60405180910390f35b348015610398575f80fd5b506103b360048036038101906103ae91906145e5565b610d39565b005b6103cf60048036038101906103ca919061466b565b61128b565b005b3480156103dc575f80fd5b506103f760048036038101906103f291906145a1565b611876565b005b348015610404575f80fd5b5061041f600480360381019061041a91906145e5565b6118c1565b005b34801561042c575f80fd5b50610447600480360381019061044291906145a1565b6118e0565b005b348015610454575f80fd5b5061046f600480360381019061046a91906143eb565b61192b565b60405161047c9190614455565b60405180910390f35b348015610490575f80fd5b506104996119ac565b005b3480156104a6575f80fd5b506104c160048036038101906104bc91906142b2565b611a3e565b6040516104d3969594939291906146e7565b60405180910390f35b3480156104e7575f80fd5b5061050260048036038101906104fd91906145a1565b611ad6565b60405161050f91906145cc565b60405180910390f35b348015610523575f80fd5b5061052c611aeb565b6040516105399190614455565b60405180910390f35b34801561054d575f80fd5b50610568600480360381019061056391906147a7565b611b10565b005b348015610575575f80fd5b5061057e611bf1565b60405161058b9190614398565b60405180910390f35b34801561059f575f80fd5b506105ba60048036038101906105b5919061482e565b611c2a565b005b3480156105c7575f80fd5b506105e260048036038101906105dd9190614994565b611d2b565b005b3480156105ef575f80fd5b5061060a600480360381019061060591906143eb565b611e5a565b6040516106179190614a14565b60405180910390f35b34801561062b575f80fd5b5061064660048036038101906106419190614a2d565b611e91565b005b348015610653575f80fd5b5061066e600480360381019061066991906143eb565b6124ba565b60405161067b9190614398565b60405180910390f35b61069e60048036038101906106999190614b19565b612569565b005b3480156106ab575f80fd5b506106c660048036038101906106c19190614b81565b6129d0565b6040516106d391906145cc565b60405180910390f35b3480156106e7575f80fd5b5061070260048036038101906106fd9190614bbf565b612a2f565b60405161070f9190614260565b60405180910390f35b348015610723575f80fd5b5061072c612a59565b60405161073f9796959493929190614bfd565b60405180910390f35b348015610753575f80fd5b5061076e600480360381019061076991906145a1565b612cdd565b005b600b602052805f5260405f205f915054906101000a900460ff1681565b5f61079d8263ffffffff16612d28565b6107dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d390614cb4565b60405180910390fd5b60036001830363ffffffff16815481106107f9576107f8614cd2565b5b905f5260205f2001549050919050565b604051806060016040528060238152602001615edc6023913981565b5f61082f82612d28565b61086e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086590614cb4565b60405180910390fd5b60075f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6108af82612d90565b5f6108b98261192b565b90503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480610976575060085f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6109b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ac90614d49565b60405180910390fd5b818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a48260075f8481526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b5f805f805f805f80600a9054906101000a900460ff165f60029054906101000a900463ffffffff165f8054906101000a900461ffff16600260149054906101000a900469ffffffffffffffffffff1660025f9054906101000a900469ffffffffffffffffffff16600160149054906101000a900469ffffffffffffffffffff1643965096509650965096509650965090919293949596565b5f8060038054905090505f8060069054906101000a900463ffffffff1663ffffffff1660048054905083030390505f60055f8463ffffffff1663ffffffff1681526020019081526020015f205f015f9054906101000a900463ffffffff1663ffffffff1690505f600160055f8663ffffffff1663ffffffff1681526020019081526020015f205f0160049054906101000a900462ffffff160162ffffff1690507f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000037f00000000000000000000000000000000000000000000000000000000000000008263ffffffff16021015610c7357600c7f00000000000000000000000000000000000000000000000000000000000000008263ffffffff16027f00000000000000000000000000000000000000000000000000000000000000000381610c6957610c68614d67565b5b0482019150610caa565b600c7f000000000000000000000000000000000000000000000000000000000000000081610ca457610ca3614d67565b5b04820191505b600183118015610cb957508143115b94505050505090565b610cca612eb0565b805f600b6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f8060069054906101000a900463ffffffff1663ffffffff166004805490506003805490500303905090565b5f610d438261192b565b9050610d4d610afc565b15610e2b577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166382657a85836040518263ffffffff1660e01b8152600401610dab9190614a14565b602060405180830381865afa158015610dc6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dea9190614da8565b15610e2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2190614e1d565b60405180910390fd5b5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614610e6857610e6733612d90565b5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480610efd57503373ffffffffffffffffffffffffffffffffffffffff1660075f8481526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80610f89575060085f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b610fc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbf90614d49565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611036576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102d90614e85565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109b90614eed565b60405180910390fd5b818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48260095f8481526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815461119790614f38565b9190508190555060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f81546111e790614f5f565b919050819055505f73ffffffffffffffffffffffffffffffffffffffff1660075f8481526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112855760075f8381526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b50505050565b611293610afc565b156112d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ca90614ff0565b60405180910390fd5b5f8260ff1603611318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130f90615058565b60405180910390fd5b60148260ff16111561135f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611356906150c0565b60405180910390fd5b69ffffffffffffffffffff801647106113ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a490615128565b60405180910390fd5b5f60016003805490500190505f600a9054906101000a900460ff1615611435575f8081819054906101000a900461ffff1660010191906101000a81548161ffff021916908361ffff160217905550805f60026101000a81548163ffffffff021916908363ffffffff1602179055505f80600a6101000a81548160ff0219169083151502179055505b5f8060069054906101000a900463ffffffff1663ffffffff16600480549050600380549050030390505f817f0000000000000000000000000000000000000000000000000000000000000000027f00000000000000000000000000000000000000000000000000000000000000000390505f60055f60038054905063ffffffff1663ffffffff1681526020019081526020015f205f015f9054906101000a900463ffffffff1663ffffffff169050804311611525576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151c90615190565b60405180910390fd5b5f81430390507f00000000000000000000000000000000000000000000000000000000000000008110156115ab57807f0000000000000000000000000000000000000000000000000000000000000000037f00000000000000000000000000000000000000000000000000000000000000000283816115a7576115a6614d67565b5b0492505b5f336003600160038054905003815481106115c9576115c8614cd2565b5b905f5260205f2001548a6040516020016115e593929190615233565b60405160208183030381529060405280519060200120905083815f1c10611641576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611638906152b9565b60405180910390fd5b5f7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000037f00000000000000000000000000000000000000000000000000000000000000008a60ff16880102101561171757600c7f00000000000000000000000000000000000000000000000000000000000000008a60ff168801027f0000000000000000000000000000000000000000000000000000000000000000038161170d5761170c614d67565b5b044301905061174e565b600c7f00000000000000000000000000000000000000000000000000000000000000008161174857611747614d67565b5b04430190505b5f805f90505b8a60ff1663ffffffff168163ffffffff16101561179257611783818a0185838463ffffffff168c01878f612f41565b82019150806001019050611754565b50803410156117d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117cd90615321565b60405180910390fd5b6127105a1161181a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181190615389565b60405180910390fd5b80341115611869573373ffffffffffffffffffffffffffffffffffffffff166108fc82340390811502906040515f60405180830381858888f19350505050158015611867573d5f803e3d5ffd5b505b5050505050505050505050565b61187e613399565b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6118db83838360405180602001604052805f815250611d2b565b505050565b6118e8612eb0565b80600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f61193582612d28565b611974576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196b90614cb4565b60405180910390fd5b60095f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6119b4613399565b5f600260149054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff169050600260146101000a81549069ffffffffffffffffffff02191690553373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611a3a573d5f803e3d5ffd5b5050565b6005602052805f5260405f205f91509050805f015f9054906101000a900463ffffffff1690805f0160049054906101000a900462ffffff1690805f0160079054906101000a900461ffff1690805f0160099054906101000a900460ff1690805f01600a9054906101000a900469ffffffffffffffffffff1690805f0160149054906101000a900469ffffffffffffffffffff16905086565b6006602052805f5260405f205f915090505481565b5f600b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8383905003611b55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4c906153f1565b60405180910390fd5b5f805f90505b84849050811015611ba657611b97858583818110611b7c57611b7b614cd2565b5b9050602002016020810190611b9191906142b2565b8461342a565b82019150806001019050611b5b565b503373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611bea573d5f803e3d5ffd5b5050505050565b6040518060400160405280600a81526020017f534554544c454d454e540000000000000000000000000000000000000000000081525081565b611c3382612d90565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611c909190614260565b60405180910390a38060085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b611d36848484610d39565b5f833b90505f8163ffffffff1614611e53575f84905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168173ffffffffffffffffffffffffffffffffffffffff1663150b7a02338988886040518563ffffffff1660e01b8152600401611db29493929190615461565b6020604051808303815f875af1158015611dce573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611df291906154bf565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4890615534565b60405180910390fd5b505b5050505050565b60048181548110611e69575f80fd5b905f5260205f209060089182820401919006600402915054906101000a900463ffffffff1681565b611e99610afc565b611ed8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ecf90614ff0565b60405180910390fd5b611ee78263ffffffff16612d28565b611f26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1d90614cb4565b60405180910390fd5b5f604b43611f349190615552565b90506019811015611fc057611f4e8363ffffffff1661192b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611fbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb290614e85565b60405180910390fd5b61204a565b6032811015612049575f60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205403612048576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203f906155cc565b60405180910390fd5b5b5b5f805f60038054905090505f8060069054906101000a900463ffffffff1663ffffffff166004805490508361207f91906155ea565b61208991906155ea565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a54f604588836040518363ffffffff1660e01b81526004016120e692919061561d565b60408051808303815f875af1158015612101573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121259190615658565b80945081955050505f808415612412575f64e8d4a510006102006affffffffffffffffffffff16600960055f8e63ffffffff1663ffffffff1681526020019081526020015f205f0160099054906101000a900460ff160260ff166a01f4641908c320f0501e0a6affffffffffffffffffffff16901c6affffffffffffffffffffff16816121b5576121b4614d67565b5b060290505f8060029054906101000a900463ffffffff1663ffffffff168b63ffffffff16106121ee578a63ffffffff168603905061220e565b60015f60029054906101000a900463ffffffff1663ffffffff1687030190505b5f8282029050661c6bf5263400007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16633d7606d28e6040518263ffffffff1660e01b81526004016122759190614a14565b602060405180830381865afa158015612290573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122b491906156c0565b0260055f8e63ffffffff1663ffffffff1681526020019081526020015f205f0160149054906101000a900469ffffffffffffffffffff1660055f8f63ffffffff1663ffffffff1681526020019081526020015f205f01600a9054906101000a900469ffffffffffffffffffff1660028469ffffffffffffffffffff168161233e5761233d614d67565b5b0401010160025f8282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555060048c908060018154018082558091505060019003905f5260205f2090600891828204019190066004029091909190916101000a81548163ffffffff021916908363ffffffff1602179055506123e38c63ffffffff16613c2c565b8560019003955060018603612400576123fb8b613d3d565b600194505b505050662386f26fc10000905061241d565b661c6bf52634000090505b8863ffffffff167fb42dc0fdbad9c34e94c321dcafde1913063d2654671596956fcf873387ee0d37878785604051612457939291906156eb565b60405180910390a23373ffffffffffffffffffffffffffffffffffffffff166108fc8269ffffffffffffffffffff1690811502906040515f60405180830381858888f193505050501580156124ae573d5f803e3d5ffd5b50505050505050505050565b60606124c58261192b565b50600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c87b56dd836040518263ffffffff1660e01b815260040161252091906145cc565b5f60405180830381865afa15801561253a573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061256291906157be565b9050919050565b6125788263ffffffff1661192b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146125e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125dc9061584f565b60405180910390fd5b69ffffffffffffffffffff80164710612633576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262a90615128565b60405180910390fd5b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632a56946b8461267a8661078d565b85612683610afc565b6040518563ffffffff1660e01b81526004016126a29493929190615912565b6020604051808303815f875af11580156126be573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126e291906156c0565b90505f805f90505b60048110156127665783816004811061270657612705614cd2565b5b60200201511561275b57661c6bf526340000820191508463ffffffff167f2f3508f35cf9b0ed68f9abba5458799a360ddf42fcd12c6f41fd4860ba71631f826040516127529190615955565b60405180910390a25b8060010190506126ea565b505f8169ffffffffffffffffffff16036127b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ac906159b8565b60405180910390fd5b600469ffffffffffffffffffff166002600a9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff16816127f6576127f5614d67565b5b04820291508181019050348169ffffffffffffffffffff16111561284f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284690615a20565b60405180910390fd5b6064600f830269ffffffffffffffffffff168161286f5761286e614d67565b5b04600260148282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555060646055830269ffffffffffffffffffff16816128d7576128d6614d67565b5b04600160148282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055506127105a11612963576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295a90615389565b60405180910390fd5b8069ffffffffffffffffffff163411156129ca573373ffffffffffffffffffffffffffffffffffffffff166108fc8269ffffffffffffffffffff16340390811502906040515f60405180830381858888f193505050501580156129c8573d5f803e3d5ffd5b505b50505050565b5f8060026103e884816129e6576129e5614d67565b5b0401905060088111156129f857600890505b6127106001820160026064875f1c81612a1457612a13614d67565b5b060a0281612a2557612a24614d67565b5b0491505092915050565b6008602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b5f805f805f805f8060055f60038054905063ffffffff1663ffffffff1681526020019081526020015f205f015f9054906101000a900463ffffffff1663ffffffff1690505f600160055f60038054905063ffffffff1663ffffffff1681526020019081526020015f205f0160049054906101000a900462ffffff16612ade9190615a3e565b62ffffff1690507f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000612b3191906155ea565b7f00000000000000000000000000000000000000000000000000000000000000008263ffffffff16612b639190615a74565b1015612be457600c7f00000000000000000000000000000000000000000000000000000000000000008263ffffffff16612b9d9190615a74565b7f0000000000000000000000000000000000000000000000000000000000000000612bc891906155ea565b612bd29190615ab5565b82612bdd9190615ae5565b9150612c1f565b600c7f0000000000000000000000000000000000000000000000000000000000000000612c119190615ab5565b82612c1c9190615ae5565b91505b60036001600380549050612c3391906155ea565b81548110612c4457612c43614cd2565b5b905f5260205f2001546003805490505f60069054906101000a900463ffffffff16600480549050612c759190615b18565b60055f60038054905063ffffffff1663ffffffff1681526020019081526020015f205f015f9054906101000a900463ffffffff16856002600a9054906101000a900469ffffffffffffffffffff16439850985098509850985098509850505090919293949596565b612ce5612eb0565b80600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f8073ffffffffffffffffffffffffffffffffffffffff1660095f8481526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b5f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163b1115612ead57600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ba06ca4826040518263ffffffff1660e01b8152600401612e2a9190614455565b602060405180830381865afa925050508015612e6457506040513d601f19601f82011682018060405250810190612e619190614da8565b60015b15612eac578015612eaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ea190615b99565b60405180910390fd5b505b5b50565b5f600b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612f3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3690614e85565b60405180910390fd5b565b5f662386f26fc1000069ffffffffffffffffffff166002600a9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff16612f859190615ae5565b90505f6064600f69ffffffffffffffffffff1683612fa39190615a74565b612fad9190615ab5565b905080600260148282829054906101000a900469ffffffffffffffffffff16612fd69190615bb7565b92506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055508069ffffffffffffffffffff16826130189190615ae5565b91505f878760405160200161302e929190615c28565b6040516020818303038152906040528051906020012090505f61305182886129d0565b90508144604051602001613066929190615c53565b6040516020818303038152906040528051906020012091506040518060c001604052804363ffffffff1681526020018862ffffff1681526020015f8054906101000a900461ffff1661ffff1681526020018260ff1681526020015f69ffffffffffffffffffff1681526020015f69ffffffffffffffffffff1681525060055f8c63ffffffff1663ffffffff1681526020019081526020015f205f820151815f015f6101000a81548163ffffffff021916908363ffffffff1602179055506020820151815f0160046101000a81548162ffffff021916908362ffffff1602179055506040820151815f0160076101000a81548161ffff021916908361ffff1602179055506060820151815f0160096101000a81548160ff021916908360ff1602179055506080820151815f01600a6101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555060a0820151815f0160146101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550905050600280600a9054906101000a900469ffffffffffffffffffff166132149190615c7e565b60025f8282829054906101000a900469ffffffffffffffffffff166132399190615bb7565b92506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555064e8d4a510006102006009836132799190615cae565b60ff166a01f4641908c320f0501e0a6affffffffffffffffffffff16901c6132a19190615d00565b6132ab9190615d30565b6002600a8282829054906101000a900469ffffffffffffffffffff166132d19190615bb7565b92506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555061330c8a63ffffffff163384614096565b8473ffffffffffffffffffffffffffffffffffffffff167f444ecbf9f5083183eadb792d6e970912963d46d7530cc1429557b40c8eee836e8b843360018c6133549190615ae5565b6002600a9054906101000a900469ffffffffffffffffffff168c8843604051613384989796959493929190615d6c565b60405180910390a25050509695505050505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161341f90615e32565b60405180910390fd5b565b5f61343a8363ffffffff1661192b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146134a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161349e9061584f565b60405180910390fd5b5f60036001850363ffffffff16815481106134c5576134c4614cd2565b5b905f5260205f20015490505f8060029054906101000a900463ffffffff1663ffffffff168563ffffffff161061350a578463ffffffff1660038054905003905061352f565b60015f60029054906101000a900463ffffffff1663ffffffff16600380549050030190505b5f80600a9054906101000a900460ff166135c95764e8d4a510006102006affffffffffffffffffffff16600960055f8a63ffffffff1663ffffffff1681526020019081526020015f205f0160099054906101000a900460ff160260ff166a01f4641908c320f0501e0a6affffffffffffffffffffff16901c6affffffffffffffffffffff16816135c2576135c1614d67565b5b0683020290505b5f6135d2610afc565b90508015613875577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166382657a85886040518263ffffffff1660e01b81526004016136339190614a14565b602060405180830381865afa15801561364e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136729190614da8565b156136b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136a990614e1d565b60405180910390fd5b60028269ffffffffffffffffffff16816136cf576136ce614d67565b5b0491505f8060025f8054906101000a900461ffff1661ffff1611156136fb578160010191508060010190505b60015f60029054906101000a900463ffffffff1663ffffffff16035f60069054906101000a900463ffffffff1663ffffffff1660048054905001038201915060015f60029054906101000a900463ffffffff1663ffffffff160360038054905003810190505f6409502f90008269ffffffffffffffffffff16846406fc23ac000269ffffffffffffffffffff168161379657613795614d67565b5b046402540be400015f60069054906101000a900463ffffffff1663ffffffff16600480549050600380549050030369ffffffffffffffffffff1660025f9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff168161380257613801614d67565b5b040269ffffffffffffffffffff168161381e5761381d614d67565b5b04905080850194508060025f8282829054906101000a900469ffffffffffffffffffff160392506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055505050506139b6565b5f600a9054906101000a900460ff166139b55760028269ffffffffffffffffffff16816138a5576138a4614d67565b5b0460025f8282829054906101000a900469ffffffffffffffffffff160392506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555064e8d4a510006102006affffffffffffffffffffff16600960055f8b63ffffffff1663ffffffff1681526020019081526020015f205f0160099054906101000a900460ff160260ff166a01f4641908c320f0501e0a6affffffffffffffffffffff16901c6affffffffffffffffffffff168161396b5761396a614d67565b5b06026002600a8282829054906101000a900469ffffffffffffffffffff160392506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055505b5b5f600681819054906101000a900463ffffffff1660010191906101000a81548163ffffffff021916908363ffffffff16021790555060055f8863ffffffff1663ffffffff1681526020019081526020015f205f0160149054906101000a900469ffffffffffffffffffff1660055f8963ffffffff1663ffffffff1681526020019081526020015f205f01600a9054906101000a900469ffffffffffffffffffff16661c6bf5263400007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16633d7606d28b6040518263ffffffff1660e01b8152600401613ab89190614a14565b602060405180830381865afa158015613ad3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613af791906156c0565b02662386f26fc1000001010182019150613b168763ffffffff16613c2c565b8015613b545760015f60069054906101000a900463ffffffff1663ffffffff16600480549050600380549050030303613b5357613b5286613d3d565b5b5b8663ffffffff167f043a95ff614f8dc4d9248f78dc6c860496987da7edc830f8189494f7eff4f6b0858560055f8c63ffffffff1663ffffffff1681526020019081526020015f205f0160049054906101000a900462ffffff165f60069054906101000a900463ffffffff16600480549050016002600a9054906101000a900469ffffffffffffffffffff16886003805490505f600a9054906101000a900460ff1643604051613c0b99989796959493929190615e50565b60405180910390a28169ffffffffffffffffffff1694505050505092915050565b5f60095f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060065f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8154600190039190508190555060095f8381526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055815f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b613d4c8163ffffffff16612d28565b613d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d8290614cb4565b60405180910390fd5b60025f9054906101000a900469ffffffffffffffffffff1660055f8363ffffffff1663ffffffff1681526020019081526020015f205f01600a8282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550600160149054906101000a900469ffffffffffffffffffff1660055f8363ffffffff1663ffffffff1681526020019081526020015f205f0160148282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055505f64e8d4a510006102006affffffffffffffffffffff16600960055f8663ffffffff1663ffffffff1681526020019081526020015f205f0160099054906101000a900460ff160260ff166a01f4641908c320f0501e0a6affffffffffffffffffffff16901c6affffffffffffffffffffff1681613f0457613f03614d67565b5b060290505f8060029054906101000a900463ffffffff1663ffffffff168363ffffffff161115613f43578263ffffffff16600380549050039050613f68565b60015f60029054906101000a900463ffffffff1663ffffffff16600380549050030190505b5f828202905060028169ffffffffffffffffffff1681613f8b57613f8a614d67565b5b0460055f8663ffffffff1663ffffffff1681526020019081526020015f205f01600a8282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055505f60025f6101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055505f600160146101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550826002600a6101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555060015f600a6101000a81548160ff02191690831515021790555050505050565b3360095f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815460010191905081905550600381908060018154018082558091505060019003905f5260205f20015f9091909190915055828273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6141fa816141c6565b8114614204575f80fd5b50565b5f81359050614215816141f1565b92915050565b5f602082840312156142305761422f6141be565b5b5f61423d84828501614207565b91505092915050565b5f8115159050919050565b61425a81614246565b82525050565b5f6020820190506142735f830184614251565b92915050565b5f63ffffffff82169050919050565b61429181614279565b811461429b575f80fd5b50565b5f813590506142ac81614288565b92915050565b5f602082840312156142c7576142c66141be565b5b5f6142d48482850161429e565b91505092915050565b5f819050919050565b6142ef816142dd565b82525050565b5f6020820190506143085f8301846142e6565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561434557808201518184015260208101905061432a565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61436a8261430e565b6143748185614318565b9350614384818560208601614328565b61438d81614350565b840191505092915050565b5f6020820190508181035f8301526143b08184614360565b905092915050565b5f819050919050565b6143ca816143b8565b81146143d4575f80fd5b50565b5f813590506143e5816143c1565b92915050565b5f60208284031215614400576143ff6141be565b5b5f61440d848285016143d7565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61443f82614416565b9050919050565b61444f81614435565b82525050565b5f6020820190506144685f830184614446565b92915050565b61447781614435565b8114614481575f80fd5b50565b5f813590506144928161446e565b92915050565b5f80604083850312156144ae576144ad6141be565b5b5f6144bb85828601614484565b92505060206144cc858286016143d7565b9150509250929050565b6144df81614279565b82525050565b5f61ffff82169050919050565b6144fb816144e5565b82525050565b5f69ffffffffffffffffffff82169050919050565b61451f81614501565b82525050565b61452e816143b8565b82525050565b5f60e0820190506145475f83018a614251565b61455460208301896144d6565b61456160408301886144f2565b61456e6060830187614516565b61457b6080830186614516565b61458860a0830185614516565b61459560c0830184614525565b98975050505050505050565b5f602082840312156145b6576145b56141be565b5b5f6145c384828501614484565b91505092915050565b5f6020820190506145df5f830184614525565b92915050565b5f805f606084860312156145fc576145fb6141be565b5b5f61460986828701614484565b935050602061461a86828701614484565b925050604061462b868287016143d7565b9150509250925092565b5f60ff82169050919050565b61464a81614635565b8114614654575f80fd5b50565b5f8135905061466581614641565b92915050565b5f805f60608486031215614682576146816141be565b5b5f61468f868287016143d7565b93505060206146a086828701614657565b92505060406146b186828701614484565b9150509250925092565b5f62ffffff82169050919050565b6146d2816146bb565b82525050565b6146e181614635565b82525050565b5f60c0820190506146fa5f8301896144d6565b61470760208301886146c9565b61471460408301876144f2565b61472160608301866146d8565b61472e6080830185614516565b61473b60a0830184614516565b979650505050505050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261476757614766614746565b5b8235905067ffffffffffffffff8111156147845761478361474a565b5b6020830191508360208202830111156147a05761479f61474e565b5b9250929050565b5f805f604084860312156147be576147bd6141be565b5b5f84013567ffffffffffffffff8111156147db576147da6141c2565b5b6147e786828701614752565b935093505060206147fa8682870161429e565b9150509250925092565b61480d81614246565b8114614817575f80fd5b50565b5f8135905061482881614804565b92915050565b5f8060408385031215614844576148436141be565b5b5f61485185828601614484565b92505060206148628582860161481a565b9150509250929050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6148a682614350565b810181811067ffffffffffffffff821117156148c5576148c4614870565b5b80604052505050565b5f6148d76141b5565b90506148e3828261489d565b919050565b5f67ffffffffffffffff82111561490257614901614870565b5b61490b82614350565b9050602081019050919050565b828183375f83830152505050565b5f614938614933846148e8565b6148ce565b9050828152602081018484840111156149545761495361486c565b5b61495f848285614918565b509392505050565b5f82601f83011261497b5761497a614746565b5b813561498b848260208601614926565b91505092915050565b5f805f80608085870312156149ac576149ab6141be565b5b5f6149b987828801614484565b94505060206149ca87828801614484565b93505060406149db878288016143d7565b925050606085013567ffffffffffffffff8111156149fc576149fb6141c2565b5b614a0887828801614967565b91505092959194509250565b5f602082019050614a275f8301846144d6565b92915050565b5f8060408385031215614a4357614a426141be565b5b5f614a508582860161429e565b9250506020614a618582860161429e565b9150509250929050565b5f67ffffffffffffffff821115614a8557614a84614870565b5b602082029050919050565b5f614aa2614a9d84614a6b565b6148ce565b90508060208402830185811115614abc57614abb61474e565b5b835b81811015614ae55780614ad1888261481a565b845260208401935050602081019050614abe565b5050509392505050565b5f82601f830112614b0357614b02614746565b5b6004614b10848285614a90565b91505092915050565b5f8060a08385031215614b2f57614b2e6141be565b5b5f614b3c8582860161429e565b9250506020614b4d85828601614aef565b9150509250929050565b614b60816142dd565b8114614b6a575f80fd5b50565b5f81359050614b7b81614b57565b92915050565b5f8060408385031215614b9757614b966141be565b5b5f614ba485828601614b6d565b9250506020614bb5858286016143d7565b9150509250929050565b5f8060408385031215614bd557614bd46141be565b5b5f614be285828601614484565b9250506020614bf385828601614484565b9150509250929050565b5f60e082019050614c105f83018a6142e6565b614c1d60208301896144d6565b614c2a60408301886144d6565b614c3760608301876144d6565b614c4460808301866144d6565b614c5160a0830185614516565b614c5e60c0830184614525565b98975050505050505050565b7f696e76616c6964000000000000000000000000000000000000000000000000005f82015250565b5f614c9e600783614318565b9150614ca982614c6a565b602082019050919050565b5f6020820190508181035f830152614ccb81614c92565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f7065726d697373696f6e000000000000000000000000000000000000000000005f82015250565b5f614d33600a83614318565b9150614d3e82614cff565b602082019050919050565b5f6020820190508181035f830152614d6081614d27565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f81519050614da281614804565b92915050565b5f60208284031215614dbd57614dbc6141be565b5b5f614dca84828501614d94565b91505092915050565b7f76756c6e657261626c65000000000000000000000000000000000000000000005f82015250565b5f614e07600a83614318565b9150614e1282614dd3565b602082019050919050565b5f6020820190508181035f830152614e3481614dfb565b9050919050565b7f6f776e65720000000000000000000000000000000000000000000000000000005f82015250565b5f614e6f600583614318565b9150614e7a82614e3b565b602082019050919050565b5f6020820190508181035f830152614e9c81614e63565b9050919050565b7f7a65726f000000000000000000000000000000000000000000000000000000005f82015250565b5f614ed7600483614318565b9150614ee282614ea3565b602082019050919050565b5f6020820190508181035f830152614f0481614ecb565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f614f42826143b8565b91505f8203614f5457614f53614f0b565b5b600182039050919050565b5f614f69826143b8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614f9b57614f9a614f0b565b5b600182019050919050565b7f6461726b206167650000000000000000000000000000000000000000000000005f82015250565b5f614fda600883614318565b9150614fe582614fa6565b602082019050919050565b5f6020820190508181035f83015261500781614fce565b9050919050565b7f636f756e74206d696e00000000000000000000000000000000000000000000005f82015250565b5f615042600983614318565b915061504d8261500e565b602082019050919050565b5f6020820190508181035f83015261506f81615036565b9050919050565b7f636f756e74206d617800000000000000000000000000000000000000000000005f82015250565b5f6150aa600983614318565b91506150b582615076565b602082019050919050565b5f6020820190508181035f8301526150d78161509e565b9050919050565b7f62616c616e6365206f766572666c6f77000000000000000000000000000000005f82015250565b5f615112601083614318565b915061511d826150de565b602082019050919050565b5f6020820190508181035f83015261513f81615106565b9050919050565b7f6c617374536574746c65426c6f636b00000000000000000000000000000000005f82015250565b5f61517a600f83614318565b915061518582615146565b602082019050919050565b5f6020820190508181035f8301526151a78161516e565b9050919050565b5f8160601b9050919050565b5f6151c4826151ae565b9050919050565b5f6151d5826151ba565b9050919050565b6151ed6151e882614435565b6151cb565b82525050565b5f819050919050565b61520d615208826142dd565b6151f3565b82525050565b5f819050919050565b61522d615228826143b8565b615213565b82525050565b5f61523e82866151dc565b60148201915061524e82856151fc565b60208201915061525e828461521c565b602082019150819050949350505050565b7f646966666963756c7479000000000000000000000000000000000000000000005f82015250565b5f6152a3600a83614318565b91506152ae8261526f565b602082019050919050565b5f6020820190508181035f8301526152d081615297565b9050919050565b7f636f7374000000000000000000000000000000000000000000000000000000005f82015250565b5f61530b600483614318565b9150615316826152d7565b602082019050919050565b5f6020820190508181035f830152615338816152ff565b9050919050565b7f67617300000000000000000000000000000000000000000000000000000000005f82015250565b5f615373600383614318565b915061537e8261533f565b602082019050919050565b5f6020820190508181035f8301526153a081615367565b9050919050565b7f746f6b656e4964730000000000000000000000000000000000000000000000005f82015250565b5f6153db600883614318565b91506153e6826153a7565b602082019050919050565b5f6020820190508181035f830152615408816153cf565b9050919050565b5f81519050919050565b5f82825260208201905092915050565b5f6154338261540f565b61543d8185615419565b935061544d818560208601614328565b61545681614350565b840191505092915050565b5f6080820190506154745f830187614446565b6154816020830186614446565b61548e6040830185614525565b81810360608301526154a08184615429565b905095945050505050565b5f815190506154b9816141f1565b92915050565b5f602082840312156154d4576154d36141be565b5b5f6154e1848285016154ab565b91505092915050565b7f72656365697665720000000000000000000000000000000000000000000000005f82015250565b5f61551e600883614318565b9150615529826154ea565b602082019050919050565b5f6020820190508181035f83015261554b81615512565b9050919050565b5f61555c826143b8565b9150615567836143b8565b92508261557757615576614d67565b5b828206905092915050565b7f62616c616e6365000000000000000000000000000000000000000000000000005f82015250565b5f6155b6600783614318565b91506155c182615582565b602082019050919050565b5f6020820190508181035f8301526155e3816155aa565b9050919050565b5f6155f4826143b8565b91506155ff836143b8565b925082820390508181111561561757615616614f0b565b5b92915050565b5f6040820190506156305f8301856144d6565b61563d6020830184614525565b9392505050565b5f8151905061565281614641565b92915050565b5f806040838503121561566e5761566d6141be565b5b5f61567b85828601615644565b925050602061568c85828601614d94565b9150509250929050565b61569f81614501565b81146156a9575f80fd5b50565b5f815190506156ba81615696565b92915050565b5f602082840312156156d5576156d46141be565b5b5f6156e2848285016156ac565b91505092915050565b5f6060820190506156fe5f8301866146d8565b61570b6020830185614251565b6157186040830184614251565b949350505050565b5f67ffffffffffffffff82111561573a57615739614870565b5b61574382614350565b9050602081019050919050565b5f61576261575d84615720565b6148ce565b90508281526020810184848401111561577e5761577d61486c565b5b615789848285614328565b509392505050565b5f82601f8301126157a5576157a4614746565b5b81516157b5848260208601615750565b91505092915050565b5f602082840312156157d3576157d26141be565b5b5f82015167ffffffffffffffff8111156157f0576157ef6141c2565b5b6157fc84828501615791565b91505092915050565b7f6f776e65724f66000000000000000000000000000000000000000000000000005f82015250565b5f615839600783614318565b915061584482615805565b602082019050919050565b5f6020820190508181035f8301526158668161582d565b9050919050565b5f60049050919050565b5f81905092915050565b5f819050919050565b61589381614246565b82525050565b5f6158a4838361588a565b60208301905092915050565b5f602082019050919050565b6158c58161586d565b6158cf8184615877565b92506158da82615881565b805f5b8381101561590a5781516158f18782615899565b96506158fc836158b0565b9250506001810190506158dd565b505050505050565b5f60e0820190506159255f8301876144d6565b61593260208301866142e6565b61593f60408301856158bc565b61594c60c0830184614251565b95945050505050565b5f6020820190506159685f8301846146d8565b92915050565b7f656d7074790000000000000000000000000000000000000000000000000000005f82015250565b5f6159a2600583614318565b91506159ad8261596e565b602082019050919050565b5f6020820190508181035f8301526159cf81615996565b9050919050565b7f6d73672e76616c756500000000000000000000000000000000000000000000005f82015250565b5f615a0a600983614318565b9150615a15826159d6565b602082019050919050565b5f6020820190508181035f830152615a37816159fe565b9050919050565b5f615a48826146bb565b9150615a53836146bb565b9250828201905062ffffff811115615a6e57615a6d614f0b565b5b92915050565b5f615a7e826143b8565b9150615a89836143b8565b9250828202615a97816143b8565b91508282048414831517615aae57615aad614f0b565b5b5092915050565b5f615abf826143b8565b9150615aca836143b8565b925082615ada57615ad9614d67565b5b828204905092915050565b5f615aef826143b8565b9150615afa836143b8565b9250828201905080821115615b1257615b11614f0b565b5b92915050565b5f615b2282614279565b9150615b2d83614279565b9250828201905063ffffffff811115615b4957615b48614f0b565b5b92915050565b7f626c6f636b6564000000000000000000000000000000000000000000000000005f82015250565b5f615b83600783614318565b9150615b8e82615b4f565b602082019050919050565b5f6020820190508181035f830152615bb081615b77565b9050919050565b5f615bc182614501565b9150615bcc83614501565b9250828201905069ffffffffffffffffffff811115615bee57615bed614f0b565b5b92915050565b5f8160e01b9050919050565b5f615c0a82615bf4565b9050919050565b615c22615c1d82614279565b615c00565b82525050565b5f615c3382856151fc565b602082019150615c438284615c11565b6004820191508190509392505050565b5f615c5e82856151fc565b602082019150615c6e828461521c565b6020820191508190509392505050565b5f615c8882614501565b9150615c9383614501565b925082615ca357615ca2614d67565b5b828204905092915050565b5f615cb882614635565b9150615cc383614635565b9250828202615cd181614635565b9150808214615ce357615ce2614f0b565b5b5092915050565b5f6affffffffffffffffffffff82169050919050565b5f615d0a82615cea565b9150615d1583615cea565b925082615d2557615d24614d67565b5b828206905092915050565b5f615d3a82614501565b9150615d4583614501565b9250828202615d5381614501565b9150808214615d6557615d64614f0b565b5b5092915050565b5f61010082019050615d805f83018b6144d6565b615d8d602083018a6142e6565b615d9a6040830189614446565b615da760608301886146c9565b615db46080830187614516565b615dc160a08301866144d6565b615dce60c08301856146d8565b615ddb60e08301846144d6565b9998505050505050505050565b7f63726561746f72000000000000000000000000000000000000000000000000005f82015250565b5f615e1c600783614318565b9150615e2782615de8565b602082019050919050565b5f6020820190508181035f830152615e4981615e10565b9050919050565b5f61012082019050615e645f83018c6142e6565b615e71602083018b614516565b615e7e604083018a6146c9565b615e8b60608301896144d6565b615e986080830188614516565b615ea560a0830187614516565b615eb260c08301866144d6565b615ebf60e0830185614251565b615ecd6101008301846144d6565b9a995050505050505050505056fe446f6f6d736461793a20536574746c657273206f66207468652057617374656c616e64a264697066735822122076ca5dc20e6c4a1e6cdbf82cde1a5e6e57edce63d0979c5a810fde414b89241964736f6c6343000815003300000000000000000000000079cf8466c12ac1acb9c1bf1179ea7308cf28eb0300000597a7e03ca484679197fbc312c8120b53a983aad3362bc462536a998a380000000000000000000000000000000000000000000000000000000000003a980000000000000000000000000000000000000000000000000000000000000019000000000000000000000000000000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000001518000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000024
Deployed Bytecode
0x6080604052600436106101d7575f3560e01c806364ec8bdb11610101578063bcccb53611610094578063e00d79ef11610063578063e00d79ef146106a0578063e985e9c5146106dc578063f06d67bb14610718578063f3cb838514610748576101d7565b8063bcccb536146105e4578063c259e1cc14610620578063c87b56dd14610648578063cfa5344014610684576101d7565b80638e30c766116100d05780638e30c7661461054257806395d89b411461056a578063a22cb46514610594578063b88d4fde146105bc576101d7565b806364ec8bdb146104855780636c2b836a1461049b57806370a08231146104dc5780638da5cb5b14610518576101d7565b806313af4035116101795780633f516018116101485780633f516018146103d157806342842e0e146103f95780634e054a67146104215780636352211e14610449576101d7565b806313af40351461033b57806318160ddd1461036357806323b872dd1461038d5780632579cb6d146103b5576101d7565b8063081812fc116101b5578063081812fc1461027d578063095ea7b3146102b95780630c3f6acf146102e157806311f6dcbd14610311576101d7565b806301ffc9a7146101db5780630357f5aa1461021757806306fdde0314610253575b5f80fd5b3480156101e6575f80fd5b5061020160048036038101906101fc919061421b565b610770565b60405161020e9190614260565b60405180910390f35b348015610222575f80fd5b5061023d600480360381019061023891906142b2565b61078d565b60405161024a91906142f5565b60405180910390f35b34801561025e575f80fd5b50610267610809565b6040516102749190614398565b60405180910390f35b348015610288575f80fd5b506102a3600480360381019061029e91906143eb565b610825565b6040516102b09190614455565b60405180910390f35b3480156102c4575f80fd5b506102df60048036038101906102da9190614498565b6108a6565b005b3480156102ec575f80fd5b506102f5610a64565b6040516103089796959493929190614534565b60405180910390f35b34801561031c575f80fd5b50610325610afc565b6040516103329190614260565b60405180910390f35b348015610346575f80fd5b50610361600480360381019061035c91906145a1565b610cc2565b005b34801561036e575f80fd5b50610377610d0d565b60405161038491906145cc565b60405180910390f35b348015610398575f80fd5b506103b360048036038101906103ae91906145e5565b610d39565b005b6103cf60048036038101906103ca919061466b565b61128b565b005b3480156103dc575f80fd5b506103f760048036038101906103f291906145a1565b611876565b005b348015610404575f80fd5b5061041f600480360381019061041a91906145e5565b6118c1565b005b34801561042c575f80fd5b50610447600480360381019061044291906145a1565b6118e0565b005b348015610454575f80fd5b5061046f600480360381019061046a91906143eb565b61192b565b60405161047c9190614455565b60405180910390f35b348015610490575f80fd5b506104996119ac565b005b3480156104a6575f80fd5b506104c160048036038101906104bc91906142b2565b611a3e565b6040516104d3969594939291906146e7565b60405180910390f35b3480156104e7575f80fd5b5061050260048036038101906104fd91906145a1565b611ad6565b60405161050f91906145cc565b60405180910390f35b348015610523575f80fd5b5061052c611aeb565b6040516105399190614455565b60405180910390f35b34801561054d575f80fd5b50610568600480360381019061056391906147a7565b611b10565b005b348015610575575f80fd5b5061057e611bf1565b60405161058b9190614398565b60405180910390f35b34801561059f575f80fd5b506105ba60048036038101906105b5919061482e565b611c2a565b005b3480156105c7575f80fd5b506105e260048036038101906105dd9190614994565b611d2b565b005b3480156105ef575f80fd5b5061060a600480360381019061060591906143eb565b611e5a565b6040516106179190614a14565b60405180910390f35b34801561062b575f80fd5b5061064660048036038101906106419190614a2d565b611e91565b005b348015610653575f80fd5b5061066e600480360381019061066991906143eb565b6124ba565b60405161067b9190614398565b60405180910390f35b61069e60048036038101906106999190614b19565b612569565b005b3480156106ab575f80fd5b506106c660048036038101906106c19190614b81565b6129d0565b6040516106d391906145cc565b60405180910390f35b3480156106e7575f80fd5b5061070260048036038101906106fd9190614bbf565b612a2f565b60405161070f9190614260565b60405180910390f35b348015610723575f80fd5b5061072c612a59565b60405161073f9796959493929190614bfd565b60405180910390f35b348015610753575f80fd5b5061076e600480360381019061076991906145a1565b612cdd565b005b600b602052805f5260405f205f915054906101000a900460ff1681565b5f61079d8263ffffffff16612d28565b6107dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d390614cb4565b60405180910390fd5b60036001830363ffffffff16815481106107f9576107f8614cd2565b5b905f5260205f2001549050919050565b604051806060016040528060238152602001615edc6023913981565b5f61082f82612d28565b61086e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086590614cb4565b60405180910390fd5b60075f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6108af82612d90565b5f6108b98261192b565b90503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480610976575060085f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6109b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ac90614d49565b60405180910390fd5b818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a48260075f8481526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b5f805f805f805f80600a9054906101000a900460ff165f60029054906101000a900463ffffffff165f8054906101000a900461ffff16600260149054906101000a900469ffffffffffffffffffff1660025f9054906101000a900469ffffffffffffffffffff16600160149054906101000a900469ffffffffffffffffffff1643965096509650965096509650965090919293949596565b5f8060038054905090505f8060069054906101000a900463ffffffff1663ffffffff1660048054905083030390505f60055f8463ffffffff1663ffffffff1681526020019081526020015f205f015f9054906101000a900463ffffffff1663ffffffff1690505f600160055f8663ffffffff1663ffffffff1681526020019081526020015f205f0160049054906101000a900462ffffff160162ffffff1690507f00000000000000000000000000000000000000000000000000000000000000247f0000000000000000000000000000000000000000000000000000000000015180037f00000000000000000000000000000000000000000000000000000000000000088263ffffffff16021015610c7357600c7f00000000000000000000000000000000000000000000000000000000000000088263ffffffff16027f00000000000000000000000000000000000000000000000000000000000151800381610c6957610c68614d67565b5b0482019150610caa565b600c7f000000000000000000000000000000000000000000000000000000000000002481610ca457610ca3614d67565b5b04820191505b600183118015610cb957508143115b94505050505090565b610cca612eb0565b805f600b6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f8060069054906101000a900463ffffffff1663ffffffff166004805490506003805490500303905090565b5f610d438261192b565b9050610d4d610afc565b15610e2b577f00000000000000000000000079cf8466c12ac1acb9c1bf1179ea7308cf28eb0373ffffffffffffffffffffffffffffffffffffffff166382657a85836040518263ffffffff1660e01b8152600401610dab9190614a14565b602060405180830381865afa158015610dc6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dea9190614da8565b15610e2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2190614e1d565b60405180910390fd5b5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614610e6857610e6733612d90565b5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480610efd57503373ffffffffffffffffffffffffffffffffffffffff1660075f8481526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80610f89575060085f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b610fc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbf90614d49565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611036576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102d90614e85565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109b90614eed565b60405180910390fd5b818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48260095f8481526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815461119790614f38565b9190508190555060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f81546111e790614f5f565b919050819055505f73ffffffffffffffffffffffffffffffffffffffff1660075f8481526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112855760075f8381526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b50505050565b611293610afc565b156112d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ca90614ff0565b60405180910390fd5b5f8260ff1603611318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130f90615058565b60405180910390fd5b60148260ff16111561135f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611356906150c0565b60405180910390fd5b69ffffffffffffffffffff801647106113ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a490615128565b60405180910390fd5b5f60016003805490500190505f600a9054906101000a900460ff1615611435575f8081819054906101000a900461ffff1660010191906101000a81548161ffff021916908361ffff160217905550805f60026101000a81548163ffffffff021916908363ffffffff1602179055505f80600a6101000a81548160ff0219169083151502179055505b5f8060069054906101000a900463ffffffff1663ffffffff16600480549050600380549050030390505f817f0000000000000000000000000000000000000000000000000000000000003a98027f00000597a7e03ca484679197fbc312c8120b53a983aad3362bc462536a998a380390505f60055f60038054905063ffffffff1663ffffffff1681526020019081526020015f205f015f9054906101000a900463ffffffff1663ffffffff169050804311611525576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151c90615190565b60405180910390fd5b5f81430390507f00000000000000000000000000000000000000000000000000000000000000198110156115ab57807f0000000000000000000000000000000000000000000000000000000000000019037f000000000000000000000000000000000000000000000000000000000000000f0283816115a7576115a6614d67565b5b0492505b5f336003600160038054905003815481106115c9576115c8614cd2565b5b905f5260205f2001548a6040516020016115e593929190615233565b60405160208183030381529060405280519060200120905083815f1c10611641576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611638906152b9565b60405180910390fd5b5f7f00000000000000000000000000000000000000000000000000000000000000247f0000000000000000000000000000000000000000000000000000000000015180037f00000000000000000000000000000000000000000000000000000000000000088a60ff16880102101561171757600c7f00000000000000000000000000000000000000000000000000000000000000088a60ff168801027f0000000000000000000000000000000000000000000000000000000000015180038161170d5761170c614d67565b5b044301905061174e565b600c7f00000000000000000000000000000000000000000000000000000000000000248161174857611747614d67565b5b04430190505b5f805f90505b8a60ff1663ffffffff168163ffffffff16101561179257611783818a0185838463ffffffff168c01878f612f41565b82019150806001019050611754565b50803410156117d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117cd90615321565b60405180910390fd5b6127105a1161181a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181190615389565b60405180910390fd5b80341115611869573373ffffffffffffffffffffffffffffffffffffffff166108fc82340390811502906040515f60405180830381858888f19350505050158015611867573d5f803e3d5ffd5b505b5050505050505050505050565b61187e613399565b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6118db83838360405180602001604052805f815250611d2b565b505050565b6118e8612eb0565b80600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f61193582612d28565b611974576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196b90614cb4565b60405180910390fd5b60095f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6119b4613399565b5f600260149054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff169050600260146101000a81549069ffffffffffffffffffff02191690553373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611a3a573d5f803e3d5ffd5b5050565b6005602052805f5260405f205f91509050805f015f9054906101000a900463ffffffff1690805f0160049054906101000a900462ffffff1690805f0160079054906101000a900461ffff1690805f0160099054906101000a900460ff1690805f01600a9054906101000a900469ffffffffffffffffffff1690805f0160149054906101000a900469ffffffffffffffffffff16905086565b6006602052805f5260405f205f915090505481565b5f600b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8383905003611b55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4c906153f1565b60405180910390fd5b5f805f90505b84849050811015611ba657611b97858583818110611b7c57611b7b614cd2565b5b9050602002016020810190611b9191906142b2565b8461342a565b82019150806001019050611b5b565b503373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611bea573d5f803e3d5ffd5b5050505050565b6040518060400160405280600a81526020017f534554544c454d454e540000000000000000000000000000000000000000000081525081565b611c3382612d90565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611c909190614260565b60405180910390a38060085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b611d36848484610d39565b5f833b90505f8163ffffffff1614611e53575f84905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168173ffffffffffffffffffffffffffffffffffffffff1663150b7a02338988886040518563ffffffff1660e01b8152600401611db29493929190615461565b6020604051808303815f875af1158015611dce573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611df291906154bf565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4890615534565b60405180910390fd5b505b5050505050565b60048181548110611e69575f80fd5b905f5260205f209060089182820401919006600402915054906101000a900463ffffffff1681565b611e99610afc565b611ed8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ecf90614ff0565b60405180910390fd5b611ee78263ffffffff16612d28565b611f26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1d90614cb4565b60405180910390fd5b5f604b43611f349190615552565b90506019811015611fc057611f4e8363ffffffff1661192b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611fbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb290614e85565b60405180910390fd5b61204a565b6032811015612049575f60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205403612048576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203f906155cc565b60405180910390fd5b5b5b5f805f60038054905090505f8060069054906101000a900463ffffffff1663ffffffff166004805490508361207f91906155ea565b61208991906155ea565b90507f00000000000000000000000079cf8466c12ac1acb9c1bf1179ea7308cf28eb0373ffffffffffffffffffffffffffffffffffffffff1663a54f604588836040518363ffffffff1660e01b81526004016120e692919061561d565b60408051808303815f875af1158015612101573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121259190615658565b80945081955050505f808415612412575f64e8d4a510006102006affffffffffffffffffffff16600960055f8e63ffffffff1663ffffffff1681526020019081526020015f205f0160099054906101000a900460ff160260ff166a01f4641908c320f0501e0a6affffffffffffffffffffff16901c6affffffffffffffffffffff16816121b5576121b4614d67565b5b060290505f8060029054906101000a900463ffffffff1663ffffffff168b63ffffffff16106121ee578a63ffffffff168603905061220e565b60015f60029054906101000a900463ffffffff1663ffffffff1687030190505b5f8282029050661c6bf5263400007f00000000000000000000000079cf8466c12ac1acb9c1bf1179ea7308cf28eb0373ffffffffffffffffffffffffffffffffffffffff16633d7606d28e6040518263ffffffff1660e01b81526004016122759190614a14565b602060405180830381865afa158015612290573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122b491906156c0565b0260055f8e63ffffffff1663ffffffff1681526020019081526020015f205f0160149054906101000a900469ffffffffffffffffffff1660055f8f63ffffffff1663ffffffff1681526020019081526020015f205f01600a9054906101000a900469ffffffffffffffffffff1660028469ffffffffffffffffffff168161233e5761233d614d67565b5b0401010160025f8282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555060048c908060018154018082558091505060019003905f5260205f2090600891828204019190066004029091909190916101000a81548163ffffffff021916908363ffffffff1602179055506123e38c63ffffffff16613c2c565b8560019003955060018603612400576123fb8b613d3d565b600194505b505050662386f26fc10000905061241d565b661c6bf52634000090505b8863ffffffff167fb42dc0fdbad9c34e94c321dcafde1913063d2654671596956fcf873387ee0d37878785604051612457939291906156eb565b60405180910390a23373ffffffffffffffffffffffffffffffffffffffff166108fc8269ffffffffffffffffffff1690811502906040515f60405180830381858888f193505050501580156124ae573d5f803e3d5ffd5b50505050505050505050565b60606124c58261192b565b50600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c87b56dd836040518263ffffffff1660e01b815260040161252091906145cc565b5f60405180830381865afa15801561253a573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061256291906157be565b9050919050565b6125788263ffffffff1661192b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146125e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125dc9061584f565b60405180910390fd5b69ffffffffffffffffffff80164710612633576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262a90615128565b60405180910390fd5b5f7f00000000000000000000000079cf8466c12ac1acb9c1bf1179ea7308cf28eb0373ffffffffffffffffffffffffffffffffffffffff16632a56946b8461267a8661078d565b85612683610afc565b6040518563ffffffff1660e01b81526004016126a29493929190615912565b6020604051808303815f875af11580156126be573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126e291906156c0565b90505f805f90505b60048110156127665783816004811061270657612705614cd2565b5b60200201511561275b57661c6bf526340000820191508463ffffffff167f2f3508f35cf9b0ed68f9abba5458799a360ddf42fcd12c6f41fd4860ba71631f826040516127529190615955565b60405180910390a25b8060010190506126ea565b505f8169ffffffffffffffffffff16036127b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ac906159b8565b60405180910390fd5b600469ffffffffffffffffffff166002600a9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff16816127f6576127f5614d67565b5b04820291508181019050348169ffffffffffffffffffff16111561284f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284690615a20565b60405180910390fd5b6064600f830269ffffffffffffffffffff168161286f5761286e614d67565b5b04600260148282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555060646055830269ffffffffffffffffffff16816128d7576128d6614d67565b5b04600160148282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055506127105a11612963576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295a90615389565b60405180910390fd5b8069ffffffffffffffffffff163411156129ca573373ffffffffffffffffffffffffffffffffffffffff166108fc8269ffffffffffffffffffff16340390811502906040515f60405180830381858888f193505050501580156129c8573d5f803e3d5ffd5b505b50505050565b5f8060026103e884816129e6576129e5614d67565b5b0401905060088111156129f857600890505b6127106001820160026064875f1c81612a1457612a13614d67565b5b060a0281612a2557612a24614d67565b5b0491505092915050565b6008602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b5f805f805f805f8060055f60038054905063ffffffff1663ffffffff1681526020019081526020015f205f015f9054906101000a900463ffffffff1663ffffffff1690505f600160055f60038054905063ffffffff1663ffffffff1681526020019081526020015f205f0160049054906101000a900462ffffff16612ade9190615a3e565b62ffffff1690507f00000000000000000000000000000000000000000000000000000000000000247f0000000000000000000000000000000000000000000000000000000000015180612b3191906155ea565b7f00000000000000000000000000000000000000000000000000000000000000088263ffffffff16612b639190615a74565b1015612be457600c7f00000000000000000000000000000000000000000000000000000000000000088263ffffffff16612b9d9190615a74565b7f0000000000000000000000000000000000000000000000000000000000015180612bc891906155ea565b612bd29190615ab5565b82612bdd9190615ae5565b9150612c1f565b600c7f0000000000000000000000000000000000000000000000000000000000000024612c119190615ab5565b82612c1c9190615ae5565b91505b60036001600380549050612c3391906155ea565b81548110612c4457612c43614cd2565b5b905f5260205f2001546003805490505f60069054906101000a900463ffffffff16600480549050612c759190615b18565b60055f60038054905063ffffffff1663ffffffff1681526020019081526020015f205f015f9054906101000a900463ffffffff16856002600a9054906101000a900469ffffffffffffffffffff16439850985098509850985098509850505090919293949596565b612ce5612eb0565b80600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f8073ffffffffffffffffffffffffffffffffffffffff1660095f8481526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b5f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163b1115612ead57600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ba06ca4826040518263ffffffff1660e01b8152600401612e2a9190614455565b602060405180830381865afa925050508015612e6457506040513d601f19601f82011682018060405250810190612e619190614da8565b60015b15612eac578015612eaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ea190615b99565b60405180910390fd5b505b5b50565b5f600b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612f3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3690614e85565b60405180910390fd5b565b5f662386f26fc1000069ffffffffffffffffffff166002600a9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff16612f859190615ae5565b90505f6064600f69ffffffffffffffffffff1683612fa39190615a74565b612fad9190615ab5565b905080600260148282829054906101000a900469ffffffffffffffffffff16612fd69190615bb7565b92506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055508069ffffffffffffffffffff16826130189190615ae5565b91505f878760405160200161302e929190615c28565b6040516020818303038152906040528051906020012090505f61305182886129d0565b90508144604051602001613066929190615c53565b6040516020818303038152906040528051906020012091506040518060c001604052804363ffffffff1681526020018862ffffff1681526020015f8054906101000a900461ffff1661ffff1681526020018260ff1681526020015f69ffffffffffffffffffff1681526020015f69ffffffffffffffffffff1681525060055f8c63ffffffff1663ffffffff1681526020019081526020015f205f820151815f015f6101000a81548163ffffffff021916908363ffffffff1602179055506020820151815f0160046101000a81548162ffffff021916908362ffffff1602179055506040820151815f0160076101000a81548161ffff021916908361ffff1602179055506060820151815f0160096101000a81548160ff021916908360ff1602179055506080820151815f01600a6101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555060a0820151815f0160146101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550905050600280600a9054906101000a900469ffffffffffffffffffff166132149190615c7e565b60025f8282829054906101000a900469ffffffffffffffffffff166132399190615bb7565b92506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555064e8d4a510006102006009836132799190615cae565b60ff166a01f4641908c320f0501e0a6affffffffffffffffffffff16901c6132a19190615d00565b6132ab9190615d30565b6002600a8282829054906101000a900469ffffffffffffffffffff166132d19190615bb7565b92506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555061330c8a63ffffffff163384614096565b8473ffffffffffffffffffffffffffffffffffffffff167f444ecbf9f5083183eadb792d6e970912963d46d7530cc1429557b40c8eee836e8b843360018c6133549190615ae5565b6002600a9054906101000a900469ffffffffffffffffffff168c8843604051613384989796959493929190615d6c565b60405180910390a25050509695505050505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161341f90615e32565b60405180910390fd5b565b5f61343a8363ffffffff1661192b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146134a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161349e9061584f565b60405180910390fd5b5f60036001850363ffffffff16815481106134c5576134c4614cd2565b5b905f5260205f20015490505f8060029054906101000a900463ffffffff1663ffffffff168563ffffffff161061350a578463ffffffff1660038054905003905061352f565b60015f60029054906101000a900463ffffffff1663ffffffff16600380549050030190505b5f80600a9054906101000a900460ff166135c95764e8d4a510006102006affffffffffffffffffffff16600960055f8a63ffffffff1663ffffffff1681526020019081526020015f205f0160099054906101000a900460ff160260ff166a01f4641908c320f0501e0a6affffffffffffffffffffff16901c6affffffffffffffffffffff16816135c2576135c1614d67565b5b0683020290505b5f6135d2610afc565b90508015613875577f00000000000000000000000079cf8466c12ac1acb9c1bf1179ea7308cf28eb0373ffffffffffffffffffffffffffffffffffffffff166382657a85886040518263ffffffff1660e01b81526004016136339190614a14565b602060405180830381865afa15801561364e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136729190614da8565b156136b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136a990614e1d565b60405180910390fd5b60028269ffffffffffffffffffff16816136cf576136ce614d67565b5b0491505f8060025f8054906101000a900461ffff1661ffff1611156136fb578160010191508060010190505b60015f60029054906101000a900463ffffffff1663ffffffff16035f60069054906101000a900463ffffffff1663ffffffff1660048054905001038201915060015f60029054906101000a900463ffffffff1663ffffffff160360038054905003810190505f6409502f90008269ffffffffffffffffffff16846406fc23ac000269ffffffffffffffffffff168161379657613795614d67565b5b046402540be400015f60069054906101000a900463ffffffff1663ffffffff16600480549050600380549050030369ffffffffffffffffffff1660025f9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff168161380257613801614d67565b5b040269ffffffffffffffffffff168161381e5761381d614d67565b5b04905080850194508060025f8282829054906101000a900469ffffffffffffffffffff160392506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055505050506139b6565b5f600a9054906101000a900460ff166139b55760028269ffffffffffffffffffff16816138a5576138a4614d67565b5b0460025f8282829054906101000a900469ffffffffffffffffffff160392506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555064e8d4a510006102006affffffffffffffffffffff16600960055f8b63ffffffff1663ffffffff1681526020019081526020015f205f0160099054906101000a900460ff160260ff166a01f4641908c320f0501e0a6affffffffffffffffffffff16901c6affffffffffffffffffffff168161396b5761396a614d67565b5b06026002600a8282829054906101000a900469ffffffffffffffffffff160392506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055505b5b5f600681819054906101000a900463ffffffff1660010191906101000a81548163ffffffff021916908363ffffffff16021790555060055f8863ffffffff1663ffffffff1681526020019081526020015f205f0160149054906101000a900469ffffffffffffffffffff1660055f8963ffffffff1663ffffffff1681526020019081526020015f205f01600a9054906101000a900469ffffffffffffffffffff16661c6bf5263400007f00000000000000000000000079cf8466c12ac1acb9c1bf1179ea7308cf28eb0373ffffffffffffffffffffffffffffffffffffffff16633d7606d28b6040518263ffffffff1660e01b8152600401613ab89190614a14565b602060405180830381865afa158015613ad3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613af791906156c0565b02662386f26fc1000001010182019150613b168763ffffffff16613c2c565b8015613b545760015f60069054906101000a900463ffffffff1663ffffffff16600480549050600380549050030303613b5357613b5286613d3d565b5b5b8663ffffffff167f043a95ff614f8dc4d9248f78dc6c860496987da7edc830f8189494f7eff4f6b0858560055f8c63ffffffff1663ffffffff1681526020019081526020015f205f0160049054906101000a900462ffffff165f60069054906101000a900463ffffffff16600480549050016002600a9054906101000a900469ffffffffffffffffffff16886003805490505f600a9054906101000a900460ff1643604051613c0b99989796959493929190615e50565b60405180910390a28169ffffffffffffffffffff1694505050505092915050565b5f60095f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060065f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8154600190039190508190555060095f8381526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055815f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b613d4c8163ffffffff16612d28565b613d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d8290614cb4565b60405180910390fd5b60025f9054906101000a900469ffffffffffffffffffff1660055f8363ffffffff1663ffffffff1681526020019081526020015f205f01600a8282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550600160149054906101000a900469ffffffffffffffffffff1660055f8363ffffffff1663ffffffff1681526020019081526020015f205f0160148282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055505f64e8d4a510006102006affffffffffffffffffffff16600960055f8663ffffffff1663ffffffff1681526020019081526020015f205f0160099054906101000a900460ff160260ff166a01f4641908c320f0501e0a6affffffffffffffffffffff16901c6affffffffffffffffffffff1681613f0457613f03614d67565b5b060290505f8060029054906101000a900463ffffffff1663ffffffff168363ffffffff161115613f43578263ffffffff16600380549050039050613f68565b60015f60029054906101000a900463ffffffff1663ffffffff16600380549050030190505b5f828202905060028169ffffffffffffffffffff1681613f8b57613f8a614d67565b5b0460055f8663ffffffff1663ffffffff1681526020019081526020015f205f01600a8282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055505f60025f6101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055505f600160146101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550826002600a6101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555060015f600a6101000a81548160ff02191690831515021790555050505050565b3360095f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815460010191905081905550600381908060018154018082558091505060019003905f5260205f20015f9091909190915055828273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6141fa816141c6565b8114614204575f80fd5b50565b5f81359050614215816141f1565b92915050565b5f602082840312156142305761422f6141be565b5b5f61423d84828501614207565b91505092915050565b5f8115159050919050565b61425a81614246565b82525050565b5f6020820190506142735f830184614251565b92915050565b5f63ffffffff82169050919050565b61429181614279565b811461429b575f80fd5b50565b5f813590506142ac81614288565b92915050565b5f602082840312156142c7576142c66141be565b5b5f6142d48482850161429e565b91505092915050565b5f819050919050565b6142ef816142dd565b82525050565b5f6020820190506143085f8301846142e6565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561434557808201518184015260208101905061432a565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61436a8261430e565b6143748185614318565b9350614384818560208601614328565b61438d81614350565b840191505092915050565b5f6020820190508181035f8301526143b08184614360565b905092915050565b5f819050919050565b6143ca816143b8565b81146143d4575f80fd5b50565b5f813590506143e5816143c1565b92915050565b5f60208284031215614400576143ff6141be565b5b5f61440d848285016143d7565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61443f82614416565b9050919050565b61444f81614435565b82525050565b5f6020820190506144685f830184614446565b92915050565b61447781614435565b8114614481575f80fd5b50565b5f813590506144928161446e565b92915050565b5f80604083850312156144ae576144ad6141be565b5b5f6144bb85828601614484565b92505060206144cc858286016143d7565b9150509250929050565b6144df81614279565b82525050565b5f61ffff82169050919050565b6144fb816144e5565b82525050565b5f69ffffffffffffffffffff82169050919050565b61451f81614501565b82525050565b61452e816143b8565b82525050565b5f60e0820190506145475f83018a614251565b61455460208301896144d6565b61456160408301886144f2565b61456e6060830187614516565b61457b6080830186614516565b61458860a0830185614516565b61459560c0830184614525565b98975050505050505050565b5f602082840312156145b6576145b56141be565b5b5f6145c384828501614484565b91505092915050565b5f6020820190506145df5f830184614525565b92915050565b5f805f606084860312156145fc576145fb6141be565b5b5f61460986828701614484565b935050602061461a86828701614484565b925050604061462b868287016143d7565b9150509250925092565b5f60ff82169050919050565b61464a81614635565b8114614654575f80fd5b50565b5f8135905061466581614641565b92915050565b5f805f60608486031215614682576146816141be565b5b5f61468f868287016143d7565b93505060206146a086828701614657565b92505060406146b186828701614484565b9150509250925092565b5f62ffffff82169050919050565b6146d2816146bb565b82525050565b6146e181614635565b82525050565b5f60c0820190506146fa5f8301896144d6565b61470760208301886146c9565b61471460408301876144f2565b61472160608301866146d8565b61472e6080830185614516565b61473b60a0830184614516565b979650505050505050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261476757614766614746565b5b8235905067ffffffffffffffff8111156147845761478361474a565b5b6020830191508360208202830111156147a05761479f61474e565b5b9250929050565b5f805f604084860312156147be576147bd6141be565b5b5f84013567ffffffffffffffff8111156147db576147da6141c2565b5b6147e786828701614752565b935093505060206147fa8682870161429e565b9150509250925092565b61480d81614246565b8114614817575f80fd5b50565b5f8135905061482881614804565b92915050565b5f8060408385031215614844576148436141be565b5b5f61485185828601614484565b92505060206148628582860161481a565b9150509250929050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6148a682614350565b810181811067ffffffffffffffff821117156148c5576148c4614870565b5b80604052505050565b5f6148d76141b5565b90506148e3828261489d565b919050565b5f67ffffffffffffffff82111561490257614901614870565b5b61490b82614350565b9050602081019050919050565b828183375f83830152505050565b5f614938614933846148e8565b6148ce565b9050828152602081018484840111156149545761495361486c565b5b61495f848285614918565b509392505050565b5f82601f83011261497b5761497a614746565b5b813561498b848260208601614926565b91505092915050565b5f805f80608085870312156149ac576149ab6141be565b5b5f6149b987828801614484565b94505060206149ca87828801614484565b93505060406149db878288016143d7565b925050606085013567ffffffffffffffff8111156149fc576149fb6141c2565b5b614a0887828801614967565b91505092959194509250565b5f602082019050614a275f8301846144d6565b92915050565b5f8060408385031215614a4357614a426141be565b5b5f614a508582860161429e565b9250506020614a618582860161429e565b9150509250929050565b5f67ffffffffffffffff821115614a8557614a84614870565b5b602082029050919050565b5f614aa2614a9d84614a6b565b6148ce565b90508060208402830185811115614abc57614abb61474e565b5b835b81811015614ae55780614ad1888261481a565b845260208401935050602081019050614abe565b5050509392505050565b5f82601f830112614b0357614b02614746565b5b6004614b10848285614a90565b91505092915050565b5f8060a08385031215614b2f57614b2e6141be565b5b5f614b3c8582860161429e565b9250506020614b4d85828601614aef565b9150509250929050565b614b60816142dd565b8114614b6a575f80fd5b50565b5f81359050614b7b81614b57565b92915050565b5f8060408385031215614b9757614b966141be565b5b5f614ba485828601614b6d565b9250506020614bb5858286016143d7565b9150509250929050565b5f8060408385031215614bd557614bd46141be565b5b5f614be285828601614484565b9250506020614bf385828601614484565b9150509250929050565b5f60e082019050614c105f83018a6142e6565b614c1d60208301896144d6565b614c2a60408301886144d6565b614c3760608301876144d6565b614c4460808301866144d6565b614c5160a0830185614516565b614c5e60c0830184614525565b98975050505050505050565b7f696e76616c6964000000000000000000000000000000000000000000000000005f82015250565b5f614c9e600783614318565b9150614ca982614c6a565b602082019050919050565b5f6020820190508181035f830152614ccb81614c92565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f7065726d697373696f6e000000000000000000000000000000000000000000005f82015250565b5f614d33600a83614318565b9150614d3e82614cff565b602082019050919050565b5f6020820190508181035f830152614d6081614d27565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f81519050614da281614804565b92915050565b5f60208284031215614dbd57614dbc6141be565b5b5f614dca84828501614d94565b91505092915050565b7f76756c6e657261626c65000000000000000000000000000000000000000000005f82015250565b5f614e07600a83614318565b9150614e1282614dd3565b602082019050919050565b5f6020820190508181035f830152614e3481614dfb565b9050919050565b7f6f776e65720000000000000000000000000000000000000000000000000000005f82015250565b5f614e6f600583614318565b9150614e7a82614e3b565b602082019050919050565b5f6020820190508181035f830152614e9c81614e63565b9050919050565b7f7a65726f000000000000000000000000000000000000000000000000000000005f82015250565b5f614ed7600483614318565b9150614ee282614ea3565b602082019050919050565b5f6020820190508181035f830152614f0481614ecb565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f614f42826143b8565b91505f8203614f5457614f53614f0b565b5b600182039050919050565b5f614f69826143b8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614f9b57614f9a614f0b565b5b600182019050919050565b7f6461726b206167650000000000000000000000000000000000000000000000005f82015250565b5f614fda600883614318565b9150614fe582614fa6565b602082019050919050565b5f6020820190508181035f83015261500781614fce565b9050919050565b7f636f756e74206d696e00000000000000000000000000000000000000000000005f82015250565b5f615042600983614318565b915061504d8261500e565b602082019050919050565b5f6020820190508181035f83015261506f81615036565b9050919050565b7f636f756e74206d617800000000000000000000000000000000000000000000005f82015250565b5f6150aa600983614318565b91506150b582615076565b602082019050919050565b5f6020820190508181035f8301526150d78161509e565b9050919050565b7f62616c616e6365206f766572666c6f77000000000000000000000000000000005f82015250565b5f615112601083614318565b915061511d826150de565b602082019050919050565b5f6020820190508181035f83015261513f81615106565b9050919050565b7f6c617374536574746c65426c6f636b00000000000000000000000000000000005f82015250565b5f61517a600f83614318565b915061518582615146565b602082019050919050565b5f6020820190508181035f8301526151a78161516e565b9050919050565b5f8160601b9050919050565b5f6151c4826151ae565b9050919050565b5f6151d5826151ba565b9050919050565b6151ed6151e882614435565b6151cb565b82525050565b5f819050919050565b61520d615208826142dd565b6151f3565b82525050565b5f819050919050565b61522d615228826143b8565b615213565b82525050565b5f61523e82866151dc565b60148201915061524e82856151fc565b60208201915061525e828461521c565b602082019150819050949350505050565b7f646966666963756c7479000000000000000000000000000000000000000000005f82015250565b5f6152a3600a83614318565b91506152ae8261526f565b602082019050919050565b5f6020820190508181035f8301526152d081615297565b9050919050565b7f636f7374000000000000000000000000000000000000000000000000000000005f82015250565b5f61530b600483614318565b9150615316826152d7565b602082019050919050565b5f6020820190508181035f830152615338816152ff565b9050919050565b7f67617300000000000000000000000000000000000000000000000000000000005f82015250565b5f615373600383614318565b915061537e8261533f565b602082019050919050565b5f6020820190508181035f8301526153a081615367565b9050919050565b7f746f6b656e4964730000000000000000000000000000000000000000000000005f82015250565b5f6153db600883614318565b91506153e6826153a7565b602082019050919050565b5f6020820190508181035f830152615408816153cf565b9050919050565b5f81519050919050565b5f82825260208201905092915050565b5f6154338261540f565b61543d8185615419565b935061544d818560208601614328565b61545681614350565b840191505092915050565b5f6080820190506154745f830187614446565b6154816020830186614446565b61548e6040830185614525565b81810360608301526154a08184615429565b905095945050505050565b5f815190506154b9816141f1565b92915050565b5f602082840312156154d4576154d36141be565b5b5f6154e1848285016154ab565b91505092915050565b7f72656365697665720000000000000000000000000000000000000000000000005f82015250565b5f61551e600883614318565b9150615529826154ea565b602082019050919050565b5f6020820190508181035f83015261554b81615512565b9050919050565b5f61555c826143b8565b9150615567836143b8565b92508261557757615576614d67565b5b828206905092915050565b7f62616c616e6365000000000000000000000000000000000000000000000000005f82015250565b5f6155b6600783614318565b91506155c182615582565b602082019050919050565b5f6020820190508181035f8301526155e3816155aa565b9050919050565b5f6155f4826143b8565b91506155ff836143b8565b925082820390508181111561561757615616614f0b565b5b92915050565b5f6040820190506156305f8301856144d6565b61563d6020830184614525565b9392505050565b5f8151905061565281614641565b92915050565b5f806040838503121561566e5761566d6141be565b5b5f61567b85828601615644565b925050602061568c85828601614d94565b9150509250929050565b61569f81614501565b81146156a9575f80fd5b50565b5f815190506156ba81615696565b92915050565b5f602082840312156156d5576156d46141be565b5b5f6156e2848285016156ac565b91505092915050565b5f6060820190506156fe5f8301866146d8565b61570b6020830185614251565b6157186040830184614251565b949350505050565b5f67ffffffffffffffff82111561573a57615739614870565b5b61574382614350565b9050602081019050919050565b5f61576261575d84615720565b6148ce565b90508281526020810184848401111561577e5761577d61486c565b5b615789848285614328565b509392505050565b5f82601f8301126157a5576157a4614746565b5b81516157b5848260208601615750565b91505092915050565b5f602082840312156157d3576157d26141be565b5b5f82015167ffffffffffffffff8111156157f0576157ef6141c2565b5b6157fc84828501615791565b91505092915050565b7f6f776e65724f66000000000000000000000000000000000000000000000000005f82015250565b5f615839600783614318565b915061584482615805565b602082019050919050565b5f6020820190508181035f8301526158668161582d565b9050919050565b5f60049050919050565b5f81905092915050565b5f819050919050565b61589381614246565b82525050565b5f6158a4838361588a565b60208301905092915050565b5f602082019050919050565b6158c58161586d565b6158cf8184615877565b92506158da82615881565b805f5b8381101561590a5781516158f18782615899565b96506158fc836158b0565b9250506001810190506158dd565b505050505050565b5f60e0820190506159255f8301876144d6565b61593260208301866142e6565b61593f60408301856158bc565b61594c60c0830184614251565b95945050505050565b5f6020820190506159685f8301846146d8565b92915050565b7f656d7074790000000000000000000000000000000000000000000000000000005f82015250565b5f6159a2600583614318565b91506159ad8261596e565b602082019050919050565b5f6020820190508181035f8301526159cf81615996565b9050919050565b7f6d73672e76616c756500000000000000000000000000000000000000000000005f82015250565b5f615a0a600983614318565b9150615a15826159d6565b602082019050919050565b5f6020820190508181035f830152615a37816159fe565b9050919050565b5f615a48826146bb565b9150615a53836146bb565b9250828201905062ffffff811115615a6e57615a6d614f0b565b5b92915050565b5f615a7e826143b8565b9150615a89836143b8565b9250828202615a97816143b8565b91508282048414831517615aae57615aad614f0b565b5b5092915050565b5f615abf826143b8565b9150615aca836143b8565b925082615ada57615ad9614d67565b5b828204905092915050565b5f615aef826143b8565b9150615afa836143b8565b9250828201905080821115615b1257615b11614f0b565b5b92915050565b5f615b2282614279565b9150615b2d83614279565b9250828201905063ffffffff811115615b4957615b48614f0b565b5b92915050565b7f626c6f636b6564000000000000000000000000000000000000000000000000005f82015250565b5f615b83600783614318565b9150615b8e82615b4f565b602082019050919050565b5f6020820190508181035f830152615bb081615b77565b9050919050565b5f615bc182614501565b9150615bcc83614501565b9250828201905069ffffffffffffffffffff811115615bee57615bed614f0b565b5b92915050565b5f8160e01b9050919050565b5f615c0a82615bf4565b9050919050565b615c22615c1d82614279565b615c00565b82525050565b5f615c3382856151fc565b602082019150615c438284615c11565b6004820191508190509392505050565b5f615c5e82856151fc565b602082019150615c6e828461521c565b6020820191508190509392505050565b5f615c8882614501565b9150615c9383614501565b925082615ca357615ca2614d67565b5b828204905092915050565b5f615cb882614635565b9150615cc383614635565b9250828202615cd181614635565b9150808214615ce357615ce2614f0b565b5b5092915050565b5f6affffffffffffffffffffff82169050919050565b5f615d0a82615cea565b9150615d1583615cea565b925082615d2557615d24614d67565b5b828206905092915050565b5f615d3a82614501565b9150615d4583614501565b9250828202615d5381614501565b9150808214615d6557615d64614f0b565b5b5092915050565b5f61010082019050615d805f83018b6144d6565b615d8d602083018a6142e6565b615d9a6040830189614446565b615da760608301886146c9565b615db46080830187614516565b615dc160a08301866144d6565b615dce60c08301856146d8565b615ddb60e08301846144d6565b9998505050505050505050565b7f63726561746f72000000000000000000000000000000000000000000000000005f82015250565b5f615e1c600783614318565b9150615e2782615de8565b602082019050919050565b5f6020820190508181035f830152615e4981615e10565b9050919050565b5f61012082019050615e645f83018c6142e6565b615e71602083018b614516565b615e7e604083018a6146c9565b615e8b60608301896144d6565b615e986080830188614516565b615ea560a0830187614516565b615eb260c08301866144d6565b615ebf60e0830185614251565b615ecd6101008301846144d6565b9a995050505050505050505056fe446f6f6d736461793a20536574746c657273206f66207468652057617374656c616e64a264697066735822122076ca5dc20e6c4a1e6cdbf82cde1a5e6e57edce63d0979c5a810fde414b89241964736f6c63430008150033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000079cf8466c12ac1acb9c1bf1179ea7308cf28eb0300000597a7e03ca484679197fbc312c8120b53a983aad3362bc462536a998a380000000000000000000000000000000000000000000000000000000000003a980000000000000000000000000000000000000000000000000000000000000019000000000000000000000000000000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000001518000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000024
-----Decoded View---------------
Arg [0] : _darkAge (address): 0x79CF8466c12AC1ACB9c1bF1179ea7308Cf28EB03
Arg [1] : _BASE_DIFFICULTY (uint256): 38597363079105398474523661669562635951089994888546854679819194669304376
Arg [2] : _DIFFICULTY_RAMP (uint256): 15000
Arg [3] : _DIFFICULTY_COOLDOWN (uint256): 25
Arg [4] : _DIFFICULTY_COOLDOWN_SLOPE (uint256): 15
Arg [5] : _COLLAPSE_INITIAL (uint256): 86400
Arg [6] : _COLLAPSE_RAMP (uint256): 8
Arg [7] : _COLLAPSE_MIN (uint256): 36
-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 00000000000000000000000079cf8466c12ac1acb9c1bf1179ea7308cf28eb03
Arg [1] : 00000597a7e03ca484679197fbc312c8120b53a983aad3362bc462536a998a38
Arg [2] : 0000000000000000000000000000000000000000000000000000000000003a98
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000019
Arg [4] : 000000000000000000000000000000000000000000000000000000000000000f
Arg [5] : 0000000000000000000000000000000000000000000000000000000000015180
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000024
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.