Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 230 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
SHAPESHIFT | 21893052 | 25 days ago | IN | 0 ETH | 0.00010637 | ||||
SHAPESHIFT | 21893030 | 25 days ago | IN | 0 ETH | 0.00005907 | ||||
SHAPESHIFT | 21893011 | 25 days ago | IN | 0 ETH | 0.00010637 | ||||
SHAPESHIFT | 21892996 | 25 days ago | IN | 0 ETH | 0.00005907 | ||||
SHAPESHIFT | 21892980 | 25 days ago | IN | 0 ETH | 0.00010637 | ||||
SHAPESHIFT | 21892973 | 25 days ago | IN | 0 ETH | 0.00005513 | ||||
SHAPESHIFT | 21892948 | 25 days ago | IN | 0 ETH | 0.00002676 | ||||
SHAPESHIFT | 21892939 | 25 days ago | IN | 0 ETH | 0.00010637 | ||||
SHAPESHIFT | 21892930 | 25 days ago | IN | 0 ETH | 0.00004625 | ||||
SHAPESHIFT | 21892918 | 25 days ago | IN | 0 ETH | 0.00010637 | ||||
SHAPESHIFT | 21892905 | 25 days ago | IN | 0 ETH | 0.00005907 | ||||
SHAPESHIFT | 21892892 | 25 days ago | IN | 0 ETH | 0.00009928 | ||||
SHAPESHIFT | 21892873 | 25 days ago | IN | 0 ETH | 0.00010637 | ||||
SHAPESHIFT | 21892857 | 25 days ago | IN | 0 ETH | 0.00010637 | ||||
SHAPESHIFT | 21892837 | 25 days ago | IN | 0 ETH | 0.00004625 | ||||
SHAPESHIFT | 21892832 | 25 days ago | IN | 0 ETH | 0.00005907 | ||||
SHAPESHIFT | 21892812 | 25 days ago | IN | 0 ETH | 0.00005907 | ||||
SHAPESHIFT | 21805063 | 37 days ago | IN | 0 ETH | 0.00011772 | ||||
SHAPESHIFT | 21805052 | 37 days ago | IN | 0 ETH | 0.00011772 | ||||
SHAPESHIFT | 21805039 | 37 days ago | IN | 0 ETH | 0.00011772 | ||||
SHAPESHIFT | 21805032 | 37 days ago | IN | 0 ETH | 0.00011772 | ||||
SHAPESHIFT | 21805023 | 37 days ago | IN | 0 ETH | 0.00011772 | ||||
SHAPESHIFT | 21805009 | 37 days ago | IN | 0 ETH | 0.00011772 | ||||
SHAPESHIFT | 21805000 | 37 days ago | IN | 0 ETH | 0.00011772 | ||||
SHAPESHIFT | 21804994 | 37 days ago | IN | 0 ETH | 0.00004409 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
BLONKSuri
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: GPL-3.0 pragma solidity ^0.8.7; import "@openzeppelin/contracts/utils/Counters.sol"; import "@openzeppelin/contracts/utils/Strings.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; /// @title BLONKS URI Shapeshifter Contract v3.0.0 /// @author Matto AKA MonkMatto /// @notice This contract manages BLONKS token image and metadata generation. /// @dev This contract allows EVM renderer changes. /// @custom:security-contact [email protected] interface iBLONKSmain { function ownerOf(uint256 _tokenId) external view returns (address); function tokenEntropyMap(uint256 _tokenId) external view returns (uint256); } interface iBLONKStraits { function calculateTraitsArray( uint256 _tokenEntropy ) external view returns (uint8[11] memory); function calculateTraitsJSON( uint8[11] memory _traitsArray ) external view returns (string memory); } interface iBLONKSlocations { function calculateLocatsArray( uint256 _ownerEntropy, uint256 _tokenEntropy, uint8[11] memory _traitsArray ) external view returns (uint16[110] memory); } interface iBLONKSsvg { function assembleSVG( uint256 _ownerEntropy, uint256 _tokenEntropy, uint8[11] memory _traitsArray, uint16[110] memory _locatsArray ) external view returns (string memory); } interface iBLONKSdescriptions { function buildDynamicDescription( address _ownerAddy, uint256 _shapeshiftCount, string memory _collectionDescription, string memory _shifterName, uint256 _shifterActive, uint256 _shifterMax ) external view returns (string memory); } interface iDelegate { function checkDelegateForContract( address _delegate, address _vault, address _contract ) external view returns (bool); } contract BLONKSuri is Ownable { using Counters for Counters.Counter; using Strings for string; address private constant mainContract = 0x7f463b874eC264dC7BD8C780f5790b4Fc371F11f; address private constant delegateContract = 0x00000000000076A84feF008CDAbe6409d2FE638B; address private descriptionsContract; struct Shapeshifter { address traits; address locats; address svg; string name; uint16 max; uint16 active; bool openToAll; } Shapeshifter[] public Shapeshifters; string public artistNameOverride; mapping(uint256 => uint256) public shifterStateMap; mapping(uint256 => uint256) public idMap; mapping(uint256 => bool) private idSetMap; mapping(uint256 => bool) public tokenStateLock; mapping(uint256 => string) public uniqueNameMap; mapping(uint256 => mapping(uint256 => uint256)) public tokenShiftCounts; bool public shapeshiftingAllowed; event Shapeshift(uint256 indexed _tokenId, uint256 _state); event NewShapeshifter( address _traits, address _locations, address _svg, string _name, uint16 _max, bool _openToAll ); function SHAPESHIFT(uint256 _tokenId, uint256 _state) external { address ownerAddy = iBLONKSmain(mainContract).ownerOf(_tokenId); require(shapeshiftingAllowed == true, "Shapeshifting is paused"); require( ownerAddy == msg.sender || iDelegate(delegateContract).checkDelegateForContract( msg.sender, ownerAddy, mainContract ) || msg.sender == owner(), "Not authorized" ); require(_state < Shapeshifters.length, "Shapeshifter out of range"); require( Shapeshifters[_state].active < Shapeshifters[_state].max, "Shapeshift max reached" ); bool isOpenShifter = Shapeshifters[_state].openToAll; require(isOpenShifter || msg.sender == owner(), "Not authorized"); require(tokenStateLock[_tokenId] == false, "Token is locked"); if (!isOpenShifter) { tokenStateLock[_tokenId] = true; } if (idSetMap[_tokenId] == false) { idSetMap[_tokenId] = true; idMap[ iBLONKSmain(mainContract).tokenEntropyMap(_tokenId) ] = _tokenId; } Shapeshifters[shifterStateMap[_tokenId]].active--; Shapeshifters[_state].active++; shifterStateMap[_tokenId] = _state; tokenShiftCounts[_tokenId][_state]++; emit Shapeshift(_tokenId, _state); } function addShapeshifter( address _traits, address _locations, address _svg, string memory _name, uint16 _max, bool _openToAll ) external onlyOwner { uint16 _active; if (Shapeshifters.length == 0) { _active = 4444; } Shapeshifters.push( Shapeshifter( _traits, _locations, _svg, _name, _max, _active, _openToAll ) ); emit NewShapeshifter( _traits, _locations, _svg, _name, _max, _openToAll ); } function addUniqueName( uint256 _tokenId, string memory _name ) external onlyOwner { require(tokenStateLock[_tokenId] == true, "Token is not locked"); uniqueNameMap[_tokenId] = _name; } function getShapeshiftAvailability() external view returns (uint256[] memory) { uint256[] memory available = new uint256[](Shapeshifters.length); for (uint256 i = 0; i < available.length; i++) { available[i] = (Shapeshifters[i].max - Shapeshifters[i].active); } return available; } function getTokenShapeshiftTotals( uint256 _tokenId ) public view returns (uint256) { uint256 totals; for (uint256 i = 0; i < Shapeshifters.length; i++) { totals += tokenShiftCounts[_tokenId][i]; } return totals; } function buildMetaPart( uint256 _tokenId, string memory _collectionDescription, address _artistAddy, uint256 _royaltyBps, string memory _collection, string memory _website, string memory _externalURL ) external view virtual returns (string memory) { string memory _name; if (tokenStateLock[_tokenId] == false) { _name = Shapeshifters[shifterStateMap[_tokenId]].name; } else { _name = uniqueNameMap[_tokenId]; } uint256 state = shifterStateMap[_tokenId]; string memory tokenDescription = iBLONKSdescriptions( descriptionsContract ).buildDynamicDescription( iBLONKSmain(mainContract).ownerOf(_tokenId), getTokenShapeshiftTotals(_tokenId), _collectionDescription, Shapeshifters[state].name, Shapeshifters[state].active, Shapeshifters[state].max ); string memory metaP = string( abi.encodePacked( '{"name":"', _name, ' #', Strings.toString(_tokenId), '","artist":"', artistNameOverride, '","description":"', tokenDescription, '","royaltyInfo":{"artistAddress":"', Strings.toHexString(uint160(_artistAddy), 20), '","royaltyFeeByID":', Strings.toString(_royaltyBps / 100), '},"collection_name":"', _collection, '","website":"', _website, '","external_url":"', _externalURL, '","script_type":"Solidity","image_type":"Generative SVG","image":"data:image/svg+xml;base64,' ) ); return metaP; } function buildContractURI( string memory _collectionDescription, string memory _externalURL, uint256 _royaltyBps, address _artistAddy, string memory _svg ) external view virtual returns (string memory) { string memory b64svg = Base64.encode(bytes(_svg)); string memory contractURI = string( abi.encodePacked( '{"name":"BLONKS","description":"', _collectionDescription, '","image":"data:image/svg+xml;base64,', b64svg, '","external_link":"', _externalURL, '","royalty_basis_points":', Strings.toString(_royaltyBps), ',"royalty_recipient":"', Strings.toHexString(uint160(_artistAddy), 20), '"}' ) ); return contractURI; } function getLegibleTokenURI( string memory _metaP, uint256 _tokenEntropy, uint256 _ownerEntropy ) external view virtual returns (string memory) { uint256 _state = shifterStateMap[idMap[_tokenEntropy]]; uint8[11] memory traitsArray = iBLONKStraits( Shapeshifters[_state].traits ).calculateTraitsArray(_tokenEntropy); _tokenEntropy /= 10 ** 18; string memory traitsJSON = iBLONKStraits(Shapeshifters[_state].traits) .calculateTraitsJSON(traitsArray); uint16[110] memory locatsArray = iBLONKSlocations( Shapeshifters[_state].locats ).calculateLocatsArray(_ownerEntropy, _tokenEntropy, traitsArray); _ownerEntropy /= 10 ** 29; _tokenEntropy /= 10 ** 15; string memory svg = iBLONKSsvg(Shapeshifters[_state].svg).assembleSVG( _ownerEntropy, _tokenEntropy, traitsArray, locatsArray ); string memory legibleURI = string( abi.encodePacked( _metaP, Base64.encode(bytes(svg)), '",', traitsJSON, "}" ) ); return legibleURI; } function buildPreviewSVG( uint256 _tokenEntropy, uint256 _addressEntropy ) external view virtual returns (string memory) { return _renderSVG( _tokenEntropy, _addressEntropy, shifterStateMap[idMap[_tokenEntropy]] ); } function _renderSVG( uint256 _tokenEntropy, uint256 _addressEntropy, uint256 _state ) internal view returns (string memory) { uint8[11] memory traitsArray = iBLONKStraits( Shapeshifters[_state].traits ).calculateTraitsArray(_tokenEntropy); _tokenEntropy /= 10 ** 18; uint16[110] memory locatsArray = iBLONKSlocations( Shapeshifters[_state].locats ).calculateLocatsArray(_addressEntropy, _tokenEntropy, traitsArray); _addressEntropy /= 10 ** 29; _tokenEntropy /= 10 ** 15; string memory svg = iBLONKSsvg(Shapeshifters[_state].svg).assembleSVG( _addressEntropy, _tokenEntropy, traitsArray, locatsArray ); return svg; } function RANDOM_RENDER_SVG( uint256 _state ) public view returns (string memory) { uint256 _tokenEntropy = uint256( keccak256( abi.encodePacked(blockhash(block.number - 1), block.basefee) ) ); uint256 _addressEntropy = uint256( uint160( uint256( keccak256(abi.encodePacked(block.coinbase, block.timestamp)) ) ) ); return _renderSVG(_tokenEntropy, _addressEntropy, _state); } function RANDOM_RENDER_B64( uint256 _state ) external view returns (string memory) { string memory svg = RANDOM_RENDER_SVG(_state); return string( abi.encodePacked( "data:image/svg+xml;base64,", Base64.encode(bytes(svg)) ) ); } function PREVIEW_SHAPESHIFTER_SVG( uint256 _tokenId, address _addy, uint256 _state ) public view returns (string memory) { require(_state < Shapeshifters.length, "Shapeshifter out of range"); return _renderSVG( iBLONKSmain(mainContract).tokenEntropyMap(_tokenId), uint256(uint160(_addy)), _state ); } function PREVIEW_SHAPESHIFTER_B64( uint256 _tokenId, address _addy, uint256 _state ) external view returns (string memory) { string memory svg = PREVIEW_SHAPESHIFTER_SVG(_tokenId, _addy, _state); return string( abi.encodePacked( "data:image/svg+xml;base64,", Base64.encode(bytes(svg)) ) ); } function getBase64TokenURI( string memory _legibleURI ) external view virtual returns (string memory) { string memory URIBase64 = string( abi.encodePacked( "data:application/json;base64,", Base64.encode(bytes(_legibleURI)) ) ); return URIBase64; } function setArtistNameOverride( string memory _artistNameOverride ) external onlyOwner { artistNameOverride = _artistNameOverride; } function setDescriptionsContract( address _descriptionsContract ) external onlyOwner { descriptionsContract = _descriptionsContract; } function updateShapeshifter( uint256 _state, address _traits, address _locats, address _svg, string memory _name, uint16 _max, uint16 _active, bool _openToAll ) external onlyOwner { require(shapeshiftingAllowed == false, "Shapeshifter setting allowed"); Shapeshifter storage shapeshifter = Shapeshifters[_state]; shapeshifter.traits = _traits; shapeshifter.locats = _locats; shapeshifter.svg = _svg; shapeshifter.name = _name; shapeshifter.max = _max; shapeshifter.active = _active; shapeshifter.openToAll = _openToAll; } function toggleShapeshiftingAllowed() external onlyOwner { shapeshiftingAllowed = !shapeshiftingAllowed; } } /// [MIT License] /// @title Base64 /// @notice Provides a function for encoding some bytes in base64 /// @author Brecht Devos <[email protected]> library Base64 { bytes internal constant TABLE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; /// @notice Encodes some bytes to the base64 representation function encode(bytes memory data) internal pure returns (string memory) { uint256 len = data.length; if (len == 0) return ""; uint256 encodedLen = 4 * ((len + 2) / 3); bytes memory result = new bytes(encodedLen + 32); bytes memory table = TABLE; assembly { let tablePtr := add(table, 1) let resultPtr := add(result, 32) for { let i := 0 } lt(i, len) { } { i := add(i, 3) let input := and(mload(add(data, i)), 0xffffff) let out := mload(add(tablePtr, and(shr(18, input), 0x3F))) out := shl(8, out) out := add( out, and(mload(add(tablePtr, and(shr(12, input), 0x3F))), 0xFF) ) out := shl(8, out) out := add( out, and(mload(add(tablePtr, and(shr(6, input), 0x3F))), 0xFF) ) out := shl(8, out) out := add( out, and(mload(add(tablePtr, and(input, 0x3F))), 0xFF) ) out := shl(224, out) mstore(resultPtr, out) resultPtr := add(resultPtr, 4) } switch mod(len, 3) case 1 { mstore(sub(resultPtr, 2), shl(240, 0x3d3d)) } case 2 { mstore(sub(resultPtr, 1), shl(248, 0x3d)) } mstore(result, encodedLen) } return string(result); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Strings.sol) pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Counters.sol) pragma solidity ^0.8.0; /** * @title Counters * @author Matt Condon (@shrugs) * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number * of elements in a mapping, issuing ERC721 ids, or counting request ids. * * Include with `using Counters for Counters.Counter;` */ library Counters { struct Counter { // This variable should never be directly accessed by users of the library: interactions must be restricted to // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add // this feature: see https://github.com/ethereum/solidity/issues/4637 uint256 _value; // default: 0 } function current(Counter storage counter) internal view returns (uint256) { return counter._value; } function increment(Counter storage counter) internal { unchecked { counter._value += 1; } } function decrement(Counter storage counter) internal { uint256 value = counter._value; require(value > 0, "Counter: decrement overflow"); unchecked { counter._value = value - 1; } } function reset(Counter storage counter) internal { counter._value = 0; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_traits","type":"address"},{"indexed":false,"internalType":"address","name":"_locations","type":"address"},{"indexed":false,"internalType":"address","name":"_svg","type":"address"},{"indexed":false,"internalType":"string","name":"_name","type":"string"},{"indexed":false,"internalType":"uint16","name":"_max","type":"uint16"},{"indexed":false,"internalType":"bool","name":"_openToAll","type":"bool"}],"name":"NewShapeshifter","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_state","type":"uint256"}],"name":"Shapeshift","type":"event"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_addy","type":"address"},{"internalType":"uint256","name":"_state","type":"uint256"}],"name":"PREVIEW_SHAPESHIFTER_B64","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_addy","type":"address"},{"internalType":"uint256","name":"_state","type":"uint256"}],"name":"PREVIEW_SHAPESHIFTER_SVG","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_state","type":"uint256"}],"name":"RANDOM_RENDER_B64","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_state","type":"uint256"}],"name":"RANDOM_RENDER_SVG","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_state","type":"uint256"}],"name":"SHAPESHIFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"Shapeshifters","outputs":[{"internalType":"address","name":"traits","type":"address"},{"internalType":"address","name":"locats","type":"address"},{"internalType":"address","name":"svg","type":"address"},{"internalType":"string","name":"name","type":"string"},{"internalType":"uint16","name":"max","type":"uint16"},{"internalType":"uint16","name":"active","type":"uint16"},{"internalType":"bool","name":"openToAll","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_traits","type":"address"},{"internalType":"address","name":"_locations","type":"address"},{"internalType":"address","name":"_svg","type":"address"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"uint16","name":"_max","type":"uint16"},{"internalType":"bool","name":"_openToAll","type":"bool"}],"name":"addShapeshifter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"string","name":"_name","type":"string"}],"name":"addUniqueName","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"artistNameOverride","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_collectionDescription","type":"string"},{"internalType":"string","name":"_externalURL","type":"string"},{"internalType":"uint256","name":"_royaltyBps","type":"uint256"},{"internalType":"address","name":"_artistAddy","type":"address"},{"internalType":"string","name":"_svg","type":"string"}],"name":"buildContractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"string","name":"_collectionDescription","type":"string"},{"internalType":"address","name":"_artistAddy","type":"address"},{"internalType":"uint256","name":"_royaltyBps","type":"uint256"},{"internalType":"string","name":"_collection","type":"string"},{"internalType":"string","name":"_website","type":"string"},{"internalType":"string","name":"_externalURL","type":"string"}],"name":"buildMetaPart","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenEntropy","type":"uint256"},{"internalType":"uint256","name":"_addressEntropy","type":"uint256"}],"name":"buildPreviewSVG","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_legibleURI","type":"string"}],"name":"getBase64TokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_metaP","type":"string"},{"internalType":"uint256","name":"_tokenEntropy","type":"uint256"},{"internalType":"uint256","name":"_ownerEntropy","type":"uint256"}],"name":"getLegibleTokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getShapeshiftAvailability","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getTokenShapeshiftTotals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"idMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_artistNameOverride","type":"string"}],"name":"setArtistNameOverride","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_descriptionsContract","type":"address"}],"name":"setDescriptionsContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"shapeshiftingAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"shifterStateMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggleShapeshiftingAllowed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenShiftCounts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenStateLock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uniqueNameMap","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_state","type":"uint256"},{"internalType":"address","name":"_traits","type":"address"},{"internalType":"address","name":"_locats","type":"address"},{"internalType":"address","name":"_svg","type":"address"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"uint16","name":"_max","type":"uint16"},{"internalType":"uint16","name":"_active","type":"uint16"},{"internalType":"bool","name":"_openToAll","type":"bool"}],"name":"updateShapeshifter","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801562000010575f80fd5b5062000031620000256200003760201b60201c565b6200003e60201b60201c565b620000ff565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6152c4806200010d5f395ff3fe608060405234801561000f575f80fd5b50600436106101cd575f3560e01c80638da5cb5b11610102578063d5024f06116100a0578063f2fde38b1161006f578063f2fde38b146105b5578063fd8fd066146105d1578063fd9639b3146105ef578063fddb1e801461060b576101cd565b8063d5024f0614610503578063e2fc2ae514610533578063ec805b5414610569578063f1267abd14610599576101cd565b8063a14def54116100dc578063a14def5414610443578063ac7dfb3014610473578063afa94d6c146104a3578063b4d06332146104d3576101cd565b80638da5cb5b146103c55780638ecfc5e4146103e35780639114ad5c14610413576101cd565b8063549fc8371161016f57806370735bcd1161014957806370735bcd14610351578063715018a61461035b5780637a4a3dc8146103655780637b424a6a14610395576101cd565b8063549fc837146102d35780635b265342146103035780635be38c6314610333576101cd565b8063419fa1fb116101ab578063419fa1fb146102395780634a6ad9ab146102695780634d2e12691461028557806351bf0f52146102b5576101cd565b80632be699a4146101d157806331289fb3146101ed5780633ef7c2591461021d575b5f80fd5b6101eb60048036038101906101e69190612fd9565b610627565b005b610207600480360381019061020291906130b1565b6108f4565b6040516102149190613156565b60405180910390f35b61023760048036038101906102329190613176565b610932565b005b610253600480360381019061024e9190613243565b610b60565b6040516102609190613156565b60405180910390f35b610283600480360381019061027e9190613243565b610b96565b005b61029f600480360381019061029a919061328a565b610c25565b6040516102ac91906132d7565b60405180910390f35b6102bd610c45565b6040516102ca91906132ff565b60405180910390f35b6102ed60048036038101906102e89190613318565b610c57565b6040516102fa9190613156565b60405180910390f35b61031d60048036038101906103189190613368565b610c99565b60405161032a9190613156565b60405180910390f35b61033b610d08565b6040516103489190613156565b60405180910390f35b610359610d94565b005b610363610e3a565b005b61037f600480360381019061037a91906130b1565b610ec1565b60405161038c9190613156565b60405180910390f35b6103af60048036038101906103aa9190613318565b610f5c565b6040516103bc9190613156565b60405180910390f35b6103cd61105a565b6040516103da9190613442565b60405180910390f35b6103fd60048036038101906103f8919061345b565b611081565b60405161040a9190613156565b60405180910390f35b61042d600480360381019061042891906130b1565b61145f565b60405161043a91906132d7565b60405180910390f35b61045d600480360381019061045891906130b1565b611474565b60405161046a91906132d7565b60405180910390f35b61048d600480360381019061048891906130b1565b611489565b60405161049a91906132d7565b60405180910390f35b6104bd60048036038101906104b8919061328a565b6114e5565b6040516104ca9190613156565b60405180910390f35b6104ed60048036038101906104e891906130b1565b61151c565b6040516104fa9190613156565b60405180910390f35b61051d600480360381019061051891906130b1565b6115b1565b60405161052a91906132ff565b60405180910390f35b61054d600480360381019061054891906130b1565b6115ce565b6040516105609796959493929190613577565b60405180910390f35b610583600480360381019061057e91906135eb565b611726565b6040516105909190613156565b60405180910390f35b6105b360048036038101906105ae9190613657565b611ad7565b005b6105cf60048036038101906105ca9190613657565b611b96565b005b6105d9611c8c565b6040516105e69190613739565b60405180910390f35b61060960048036038101906106049190613759565b611d95565b005b6106256004803603810190610620919061328a565b611e98565b005b61062f612546565b73ffffffffffffffffffffffffffffffffffffffff1661064d61105a565b73ffffffffffffffffffffffffffffffffffffffff16146106a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069a906137fd565b60405180910390fd5b5f80600280549050036106b65761115c90505b60026040518060e001604052808973ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018561ffff1681526020018361ffff168152602001841515815250908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816002015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160030190816108429190613a15565b506080820151816004015f6101000a81548161ffff021916908361ffff16021790555060a08201518160040160026101000a81548161ffff021916908361ffff16021790555060c08201518160040160046101000a81548160ff02191690831515021790555050507fea094a222979d47956b4d87b928349a1560ebdd04d74b9641c8e279fe55e39958787878787876040516108e396959493929190613ae4565b60405180910390a150505050505050565b60605f6109008361151c565b905061090b8161254d565b60405160200161091b9190613bce565b604051602081830303815290604052915050919050565b61093a612546565b73ffffffffffffffffffffffffffffffffffffffff1661095861105a565b73ffffffffffffffffffffffffffffffffffffffff16146109ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a5906137fd565b60405180910390fd5b5f1515600a5f9054906101000a900460ff16151514610a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f990613c39565b60405180910390fd5b5f60028981548110610a1757610a16613c57565b5b905f5260205f209060050201905087815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555086816001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555085816002015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084816003019081610afb9190613a15565b5083816004015f6101000a81548161ffff021916908361ffff160217905550828160040160026101000a81548161ffff021916908361ffff160217905550818160040160046101000a81548160ff021916908315150217905550505050505050505050565b60605f610b6c8361254d565b604051602001610b7c9190613cce565b604051602081830303815290604052905080915050919050565b610b9e612546565b73ffffffffffffffffffffffffffffffffffffffff16610bbc61105a565b73ffffffffffffffffffffffffffffffffffffffff1614610c12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c09906137fd565b60405180910390fd5b8060039081610c219190613a15565b5050565b6009602052815f5260405f20602052805f5260405f205f91509150505481565b600a5f9054906101000a900460ff1681565b60605f610c65858585610f5c565b9050610c708161254d565b604051602001610c809190613bce565b6040516020818303038152906040529150509392505050565b60605f610ca58361254d565b90505f878288610cb4896126dd565b610cd58973ffffffffffffffffffffffffffffffffffffffff166014612836565b604051602001610ce9959493929190613ed1565b6040516020818303038152906040529050809250505095945050505050565b60038054610d1590613848565b80601f0160208091040260200160405190810160405280929190818152602001828054610d4190613848565b8015610d8c5780601f10610d6357610100808354040283529160200191610d8c565b820191905f5260205f20905b815481529060010190602001808311610d6f57829003601f168201915b505050505081565b610d9c612546565b73ffffffffffffffffffffffffffffffffffffffff16610dba61105a565b73ffffffffffffffffffffffffffffffffffffffff1614610e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e07906137fd565b60405180910390fd5b600a5f9054906101000a900460ff1615600a5f6101000a81548160ff021916908315150217905550565b610e42612546565b73ffffffffffffffffffffffffffffffffffffffff16610e6061105a565b73ffffffffffffffffffffffffffffffffffffffff1614610eb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ead906137fd565b60405180910390fd5b610ebf5f612a6b565b565b6008602052805f5260405f205f915090508054610edd90613848565b80601f0160208091040260200160405190810160405280929190818152602001828054610f0990613848565b8015610f545780601f10610f2b57610100808354040283529160200191610f54565b820191905f5260205f20905b815481529060010190602001808311610f3757829003601f168201915b505050505081565b60606002805490508210610fa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9c90613fa7565b60405180910390fd5b611051737f463b874ec264dc7bd8c780f5790b4fc371f11f73ffffffffffffffffffffffffffffffffffffffff1663dbc119d7866040518263ffffffff1660e01b8152600401610ff591906132d7565b602060405180830381865afa158015611010573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110349190613fd9565b8473ffffffffffffffffffffffffffffffffffffffff1684612b2c565b90509392505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060805f151560075f8b81526020019081526020015f205f9054906101000a900460ff1615150361116e57600260045f8b81526020019081526020015f2054815481106110d1576110d0613c57565b5b905f5260205f20906005020160030180546110eb90613848565b80601f016020809104026020016040519081016040528092919081815260200182805461111790613848565b80156111625780601f1061113957610100808354040283529160200191611162565b820191905f5260205f20905b81548152906001019060200180831161114557829003601f168201915b50505050509050611209565b60085f8a81526020019081526020015f20805461118a90613848565b80601f01602080910402602001604051908101604052809291908181526020018280546111b690613848565b80156112015780601f106111d857610100808354040283529160200191611201565b820191905f5260205f20905b8154815290600101906020018083116111e457829003601f168201915b505050505090505b5f60045f8b81526020019081526020015f205490505f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630a61de26737f463b874ec264dc7bd8c780f5790b4fc371f11f73ffffffffffffffffffffffffffffffffffffffff16636352211e8e6040518263ffffffff1660e01b81526004016112a991906132d7565b602060405180830381865afa1580156112c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112e89190614018565b6112f18e611489565b8d6002878154811061130657611305613c57565b5b905f5260205f2090600502016003016002888154811061132957611328613c57565b5b905f5260205f20906005020160040160029054906101000a900461ffff166002898154811061135b5761135a613c57565b5b905f5260205f2090600502016004015f9054906101000a900461ffff166040518763ffffffff1660e01b8152600401611399969594939291906140f4565b5f60405180830381865afa1580156113b3573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906113db91906141cf565b90505f836113e88d6126dd565b60038461140c8e73ffffffffffffffffffffffffffffffffffffffff166014612836565b61142160648f61141c9190614270565b6126dd565b8d8d8d60405160200161143c99989796959493929190614676565b604051602081830303815290604052905080945050505050979650505050505050565b6005602052805f5260405f205f915090505481565b6004602052805f5260405f205f915090505481565b5f805f5b6002805490508110156114db5760095f8581526020019081526020015f205f8281526020019081526020015f2054826114c69190614762565b915080806114d390614795565b91505061148d565b5080915050919050565b6060611514838360045f60055f8981526020019081526020015f205481526020019081526020015f2054612b2c565b905092915050565b60605f60014361152c91906147dc565b404860405160200161153f929190614858565b604051602081830303815290604052805190602001205f1c90505f414260405160200161156d9291906148d9565b604051602081830303815290604052805190602001205f1c73ffffffffffffffffffffffffffffffffffffffff1690506115a8828286612b2c565b92505050919050565b6007602052805f5260405f205f915054906101000a900460ff1681565b600281815481106115dd575f80fd5b905f5260205f2090600502015f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600301805461166b90613848565b80601f016020809104026020016040519081016040528092919081815260200182805461169790613848565b80156116e25780601f106116b9576101008083540402835291602001916116e2565b820191905f5260205f20905b8154815290600101906020018083116116c557829003601f168201915b505050505090806004015f9054906101000a900461ffff16908060040160029054906101000a900461ffff16908060040160049054906101000a900460ff16905087565b60605f60045f60055f8781526020019081526020015f205481526020019081526020015f205490505f6002828154811061176357611762613c57565b5b905f5260205f2090600502015f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e3ec0475866040518263ffffffff1660e01b81526004016117c991906132d7565b61016060405180830381865afa1580156117e5573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061180991906149ec565b9050670de0b6b3a76400008561181f9190614270565b94505f6002838154811061183657611835613c57565b5b905f5260205f2090600502015f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aaebbea8836040518263ffffffff1660e01b815260040161189c9190614abd565b5f60405180830381865afa1580156118b6573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906118de91906141cf565b90505f600284815481106118f5576118f4613c57565b5b905f5260205f2090600502016001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663401a28d88789866040518463ffffffff1660e01b815260040161196093929190614ad7565b610dc060405180830381865afa15801561197c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119a09190614bcf565b90506c01431e0fae6d7217caa0000000866119bb9190614270565b955066038d7ea4c68000876119d09190614270565b96505f600285815481106119e7576119e6613c57565b5b905f5260205f2090600502016002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663703996db888a87866040518563ffffffff1660e01b8152600401611a549493929190614ca0565b5f60405180830381865afa158015611a6e573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190611a9691906141cf565b90505f89611aa38361254d565b85604051602001611ab693929190614d79565b60405160208183030381529060405290508096505050505050509392505050565b611adf612546565b73ffffffffffffffffffffffffffffffffffffffff16611afd61105a565b73ffffffffffffffffffffffffffffffffffffffff1614611b53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4a906137fd565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611b9e612546565b73ffffffffffffffffffffffffffffffffffffffff16611bbc61105a565b73ffffffffffffffffffffffffffffffffffffffff1614611c12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c09906137fd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7790614e2f565b60405180910390fd5b611c8981612a6b565b50565b60605f60028054905067ffffffffffffffff811115611cae57611cad612e49565b5b604051908082528060200260200182016040528015611cdc5781602001602082028036833780820191505090505b5090505f5b8151811015611d8d5760028181548110611cfe57611cfd613c57565b5b905f5260205f20906005020160040160029054906101000a900461ffff1660028281548110611d3057611d2f613c57565b5b905f5260205f2090600502016004015f9054906101000a900461ffff16611d579190614e4d565b61ffff16828281518110611d6e57611d6d613c57565b5b6020026020010181815250508080611d8590614795565b915050611ce1565b508091505090565b611d9d612546565b73ffffffffffffffffffffffffffffffffffffffff16611dbb61105a565b73ffffffffffffffffffffffffffffffffffffffff1614611e11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e08906137fd565b60405180910390fd5b6001151560075f8481526020019081526020015f205f9054906101000a900460ff16151514611e75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6c90614ecc565b60405180910390fd5b8060085f8481526020019081526020015f209081611e939190613a15565b505050565b5f737f463b874ec264dc7bd8c780f5790b4fc371f11f73ffffffffffffffffffffffffffffffffffffffff16636352211e846040518263ffffffff1660e01b8152600401611ee691906132d7565b602060405180830381865afa158015611f01573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f259190614018565b905060011515600a5f9054906101000a900460ff16151514611f7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7390614f34565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148061205057506d76a84fef008cdabe6409d2fe638b73ffffffffffffffffffffffffffffffffffffffff166390c9a2d03383737f463b874ec264dc7bd8c780f5790b4fc371f11f6040518463ffffffff1660e01b815260040161201093929190614f52565b602060405180830381865afa15801561202b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061204f9190614f9b565b5b8061208d575061205e61105a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6120cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c390615010565b60405180910390fd5b6002805490508210612113576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210a90613fa7565b60405180910390fd5b6002828154811061212757612126613c57565b5b905f5260205f2090600502016004015f9054906101000a900461ffff1661ffff166002838154811061215c5761215b613c57565b5b905f5260205f20906005020160040160029054906101000a900461ffff1661ffff16106121be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b590615078565b60405180910390fd5b5f600283815481106121d3576121d2613c57565b5b905f5260205f20906005020160040160049054906101000a900460ff1690508080612230575061220161105a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61226f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226690615010565b60405180910390fd5b5f151560075f8681526020019081526020015f205f9054906101000a900460ff161515146122d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c9906150e0565b60405180910390fd5b8061230157600160075f8681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b5f151560065f8681526020019081526020015f205f9054906101000a900460ff161515036123f457600160065f8681526020019081526020015f205f6101000a81548160ff0219169083151502179055508360055f737f463b874ec264dc7bd8c780f5790b4fc371f11f73ffffffffffffffffffffffffffffffffffffffff1663dbc119d7886040518263ffffffff1660e01b81526004016123a391906132d7565b602060405180830381865afa1580156123be573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123e29190613fd9565b81526020019081526020015f20819055505b600260045f8681526020019081526020015f20548154811061241957612418613c57565b5b905f5260205f209060050201600401600281819054906101000a900461ffff1680929190612446906150fe565b91906101000a81548161ffff021916908361ffff160217905550506002838154811061247557612474613c57565b5b905f5260205f209060050201600401600281819054906101000a900461ffff16809291906124a290615125565b91906101000a81548161ffff021916908361ffff160217905550508260045f8681526020019081526020015f208190555060095f8581526020019081526020015f205f8481526020019081526020015f205f81548092919061250390614795565b9190505550837ff5830b23450539a2f9b0c796013b74ddc22d97cb3f0ed1b9aee471ac875abf918460405161253891906132d7565b60405180910390a250505050565b5f33905090565b60605f825190505f81036125725760405180602001604052805f8152509150506126d8565b5f60036002836125829190614762565b61258c9190614270565b6004612598919061514e565b90505f6020826125a89190614762565b67ffffffffffffffff8111156125c1576125c0612e49565b5b6040519080825280601f01601f1916602001820160405280156125f35781602001600182028036833780820191505090505b5090505f60405180606001604052806040815260200161524f60409139905060018101602083015f5b868110156126955760038101905062ffffff818a015116603f8160121c168401518060081b905060ff603f83600c1c1686015116810190508060081b905060ff603f8360061c1686015116810190508060081b905060ff603f831686015116810190508060e01b9050808452600484019350505061261c565b5060038606600181146126af57600281146126bf576126ca565b613d3d60f01b60028303526126ca565b603d60f81b60018303525b508484525050819450505050505b919050565b60605f8203612723576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612831565b5f8290505f5b5f821461275257808061273b90614795565b915050600a8261274b9190614270565b9150612729565b5f8167ffffffffffffffff81111561276d5761276c612e49565b5b6040519080825280601f01601f19166020018201604052801561279f5781602001600182028036833780820191505090505b5090505b5f851461282a576001826127b791906147dc565b9150600a856127c6919061518f565b60306127d29190614762565b60f81b8183815181106127e8576127e7613c57565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600a856128239190614270565b94506127a3565b8093505050505b919050565b60605f6002836002612848919061514e565b6128529190614762565b67ffffffffffffffff81111561286b5761286a612e49565b5b6040519080825280601f01601f19166020018201604052801561289d5781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000815f815181106128d4576128d3613c57565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061293757612936613c57565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f6001846002612975919061514e565b61297f9190614762565b90505b6001811115612a1e577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106129c1576129c0613c57565b5b1a60f81b8282815181106129d8576129d7613c57565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600485901c945080612a17906151bf565b9050612982565b505f8414612a61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5890615230565b60405180910390fd5b8091505092915050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60605f60028381548110612b4357612b42613c57565b5b905f5260205f2090600502015f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e3ec0475866040518263ffffffff1660e01b8152600401612ba991906132d7565b61016060405180830381865afa158015612bc5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612be991906149ec565b9050670de0b6b3a764000085612bff9190614270565b94505f60028481548110612c1657612c15613c57565b5b905f5260205f2090600502016001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663401a28d88688856040518463ffffffff1660e01b8152600401612c8193929190614ad7565b610dc060405180830381865afa158015612c9d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cc19190614bcf565b90506c01431e0fae6d7217caa000000085612cdc9190614270565b945066038d7ea4c6800086612cf19190614270565b95505f60028581548110612d0857612d07613c57565b5b905f5260205f2090600502016002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663703996db878986866040518563ffffffff1660e01b8152600401612d759493929190614ca0565b5f60405180830381865afa158015612d8f573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190612db791906141cf565b90508093505050509392505050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612e0082612dd7565b9050919050565b612e1081612df6565b8114612e1a575f80fd5b50565b5f81359050612e2b81612e07565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612e7f82612e39565b810181811067ffffffffffffffff82111715612e9e57612e9d612e49565b5b80604052505050565b5f612eb0612dc6565b9050612ebc8282612e76565b919050565b5f67ffffffffffffffff821115612edb57612eda612e49565b5b612ee482612e39565b9050602081019050919050565b828183375f83830152505050565b5f612f11612f0c84612ec1565b612ea7565b905082815260208101848484011115612f2d57612f2c612e35565b5b612f38848285612ef1565b509392505050565b5f82601f830112612f5457612f53612e31565b5b8135612f64848260208601612eff565b91505092915050565b5f61ffff82169050919050565b612f8381612f6d565b8114612f8d575f80fd5b50565b5f81359050612f9e81612f7a565b92915050565b5f8115159050919050565b612fb881612fa4565b8114612fc2575f80fd5b50565b5f81359050612fd381612faf565b92915050565b5f805f805f8060c08789031215612ff357612ff2612dcf565b5b5f61300089828a01612e1d565b965050602061301189828a01612e1d565b955050604061302289828a01612e1d565b945050606087013567ffffffffffffffff81111561304357613042612dd3565b5b61304f89828a01612f40565b935050608061306089828a01612f90565b92505060a061307189828a01612fc5565b9150509295509295509295565b5f819050919050565b6130908161307e565b811461309a575f80fd5b50565b5f813590506130ab81613087565b92915050565b5f602082840312156130c6576130c5612dcf565b5b5f6130d38482850161309d565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156131135780820151818401526020810190506130f8565b5f8484015250505050565b5f613128826130dc565b61313281856130e6565b93506131428185602086016130f6565b61314b81612e39565b840191505092915050565b5f6020820190508181035f83015261316e818461311e565b905092915050565b5f805f805f805f80610100898b03121561319357613192612dcf565b5b5f6131a08b828c0161309d565b98505060206131b18b828c01612e1d565b97505060406131c28b828c01612e1d565b96505060606131d38b828c01612e1d565b955050608089013567ffffffffffffffff8111156131f4576131f3612dd3565b5b6132008b828c01612f40565b94505060a06132118b828c01612f90565b93505060c06132228b828c01612f90565b92505060e06132338b828c01612fc5565b9150509295985092959890939650565b5f6020828403121561325857613257612dcf565b5b5f82013567ffffffffffffffff81111561327557613274612dd3565b5b61328184828501612f40565b91505092915050565b5f80604083850312156132a05761329f612dcf565b5b5f6132ad8582860161309d565b92505060206132be8582860161309d565b9150509250929050565b6132d18161307e565b82525050565b5f6020820190506132ea5f8301846132c8565b92915050565b6132f981612fa4565b82525050565b5f6020820190506133125f8301846132f0565b92915050565b5f805f6060848603121561332f5761332e612dcf565b5b5f61333c8682870161309d565b935050602061334d86828701612e1d565b925050604061335e8682870161309d565b9150509250925092565b5f805f805f60a0868803121561338157613380612dcf565b5b5f86013567ffffffffffffffff81111561339e5761339d612dd3565b5b6133aa88828901612f40565b955050602086013567ffffffffffffffff8111156133cb576133ca612dd3565b5b6133d788828901612f40565b94505060406133e88882890161309d565b93505060606133f988828901612e1d565b925050608086013567ffffffffffffffff81111561341a57613419612dd3565b5b61342688828901612f40565b9150509295509295909350565b61343c81612df6565b82525050565b5f6020820190506134555f830184613433565b92915050565b5f805f805f805f60e0888a03121561347657613475612dcf565b5b5f6134838a828b0161309d565b975050602088013567ffffffffffffffff8111156134a4576134a3612dd3565b5b6134b08a828b01612f40565b96505060406134c18a828b01612e1d565b95505060606134d28a828b0161309d565b945050608088013567ffffffffffffffff8111156134f3576134f2612dd3565b5b6134ff8a828b01612f40565b93505060a088013567ffffffffffffffff8111156135205761351f612dd3565b5b61352c8a828b01612f40565b92505060c088013567ffffffffffffffff81111561354d5761354c612dd3565b5b6135598a828b01612f40565b91505092959891949750929550565b61357181612f6d565b82525050565b5f60e08201905061358a5f83018a613433565b6135976020830189613433565b6135a46040830188613433565b81810360608301526135b6818761311e565b90506135c56080830186613568565b6135d260a0830185613568565b6135df60c08301846132f0565b98975050505050505050565b5f805f6060848603121561360257613601612dcf565b5b5f84013567ffffffffffffffff81111561361f5761361e612dd3565b5b61362b86828701612f40565b935050602061363c8682870161309d565b925050604061364d8682870161309d565b9150509250925092565b5f6020828403121561366c5761366b612dcf565b5b5f61367984828501612e1d565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6136b48161307e565b82525050565b5f6136c583836136ab565b60208301905092915050565b5f602082019050919050565b5f6136e782613682565b6136f1818561368c565b93506136fc8361369c565b805f5b8381101561372c57815161371388826136ba565b975061371e836136d1565b9250506001810190506136ff565b5085935050505092915050565b5f6020820190508181035f83015261375181846136dd565b905092915050565b5f806040838503121561376f5761376e612dcf565b5b5f61377c8582860161309d565b925050602083013567ffffffffffffffff81111561379d5761379c612dd3565b5b6137a985828601612f40565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6137e76020836130e6565b91506137f2826137b3565b602082019050919050565b5f6020820190508181035f830152613814816137db565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061385f57607f821691505b6020821081036138725761387161381b565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026138d47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613899565b6138de8683613899565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61391961391461390f8461307e565b6138f6565b61307e565b9050919050565b5f819050919050565b613932836138ff565b61394661393e82613920565b8484546138a5565b825550505050565b5f90565b61395a61394e565b613965818484613929565b505050565b5b818110156139885761397d5f82613952565b60018101905061396b565b5050565b601f8211156139cd5761399e81613878565b6139a78461388a565b810160208510156139b6578190505b6139ca6139c28561388a565b83018261396a565b50505b505050565b5f82821c905092915050565b5f6139ed5f19846008026139d2565b1980831691505092915050565b5f613a0583836139de565b9150826002028217905092915050565b613a1e826130dc565b67ffffffffffffffff811115613a3757613a36612e49565b5b613a418254613848565b613a4c82828561398c565b5f60209050601f831160018114613a7d575f8415613a6b578287015190505b613a7585826139fa565b865550613adc565b601f198416613a8b86613878565b5f5b82811015613ab257848901518255600182019150602085019450602081019050613a8d565b86831015613acf5784890151613acb601f8916826139de565b8355505b6001600288020188555050505b505050505050565b5f60c082019050613af75f830189613433565b613b046020830188613433565b613b116040830187613433565b8181036060830152613b23818661311e565b9050613b326080830185613568565b613b3f60a08301846132f0565b979650505050505050565b5f81905092915050565b7f646174613a696d6167652f7376672b786d6c3b6261736536342c0000000000005f82015250565b5f613b88601a83613b4a565b9150613b9382613b54565b601a82019050919050565b5f613ba8826130dc565b613bb28185613b4a565b9350613bc28185602086016130f6565b80840191505092915050565b5f613bd882613b7c565b9150613be48284613b9e565b915081905092915050565b7f5368617065736869667465722073657474696e6720616c6c6f776564000000005f82015250565b5f613c23601c836130e6565b9150613c2e82613bef565b602082019050919050565b5f6020820190508181035f830152613c5081613c17565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c0000005f82015250565b5f613cb8601d83613b4a565b9150613cc382613c84565b601d82019050919050565b5f613cd882613cac565b9150613ce48284613b9e565b915081905092915050565b7f7b226e616d65223a22424c4f4e4b53222c226465736372697074696f6e223a225f82015250565b5f613d23602083613b4a565b9150613d2e82613cef565b602082019050919050565b7f222c22696d616765223a22646174613a696d6167652f7376672b786d6c3b62615f8201527f736536342c000000000000000000000000000000000000000000000000000000602082015250565b5f613d93602583613b4a565b9150613d9e82613d39565b602582019050919050565b7f222c2265787465726e616c5f6c696e6b223a22000000000000000000000000005f82015250565b5f613ddd601383613b4a565b9150613de882613da9565b601382019050919050565b7f222c22726f79616c74795f62617369735f706f696e7473223a000000000000005f82015250565b5f613e27601983613b4a565b9150613e3282613df3565b601982019050919050565b7f2c22726f79616c74795f726563697069656e74223a22000000000000000000005f82015250565b5f613e71601683613b4a565b9150613e7c82613e3d565b601682019050919050565b7f227d0000000000000000000000000000000000000000000000000000000000005f82015250565b5f613ebb600283613b4a565b9150613ec682613e87565b600282019050919050565b5f613edb82613d17565b9150613ee78288613b9e565b9150613ef282613d87565b9150613efe8287613b9e565b9150613f0982613dd1565b9150613f158286613b9e565b9150613f2082613e1b565b9150613f2c8285613b9e565b9150613f3782613e65565b9150613f438284613b9e565b9150613f4e82613eaf565b91508190509695505050505050565b7f536861706573686966746572206f7574206f662072616e6765000000000000005f82015250565b5f613f916019836130e6565b9150613f9c82613f5d565b602082019050919050565b5f6020820190508181035f830152613fbe81613f85565b9050919050565b5f81519050613fd381613087565b92915050565b5f60208284031215613fee57613fed612dcf565b5b5f613ffb84828501613fc5565b91505092915050565b5f8151905061401281612e07565b92915050565b5f6020828403121561402d5761402c612dcf565b5b5f61403a84828501614004565b91505092915050565b5f815461404f81613848565b61405981866130e6565b9450600182165f81146140735760018114614089576140bb565b60ff1983168652811515602002860193506140bb565b61409285613878565b5f5b838110156140b357815481890152600182019150602081019050614094565b808801955050505b50505092915050565b5f6140de6140d96140d484612f6d565b6138f6565b61307e565b9050919050565b6140ee816140c4565b82525050565b5f60c0820190506141075f830189613433565b61411460208301886132c8565b8181036040830152614126818761311e565b9050818103606083015261413a8186614043565b905061414960808301856140e5565b61415660a08301846140e5565b979650505050505050565b5f61417361416e84612ec1565b612ea7565b90508281526020810184848401111561418f5761418e612e35565b5b61419a8482856130f6565b509392505050565b5f82601f8301126141b6576141b5612e31565b5b81516141c6848260208601614161565b91505092915050565b5f602082840312156141e4576141e3612dcf565b5b5f82015167ffffffffffffffff81111561420157614200612dd3565b5b61420d848285016141a2565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61427a8261307e565b91506142858361307e565b92508261429557614294614216565b5b828204905092915050565b7f7b226e616d65223a2200000000000000000000000000000000000000000000005f82015250565b5f6142d4600983613b4a565b91506142df826142a0565b600982019050919050565b7f20230000000000000000000000000000000000000000000000000000000000005f82015250565b5f61431e600283613b4a565b9150614329826142ea565b600282019050919050565b7f222c22617274697374223a2200000000000000000000000000000000000000005f82015250565b5f614368600c83613b4a565b915061437382614334565b600c82019050919050565b5f815461438a81613848565b6143948186613b4a565b9450600182165f81146143ae57600181146143c3576143f5565b60ff19831686528115158202860193506143f5565b6143cc85613878565b5f5b838110156143ed578154818901526001820191506020810190506143ce565b838801955050505b50505092915050565b7f222c226465736372697074696f6e223a220000000000000000000000000000005f82015250565b5f614432601183613b4a565b915061443d826143fe565b601182019050919050565b7f222c22726f79616c7479496e666f223a7b2261727469737441646472657373225f8201527f3a22000000000000000000000000000000000000000000000000000000000000602082015250565b5f6144a2602283613b4a565b91506144ad82614448565b602282019050919050565b7f222c22726f79616c747946656542794944223a000000000000000000000000005f82015250565b5f6144ec601383613b4a565b91506144f7826144b8565b601382019050919050565b7f7d2c22636f6c6c656374696f6e5f6e616d65223a2200000000000000000000005f82015250565b5f614536601583613b4a565b915061454182614502565b601582019050919050565b7f222c2277656273697465223a22000000000000000000000000000000000000005f82015250565b5f614580600d83613b4a565b915061458b8261454c565b600d82019050919050565b7f222c2265787465726e616c5f75726c223a2200000000000000000000000000005f82015250565b5f6145ca601283613b4a565b91506145d582614596565b601282019050919050565b7f222c227363726970745f74797065223a22536f6c6964697479222c22696d61675f8201527f655f74797065223a2247656e6572617469766520535647222c22696d6167652260208201527f3a22646174613a696d6167652f7376672b786d6c3b6261736536342c00000000604082015250565b5f614660605c83613b4a565b915061466b826145e0565b605c82019050919050565b5f614680826142c8565b915061468c828c613b9e565b915061469782614312565b91506146a3828b613b9e565b91506146ae8261435c565b91506146ba828a61437e565b91506146c582614426565b91506146d18289613b9e565b91506146dc82614496565b91506146e88288613b9e565b91506146f3826144e0565b91506146ff8287613b9e565b915061470a8261452a565b91506147168286613b9e565b915061472182614574565b915061472d8285613b9e565b9150614738826145be565b91506147448284613b9e565b915061474f82614654565b91508190509a9950505050505050505050565b5f61476c8261307e565b91506147778361307e565b925082820190508082111561478f5761478e614243565b5b92915050565b5f61479f8261307e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036147d1576147d0614243565b5b600182019050919050565b5f6147e68261307e565b91506147f18361307e565b925082820390508181111561480957614808614243565b5b92915050565b5f819050919050565b5f819050919050565b61483261482d8261480f565b614818565b82525050565b5f819050919050565b61485261484d8261307e565b614838565b82525050565b5f6148638285614821565b6020820191506148738284614841565b6020820191508190509392505050565b5f61488d82612dd7565b9050919050565b5f8160601b9050919050565b5f6148aa82614894565b9050919050565b5f6148bb826148a0565b9050919050565b6148d36148ce82614883565b6148b1565b82525050565b5f6148e482856148c2565b6014820191506148f48284614841565b6020820191508190509392505050565b5f67ffffffffffffffff82111561491e5761491d612e49565b5b602082029050919050565b5f80fd5b5f60ff82169050919050565b6149428161492d565b811461494c575f80fd5b50565b5f8151905061495d81614939565b92915050565b5f61497561497084614904565b612ea7565b9050806020840283018581111561498f5761498e614929565b5b835b818110156149b857806149a4888261494f565b845260208401935050602081019050614991565b5050509392505050565b5f82601f8301126149d6576149d5612e31565b5b600b6149e3848285614963565b91505092915050565b5f6101608284031215614a0257614a01612dcf565b5b5f614a0f848285016149c2565b91505092915050565b5f600b9050919050565b5f81905092915050565b5f819050919050565b614a3e8161492d565b82525050565b5f614a4f8383614a35565b60208301905092915050565b5f602082019050919050565b614a7081614a18565b614a7a8184614a22565b9250614a8582614a2c565b805f5b83811015614ab5578151614a9c8782614a44565b9650614aa783614a5b565b925050600181019050614a88565b505050505050565b5f61016082019050614ad15f830184614a67565b92915050565b5f6101a082019050614aeb5f8301866132c8565b614af860208301856132c8565b614b056040830184614a67565b949350505050565b5f67ffffffffffffffff821115614b2757614b26612e49565b5b602082029050919050565b5f81519050614b4081612f7a565b92915050565b5f614b58614b5384614b0d565b612ea7565b90508060208402830185811115614b7257614b71614929565b5b835b81811015614b9b5780614b878882614b32565b845260208401935050602081019050614b74565b5050509392505050565b5f82601f830112614bb957614bb8612e31565b5b606e614bc6848285614b46565b91505092915050565b5f610dc08284031215614be557614be4612dcf565b5b5f614bf284828501614ba5565b91505092915050565b5f606e9050919050565b5f81905092915050565b5f819050919050565b614c2181612f6d565b82525050565b5f614c328383614c18565b60208301905092915050565b5f602082019050919050565b614c5381614bfb565b614c5d8184614c05565b9250614c6882614c0f565b805f5b83811015614c98578151614c7f8782614c27565b9650614c8a83614c3e565b925050600181019050614c6b565b505050505050565b5f610f6082019050614cb45f8301876132c8565b614cc160208301866132c8565b614cce6040830185614a67565b614cdc6101a0830184614c4a565b95945050505050565b7f222c0000000000000000000000000000000000000000000000000000000000005f82015250565b5f614d19600283613b4a565b9150614d2482614ce5565b600282019050919050565b7f7d000000000000000000000000000000000000000000000000000000000000005f82015250565b5f614d63600183613b4a565b9150614d6e82614d2f565b600182019050919050565b5f614d848286613b9e565b9150614d908285613b9e565b9150614d9b82614d0d565b9150614da78284613b9e565b9150614db282614d57565b9150819050949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614e196026836130e6565b9150614e2482614dbf565b604082019050919050565b5f6020820190508181035f830152614e4681614e0d565b9050919050565b5f614e5782612f6d565b9150614e6283612f6d565b9250828203905061ffff811115614e7c57614e7b614243565b5b92915050565b7f546f6b656e206973206e6f74206c6f636b6564000000000000000000000000005f82015250565b5f614eb66013836130e6565b9150614ec182614e82565b602082019050919050565b5f6020820190508181035f830152614ee381614eaa565b9050919050565b7f53686170657368696674696e67206973207061757365640000000000000000005f82015250565b5f614f1e6017836130e6565b9150614f2982614eea565b602082019050919050565b5f6020820190508181035f830152614f4b81614f12565b9050919050565b5f606082019050614f655f830186613433565b614f726020830185613433565b614f7f6040830184613433565b949350505050565b5f81519050614f9581612faf565b92915050565b5f60208284031215614fb057614faf612dcf565b5b5f614fbd84828501614f87565b91505092915050565b7f4e6f7420617574686f72697a65640000000000000000000000000000000000005f82015250565b5f614ffa600e836130e6565b915061500582614fc6565b602082019050919050565b5f6020820190508181035f83015261502781614fee565b9050919050565b7f53686170657368696674206d61782072656163686564000000000000000000005f82015250565b5f6150626016836130e6565b915061506d8261502e565b602082019050919050565b5f6020820190508181035f83015261508f81615056565b9050919050565b7f546f6b656e206973206c6f636b656400000000000000000000000000000000005f82015250565b5f6150ca600f836130e6565b91506150d582615096565b602082019050919050565b5f6020820190508181035f8301526150f7816150be565b9050919050565b5f61510882612f6d565b91505f820361511a57615119614243565b5b600182039050919050565b5f61512f82612f6d565b915061ffff820361514357615142614243565b5b600182019050919050565b5f6151588261307e565b91506151638361307e565b92508282026151718161307e565b9150828204841483151761518857615187614243565b5b5092915050565b5f6151998261307e565b91506151a48361307e565b9250826151b4576151b3614216565b5b828206905092915050565b5f6151c98261307e565b91505f82036151db576151da614243565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e745f82015250565b5f61521a6020836130e6565b9150615225826151e6565b602082019050919050565b5f6020820190508181035f8301526152478161520e565b905091905056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa26469706673582212202633f63b7471c47255bd40243802ec87f3311a0a725534020e792fa65021a9c864736f6c63430008150033
Deployed Bytecode
0x608060405234801561000f575f80fd5b50600436106101cd575f3560e01c80638da5cb5b11610102578063d5024f06116100a0578063f2fde38b1161006f578063f2fde38b146105b5578063fd8fd066146105d1578063fd9639b3146105ef578063fddb1e801461060b576101cd565b8063d5024f0614610503578063e2fc2ae514610533578063ec805b5414610569578063f1267abd14610599576101cd565b8063a14def54116100dc578063a14def5414610443578063ac7dfb3014610473578063afa94d6c146104a3578063b4d06332146104d3576101cd565b80638da5cb5b146103c55780638ecfc5e4146103e35780639114ad5c14610413576101cd565b8063549fc8371161016f57806370735bcd1161014957806370735bcd14610351578063715018a61461035b5780637a4a3dc8146103655780637b424a6a14610395576101cd565b8063549fc837146102d35780635b265342146103035780635be38c6314610333576101cd565b8063419fa1fb116101ab578063419fa1fb146102395780634a6ad9ab146102695780634d2e12691461028557806351bf0f52146102b5576101cd565b80632be699a4146101d157806331289fb3146101ed5780633ef7c2591461021d575b5f80fd5b6101eb60048036038101906101e69190612fd9565b610627565b005b610207600480360381019061020291906130b1565b6108f4565b6040516102149190613156565b60405180910390f35b61023760048036038101906102329190613176565b610932565b005b610253600480360381019061024e9190613243565b610b60565b6040516102609190613156565b60405180910390f35b610283600480360381019061027e9190613243565b610b96565b005b61029f600480360381019061029a919061328a565b610c25565b6040516102ac91906132d7565b60405180910390f35b6102bd610c45565b6040516102ca91906132ff565b60405180910390f35b6102ed60048036038101906102e89190613318565b610c57565b6040516102fa9190613156565b60405180910390f35b61031d60048036038101906103189190613368565b610c99565b60405161032a9190613156565b60405180910390f35b61033b610d08565b6040516103489190613156565b60405180910390f35b610359610d94565b005b610363610e3a565b005b61037f600480360381019061037a91906130b1565b610ec1565b60405161038c9190613156565b60405180910390f35b6103af60048036038101906103aa9190613318565b610f5c565b6040516103bc9190613156565b60405180910390f35b6103cd61105a565b6040516103da9190613442565b60405180910390f35b6103fd60048036038101906103f8919061345b565b611081565b60405161040a9190613156565b60405180910390f35b61042d600480360381019061042891906130b1565b61145f565b60405161043a91906132d7565b60405180910390f35b61045d600480360381019061045891906130b1565b611474565b60405161046a91906132d7565b60405180910390f35b61048d600480360381019061048891906130b1565b611489565b60405161049a91906132d7565b60405180910390f35b6104bd60048036038101906104b8919061328a565b6114e5565b6040516104ca9190613156565b60405180910390f35b6104ed60048036038101906104e891906130b1565b61151c565b6040516104fa9190613156565b60405180910390f35b61051d600480360381019061051891906130b1565b6115b1565b60405161052a91906132ff565b60405180910390f35b61054d600480360381019061054891906130b1565b6115ce565b6040516105609796959493929190613577565b60405180910390f35b610583600480360381019061057e91906135eb565b611726565b6040516105909190613156565b60405180910390f35b6105b360048036038101906105ae9190613657565b611ad7565b005b6105cf60048036038101906105ca9190613657565b611b96565b005b6105d9611c8c565b6040516105e69190613739565b60405180910390f35b61060960048036038101906106049190613759565b611d95565b005b6106256004803603810190610620919061328a565b611e98565b005b61062f612546565b73ffffffffffffffffffffffffffffffffffffffff1661064d61105a565b73ffffffffffffffffffffffffffffffffffffffff16146106a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069a906137fd565b60405180910390fd5b5f80600280549050036106b65761115c90505b60026040518060e001604052808973ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018561ffff1681526020018361ffff168152602001841515815250908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816002015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160030190816108429190613a15565b506080820151816004015f6101000a81548161ffff021916908361ffff16021790555060a08201518160040160026101000a81548161ffff021916908361ffff16021790555060c08201518160040160046101000a81548160ff02191690831515021790555050507fea094a222979d47956b4d87b928349a1560ebdd04d74b9641c8e279fe55e39958787878787876040516108e396959493929190613ae4565b60405180910390a150505050505050565b60605f6109008361151c565b905061090b8161254d565b60405160200161091b9190613bce565b604051602081830303815290604052915050919050565b61093a612546565b73ffffffffffffffffffffffffffffffffffffffff1661095861105a565b73ffffffffffffffffffffffffffffffffffffffff16146109ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a5906137fd565b60405180910390fd5b5f1515600a5f9054906101000a900460ff16151514610a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f990613c39565b60405180910390fd5b5f60028981548110610a1757610a16613c57565b5b905f5260205f209060050201905087815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555086816001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555085816002015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084816003019081610afb9190613a15565b5083816004015f6101000a81548161ffff021916908361ffff160217905550828160040160026101000a81548161ffff021916908361ffff160217905550818160040160046101000a81548160ff021916908315150217905550505050505050505050565b60605f610b6c8361254d565b604051602001610b7c9190613cce565b604051602081830303815290604052905080915050919050565b610b9e612546565b73ffffffffffffffffffffffffffffffffffffffff16610bbc61105a565b73ffffffffffffffffffffffffffffffffffffffff1614610c12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c09906137fd565b60405180910390fd5b8060039081610c219190613a15565b5050565b6009602052815f5260405f20602052805f5260405f205f91509150505481565b600a5f9054906101000a900460ff1681565b60605f610c65858585610f5c565b9050610c708161254d565b604051602001610c809190613bce565b6040516020818303038152906040529150509392505050565b60605f610ca58361254d565b90505f878288610cb4896126dd565b610cd58973ffffffffffffffffffffffffffffffffffffffff166014612836565b604051602001610ce9959493929190613ed1565b6040516020818303038152906040529050809250505095945050505050565b60038054610d1590613848565b80601f0160208091040260200160405190810160405280929190818152602001828054610d4190613848565b8015610d8c5780601f10610d6357610100808354040283529160200191610d8c565b820191905f5260205f20905b815481529060010190602001808311610d6f57829003601f168201915b505050505081565b610d9c612546565b73ffffffffffffffffffffffffffffffffffffffff16610dba61105a565b73ffffffffffffffffffffffffffffffffffffffff1614610e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e07906137fd565b60405180910390fd5b600a5f9054906101000a900460ff1615600a5f6101000a81548160ff021916908315150217905550565b610e42612546565b73ffffffffffffffffffffffffffffffffffffffff16610e6061105a565b73ffffffffffffffffffffffffffffffffffffffff1614610eb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ead906137fd565b60405180910390fd5b610ebf5f612a6b565b565b6008602052805f5260405f205f915090508054610edd90613848565b80601f0160208091040260200160405190810160405280929190818152602001828054610f0990613848565b8015610f545780601f10610f2b57610100808354040283529160200191610f54565b820191905f5260205f20905b815481529060010190602001808311610f3757829003601f168201915b505050505081565b60606002805490508210610fa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9c90613fa7565b60405180910390fd5b611051737f463b874ec264dc7bd8c780f5790b4fc371f11f73ffffffffffffffffffffffffffffffffffffffff1663dbc119d7866040518263ffffffff1660e01b8152600401610ff591906132d7565b602060405180830381865afa158015611010573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110349190613fd9565b8473ffffffffffffffffffffffffffffffffffffffff1684612b2c565b90509392505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060805f151560075f8b81526020019081526020015f205f9054906101000a900460ff1615150361116e57600260045f8b81526020019081526020015f2054815481106110d1576110d0613c57565b5b905f5260205f20906005020160030180546110eb90613848565b80601f016020809104026020016040519081016040528092919081815260200182805461111790613848565b80156111625780601f1061113957610100808354040283529160200191611162565b820191905f5260205f20905b81548152906001019060200180831161114557829003601f168201915b50505050509050611209565b60085f8a81526020019081526020015f20805461118a90613848565b80601f01602080910402602001604051908101604052809291908181526020018280546111b690613848565b80156112015780601f106111d857610100808354040283529160200191611201565b820191905f5260205f20905b8154815290600101906020018083116111e457829003601f168201915b505050505090505b5f60045f8b81526020019081526020015f205490505f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630a61de26737f463b874ec264dc7bd8c780f5790b4fc371f11f73ffffffffffffffffffffffffffffffffffffffff16636352211e8e6040518263ffffffff1660e01b81526004016112a991906132d7565b602060405180830381865afa1580156112c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112e89190614018565b6112f18e611489565b8d6002878154811061130657611305613c57565b5b905f5260205f2090600502016003016002888154811061132957611328613c57565b5b905f5260205f20906005020160040160029054906101000a900461ffff166002898154811061135b5761135a613c57565b5b905f5260205f2090600502016004015f9054906101000a900461ffff166040518763ffffffff1660e01b8152600401611399969594939291906140f4565b5f60405180830381865afa1580156113b3573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906113db91906141cf565b90505f836113e88d6126dd565b60038461140c8e73ffffffffffffffffffffffffffffffffffffffff166014612836565b61142160648f61141c9190614270565b6126dd565b8d8d8d60405160200161143c99989796959493929190614676565b604051602081830303815290604052905080945050505050979650505050505050565b6005602052805f5260405f205f915090505481565b6004602052805f5260405f205f915090505481565b5f805f5b6002805490508110156114db5760095f8581526020019081526020015f205f8281526020019081526020015f2054826114c69190614762565b915080806114d390614795565b91505061148d565b5080915050919050565b6060611514838360045f60055f8981526020019081526020015f205481526020019081526020015f2054612b2c565b905092915050565b60605f60014361152c91906147dc565b404860405160200161153f929190614858565b604051602081830303815290604052805190602001205f1c90505f414260405160200161156d9291906148d9565b604051602081830303815290604052805190602001205f1c73ffffffffffffffffffffffffffffffffffffffff1690506115a8828286612b2c565b92505050919050565b6007602052805f5260405f205f915054906101000a900460ff1681565b600281815481106115dd575f80fd5b905f5260205f2090600502015f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600301805461166b90613848565b80601f016020809104026020016040519081016040528092919081815260200182805461169790613848565b80156116e25780601f106116b9576101008083540402835291602001916116e2565b820191905f5260205f20905b8154815290600101906020018083116116c557829003601f168201915b505050505090806004015f9054906101000a900461ffff16908060040160029054906101000a900461ffff16908060040160049054906101000a900460ff16905087565b60605f60045f60055f8781526020019081526020015f205481526020019081526020015f205490505f6002828154811061176357611762613c57565b5b905f5260205f2090600502015f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e3ec0475866040518263ffffffff1660e01b81526004016117c991906132d7565b61016060405180830381865afa1580156117e5573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061180991906149ec565b9050670de0b6b3a76400008561181f9190614270565b94505f6002838154811061183657611835613c57565b5b905f5260205f2090600502015f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aaebbea8836040518263ffffffff1660e01b815260040161189c9190614abd565b5f60405180830381865afa1580156118b6573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906118de91906141cf565b90505f600284815481106118f5576118f4613c57565b5b905f5260205f2090600502016001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663401a28d88789866040518463ffffffff1660e01b815260040161196093929190614ad7565b610dc060405180830381865afa15801561197c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119a09190614bcf565b90506c01431e0fae6d7217caa0000000866119bb9190614270565b955066038d7ea4c68000876119d09190614270565b96505f600285815481106119e7576119e6613c57565b5b905f5260205f2090600502016002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663703996db888a87866040518563ffffffff1660e01b8152600401611a549493929190614ca0565b5f60405180830381865afa158015611a6e573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190611a9691906141cf565b90505f89611aa38361254d565b85604051602001611ab693929190614d79565b60405160208183030381529060405290508096505050505050509392505050565b611adf612546565b73ffffffffffffffffffffffffffffffffffffffff16611afd61105a565b73ffffffffffffffffffffffffffffffffffffffff1614611b53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4a906137fd565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611b9e612546565b73ffffffffffffffffffffffffffffffffffffffff16611bbc61105a565b73ffffffffffffffffffffffffffffffffffffffff1614611c12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c09906137fd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7790614e2f565b60405180910390fd5b611c8981612a6b565b50565b60605f60028054905067ffffffffffffffff811115611cae57611cad612e49565b5b604051908082528060200260200182016040528015611cdc5781602001602082028036833780820191505090505b5090505f5b8151811015611d8d5760028181548110611cfe57611cfd613c57565b5b905f5260205f20906005020160040160029054906101000a900461ffff1660028281548110611d3057611d2f613c57565b5b905f5260205f2090600502016004015f9054906101000a900461ffff16611d579190614e4d565b61ffff16828281518110611d6e57611d6d613c57565b5b6020026020010181815250508080611d8590614795565b915050611ce1565b508091505090565b611d9d612546565b73ffffffffffffffffffffffffffffffffffffffff16611dbb61105a565b73ffffffffffffffffffffffffffffffffffffffff1614611e11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e08906137fd565b60405180910390fd5b6001151560075f8481526020019081526020015f205f9054906101000a900460ff16151514611e75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6c90614ecc565b60405180910390fd5b8060085f8481526020019081526020015f209081611e939190613a15565b505050565b5f737f463b874ec264dc7bd8c780f5790b4fc371f11f73ffffffffffffffffffffffffffffffffffffffff16636352211e846040518263ffffffff1660e01b8152600401611ee691906132d7565b602060405180830381865afa158015611f01573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f259190614018565b905060011515600a5f9054906101000a900460ff16151514611f7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7390614f34565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148061205057506d76a84fef008cdabe6409d2fe638b73ffffffffffffffffffffffffffffffffffffffff166390c9a2d03383737f463b874ec264dc7bd8c780f5790b4fc371f11f6040518463ffffffff1660e01b815260040161201093929190614f52565b602060405180830381865afa15801561202b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061204f9190614f9b565b5b8061208d575061205e61105a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6120cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c390615010565b60405180910390fd5b6002805490508210612113576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210a90613fa7565b60405180910390fd5b6002828154811061212757612126613c57565b5b905f5260205f2090600502016004015f9054906101000a900461ffff1661ffff166002838154811061215c5761215b613c57565b5b905f5260205f20906005020160040160029054906101000a900461ffff1661ffff16106121be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b590615078565b60405180910390fd5b5f600283815481106121d3576121d2613c57565b5b905f5260205f20906005020160040160049054906101000a900460ff1690508080612230575061220161105a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61226f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226690615010565b60405180910390fd5b5f151560075f8681526020019081526020015f205f9054906101000a900460ff161515146122d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c9906150e0565b60405180910390fd5b8061230157600160075f8681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b5f151560065f8681526020019081526020015f205f9054906101000a900460ff161515036123f457600160065f8681526020019081526020015f205f6101000a81548160ff0219169083151502179055508360055f737f463b874ec264dc7bd8c780f5790b4fc371f11f73ffffffffffffffffffffffffffffffffffffffff1663dbc119d7886040518263ffffffff1660e01b81526004016123a391906132d7565b602060405180830381865afa1580156123be573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123e29190613fd9565b81526020019081526020015f20819055505b600260045f8681526020019081526020015f20548154811061241957612418613c57565b5b905f5260205f209060050201600401600281819054906101000a900461ffff1680929190612446906150fe565b91906101000a81548161ffff021916908361ffff160217905550506002838154811061247557612474613c57565b5b905f5260205f209060050201600401600281819054906101000a900461ffff16809291906124a290615125565b91906101000a81548161ffff021916908361ffff160217905550508260045f8681526020019081526020015f208190555060095f8581526020019081526020015f205f8481526020019081526020015f205f81548092919061250390614795565b9190505550837ff5830b23450539a2f9b0c796013b74ddc22d97cb3f0ed1b9aee471ac875abf918460405161253891906132d7565b60405180910390a250505050565b5f33905090565b60605f825190505f81036125725760405180602001604052805f8152509150506126d8565b5f60036002836125829190614762565b61258c9190614270565b6004612598919061514e565b90505f6020826125a89190614762565b67ffffffffffffffff8111156125c1576125c0612e49565b5b6040519080825280601f01601f1916602001820160405280156125f35781602001600182028036833780820191505090505b5090505f60405180606001604052806040815260200161524f60409139905060018101602083015f5b868110156126955760038101905062ffffff818a015116603f8160121c168401518060081b905060ff603f83600c1c1686015116810190508060081b905060ff603f8360061c1686015116810190508060081b905060ff603f831686015116810190508060e01b9050808452600484019350505061261c565b5060038606600181146126af57600281146126bf576126ca565b613d3d60f01b60028303526126ca565b603d60f81b60018303525b508484525050819450505050505b919050565b60605f8203612723576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612831565b5f8290505f5b5f821461275257808061273b90614795565b915050600a8261274b9190614270565b9150612729565b5f8167ffffffffffffffff81111561276d5761276c612e49565b5b6040519080825280601f01601f19166020018201604052801561279f5781602001600182028036833780820191505090505b5090505b5f851461282a576001826127b791906147dc565b9150600a856127c6919061518f565b60306127d29190614762565b60f81b8183815181106127e8576127e7613c57565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600a856128239190614270565b94506127a3565b8093505050505b919050565b60605f6002836002612848919061514e565b6128529190614762565b67ffffffffffffffff81111561286b5761286a612e49565b5b6040519080825280601f01601f19166020018201604052801561289d5781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000815f815181106128d4576128d3613c57565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061293757612936613c57565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f6001846002612975919061514e565b61297f9190614762565b90505b6001811115612a1e577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106129c1576129c0613c57565b5b1a60f81b8282815181106129d8576129d7613c57565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600485901c945080612a17906151bf565b9050612982565b505f8414612a61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5890615230565b60405180910390fd5b8091505092915050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60605f60028381548110612b4357612b42613c57565b5b905f5260205f2090600502015f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e3ec0475866040518263ffffffff1660e01b8152600401612ba991906132d7565b61016060405180830381865afa158015612bc5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612be991906149ec565b9050670de0b6b3a764000085612bff9190614270565b94505f60028481548110612c1657612c15613c57565b5b905f5260205f2090600502016001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663401a28d88688856040518463ffffffff1660e01b8152600401612c8193929190614ad7565b610dc060405180830381865afa158015612c9d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cc19190614bcf565b90506c01431e0fae6d7217caa000000085612cdc9190614270565b945066038d7ea4c6800086612cf19190614270565b95505f60028581548110612d0857612d07613c57565b5b905f5260205f2090600502016002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663703996db878986866040518563ffffffff1660e01b8152600401612d759493929190614ca0565b5f60405180830381865afa158015612d8f573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190612db791906141cf565b90508093505050509392505050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612e0082612dd7565b9050919050565b612e1081612df6565b8114612e1a575f80fd5b50565b5f81359050612e2b81612e07565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612e7f82612e39565b810181811067ffffffffffffffff82111715612e9e57612e9d612e49565b5b80604052505050565b5f612eb0612dc6565b9050612ebc8282612e76565b919050565b5f67ffffffffffffffff821115612edb57612eda612e49565b5b612ee482612e39565b9050602081019050919050565b828183375f83830152505050565b5f612f11612f0c84612ec1565b612ea7565b905082815260208101848484011115612f2d57612f2c612e35565b5b612f38848285612ef1565b509392505050565b5f82601f830112612f5457612f53612e31565b5b8135612f64848260208601612eff565b91505092915050565b5f61ffff82169050919050565b612f8381612f6d565b8114612f8d575f80fd5b50565b5f81359050612f9e81612f7a565b92915050565b5f8115159050919050565b612fb881612fa4565b8114612fc2575f80fd5b50565b5f81359050612fd381612faf565b92915050565b5f805f805f8060c08789031215612ff357612ff2612dcf565b5b5f61300089828a01612e1d565b965050602061301189828a01612e1d565b955050604061302289828a01612e1d565b945050606087013567ffffffffffffffff81111561304357613042612dd3565b5b61304f89828a01612f40565b935050608061306089828a01612f90565b92505060a061307189828a01612fc5565b9150509295509295509295565b5f819050919050565b6130908161307e565b811461309a575f80fd5b50565b5f813590506130ab81613087565b92915050565b5f602082840312156130c6576130c5612dcf565b5b5f6130d38482850161309d565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156131135780820151818401526020810190506130f8565b5f8484015250505050565b5f613128826130dc565b61313281856130e6565b93506131428185602086016130f6565b61314b81612e39565b840191505092915050565b5f6020820190508181035f83015261316e818461311e565b905092915050565b5f805f805f805f80610100898b03121561319357613192612dcf565b5b5f6131a08b828c0161309d565b98505060206131b18b828c01612e1d565b97505060406131c28b828c01612e1d565b96505060606131d38b828c01612e1d565b955050608089013567ffffffffffffffff8111156131f4576131f3612dd3565b5b6132008b828c01612f40565b94505060a06132118b828c01612f90565b93505060c06132228b828c01612f90565b92505060e06132338b828c01612fc5565b9150509295985092959890939650565b5f6020828403121561325857613257612dcf565b5b5f82013567ffffffffffffffff81111561327557613274612dd3565b5b61328184828501612f40565b91505092915050565b5f80604083850312156132a05761329f612dcf565b5b5f6132ad8582860161309d565b92505060206132be8582860161309d565b9150509250929050565b6132d18161307e565b82525050565b5f6020820190506132ea5f8301846132c8565b92915050565b6132f981612fa4565b82525050565b5f6020820190506133125f8301846132f0565b92915050565b5f805f6060848603121561332f5761332e612dcf565b5b5f61333c8682870161309d565b935050602061334d86828701612e1d565b925050604061335e8682870161309d565b9150509250925092565b5f805f805f60a0868803121561338157613380612dcf565b5b5f86013567ffffffffffffffff81111561339e5761339d612dd3565b5b6133aa88828901612f40565b955050602086013567ffffffffffffffff8111156133cb576133ca612dd3565b5b6133d788828901612f40565b94505060406133e88882890161309d565b93505060606133f988828901612e1d565b925050608086013567ffffffffffffffff81111561341a57613419612dd3565b5b61342688828901612f40565b9150509295509295909350565b61343c81612df6565b82525050565b5f6020820190506134555f830184613433565b92915050565b5f805f805f805f60e0888a03121561347657613475612dcf565b5b5f6134838a828b0161309d565b975050602088013567ffffffffffffffff8111156134a4576134a3612dd3565b5b6134b08a828b01612f40565b96505060406134c18a828b01612e1d565b95505060606134d28a828b0161309d565b945050608088013567ffffffffffffffff8111156134f3576134f2612dd3565b5b6134ff8a828b01612f40565b93505060a088013567ffffffffffffffff8111156135205761351f612dd3565b5b61352c8a828b01612f40565b92505060c088013567ffffffffffffffff81111561354d5761354c612dd3565b5b6135598a828b01612f40565b91505092959891949750929550565b61357181612f6d565b82525050565b5f60e08201905061358a5f83018a613433565b6135976020830189613433565b6135a46040830188613433565b81810360608301526135b6818761311e565b90506135c56080830186613568565b6135d260a0830185613568565b6135df60c08301846132f0565b98975050505050505050565b5f805f6060848603121561360257613601612dcf565b5b5f84013567ffffffffffffffff81111561361f5761361e612dd3565b5b61362b86828701612f40565b935050602061363c8682870161309d565b925050604061364d8682870161309d565b9150509250925092565b5f6020828403121561366c5761366b612dcf565b5b5f61367984828501612e1d565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6136b48161307e565b82525050565b5f6136c583836136ab565b60208301905092915050565b5f602082019050919050565b5f6136e782613682565b6136f1818561368c565b93506136fc8361369c565b805f5b8381101561372c57815161371388826136ba565b975061371e836136d1565b9250506001810190506136ff565b5085935050505092915050565b5f6020820190508181035f83015261375181846136dd565b905092915050565b5f806040838503121561376f5761376e612dcf565b5b5f61377c8582860161309d565b925050602083013567ffffffffffffffff81111561379d5761379c612dd3565b5b6137a985828601612f40565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6137e76020836130e6565b91506137f2826137b3565b602082019050919050565b5f6020820190508181035f830152613814816137db565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061385f57607f821691505b6020821081036138725761387161381b565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026138d47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613899565b6138de8683613899565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61391961391461390f8461307e565b6138f6565b61307e565b9050919050565b5f819050919050565b613932836138ff565b61394661393e82613920565b8484546138a5565b825550505050565b5f90565b61395a61394e565b613965818484613929565b505050565b5b818110156139885761397d5f82613952565b60018101905061396b565b5050565b601f8211156139cd5761399e81613878565b6139a78461388a565b810160208510156139b6578190505b6139ca6139c28561388a565b83018261396a565b50505b505050565b5f82821c905092915050565b5f6139ed5f19846008026139d2565b1980831691505092915050565b5f613a0583836139de565b9150826002028217905092915050565b613a1e826130dc565b67ffffffffffffffff811115613a3757613a36612e49565b5b613a418254613848565b613a4c82828561398c565b5f60209050601f831160018114613a7d575f8415613a6b578287015190505b613a7585826139fa565b865550613adc565b601f198416613a8b86613878565b5f5b82811015613ab257848901518255600182019150602085019450602081019050613a8d565b86831015613acf5784890151613acb601f8916826139de565b8355505b6001600288020188555050505b505050505050565b5f60c082019050613af75f830189613433565b613b046020830188613433565b613b116040830187613433565b8181036060830152613b23818661311e565b9050613b326080830185613568565b613b3f60a08301846132f0565b979650505050505050565b5f81905092915050565b7f646174613a696d6167652f7376672b786d6c3b6261736536342c0000000000005f82015250565b5f613b88601a83613b4a565b9150613b9382613b54565b601a82019050919050565b5f613ba8826130dc565b613bb28185613b4a565b9350613bc28185602086016130f6565b80840191505092915050565b5f613bd882613b7c565b9150613be48284613b9e565b915081905092915050565b7f5368617065736869667465722073657474696e6720616c6c6f776564000000005f82015250565b5f613c23601c836130e6565b9150613c2e82613bef565b602082019050919050565b5f6020820190508181035f830152613c5081613c17565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c0000005f82015250565b5f613cb8601d83613b4a565b9150613cc382613c84565b601d82019050919050565b5f613cd882613cac565b9150613ce48284613b9e565b915081905092915050565b7f7b226e616d65223a22424c4f4e4b53222c226465736372697074696f6e223a225f82015250565b5f613d23602083613b4a565b9150613d2e82613cef565b602082019050919050565b7f222c22696d616765223a22646174613a696d6167652f7376672b786d6c3b62615f8201527f736536342c000000000000000000000000000000000000000000000000000000602082015250565b5f613d93602583613b4a565b9150613d9e82613d39565b602582019050919050565b7f222c2265787465726e616c5f6c696e6b223a22000000000000000000000000005f82015250565b5f613ddd601383613b4a565b9150613de882613da9565b601382019050919050565b7f222c22726f79616c74795f62617369735f706f696e7473223a000000000000005f82015250565b5f613e27601983613b4a565b9150613e3282613df3565b601982019050919050565b7f2c22726f79616c74795f726563697069656e74223a22000000000000000000005f82015250565b5f613e71601683613b4a565b9150613e7c82613e3d565b601682019050919050565b7f227d0000000000000000000000000000000000000000000000000000000000005f82015250565b5f613ebb600283613b4a565b9150613ec682613e87565b600282019050919050565b5f613edb82613d17565b9150613ee78288613b9e565b9150613ef282613d87565b9150613efe8287613b9e565b9150613f0982613dd1565b9150613f158286613b9e565b9150613f2082613e1b565b9150613f2c8285613b9e565b9150613f3782613e65565b9150613f438284613b9e565b9150613f4e82613eaf565b91508190509695505050505050565b7f536861706573686966746572206f7574206f662072616e6765000000000000005f82015250565b5f613f916019836130e6565b9150613f9c82613f5d565b602082019050919050565b5f6020820190508181035f830152613fbe81613f85565b9050919050565b5f81519050613fd381613087565b92915050565b5f60208284031215613fee57613fed612dcf565b5b5f613ffb84828501613fc5565b91505092915050565b5f8151905061401281612e07565b92915050565b5f6020828403121561402d5761402c612dcf565b5b5f61403a84828501614004565b91505092915050565b5f815461404f81613848565b61405981866130e6565b9450600182165f81146140735760018114614089576140bb565b60ff1983168652811515602002860193506140bb565b61409285613878565b5f5b838110156140b357815481890152600182019150602081019050614094565b808801955050505b50505092915050565b5f6140de6140d96140d484612f6d565b6138f6565b61307e565b9050919050565b6140ee816140c4565b82525050565b5f60c0820190506141075f830189613433565b61411460208301886132c8565b8181036040830152614126818761311e565b9050818103606083015261413a8186614043565b905061414960808301856140e5565b61415660a08301846140e5565b979650505050505050565b5f61417361416e84612ec1565b612ea7565b90508281526020810184848401111561418f5761418e612e35565b5b61419a8482856130f6565b509392505050565b5f82601f8301126141b6576141b5612e31565b5b81516141c6848260208601614161565b91505092915050565b5f602082840312156141e4576141e3612dcf565b5b5f82015167ffffffffffffffff81111561420157614200612dd3565b5b61420d848285016141a2565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61427a8261307e565b91506142858361307e565b92508261429557614294614216565b5b828204905092915050565b7f7b226e616d65223a2200000000000000000000000000000000000000000000005f82015250565b5f6142d4600983613b4a565b91506142df826142a0565b600982019050919050565b7f20230000000000000000000000000000000000000000000000000000000000005f82015250565b5f61431e600283613b4a565b9150614329826142ea565b600282019050919050565b7f222c22617274697374223a2200000000000000000000000000000000000000005f82015250565b5f614368600c83613b4a565b915061437382614334565b600c82019050919050565b5f815461438a81613848565b6143948186613b4a565b9450600182165f81146143ae57600181146143c3576143f5565b60ff19831686528115158202860193506143f5565b6143cc85613878565b5f5b838110156143ed578154818901526001820191506020810190506143ce565b838801955050505b50505092915050565b7f222c226465736372697074696f6e223a220000000000000000000000000000005f82015250565b5f614432601183613b4a565b915061443d826143fe565b601182019050919050565b7f222c22726f79616c7479496e666f223a7b2261727469737441646472657373225f8201527f3a22000000000000000000000000000000000000000000000000000000000000602082015250565b5f6144a2602283613b4a565b91506144ad82614448565b602282019050919050565b7f222c22726f79616c747946656542794944223a000000000000000000000000005f82015250565b5f6144ec601383613b4a565b91506144f7826144b8565b601382019050919050565b7f7d2c22636f6c6c656374696f6e5f6e616d65223a2200000000000000000000005f82015250565b5f614536601583613b4a565b915061454182614502565b601582019050919050565b7f222c2277656273697465223a22000000000000000000000000000000000000005f82015250565b5f614580600d83613b4a565b915061458b8261454c565b600d82019050919050565b7f222c2265787465726e616c5f75726c223a2200000000000000000000000000005f82015250565b5f6145ca601283613b4a565b91506145d582614596565b601282019050919050565b7f222c227363726970745f74797065223a22536f6c6964697479222c22696d61675f8201527f655f74797065223a2247656e6572617469766520535647222c22696d6167652260208201527f3a22646174613a696d6167652f7376672b786d6c3b6261736536342c00000000604082015250565b5f614660605c83613b4a565b915061466b826145e0565b605c82019050919050565b5f614680826142c8565b915061468c828c613b9e565b915061469782614312565b91506146a3828b613b9e565b91506146ae8261435c565b91506146ba828a61437e565b91506146c582614426565b91506146d18289613b9e565b91506146dc82614496565b91506146e88288613b9e565b91506146f3826144e0565b91506146ff8287613b9e565b915061470a8261452a565b91506147168286613b9e565b915061472182614574565b915061472d8285613b9e565b9150614738826145be565b91506147448284613b9e565b915061474f82614654565b91508190509a9950505050505050505050565b5f61476c8261307e565b91506147778361307e565b925082820190508082111561478f5761478e614243565b5b92915050565b5f61479f8261307e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036147d1576147d0614243565b5b600182019050919050565b5f6147e68261307e565b91506147f18361307e565b925082820390508181111561480957614808614243565b5b92915050565b5f819050919050565b5f819050919050565b61483261482d8261480f565b614818565b82525050565b5f819050919050565b61485261484d8261307e565b614838565b82525050565b5f6148638285614821565b6020820191506148738284614841565b6020820191508190509392505050565b5f61488d82612dd7565b9050919050565b5f8160601b9050919050565b5f6148aa82614894565b9050919050565b5f6148bb826148a0565b9050919050565b6148d36148ce82614883565b6148b1565b82525050565b5f6148e482856148c2565b6014820191506148f48284614841565b6020820191508190509392505050565b5f67ffffffffffffffff82111561491e5761491d612e49565b5b602082029050919050565b5f80fd5b5f60ff82169050919050565b6149428161492d565b811461494c575f80fd5b50565b5f8151905061495d81614939565b92915050565b5f61497561497084614904565b612ea7565b9050806020840283018581111561498f5761498e614929565b5b835b818110156149b857806149a4888261494f565b845260208401935050602081019050614991565b5050509392505050565b5f82601f8301126149d6576149d5612e31565b5b600b6149e3848285614963565b91505092915050565b5f6101608284031215614a0257614a01612dcf565b5b5f614a0f848285016149c2565b91505092915050565b5f600b9050919050565b5f81905092915050565b5f819050919050565b614a3e8161492d565b82525050565b5f614a4f8383614a35565b60208301905092915050565b5f602082019050919050565b614a7081614a18565b614a7a8184614a22565b9250614a8582614a2c565b805f5b83811015614ab5578151614a9c8782614a44565b9650614aa783614a5b565b925050600181019050614a88565b505050505050565b5f61016082019050614ad15f830184614a67565b92915050565b5f6101a082019050614aeb5f8301866132c8565b614af860208301856132c8565b614b056040830184614a67565b949350505050565b5f67ffffffffffffffff821115614b2757614b26612e49565b5b602082029050919050565b5f81519050614b4081612f7a565b92915050565b5f614b58614b5384614b0d565b612ea7565b90508060208402830185811115614b7257614b71614929565b5b835b81811015614b9b5780614b878882614b32565b845260208401935050602081019050614b74565b5050509392505050565b5f82601f830112614bb957614bb8612e31565b5b606e614bc6848285614b46565b91505092915050565b5f610dc08284031215614be557614be4612dcf565b5b5f614bf284828501614ba5565b91505092915050565b5f606e9050919050565b5f81905092915050565b5f819050919050565b614c2181612f6d565b82525050565b5f614c328383614c18565b60208301905092915050565b5f602082019050919050565b614c5381614bfb565b614c5d8184614c05565b9250614c6882614c0f565b805f5b83811015614c98578151614c7f8782614c27565b9650614c8a83614c3e565b925050600181019050614c6b565b505050505050565b5f610f6082019050614cb45f8301876132c8565b614cc160208301866132c8565b614cce6040830185614a67565b614cdc6101a0830184614c4a565b95945050505050565b7f222c0000000000000000000000000000000000000000000000000000000000005f82015250565b5f614d19600283613b4a565b9150614d2482614ce5565b600282019050919050565b7f7d000000000000000000000000000000000000000000000000000000000000005f82015250565b5f614d63600183613b4a565b9150614d6e82614d2f565b600182019050919050565b5f614d848286613b9e565b9150614d908285613b9e565b9150614d9b82614d0d565b9150614da78284613b9e565b9150614db282614d57565b9150819050949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614e196026836130e6565b9150614e2482614dbf565b604082019050919050565b5f6020820190508181035f830152614e4681614e0d565b9050919050565b5f614e5782612f6d565b9150614e6283612f6d565b9250828203905061ffff811115614e7c57614e7b614243565b5b92915050565b7f546f6b656e206973206e6f74206c6f636b6564000000000000000000000000005f82015250565b5f614eb66013836130e6565b9150614ec182614e82565b602082019050919050565b5f6020820190508181035f830152614ee381614eaa565b9050919050565b7f53686170657368696674696e67206973207061757365640000000000000000005f82015250565b5f614f1e6017836130e6565b9150614f2982614eea565b602082019050919050565b5f6020820190508181035f830152614f4b81614f12565b9050919050565b5f606082019050614f655f830186613433565b614f726020830185613433565b614f7f6040830184613433565b949350505050565b5f81519050614f9581612faf565b92915050565b5f60208284031215614fb057614faf612dcf565b5b5f614fbd84828501614f87565b91505092915050565b7f4e6f7420617574686f72697a65640000000000000000000000000000000000005f82015250565b5f614ffa600e836130e6565b915061500582614fc6565b602082019050919050565b5f6020820190508181035f83015261502781614fee565b9050919050565b7f53686170657368696674206d61782072656163686564000000000000000000005f82015250565b5f6150626016836130e6565b915061506d8261502e565b602082019050919050565b5f6020820190508181035f83015261508f81615056565b9050919050565b7f546f6b656e206973206c6f636b656400000000000000000000000000000000005f82015250565b5f6150ca600f836130e6565b91506150d582615096565b602082019050919050565b5f6020820190508181035f8301526150f7816150be565b9050919050565b5f61510882612f6d565b91505f820361511a57615119614243565b5b600182039050919050565b5f61512f82612f6d565b915061ffff820361514357615142614243565b5b600182019050919050565b5f6151588261307e565b91506151638361307e565b92508282026151718161307e565b9150828204841483151761518857615187614243565b5b5092915050565b5f6151998261307e565b91506151a48361307e565b9250826151b4576151b3614216565b5b828206905092915050565b5f6151c98261307e565b91505f82036151db576151da614243565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e745f82015250565b5f61521a6020836130e6565b9150615225826151e6565b602082019050919050565b5f6020820190508181035f8301526152478161520e565b905091905056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa26469706673582212202633f63b7471c47255bd40243802ec87f3311a0a725534020e792fa65021a9c864736f6c63430008150033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 35 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.