Overview
TokenID
765
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Source Code Verified (Exact Match)
Contract Name:
Bibos
Compiler Version
v0.8.13+commit.abaa5c0e
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
1234567891011121314151617181920212223242526// SPDX-License-Identifier: Unlicensepragma solidity 0.8.13;/* solhint-disable */// -╖╖╖╖╖╖╖╖╖╖╖»─ ─┬╖╖╖╖─~ -╖╖╖╖╖╖╖╖╖╖╖»─ -╖╖╖╖╖╖╖╖╖╖»─ ~─╖╖╖╖╖╖╖╖╖╖╖~// ███ `███ ███▌ ███ `███ ┌▓██^ █ ╙██╗ á███^ ╔██// █B█ ███▌ █I█Γ █B█ ███▌ █O█ █ ███▄ █S█▌ ███// ███ ╒███ ███Γ ███ ╒███ ███ █ ███ ▀██▓ ██// ███ á██▀ ███Γ ███ #██╜ ╞███ █ ███ `███▄ '█╕// ███▄▓██▄ ███Γ ███▄▓██▄ ╞██▌ █ ███ ╙██╗ `// ███ "██▌ ███Γ ███ "██▌ '██▌ █' ███ ,╗█" ▀██w// ▓███ ▓██ ████ ▓███ ███ ███ █ ┌██ ██ ███▓// ███ ▐███ ^╙███ └███ ╞███ ██╕ ╫ ██▌ ██ ███// █B█ â██▌ I▐█ █B█ ║██▌ █O┐ ║ █▀ ██ █S█// ███ #██` ╓▓█ ███ #██` └█▌ ║ ╣█ ║█ε ╒███// ╔██▓╗╗@▀╝^ "╙██┐ á██▓╗╗@▀╨^ `▀██ '█╗ ,Æ██`// "▀≥»- ╞ ^╙▀▀╜"/* solhint-enable */import {ERC721} from "solmate/tokens/ERC721.sol";import {Owned} from "solmate/auth/Owned.sol";import {Render} from "libraries/Render.sol";error InsufficentValue();error MintedOut();error InvalidTokenId();
1234567891011121314151617181920212223242526// SPDX-License-Identifier: AGPL-3.0-onlypragma solidity >=0.8.0;/// @notice Modern, minimalist, and gas efficient ERC-721 implementation./// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC721.sol)abstract contract ERC721 {/*//////////////////////////////////////////////////////////////EVENTS//////////////////////////////////////////////////////////////*/event Transfer(address indexed from, address indexed to, uint256 indexed id);event Approval(address indexed owner, address indexed spender, uint256 indexed id);event ApprovalForAll(address indexed owner, address indexed operator, bool approved);/*//////////////////////////////////////////////////////////////METADATA STORAGE/LOGIC//////////////////////////////////////////////////////////////*/string public name;string public symbol;function tokenURI(uint256 id) public view virtual returns (string memory);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: AGPL-3.0-onlypragma solidity >=0.8.0;/// @notice Simple single owner authorization mixin./// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/auth/Owned.sol)abstract contract Owned {/*//////////////////////////////////////////////////////////////EVENTS//////////////////////////////////////////////////////////////*/event OwnerUpdated(address indexed user, address indexed newOwner);/*//////////////////////////////////////////////////////////////OWNERSHIP STORAGE//////////////////////////////////////////////////////////////*/address public owner;modifier onlyOwner() virtual {require(msg.sender == owner, "UNAUTHORIZED");_;}/*//////////////////////////////////////////////////////////////CONSTRUCTOR
1234567891011121314151617181920212223242526// SPDX-License-Identifier: Unlicensepragma solidity >=0.8.0;import {Metadata} from "libraries/Metadata.sol";import {Util} from "libraries/Util.sol";import {Traits} from "libraries/Traits.sol";import {Data} from "./Data.sol";import {Palette} from "libraries/Palette.sol";import {Background} from "./Background.sol";import {Body} from "./Body.sol";import {Face} from "./Face.sol";import {Motes} from "./Motes.sol";import {Glints} from "./Glints.sol";import {Traits} from "./Traits.sol";import {SVG} from "./SVG.sol";library Render {string public constant description ="Floating. Hypnotizing. Divine? Bibos are 1111 friendly spirits for your wallet. Join the billions of people who love and adore bibos today.";/*//////////////////////////////////////////////////////////////TOKENURI//////////////////////////////////////////////////////////////*/function tokenURI(uint256 _tokenId, bytes32 _seed) internal pure returns (string memory) {return
1234567891011121314151617181920212223242526// SPDX-License-Identifier: UNLICENSEDpragma solidity >=0.8.0;import {Base64} from "./Base64.sol";import {Util} from "./Util.sol";library Metadata {string constant JSON_BASE64_HEADER = "data:application/json;base64,";string constant SVG_XML_BASE64_HEADER = "data:image/svg+xml;base64,";function encodeMetadata(uint256 _tokenId,string memory _name,string memory _description,string memory _attributes,string memory _backgroundColor,string memory _svg) internal pure returns (string memory) {string memory metadata = string.concat("{",Util.keyValue("tokenId", Util.uint256ToString(_tokenId)),",",Util.keyValue("name", _name),",",Util.keyValue("description", _description),",",
1234567891011121314151617181920212223242526// SPDX-License-Identifier: UNLICENSEDpragma solidity >=0.8.0;import {Test, console2} from "forge-std/Test.sol";/// @title the bibos utility library/// @notice utility functionslibrary Util {error NumberHasTooManyDigits();/// @notice wraps a string in quotes and adds a space afterfunction quote(string memory value) internal pure returns (string memory) {return string.concat('"', value, '" ');}function keyValue(string memory _key, string memory _value) internal pure returns (string memory) {return string.concat('"', _key, '":"', _value, '"');}function keyValueNoQuotes(string memory _key, string memory _value) internal pure returns (string memory) {return string.concat('"', _key, '":', _value);}/// @notice converts a tokenId to string and pads to _digits digits/// @dev tokenId must be less than 10**_digits/// @param _tokenId, uint256, the tokenId
1234567891011121314151617181920212223242526// SPDX-License-Identifier: Unlicensepragma solidity >=0.8.0;import {DensityType, PolarityType} from "./Palette.sol";import {MoteType} from "./Motes.sol";import {EyeType} from "./Eyes.sol";import {CheekType} from "./Cheeks.sol";import {MouthType} from "./Mouth.sol";import {Glints} from "./Glints.sol";import {Util} from "./Util.sol";library Traits {/*//////////////////////////////////////////////////////////////TRAITS//////////////////////////////////////////////////////////////*/function attributes(bytes32 _seed, uint256 _tokenId) internal pure returns (string memory) {string memory result = "[";result = string.concat(result, _attribute("Density", densityTrait(_seed, _tokenId)));result = string.concat(result, ",", _attribute("Polarity", polarityTrait(_seed, _tokenId)));result = string.concat(result, ",", _attribute("Glints", glintTrait(_seed)));result = string.concat(result, ",", _attribute("Motes", moteTrait(_seed)));result = string.concat(result, ",", _attribute("Eyes", eyeTrait(_seed)));result = string.concat(result, ",", _attribute("Mouth", mouthTrait(_seed)));result = string.concat(result, ",", _attribute("Cheeks", cheekTrait(_seed)));result = string.concat(result, ",", _attribute("Virtue", virtueTrait(_seed)));
1234567891011121314151617181920212223242526// SPDX-License-Identifier: Unlicensepragma solidity >=0.8.0;import {Util} from "src/libraries/Util.sol";library Data {/*//////////////////////////////////////////////////////////////POINTS//////////////////////////////////////////////////////////////*/function bodyPoints(uint256 _i) external pure returns (string[2] memory) {uint256 pos = (_i % length) * 2;string memory x = Util.bytes1ToString(bodyPointsBytes[pos]);string memory y = Util.bytes1ToString(bodyPointsBytes[pos + 1]);return [x, y];}function motePoints(uint256 _i) external pure returns (string[2] memory) {uint256 pos = (_i % length) * 2;string memory x = Util.bytes1ToString(motesPointsBytes[pos]);string memory y = Util.bytes1ToString(motesPointsBytes[pos + 1]);return [x, y];}function glintPoints(uint256 _i) external pure returns (string[2][3] memory) {uint256 pos = (_i % length) * 6;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: Unlicensepragma solidity >=0.8.0;import {Traits} from "libraries/Traits.sol";import {Data} from "libraries/Data.sol";enum DensityType {HIGH,LOW}enum PolarityType {POSITIVE,NEGATIVE}library Palette {uint256 constant length = 64;uint256 constant opacityLength = 5;/*//////////////////////////////////////////////////////////////FILL//////////////////////////////////////////////////////////////*/function bodyFill(bytes32 _seed,uint256 _i,
123456789101112131415161718192021222324// SPDX-License-Identifier: Unlicensepragma solidity >=0.8.0;import {Palette} from "./Palette.sol";import {SVG} from "./SVG.sol";library Background {/*//////////////////////////////////////////////////////////////RENDER//////////////////////////////////////////////////////////////*/function render(bytes32 _seed, uint256 _tokenId) internal pure returns (string memory) {returnSVG.element("rect",SVG.rectAttributes({_width: "100%",_height: "100%",_fill: Palette.backgroundFill(_seed, _tokenId),_attributes: ""}));}}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: Unlicensepragma solidity >=0.8.0;import {Palette, DensityType, PolarityType} from "./Palette.sol";import {Traits} from "./Traits.sol";import {Data} from "./Data.sol";import {Util} from "./Util.sol";import {SVG} from "./SVG.sol";library Body {uint256 constant circlesCount = 7;/*//////////////////////////////////////////////////////////////RENDER//////////////////////////////////////////////////////////////*/function render(bytes32 _seed, uint256 _tokenId) internal pure returns (string memory) {string[7] memory radii = ["64", "64", "64", "56", "48", "32", "24"];string memory backgroundFill = Palette.backgroundFill(_seed, _tokenId);string memory mixBlendMode = Traits.polarityType(_seed, _tokenId) == PolarityType.POSITIVE? "lighten": "multiply";string memory bodyGroupChildren = _bodyBackground(backgroundFill);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: Unlicensepragma solidity >=0.8.0;import {SVG} from "./SVG.sol";import {Eyes} from "./Eyes.sol";import {Mouth} from "./Mouth.sol";import {Cheeks} from "./Cheeks.sol";import {Data} from "./Data.sol";library Face {/*//////////////////////////////////////////////////////////////RENDER//////////////////////////////////////////////////////////////*/function render(bytes32 _seed) internal pure returns (string memory) {uint256 faceSeed = uint256(keccak256(abi.encodePacked(_seed, "face")));bool reverse = (faceSeed /= 2) % 2 == 0;string memory rotation = ["1", "2", "4", "6", "-1", "-2", "-4", "-6"][faceSeed % 8];string memory circleAttributes = SVG.circleAttributes({_radius: "80",_coords: ["100", "100"],_fill: "white",_opacity: "0.2",_mixMode: "lighten",_attributes: SVG.filterAttribute("bibo-blur-lg")
1234567891011121314151617181920212223242526// SPDX-License-Identifier: Unlicensepragma solidity >=0.8.0;import {Palette} from "./Palette.sol";import {Data} from "./Data.sol";import {Util} from "./Util.sol";import {SVG} from "./SVG.sol";import {Traits} from "./Traits.sol";enum MoteType {NONE,FLOATING,RISING,FALLING,GLISTENING}library Motes {uint256 constant GLINT_COUNT = 20;/*//////////////////////////////////////////////////////////////RENDER//////////////////////////////////////////////////////////////*/function render(bytes32 _seed, uint256 _tokenId) external pure returns (string memory) {string memory motesChildren;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: Unlicensepragma solidity >=0.8.0;import {Traits} from "libraries/Traits.sol";import {Palette} from "./Palette.sol";import {Data} from "./Data.sol";import {Util} from "./Util.sol";import {SVG} from "./SVG.sol";library Glints {/*//////////////////////////////////////////////////////////////RENDER//////////////////////////////////////////////////////////////*/function render(bytes32 _seed) external pure returns (string memory) {string memory glintsGroupChildren;uint256 glintCount = Traits.glintCount(_seed);uint256 glintSeed = uint256(keccak256(abi.encodePacked(_seed, "glint")));bool reverseRotate = glintSeed % 2 == 0;glintSeed /= 2;bool reverse = glintSeed % 2 == 0;glintSeed /= 2;string[2][3] memory coords = Data.glintPoints(glintSeed);glintSeed /= Data.length;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: Unlicensepragma solidity >=0.8.0;import {Util} from "./Util.sol";library SVG {/*//////////////////////////////////////////////////////////////ELEMENT//////////////////////////////////////////////////////////////*/function element(string memory _type, string memory _attributes) internal pure returns (string memory) {return string.concat("<", _type, " ", _attributes, "/>");}function element(string memory _type,string memory _attributes,string memory _children) internal pure returns (string memory) {return string.concat("<", _type, " ", _attributes, ">", _children, "</", _type, ">");}function element(string memory _type,string memory _attributes,string memory _child1,
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.8.0;/// @title Base64/// @author Brecht Devos - <brecht@loopring.org>/// @notice Provides a function for encoding some bytes in base64library Base64 {string internal constant TABLE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function encode(string memory _data) internal pure returns (string memory) {return encode(bytes(_data));}function encode(bytes memory _data) internal pure returns (string memory) {if (_data.length == 0) return "";// load the table into memorystring memory table = TABLE;// multiply by 4/3 rounded upuint256 encodedLen = 4 * ((_data.length + 2) / 3);// add some extra buffer at the end required for the writingstring memory result = new string(encodedLen + 32);assembly {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.6.0 <0.9.0;import "./Script.sol";import "ds-test/test.sol";// Wrappers around Cheatcodes to avoid footgunsabstract contract Test is DSTest, Script {using stdStorage for StdStorage;uint256 internal constant UINT256_MAX =115792089237316195423570985008687907853269984665640564039457584007913129639935;StdStorage internal stdstore;/*//////////////////////////////////////////////////////////////////////////STD-LOGS//////////////////////////////////////////////////////////////////////////*/event log_array(uint256[] val);event log_array(int256[] val);event log_array(address[] val);event log_named_array(string key, uint256[] val);event log_named_array(string key, int256[] val);event log_named_array(string key, address[] val);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: Unlicensepragma solidity >=0.8.0;import {Palette} from "libraries/Palette.sol";import {Util} from "libraries/Util.sol";import {SVG} from "libraries/SVG.sol";import {Traits} from "libraries/Traits.sol";import {Eyes2} from "libraries/Eyes2.sol";enum EyeType {OVAL,SMILEY,WINK,ROUND,SLEEPY,CLOVER,DIZZY,STAR,HEART,HAHA,CYCLOPS,OPALINE}library Eyes {string constant fill = "black";
1234567891011121314151617181920212223242526// SPDX-License-Identifier: Unlicensepragma solidity >=0.8.0;import {Util} from "./Util.sol";import {SVG} from "./SVG.sol";import {Traits} from "./Traits.sol";enum CheekType {NONE,CIRCULAR,FRECKLES,BIG}library Cheeks {/*//////////////////////////////////////////////////////////////RENDER//////////////////////////////////////////////////////////////*/function render(bytes32 _seed) external pure returns (string memory) {CheekType cheekType = Traits.cheekType(_seed);if (cheekType == CheekType.CIRCULAR) return _circular();if (cheekType == CheekType.FRECKLES) return _freckles();if (cheekType == CheekType.BIG) return _big();return "";}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: Unlicensepragma solidity >=0.8.0;import {Palette} from "./Palette.sol";import {Traits} from "./Traits.sol";enum MouthType {SMILE,GRATIFIED,POLITE,HMM,OOO,GRIN,SMOOCH,TOOTHY,SMIRK,VEE,CAT,BLEP}library Mouth {string constant fill = "black";/*//////////////////////////////////////////////////////////////RENDER
12345678910111213141516171819202122232425// SPDX-License-Identifier: MITpragma solidity >=0.6.0 <0.9.0;import "./Vm.sol";import "./console.sol";import "./console2.sol";abstract contract Script {bool public IS_SCRIPT = true;address constant private VM_ADDRESS =address(bytes20(uint160(uint256(keccak256('hevm cheat code')))));Vm public constant vm = Vm(VM_ADDRESS);/// @dev Compute the address a contract will be deployed at for a given deployer address and nonce/// @notice adapated from Solmate implementation (https://github.com/transmissions11/solmate/blob/main/src/utils/LibRLP.sol)function computeCreateAddress(address deployer, uint256 nonce) internal pure returns (address) {// The integer zero is treated as an empty byte string, and as a result it only has a length prefix, 0x80, computed via 0x80 + 0.// A one byte integer uses its own value as its length prefix, there is no additional "0x80 + length" prefix that comes before it.if (nonce == 0x00) return addressFromLast20Bytes(keccak256(abi.encodePacked(bytes1(0xd6), bytes1(0x94), deployer, bytes1(0x80))));if (nonce <= 0x7f) return addressFromLast20Bytes(keccak256(abi.encodePacked(bytes1(0xd6), bytes1(0x94), deployer, uint8(nonce))));// Nonces greater than 1 byte all follow a consistent encoding scheme, where each value is preceded by a prefix of 0x80 + length.if (nonce <= 2**8 - 1) return addressFromLast20Bytes(keccak256(abi.encodePacked(bytes1(0xd7), bytes1(0x94), deployer, bytes1(0x81), uint8(nonce))));if (nonce <= 2**16 - 1) return addressFromLast20Bytes(keccak256(abi.encodePacked(bytes1(0xd8), bytes1(0x94), deployer, bytes1(0x82), uint16(nonce))));
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0-or-later// This program is free software: you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation, either version 3 of the License, or// (at your option) any later version.// This program is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.// You should have received a copy of the GNU General Public License// along with this program. If not, see <http://www.gnu.org/licenses/>.pragma solidity >=0.5.0;contract DSTest {event log (string);event logs (bytes);event log_address (address);event log_bytes32 (bytes32);event log_int (int);event log_uint (uint);event log_bytes (bytes);
123456789101112131415// SPDX-License-Identifier: Unlicensepragma solidity >=0.8.0;library Eyes2 {function opaline(string memory _fill) external pure returns (string memory) {returnstring.concat('<circle cx="58" cy="79" r="22" fill="',_fill,'"/>','<circle cx="142" cy="79" r="22" fill="',_fill,'"/>','<path d="M45.6829 86.5051C45.615 86.0823 45.8239 85.6632 46.2023 85.4628L48.3117 84.3458C48.6981 84.1411 49.1727 84.2113 49.4834 84.5191L51.1522 86.1722C51.4589 86.476 51.536 86.9422 51.3435 87.3286L50.2685 89.486C50.076 89.8724 49.6573 90.0916 49.2301 90.0297L46.9054 89.6929C46.4726 89.6302 46.1308 89.2936 46.0614 88.8618L45.6829 86.5051Z" fill="white" fill-opacity="0.9"/>','<path d="M49.0832 72.1223C49.0972 72.4245 48.962 72.5987 48.6777 72.6448C48.5583 72.6642 48.4466 72.6413 48.3427 72.5762C48.2387 72.511 48.1685 72.4199 48.132 72.3028C47.975 71.766 47.8354 71.3552 47.7134 71.0705C47.5961 70.7791 47.4453 70.5692 47.2611 70.441C47.0826 70.3118 46.8215 70.2311 46.4779 70.199C46.1389 70.1602 45.6664 70.1256 45.0604 70.095C44.7782 70.0822 44.6158 69.944544.5733 69.682C44.5538 69.5621 44.5765 69.4501 44.6413 69.3459C44.7061 69.2417 44.7968 69.1713 44.9135 69.1348C45.4814 68.9666 45.9215 68.8191 46.2336 68.6924C46.5456 68.5656 46.7683 68.4094 46.9016 68.2238C47.0349 68.0382 47.1098 67.7801 47.1262 67.4494C47.1483 67.1179 47.1477 66.6641 47.1243 66.088C47.1169 65.7905 47.2525 65.6192 47.5312 65.574C47.8155 65.5279 47.9988 65.6504 48.08165.9417C48.2371 66.4728 48.3738 66.884 48.4911 67.1754C48.6075 67.4611 48.7573 67.6652 48.9406 67.7878C49.1238 67.9104 49.3878 67.9906 49.7324 68.0284C50.0761 68.0605 50.5481 68.0923 51.1485 68.1238C51.4373 68.1414 51.6025 68.2786 51.6441 68.5355C51.6885 68.8094 51.5581 68.9945 51.2527 69.0909C50.698 69.2687 50.2679 69.4234 49.9624 69.5549C49.6569 69.6864 49.4375 69.845 49.3042 70.0306C49.1709 70.2162 49.0956 70.4715 49.0783 70.7964C49.0609 71.1214 49.0626 71.5633 49.0832 72.1223Z" fill="white" fill-opacity="0.9"/>',
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.6.0 <0.9.0;pragma experimental ABIEncoderV2;interface Vm {struct Log {bytes32[] topics;bytes data;}// Sets block.timestamp (newTimestamp)function warp(uint256) external;// Sets block.height (newHeight)function roll(uint256) external;// Sets block.basefee (newBasefee)function fee(uint256) external;// Sets block.chainidfunction chainId(uint256) external;// Loads a storage slot from an address (who, slot)function load(address,bytes32) external returns (bytes32);// Stores a value to an address' storage slot, (who, slot, value)function store(address,bytes32,bytes32) external;// Signs data, (privateKey, digest) => (v, r, s)function sign(uint256,bytes32) external returns (uint8,bytes32,bytes32);// Gets the address for a given private key, (privateKey) => (address)function addr(uint256) external returns (address);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.4.22 <0.9.0;library console {address constant CONSOLE_ADDRESS = address(0x000000000000000000636F6e736F6c652e6c6f67);function _sendLogPayload(bytes memory payload) private view {uint256 payloadLength = payload.length;address consoleAddress = CONSOLE_ADDRESS;/// @solidity memory-safe-assemblyassembly {let payloadStart := add(payload, 32)let r := staticcall(gas(), consoleAddress, payloadStart, payloadLength, 0, 0)}}function log() internal view {_sendLogPayload(abi.encodeWithSignature("log()"));}function logInt(int p0) internal view {_sendLogPayload(abi.encodeWithSignature("log(int)", p0));}function logUint(uint p0) internal view {_sendLogPayload(abi.encodeWithSignature("log(uint)", p0));
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.4.22 <0.9.0;// The orignal console.sol uses `int` and `uint` for computing function selectors, but it should// use `int256` and `uint256`. This modified version fixes that. This version is recommended// over `console.sol` if you don't need compatibility with Hardhat as the logs will show up in// forge stack traces. If you do need compatibility with Hardhat, you must use `console.sol`.// Reference: https://github.com/NomicFoundation/hardhat/issues/2178library console2 {address constant CONSOLE_ADDRESS = address(0x000000000000000000636F6e736F6c652e6c6f67);function _sendLogPayload(bytes memory payload) private view {uint256 payloadLength = payload.length;address consoleAddress = CONSOLE_ADDRESS;assembly {let payloadStart := add(payload, 32)let r := staticcall(gas(), consoleAddress, payloadStart, payloadLength, 0, 0)}}function log() internal view {_sendLogPayload(abi.encodeWithSignature("log()"));}function logInt(int256 p0) internal view {
1234567891011121314151617181920212223242526{"remappings": ["dev/=src/dev/","ds-test/=lib/solmate/lib/ds-test/src/","forge-std/=lib/forge-std/src/","libraries/=src/libraries/","solmate/=lib/solmate/src/","util/=src/util/","src/=src/"],"optimizer": {"enabled": true,"runs": 200},"metadata": {"bytecodeHash": "ipfs"},"outputSelection": {"*": {"*": ["evm.bytecode","evm.deployedBytecode","devdoc","userdoc","metadata","abi"
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AmountNotAvailable","type":"error"},{"inputs":[],"name":"InsufficentValue","type":"error"},{"inputs":[],"name":"InvalidTokenId","type":"error"},{"inputs":[],"name":"MintedOut","type":"error"},{"inputs":[],"name":"NumberHasTooManyDigits","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"seeds","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_to","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060408051808201825260058152644269626f7360d81b6020808301918252835180850190945260048452634249424f60e01b9084015281513393916200005c9160009190620000c7565b50805162000072906001906020840190620000c7565b5050600680546001600160a01b0319166001600160a01b0384169081179091556040519091506000907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d76908290a350620001a9565b828054620000d5906200016d565b90600052602060002090601f016020900481019282620000f9576000855562000144565b82601f106200011457805160ff191683800117855562000144565b8280016001018555821562000144579182015b828111156200014457825182559160200191906001019062000127565b506200015292915062000156565b5090565b5b8082111562000152576000815560010162000157565b600181811c908216806200018257607f821691505b602082108103620001a357634e487b7160e01b600052602260045260246000fd5b50919050565b614a1680620001b96000396000f3fe6080604052600436106101355760003560e01c806370a08231116100ab578063a22cb4651161006f578063a22cb46514610351578063b88d4fde14610371578063c87b56dd14610391578063d5abeb01146103b1578063e985e9c5146103c7578063f0503e801461040257600080fd5b806370a08231146102cd5780638da5cb5b146102ed57806395d89b411461030d578063a035b1fe14610322578063a0712d681461033e57600080fd5b806313af4035116100fd57806313af40351461020957806318160ddd1461022957806323b872dd1461024d57806342842e0e1461026d57806351cff8d91461028d5780636352211e146102ad57600080fd5b806301ffc9a71461013a57806306fdde031461016f578063081812fc14610191578063095ea7b3146101df5780631249c58b14610201575b600080fd5b34801561014657600080fd5b5061015a6101553660046139a7565b61042f565b60405190151581526020015b60405180910390f35b34801561017b57600080fd5b50610184610481565b60405161016691906139f4565b34801561019d57600080fd5b506101c76101ac366004613a27565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610166565b3480156101eb57600080fd5b506101ff6101fa366004613a55565b61050f565b005b6101ff6105f6565b34801561021557600080fd5b506101ff610224366004613a81565b610659565b34801561023557600080fd5b5061023f60075481565b604051908152602001610166565b34801561025957600080fd5b506101ff610268366004613a9e565b6106ee565b34801561027957600080fd5b506101ff610288366004613a9e565b6108b5565b34801561029957600080fd5b506101ff6102a8366004613a81565b6109ad565b3480156102b957600080fd5b506101c76102c8366004613a27565b610a2f565b3480156102d957600080fd5b5061023f6102e8366004613a81565b610a86565b3480156102f957600080fd5b506006546101c7906001600160a01b031681565b34801561031957600080fd5b50610184610ae9565b34801561032e57600080fd5b5061023f67016345785d8a000081565b6101ff61034c366004613a27565b610af6565b34801561035d57600080fd5b506101ff61036c366004613adf565b610b9c565b34801561037d57600080fd5b506101ff61038c366004613b1d565b610c08565b34801561039d57600080fd5b506101846103ac366004613a27565b610cf0565b3480156103bd57600080fd5b5061023f61045781565b3480156103d357600080fd5b5061015a6103e2366004613bbc565b600560209081526000928352604080842090915290825290205460ff1681565b34801561040e57600080fd5b5061023f61041d366004613a27565b60086020526000908152604090205481565b60006301ffc9a760e01b6001600160e01b03198316148061046057506380ac58cd60e01b6001600160e01b03198316145b8061047b5750635b5e139f60e01b6001600160e01b03198316145b92915050565b6000805461048e90613bea565b80601f01602080910402602001604051908101604052809291908181526020018280546104ba90613bea565b80156105075780601f106104dc57610100808354040283529160200191610507565b820191906000526020600020905b8154815290600101906020018083116104ea57829003601f168201915b505050505081565b6000818152600260205260409020546001600160a01b03163381148061055857506001600160a01b038116600090815260056020908152604080832033845290915290205460ff165b61059a5760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064015b60405180910390fd5b60008281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104576007541061061a57604051634237dcf160e11b815260040160405180910390fd5b600161062e67016345785d8a000082613c3a565b341461064d5760405163b31557c360e01b815260040160405180910390fd5b61065633610d34565b50565b6006546001600160a01b031633146106a25760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610591565b600680546001600160a01b0319166001600160a01b03831690811790915560405133907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7690600090a350565b6000818152600260205260409020546001600160a01b038481169116146107445760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b6044820152606401610591565b6001600160a01b03821661078e5760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610591565b336001600160a01b03841614806107c857506001600160a01b038316600090815260056020908152604080832033845290915290205460ff165b806107e957506000818152600460205260409020546001600160a01b031633145b6108265760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606401610591565b6001600160a01b0380841660008181526003602090815260408083208054600019019055938616808352848320805460010190558583526002825284832080546001600160a01b03199081168317909155600490925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6108c08383836106ee565b6001600160a01b0382163b15806109695750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d9190613c59565b6001600160e01b031916145b6109a85760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610591565b505050565b6006546001600160a01b031633146109f65760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610591565b6040516001600160a01b038216904780156108fc02916000818181858888f19350505050158015610a2b573d6000803e3d6000fd5b5050565b6000818152600260205260409020546001600160a01b031680610a815760405162461bcd60e51b815260206004820152600a6024820152691393d517d3525395115160b21b6044820152606401610591565b919050565b60006001600160a01b038216610acd5760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b6044820152606401610591565b506001600160a01b031660009081526003602052604090205490565b6001805461048e90613bea565b61045760075410610b1a57604051634237dcf160e11b815260040160405180910390fd5b8061045760075482610b2c9190613c76565b1115610b4b576040516347747fa960e01b815260040160405180910390fd5b81610b5e67016345785d8a000082613c3a565b3414610b7d5760405163b31557c360e01b815260040160405180910390fd5b82156109a857610b8c33610d34565b610b9583613c8e565b9250610b7d565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610c138585856106ee565b6001600160a01b0384163b1580610caa5750604051630a85bd0160e11b808252906001600160a01b0386169063150b7a0290610c5b9033908a90899089908990600401613ca5565b6020604051808303816000875af1158015610c7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9e9190613c59565b6001600160e01b031916145b610ce95760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610591565b5050505050565b60606007548210610d14576040516307ed98ed60e31b815260040160405180910390fd5b600082815260086020526040902054610d2d8382610db3565b9392505050565b6007805460009182610d4583613cf9565b919050559050610d9a816040516bffffffffffffffffffffffff193360601b16602082015242603482015260548101829052600090607401604051602081830303815290604052805190602001209050919050565b600082815260086020526040902055610a2b8282610dfe565b6060610d2d83610dc285610f09565b6040518060c00160405280608b81526020016148f0608b9139610de58688610f3c565b610def87896111d1565b610df9888a61127f565b611432565b6001600160a01b038216610e485760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610591565b6000818152600260205260409020546001600160a01b031615610e9e5760405162461bcd60e51b815260206004820152600e60248201526d1053149150511657d3525395115160921b6044820152606401610591565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6060610f1682600461157c565b604051602001610f269190613d2e565b6040516020818303038152906040529050919050565b60606000604051806040016040528060018152602001605b60f81b815250905080610f8f6040518060400160405280600781526020016644656e7369747960c81b815250610f8a87876115cd565b61163d565b604051602001610fa0929190613d5b565b60408051601f198184030181528282019091526008825267506f6c617269747960c01b602083015291508190610fda90610f8a87876116ba565b604051602001610feb929190613d8a565b60408051601f198184030181528282019091526006825265476c696e747360d01b60208301529150819061102290610f8a87611730565b604051602001611033929190613d8a565b60408051601f1981840301815282820190915260058252644d6f74657360d81b60208301529150819061106990610f8a87611748565b60405160200161107a929190613d8a565b60408051601f1981840301815282820190915260048252634579657360e01b6020830152915081906110af90610f8a87611874565b6040516020016110c0929190613d8a565b60408051601f19818403018152828201909152600582526409adeeae8d60db1b6020830152915081906110f690610f8a87611b3d565b604051602001611107929190613d8a565b60408051601f198184030181528282019091526006825265436865656b7360d01b60208301529150819061113e90610f8a87611e00565b60405160200161114f929190613d8a565b60408051601f19818403018152828201909152600682526556697274756560d01b60208301529150819061118690610f8a87611ee9565b604051602001611197929190613d8a565b6040516020818303038152906040529050806040516020016111b99190613dc6565b60405160208183030381529060405291505092915050565b60606000836040516020016111ff9181526d189858dad9dc9bdd5b99119a5b1b60921b6020820152602e0190565b60408051601f198184030181529190528051602090910120905060006112258585611ef4565b600181111561123657611236613deb565b036112785760005b6112488585611f51565b600181111561125957611259613deb565b0361126f5761126781611f7e565b91505061047b565b61126781612008565b600061123e565b6060610d2d6040518060400160405280600381526020016273766760e81b8152506112a8612043565b7304fb77f7006f1c2e7152cf33e199d2dcd0c0c01363938bfc8e6040518163ffffffff1660e01b8152600401600060405180830381865af41580156112f1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113199190810190613ec8565b6113238787612146565b61132d88886121c9565b604051633701d24b60e11b8152600481018a90526024810189905273176a00344e819430136be71b66a0e7853885342f90636e03a49690604401600060405180830381865af4158015611384573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113ac9190810190613ec8565b6040516316166e1560e31b8152600481018b9052732073341d0ac112a0bc159482d7619929d4ba34569063b0b370a890602401600060405180830381865af41580156113fc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114249190810190613ec8565b61142d8b6123f3565b61290c565b60606000611467604051806040016040528060078152602001661d1bdad95b925960ca1b8152506114628a61294f565b6129b9565b61148d604051806040016040528060048152602001636e616d6560e01b815250896129b9565b6114ba6040518060400160405280600b81526020016a3232b9b1b934b83a34b7b760a91b815250896129b9565b6114e66040518060400160405280600a8152602001696174747269627574657360b01b815250896129ce565b6115176040518060400160405280600f81526020016e3130b1b5b3b937bab73221b7b637b960891b815250896129b9565b61154160405180604001604052806005815260200164696d61676560d81b8152506114628a6129e3565b60405160200161155696959493929190613efd565b604051602081830303815290604052905061157081612a35565b98975050505050505050565b6060600061158b83600a6140aa565b90508084106115ad57604051630146a8e760e61b815260040160405180910390fd5b6115bf6115ba8286613c76565b61294f565b600101928352509092915050565b606060006115db8484611ef4565b905060008160018111156115f1576115f1613deb565b1461161757604051806040016040528060038152602001624c6f7760e81b815250611635565b60405180604001604052806004815260200163090d2ced60e31b8152505b949350505050565b606061166b6040518060400160405280600a81526020016974726169745f7479706560b01b815250846129b9565b6116926040518060400160405280600581526020016476616c756560d81b815250846129b9565b6040516020016116a39291906140b9565b604051602081830303815290604052905092915050565b606060006116c88484611f51565b905060008160018111156116de576116de613deb565b1461170957604051806040016040528060088152602001674e6567617469766560c01b815250611635565b5050604080518082019091526008815267506f73697469766560c01b602082015292915050565b6060600061173d83612a76565b9050610d2d8161294f565b6060600061175583612ae1565b9050600181600481111561176b5761176b613deb565b03611796575050604080518082019091526008815267466c6f6174696e6760c01b6020820152919050565b60028160048111156117aa576117aa613deb565b036117d3575050604080518082019091526006815265526973696e6760d01b6020820152919050565b60038160048111156117e7576117e7613deb565b0361181157505060408051808201909152600781526646616c6c696e6760c81b6020820152919050565b600481600481111561182557611825613deb565b0361185257505060408051808201909152600a815269476c697374656e696e6760b01b6020820152919050565b50506040805180820190915260048152634e6f6e6560e01b6020820152919050565b6060600061188183612b54565b9050600081600b81111561189757611897613deb565b036118be57505060408051808201909152600481526313dd985b60e21b6020820152919050565b600181600b8111156118d2576118d2613deb565b036118fb575050604080518082019091526006815265536d696c657960d01b6020820152919050565b600281600b81111561190f5761190f613deb565b0361193657505060408051808201909152600481526357696e6b60e01b6020820152919050565b600381600b81111561194a5761194a613deb565b03611972575050604080518082019091526005815264149bdd5b9960da1b6020820152919050565b600481600b81111561198657611986613deb565b036119af575050604080518082019091526006815265536c6565707960d01b6020820152919050565b600581600b8111156119c3576119c3613deb565b036119ec57505060408051808201909152600681526521b637bb32b960d11b6020820152919050565b600781600b811115611a0057611a00613deb565b03611a2757505060408051808201909152600481526329ba30b960e11b6020820152919050565b600681600b811115611a3b57611a3b613deb565b03611a6357505060408051808201909152600581526444697a7a7960d81b6020820152919050565b600881600b811115611a7757611a77613deb565b03611a9f5750506040805180820190915260058152641219585c9d60da1b6020820152919050565b600981600b811115611ab357611ab3613deb565b03611ada5750506040805180820190915260048152634861686160e01b6020820152919050565b600a81600b811115611aee57611aee613deb565b03611b185750506040805180820190915260078152664379636c6f707360c81b6020820152919050565b50506040805180820190915260078152664f70616c696e6560c81b6020820152919050565b60606000611b4a83612c4d565b9050600081600b811115611b6057611b60613deb565b03611b88575050604080518082019091526005815264536d696c6560d81b6020820152919050565b600881600b811115611b9c57611b9c613deb565b03611bc4575050604080518082019091526005815264536d69726b60d81b6020820152919050565b600181600b811115611bd857611bd8613deb565b03611c0457505060408051808201909152600981526811dc985d1a599a595960ba1b6020820152919050565b600281600b811115611c1857611c18613deb565b03611c41575050604080518082019091526006815265506f6c69746560d01b6020820152919050565b600381600b811115611c5557611c55613deb565b03611c7b575050604080518082019091526003815262486d6d60e81b6020820152919050565b600481600b811115611c8f57611c8f613deb565b03611cb55750506040805180820190915260038152624f6f6f60e81b6020820152919050565b600781600b811115611cc957611cc9613deb565b03611cf2575050604080518082019091526006815265546f6f74687960d01b6020820152919050565b600981600b811115611d0657611d06613deb565b03611d2c57505060408051808201909152600381526256656560e81b6020820152919050565b600581600b811115611d4057611d40613deb565b03611d6757505060408051808201909152600481526323b934b760e11b6020820152919050565b600b81600b811115611d7b57611d7b613deb565b03611da25750506040805180820190915260048152630426c65760e41b6020820152919050565b600681600b811115611db657611db6613deb565b03611ddf5750506040805180820190915260068152650a6dadedec6d60d31b6020820152919050565b505060408051808201909152600381526210d85d60ea1b6020820152919050565b60606000611e0d83612d48565b90506000816003811115611e2357611e23613deb565b03611e4a5750506040805180820190915260048152634e6f6e6560e01b6020820152919050565b6001816003811115611e5e57611e5e613deb565b03611e8957505060408051808201909152600881526721b4b931bab630b960c11b6020820152919050565b6003816003811115611e9d57611e9d613deb565b03611ec357505060408051808201909152600381526242696760e81b6020820152919050565b5050604080518082019091526008815267467265636b6c657360c01b6020820152919050565b606061047b82612db4565b600080611f20846040518060400160405280600781526020016664656e7369747960c81b815250613093565b905082600003611f3457600091505061047b565b6050811015611f4757600091505061047b565b5060019392505050565b600080611f208460405180604001604052806008815260200167706f6c617269747960c01b815250613093565b60607304fb77f7006f1c2e7152cf33e199d2dcd0c0c013638c4e98a9611fa5604085614126565b6040518263ffffffff1660e01b8152600401611fc391815260200190565b600060405180830381865af4158015611fe0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261047b9190810190613ec8565b6040516315e62d3b60e01b8152600481018290526060907304fb77f7006f1c2e7152cf33e199d2dcd0c0c013906315e62d3b90602401611fc3565b6060604051602001612132907f786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f737681527f672220786d6c6e733a786c696e6b3d22687474703a2f2f7777772e77332e6f7260208201527f672f313939392f786c696e6b222077696474683d22313030252220686569676860408201527f743d2231303025222076696577426f783d22302030203330302033303022200060608201527f7072657365727665417370656374526174696f3d22784d6964594d6964206d65607f82015263032ba11160e51b609f8201526b03334b6361e913737b73291160a51b60a382015260af0190565b604051602081830303815290604052905090565b6060610d2d604051806040016040528060048152602001631c9958dd60e21b8152506121c4604051806040016040528060048152602001633130302560e01b815250604051806040016040528060048152602001633130302560e01b8152506121af88886111d1565b604051806020016040528060008152506130cd565b613117565b6040805161012081018252600260e08201818152610d8d60f21b61010084018190529083528351808501855282815260208181018390528085019190915284518086018652838152808201929092528385019190915283518085018552828152611a9b60f11b818301526060848101919091528451808601865283815261068760f31b8184015260808501528451808601865283815261199960f11b8184015260a08501528451808601909552918452610c8d60f21b9084015260c0820192909252600061229785856111d1565b90506000806122a68787611f51565b60018111156122b7576122b7613deb565b146122e257604051806040016040528060088152602001676d756c7469706c7960c01b815250612303565b604051806040016040528060078152602001663634b3b43a32b760c91b8152505b905060006123108361312c565b905060005b60078160ff16101561237b57816123488960ff84168a89826007811061233d5761233d61413a565b6020020151886131a1565b604051602001612359929190613d5b565b60405160208183030381529060405291508061237490614150565b9050612315565b506123e8604051806040016040528060018152602001606760f81b8152506123c3604051806040016040528060098152602001683134b13796b1363ab960b91b81525061347d565b6040516020016123d3919061416f565b60405160208183030381529060405283613490565b979650505050505050565b6060600082604051602001612417918152636661636560e01b602082015260240190565b60408051601f19818403018152919052805160209091012090506000600261243f81846141b0565b925061244b9083614126565b604080516101408101825260016101008201818152603160f81b610120840152825282518084018452818152601960f91b6020828101919091528084019190915283518085018552828152600d60fa1b818301528385015283518085018552918252601b60f91b828201526060830191909152825180840184526002808252612d3160f01b8284015260808401919091528351808501855281815261169960f11b8184015260a084015283518085018552818152610b4d60f21b8184015260c08401528351808501909452835261169b60f11b9083015260e08101919091529015915060009061253c600885614126565b6008811061254c5761254c61413a565b60200201519050600061264a60405180604001604052806002815260200161038360f41b81525060405180604001604052806040518060400160405280600381526020016203130360ec1b81525081526020016040518060400160405280600381526020016203130360ec1b81525081525060405180604001604052806005815260200164776869746560d81b8152506040518060400160405280600381526020016218171960e91b815250604051806040016040528060078152602001663634b3b43a32b760c91b8152506126456040518060400160405280600c81526020016b6269626f2d626c75722d6c6760a01b81525061347d565b6134c1565b905060008260405160200161265f91906141c4565b60408051601f19818403018152828201825260018352606760f81b6020848101919091528251808401845260048152631c9958dd60e21b818301528351808501855260038082526203230360ec1b828501819052865180880188529182528185015285518087018752600981526802330303030303030360bc1b818601528651948501909652600084529396506123e895948794612702946121c49392906130cd565b61272a60405180604001604052806006815260200165636972636c6560d01b81525087613117565b6040516316166e1560e31b8152600481018d905273fd61aff6cc3abc7339946f233f182dd17ef97b129063b0b370a890602401600060405180830381865af415801561277a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127a29190810190613ec8565b6040516316166e1560e31b8152600481018e90527340ccf25fc4c7e37a7aaaf58dbaf6b1f3996e478c9063b0b370a890602401600060405180830381865af41580156127f2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261281a9190810190613ec8565b6040516316166e1560e31b8152600481018f9052735a56533924d6694c617172592cfa7d8c63de4b4f9063b0b370a890602401600060405180830381865af415801561286a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128929190810190613ec8565b61142d6040518060400160405280600d81526020016c30b734b6b0ba32a6b7ba34b7b760991b8152506128ff8e6040518060400160405280600381526020016231317360e81b815250604051806040016040528060068152602001653634b732b0b960d11b815250613554565b61290761360f565b613490565b6060612942898989898989898960405160200161292e96959493929190614247565b604051602081830303815290604052613490565b9998505050505050505050565b6060816000036129765750506040805180820190915260018152600360fc1b602082015290565b606e6040510190508060405260005b82156129ab5760001990910190600101600a830660300180835350600a83049250612985565b601f19909101908152919050565b606082826040516020016116a39291906142c6565b606082826040516020016116a392919061431a565b60606040518060400160405280601a81526020017f646174613a696d6167652f7376672b786d6c3b6261736536342c000000000000815250612a248361362f565b604051602001610f26929190613d5b565b60606040518060400160405280601d81526020017f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000815250612a2483613796565b600080612aa0836040518060400160405280600581526020016419db1a5b9d60da1b815250613093565b90506001811015612ab45750600392915050565b6005811015612ac65750600292915050565b6023811015612ad85750600192915050565b50600092915050565b600080612b0a83604051806040016040528060048152602001636d6f746560e01b815250613093565b90506014811015612b1e5750600192915050565b6023811015612b305750600292915050565b6032811015612b425750600392915050565b603b811015612ad85750600492915050565b600080612b7c836040518060400160405280600381526020016265796560e81b815250613093565b90506014811015612b905750600092915050565b6028811015612ba25750600392915050565b6032811015612bb45750600192915050565b603c811015612bc65750600492915050565b6046811015612bd85750600292915050565b6050811015612bea5750600992915050565b6054811015612bfc5750600592915050565b6058811015612c0e5750600792915050565b605c811015612c205750600692915050565b6060811015612c325750600892915050565b6063811015612c445750600a92915050565b50600b92915050565b600080612c7783604051806040016040528060058152602001640dadeeae8d60db1b815250613093565b90506014811015612c8b5750600092915050565b6028811015612c9d5750600192915050565b603c811015612caf5750600292915050565b6046811015612cc15750600592915050565b6050811015612cd35750600892915050565b6059811015612ce55750600992915050565b605c811015612cf75750600492915050565b605e811015612d095750600392915050565b605f811015612d1b5750600792915050565b6061811015612d2d5750600b92915050565b6062811015612d3f5750600692915050565b50600a92915050565b600080612d738360405180604001604052806006815260200165636865656b7360d01b815250613093565b90506032811015612d875750600092915050565b604b811015612d995750600192915050565b6055811015612dab5750600392915050565b50600292915050565b60606000612de0836040518060400160405280600681526020016576697274756560d01b815250613093565b9050600f811015612e1357505060408051808201909152600a81526947656e746c656e65737360b01b6020820152919050565b601e811015612e415750506040805180820190915260078152664272617665727960c81b6020820152919050565b602d811015612e6f5750506040805180820190915260078152664d6f646573747960c81b6020820152919050565b603c811015612ea057505060408051808201909152600a81526954656d706572616e636560b01b6020820152919050565b6046811015612edb5750506040805180820190915260148152732934b3b43a37bab99024b73234b3b730ba34b7b760611b6020820152919050565b6050811015612f095750506040805180820190915260078152664a75737469636560c81b6020820152919050565b6055811015612f3957505060408051808201909152600981526853696e63657269747960b81b6020820152919050565b6058811015612f6c57505060408051808201909152600c81526b467269656e646c696e65737360a01b6020820152919050565b605c811015612f9a5750506040805180820190915260078152664469676e69747960c81b6020820152919050565b605e811015612fca575050604080518082019091526009815268456e647572616e636560b81b6020820152919050565b606081101561300457505060408051808201909152601381527211dc99585d1b995cdcc81bd98814dc1a5c9a5d606a1b6020820152919050565b606281101561303757505060408051808201909152600c81526b4d61676e69666963656e636560a01b6020820152919050565b6063811015613064575050604080518082019091526006815265576973646f6d60d01b6020820152919050565b505060408051808201909152601181527045787472656d652054617264696e65737360781b6020820152919050565b6000606483836040516020016130aa929190614365565b6040516020818303038152906040528051906020012060001c610d2d9190614126565b60606130d8856137a1565b6130e1856137a1565b6130ea856137a1565b846040516020016130fe949392919061438b565b6040516020818303038152906040529050949350505050565b606082826040516020016116a3929190614432565b606061047b604051806040016040528060048152602001631c9958dd60e21b8152506121c4604051806040016040528060048152602001633130302560e01b815250604051806040016040528060048152602001633130302560e01b81525086604051806020016040528060008152506130cd565b6060600086866040516020016131ce92919091825263626f647960e01b6020830152602482015260440190565b6040516020818303038152906040528051906020012060001c905060006131f68888886137b4565b9050600061320f8961320960078b613c76565b896137b4565b905060007304fb77f7006f1c2e7152cf33e199d2dcd0c0c013636f40b6756132386040876141b0565b9550856040518263ffffffff1660e01b815260040161325991815260200190565b600060405180830381865af4158015613276573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261329e9190810190613ec8565b905060008915613338577304fb77f7006f1c2e7152cf33e199d2dcd0c0c01363e927751f6132cd6002886141b0565b9650866040518263ffffffff1660e01b81526004016132ee91815260200190565b600060405180830381865af415801561330b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613333919081019061448a565b613384565b60405180604001604052806040518060400160405280600381526020016203135360ec1b81525081526020016040518060400160405280600381526020016203135360ec1b8152508152505b90506000613393600287614126565b600014905061346d60405180604001604052806006815260200165636972636c6560d01b8152506133f08b8589604051806040016040528060018152602001603160f81b8152508e604051806020016040528060008152506134c1565b6134426040518060400160405280600d81526020016c30b734b6b0ba32a6b7ba34b7b760991b8152506128ff8689604051806040016040528060068152602001653634b732b0b960d11b815250613554565b8d1561345d57604051806020016040528060008152506138aa565b613468898989613891565b6138aa565b9c9b505050505050505050505050565b606081604051602001610f269190614525565b6060838383866040516020016134a99493929190614583565b60405160208183030381529060405290509392505050565b60606134cc876137a1565b6134dd8760005b60200201516137a1565b6134e88860016134d3565b6134f1886137a1565b6134fa886137a1565b6135228860405160200161350e919061461c565b6040516020818303038152906040526137a1565b876040516020016135399796959493929190614653565b60405160208183030381529060405290509695505050505050565b6060600084613598576040518060400160405280601e81526020017f6b6579506f696e74733d27303b3127206b657954696d65733d27303b312700008152506135cf565b6040518060400160405280601e81526020017f6b6579506f696e74733d27313b3027206b657954696d65733d27303b312700008152505b9050806135db856137a1565b6135e4856137a1565b6040516020016135f69392919061473d565b6040516020818303038152906040529150509392505050565b606060405180606001604052806026815260200161497b60269139905090565b6060815160000361364e57505060408051602081019091526000815290565b60006040518060600160405280604081526020016149a1604091399050600060038451600261367d9190613c76565b61368791906141b0565b613692906004613c3a565b905060006136a1826020613c76565b67ffffffffffffffff8111156136b9576136b9613e01565b6040519080825280601f01601f1916602001820160405280156136e3576020820181803683370190505b509050818152600183018586518101602084015b818310156137515760039283018051603f601282901c811687015160f890811b8552600c83901c8216880151811b6001860152600683901c8216880151811b60028601529116860151901b938201939093526004016136f7565b60038951066001811461376b576002811461377c57613788565b613d3d60f01b600119830152613788565b603d60f81b6000198301525b509398975050505050505050565b606061047b8261362f565b606081604051602001610f2691906147d7565b6060600084846040516020016137e592919091825267189bd91e519a5b1b60c21b6020830152602882015260480190565b60408051601f1981840301815291905280516020909101209050600061380b8685611ef4565b600181111561381c5761381c613deb565b0361385d57600061382d8685611f51565b600181111561383e5761383e613deb565b036138545761384c816138cd565b915050610d2d565b61384c816138f4565b60006138698685611f51565b600181111561387a5761387a613deb565b036138885761384c8161392f565b61384c81613956565b6060838385846040516020016134a9949392919061480d565b60606138c48585858560405160200161292e929190613d5b565b95945050505050565b60607304fb77f7006f1c2e7152cf33e199d2dcd0c0c013632f0caf42611fa5604085614126565b6040516358e1eccb60e11b8152600481018290526060907304fb77f7006f1c2e7152cf33e199d2dcd0c0c0139063b1c3d99690602401611fc3565b60607304fb77f7006f1c2e7152cf33e199d2dcd0c0c0136328dbedf9611fa5604085614126565b604051638f629b2b60e01b8152600481018290526060907304fb77f7006f1c2e7152cf33e199d2dcd0c0c01390638f629b2b90602401611fc3565b6001600160e01b03198116811461065657600080fd5b6000602082840312156139b957600080fd5b8135610d2d81613991565b60005b838110156139df5781810151838201526020016139c7565b838111156139ee576000848401525b50505050565b6020815260008251806020840152613a138160408501602087016139c4565b601f01601f19169190910160400192915050565b600060208284031215613a3957600080fd5b5035919050565b6001600160a01b038116811461065657600080fd5b60008060408385031215613a6857600080fd5b8235613a7381613a40565b946020939093013593505050565b600060208284031215613a9357600080fd5b8135610d2d81613a40565b600080600060608486031215613ab357600080fd5b8335613abe81613a40565b92506020840135613ace81613a40565b929592945050506040919091013590565b60008060408385031215613af257600080fd5b8235613afd81613a40565b915060208301358015158114613b1257600080fd5b809150509250929050565b600080600080600060808688031215613b3557600080fd5b8535613b4081613a40565b94506020860135613b5081613a40565b935060408601359250606086013567ffffffffffffffff80821115613b7457600080fd5b818801915088601f830112613b8857600080fd5b813581811115613b9757600080fd5b896020828501011115613ba957600080fd5b9699959850939650602001949392505050565b60008060408385031215613bcf57600080fd5b8235613bda81613a40565b91506020830135613b1281613a40565b600181811c90821680613bfe57607f821691505b602082108103613c1e57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615613c5457613c54613c24565b500290565b600060208284031215613c6b57600080fd5b8151610d2d81613991565b60008219821115613c8957613c89613c24565b500190565b600081613c9d57613c9d613c24565b506000190190565b6001600160a01b038681168252851660208201526040810184905260806060820181905281018290526000828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b600060018201613d0b57613d0b613c24565b5060010190565b60008151613d248185602086016139c4565b9290920192915050565b6402134b137960dd1b815260008251613d4e8160058501602087016139c4565b9190910160050192915050565b60008351613d6d8184602088016139c4565b835190830190613d818183602088016139c4565b01949350505050565b60008351613d9c8184602088016139c4565b600b60fa1b9083019081528351613dba8160018401602088016139c4565b01600101949350505050565b60008251613dd88184602087016139c4565b605d60f81b920191825250600101919050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715613e3a57613e3a613e01565b60405290565b600082601f830112613e5157600080fd5b815167ffffffffffffffff80821115613e6c57613e6c613e01565b604051601f8301601f19908116603f01168101908282118183101715613e9457613e94613e01565b81604052838152866020858801011115613ead57600080fd5b613ebe8460208301602089016139c4565b9695505050505050565b600060208284031215613eda57600080fd5b815167ffffffffffffffff811115613ef157600080fd5b61163584828501613e40565b607b60f81b815260008751613f19816001850160208c016139c4565b8083019050600b60fa1b8060018301528851613f3c816002850160208d016139c4565b600292019182018190528751613f59816003850160208c016139c4565b600392019182018190528651613f76816004850160208b016139c4565b60049201918201528451613f918160058401602089016139c4565b01613fa260058201600b60fa1b9052565b613faf6006820185613d12565b607d60f81b81526001019998505050505050505050565b600181815b80851115614001578160001904821115613fe757613fe7613c24565b80851615613ff457918102915b93841c9390800290613fcb565b509250929050565b6000826140185750600161047b565b816140255750600061047b565b816001811461403b576002811461404557614061565b600191505061047b565b60ff84111561405657614056613c24565b50506001821b61047b565b5060208310610133831016604e8410600b8410161715614084575081810a61047b565b61408e8383613fc6565b80600019048211156140a2576140a2613c24565b029392505050565b6000610d2d60ff841683614009565b607b60f81b8152600083516140d58160018501602088016139c4565b600b60fa1b60019184019182015283516140f68160028401602088016139c4565b607d60f81b60029290910191820152600301949350505050565b634e487b7160e01b600052601260045260246000fd5b60008261413557614135614110565b500690565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff810361416657614166613c24565b60010192915050565b600082516141818184602087016139c4565b7f73686170652d72656e646572696e673d226f7074696d697a6553706565642200920191825250601f01919050565b6000826141bf576141bf614110565b500490565b697472616e73666f726d3d60b01b81526000602760f81b80600a8401527f7472616e736c617465283130302c31303029207363616c6528302e3529200000600b840152660e4dee8c2e8ca560cb1b6029840152835161422a8160308601602088016139c4565b602960f81b60309490910193840152603183015250603201919050565b60008751602061425a8285838d016139c4565b88519184019161426d8184848d016139c4565b885192019161427f8184848c016139c4565b87519201916142918184848b016139c4565b86519201916142a38184848a016139c4565b85519201916142b581848489016139c4565b919091019998505050505050505050565b6000601160f91b80835284516142e38160018601602089016139c4565b62111d1160e91b60019185019182015284516143068160048401602089016139c4565b016004810191909152600501949350505050565b601160f91b815282516000906143378160018501602088016139c4565b61111d60f11b60019184019182015283516143598160038401602088016139c4565b01600301949350505050565b8281526000825161437d8160208501602087016139c4565b919091016020019392505050565b6577696474683d60d01b8152600085516143ac816006850160208a016139c4565b666865696768743d60c81b60069184019182015285516143d381600d840160208a016139c4565b6466696c6c3d60d81b600d929091019182015284516143f98160128401602089016139c4565b808201915050600160fd1b806012830152845161441d8160138501602089016139c4565b60139201918201526014019695505050505050565b600f60fa1b81526000835161444e8160018501602088016139c4565b600160fd1b600191840191820152835161446f8160028401602088016139c4565b61179f60f11b60029290910191820152600401949350505050565b6000602080838503121561449d57600080fd5b825167ffffffffffffffff808211156144b557600080fd5b818501915085601f8301126144c957600080fd5b6144d1613e17565b8060408401888111156144e357600080fd5b845b81811015614517578051858111156144fd5760008081fd5b6145098b828901613e40565b8552509286019286016144e5565b509098975050505050505050565b6666696c7465723d60c81b8152601160f91b60078201526475726c282360d81b6008820152815160009061456081600d8501602087016139c4565b602960f81b600d93909101928301525061011160f51b600e820152601001919050565b600f60fa1b81526000855161459f816001850160208a016139c4565b600160fd1b60019184019182015285516145c0816002840160208a016139c4565b808201915050601f60f91b80600283015285516145e4816003850160208a016139c4565b613c2f60f01b6003939091019283015284516146078160058501602089016139c4565b60059201918201526006019695505050505050565b6e36b4bc16b13632b73216b6b7b2329d60891b81526000825161464681600f8501602087016139c4565b91909101600f0192915050565b61723d60f01b815260008851614670816002850160208d016139c4565b6263783d60e81b6002918401918201528851614693816005840160208d016139c4565b6263793d60e81b6005929091019182015287516146b7816008840160208c016139c4565b6466696c6c3d60d81b600892909101918201526146d7600d820188613d12565b676f7061636974793d60c01b815290506146f46008820187613d12565b657374796c653d60d01b8152905061470f6006820186613d12565b600160fd1b815290506147256001820185613d12565b600160fd1b81526001019a9950505050505050505050565b6000845161474f8184602089016139c4565b600160fd1b908301908152636475723d60e01b6001820152845161477a8160058401602089016139c4565b7f726570656174436f756e743d22696e646566696e697465222000000000000000600592909101918201526863616c634d6f64653d60b81b601e82015283516147ca8160278401602088016139c4565b0160270195945050505050565b601160f91b815281516000906147f48160018501602087016139c4565b61011160f51b6001939091019283015250600301919050565b7f3c616e696d617465206174747269627574654e616d653d2266696c6c2220726581527f70656174436f756e743d22696e646566696e697465222076616c7565733d220060208201526000855161486b81603f850160208a016139c4565b8083019050603b60f81b80603f830152865161488e816040850160208b016139c4565b604092019182015284516148a98160418401602089016139c4565b661110323ab91e9160c91b6041929091019182015283516148d18160488401602088016139c4565b6211179f60e91b60489290910191820152604b01969550505050505056fe466c6f6174696e672e204879706e6f74697a696e672e20446976696e653f204269626f7320617265203131313120667269656e646c79207370697269747320666f7220796f75722077616c6c65742e204a6f696e207468652062696c6c696f6e73206f662070656f706c652077686f206c6f766520616e642061646f7265206269626f7320746f6461792e3c6d7061746820786c696e6b3a687265663d22236269626f2d6a69747465722d6c6722202f3e4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa26469706673582212209089e989316e715acd65d4c221c17de33cda87aff46c02299d087d013905338e64736f6c634300080d0033
Deployed Bytecode
0x6080604052600436106101355760003560e01c806370a08231116100ab578063a22cb4651161006f578063a22cb46514610351578063b88d4fde14610371578063c87b56dd14610391578063d5abeb01146103b1578063e985e9c5146103c7578063f0503e801461040257600080fd5b806370a08231146102cd5780638da5cb5b146102ed57806395d89b411461030d578063a035b1fe14610322578063a0712d681461033e57600080fd5b806313af4035116100fd57806313af40351461020957806318160ddd1461022957806323b872dd1461024d57806342842e0e1461026d57806351cff8d91461028d5780636352211e146102ad57600080fd5b806301ffc9a71461013a57806306fdde031461016f578063081812fc14610191578063095ea7b3146101df5780631249c58b14610201575b600080fd5b34801561014657600080fd5b5061015a6101553660046139a7565b61042f565b60405190151581526020015b60405180910390f35b34801561017b57600080fd5b50610184610481565b60405161016691906139f4565b34801561019d57600080fd5b506101c76101ac366004613a27565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610166565b3480156101eb57600080fd5b506101ff6101fa366004613a55565b61050f565b005b6101ff6105f6565b34801561021557600080fd5b506101ff610224366004613a81565b610659565b34801561023557600080fd5b5061023f60075481565b604051908152602001610166565b34801561025957600080fd5b506101ff610268366004613a9e565b6106ee565b34801561027957600080fd5b506101ff610288366004613a9e565b6108b5565b34801561029957600080fd5b506101ff6102a8366004613a81565b6109ad565b3480156102b957600080fd5b506101c76102c8366004613a27565b610a2f565b3480156102d957600080fd5b5061023f6102e8366004613a81565b610a86565b3480156102f957600080fd5b506006546101c7906001600160a01b031681565b34801561031957600080fd5b50610184610ae9565b34801561032e57600080fd5b5061023f67016345785d8a000081565b6101ff61034c366004613a27565b610af6565b34801561035d57600080fd5b506101ff61036c366004613adf565b610b9c565b34801561037d57600080fd5b506101ff61038c366004613b1d565b610c08565b34801561039d57600080fd5b506101846103ac366004613a27565b610cf0565b3480156103bd57600080fd5b5061023f61045781565b3480156103d357600080fd5b5061015a6103e2366004613bbc565b600560209081526000928352604080842090915290825290205460ff1681565b34801561040e57600080fd5b5061023f61041d366004613a27565b60086020526000908152604090205481565b60006301ffc9a760e01b6001600160e01b03198316148061046057506380ac58cd60e01b6001600160e01b03198316145b8061047b5750635b5e139f60e01b6001600160e01b03198316145b92915050565b6000805461048e90613bea565b80601f01602080910402602001604051908101604052809291908181526020018280546104ba90613bea565b80156105075780601f106104dc57610100808354040283529160200191610507565b820191906000526020600020905b8154815290600101906020018083116104ea57829003601f168201915b505050505081565b6000818152600260205260409020546001600160a01b03163381148061055857506001600160a01b038116600090815260056020908152604080832033845290915290205460ff165b61059a5760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064015b60405180910390fd5b60008281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104576007541061061a57604051634237dcf160e11b815260040160405180910390fd5b600161062e67016345785d8a000082613c3a565b341461064d5760405163b31557c360e01b815260040160405180910390fd5b61065633610d34565b50565b6006546001600160a01b031633146106a25760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610591565b600680546001600160a01b0319166001600160a01b03831690811790915560405133907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7690600090a350565b6000818152600260205260409020546001600160a01b038481169116146107445760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b6044820152606401610591565b6001600160a01b03821661078e5760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610591565b336001600160a01b03841614806107c857506001600160a01b038316600090815260056020908152604080832033845290915290205460ff165b806107e957506000818152600460205260409020546001600160a01b031633145b6108265760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606401610591565b6001600160a01b0380841660008181526003602090815260408083208054600019019055938616808352848320805460010190558583526002825284832080546001600160a01b03199081168317909155600490925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6108c08383836106ee565b6001600160a01b0382163b15806109695750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d9190613c59565b6001600160e01b031916145b6109a85760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610591565b505050565b6006546001600160a01b031633146109f65760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610591565b6040516001600160a01b038216904780156108fc02916000818181858888f19350505050158015610a2b573d6000803e3d6000fd5b5050565b6000818152600260205260409020546001600160a01b031680610a815760405162461bcd60e51b815260206004820152600a6024820152691393d517d3525395115160b21b6044820152606401610591565b919050565b60006001600160a01b038216610acd5760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b6044820152606401610591565b506001600160a01b031660009081526003602052604090205490565b6001805461048e90613bea565b61045760075410610b1a57604051634237dcf160e11b815260040160405180910390fd5b8061045760075482610b2c9190613c76565b1115610b4b576040516347747fa960e01b815260040160405180910390fd5b81610b5e67016345785d8a000082613c3a565b3414610b7d5760405163b31557c360e01b815260040160405180910390fd5b82156109a857610b8c33610d34565b610b9583613c8e565b9250610b7d565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610c138585856106ee565b6001600160a01b0384163b1580610caa5750604051630a85bd0160e11b808252906001600160a01b0386169063150b7a0290610c5b9033908a90899089908990600401613ca5565b6020604051808303816000875af1158015610c7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9e9190613c59565b6001600160e01b031916145b610ce95760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610591565b5050505050565b60606007548210610d14576040516307ed98ed60e31b815260040160405180910390fd5b600082815260086020526040902054610d2d8382610db3565b9392505050565b6007805460009182610d4583613cf9565b919050559050610d9a816040516bffffffffffffffffffffffff193360601b16602082015242603482015260548101829052600090607401604051602081830303815290604052805190602001209050919050565b600082815260086020526040902055610a2b8282610dfe565b6060610d2d83610dc285610f09565b6040518060c00160405280608b81526020016148f0608b9139610de58688610f3c565b610def87896111d1565b610df9888a61127f565b611432565b6001600160a01b038216610e485760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610591565b6000818152600260205260409020546001600160a01b031615610e9e5760405162461bcd60e51b815260206004820152600e60248201526d1053149150511657d3525395115160921b6044820152606401610591565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6060610f1682600461157c565b604051602001610f269190613d2e565b6040516020818303038152906040529050919050565b60606000604051806040016040528060018152602001605b60f81b815250905080610f8f6040518060400160405280600781526020016644656e7369747960c81b815250610f8a87876115cd565b61163d565b604051602001610fa0929190613d5b565b60408051601f198184030181528282019091526008825267506f6c617269747960c01b602083015291508190610fda90610f8a87876116ba565b604051602001610feb929190613d8a565b60408051601f198184030181528282019091526006825265476c696e747360d01b60208301529150819061102290610f8a87611730565b604051602001611033929190613d8a565b60408051601f1981840301815282820190915260058252644d6f74657360d81b60208301529150819061106990610f8a87611748565b60405160200161107a929190613d8a565b60408051601f1981840301815282820190915260048252634579657360e01b6020830152915081906110af90610f8a87611874565b6040516020016110c0929190613d8a565b60408051601f19818403018152828201909152600582526409adeeae8d60db1b6020830152915081906110f690610f8a87611b3d565b604051602001611107929190613d8a565b60408051601f198184030181528282019091526006825265436865656b7360d01b60208301529150819061113e90610f8a87611e00565b60405160200161114f929190613d8a565b60408051601f19818403018152828201909152600682526556697274756560d01b60208301529150819061118690610f8a87611ee9565b604051602001611197929190613d8a565b6040516020818303038152906040529050806040516020016111b99190613dc6565b60405160208183030381529060405291505092915050565b60606000836040516020016111ff9181526d189858dad9dc9bdd5b99119a5b1b60921b6020820152602e0190565b60408051601f198184030181529190528051602090910120905060006112258585611ef4565b600181111561123657611236613deb565b036112785760005b6112488585611f51565b600181111561125957611259613deb565b0361126f5761126781611f7e565b91505061047b565b61126781612008565b600061123e565b6060610d2d6040518060400160405280600381526020016273766760e81b8152506112a8612043565b7304fb77f7006f1c2e7152cf33e199d2dcd0c0c01363938bfc8e6040518163ffffffff1660e01b8152600401600060405180830381865af41580156112f1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113199190810190613ec8565b6113238787612146565b61132d88886121c9565b604051633701d24b60e11b8152600481018a90526024810189905273176a00344e819430136be71b66a0e7853885342f90636e03a49690604401600060405180830381865af4158015611384573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113ac9190810190613ec8565b6040516316166e1560e31b8152600481018b9052732073341d0ac112a0bc159482d7619929d4ba34569063b0b370a890602401600060405180830381865af41580156113fc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114249190810190613ec8565b61142d8b6123f3565b61290c565b60606000611467604051806040016040528060078152602001661d1bdad95b925960ca1b8152506114628a61294f565b6129b9565b61148d604051806040016040528060048152602001636e616d6560e01b815250896129b9565b6114ba6040518060400160405280600b81526020016a3232b9b1b934b83a34b7b760a91b815250896129b9565b6114e66040518060400160405280600a8152602001696174747269627574657360b01b815250896129ce565b6115176040518060400160405280600f81526020016e3130b1b5b3b937bab73221b7b637b960891b815250896129b9565b61154160405180604001604052806005815260200164696d61676560d81b8152506114628a6129e3565b60405160200161155696959493929190613efd565b604051602081830303815290604052905061157081612a35565b98975050505050505050565b6060600061158b83600a6140aa565b90508084106115ad57604051630146a8e760e61b815260040160405180910390fd5b6115bf6115ba8286613c76565b61294f565b600101928352509092915050565b606060006115db8484611ef4565b905060008160018111156115f1576115f1613deb565b1461161757604051806040016040528060038152602001624c6f7760e81b815250611635565b60405180604001604052806004815260200163090d2ced60e31b8152505b949350505050565b606061166b6040518060400160405280600a81526020016974726169745f7479706560b01b815250846129b9565b6116926040518060400160405280600581526020016476616c756560d81b815250846129b9565b6040516020016116a39291906140b9565b604051602081830303815290604052905092915050565b606060006116c88484611f51565b905060008160018111156116de576116de613deb565b1461170957604051806040016040528060088152602001674e6567617469766560c01b815250611635565b5050604080518082019091526008815267506f73697469766560c01b602082015292915050565b6060600061173d83612a76565b9050610d2d8161294f565b6060600061175583612ae1565b9050600181600481111561176b5761176b613deb565b03611796575050604080518082019091526008815267466c6f6174696e6760c01b6020820152919050565b60028160048111156117aa576117aa613deb565b036117d3575050604080518082019091526006815265526973696e6760d01b6020820152919050565b60038160048111156117e7576117e7613deb565b0361181157505060408051808201909152600781526646616c6c696e6760c81b6020820152919050565b600481600481111561182557611825613deb565b0361185257505060408051808201909152600a815269476c697374656e696e6760b01b6020820152919050565b50506040805180820190915260048152634e6f6e6560e01b6020820152919050565b6060600061188183612b54565b9050600081600b81111561189757611897613deb565b036118be57505060408051808201909152600481526313dd985b60e21b6020820152919050565b600181600b8111156118d2576118d2613deb565b036118fb575050604080518082019091526006815265536d696c657960d01b6020820152919050565b600281600b81111561190f5761190f613deb565b0361193657505060408051808201909152600481526357696e6b60e01b6020820152919050565b600381600b81111561194a5761194a613deb565b03611972575050604080518082019091526005815264149bdd5b9960da1b6020820152919050565b600481600b81111561198657611986613deb565b036119af575050604080518082019091526006815265536c6565707960d01b6020820152919050565b600581600b8111156119c3576119c3613deb565b036119ec57505060408051808201909152600681526521b637bb32b960d11b6020820152919050565b600781600b811115611a0057611a00613deb565b03611a2757505060408051808201909152600481526329ba30b960e11b6020820152919050565b600681600b811115611a3b57611a3b613deb565b03611a6357505060408051808201909152600581526444697a7a7960d81b6020820152919050565b600881600b811115611a7757611a77613deb565b03611a9f5750506040805180820190915260058152641219585c9d60da1b6020820152919050565b600981600b811115611ab357611ab3613deb565b03611ada5750506040805180820190915260048152634861686160e01b6020820152919050565b600a81600b811115611aee57611aee613deb565b03611b185750506040805180820190915260078152664379636c6f707360c81b6020820152919050565b50506040805180820190915260078152664f70616c696e6560c81b6020820152919050565b60606000611b4a83612c4d565b9050600081600b811115611b6057611b60613deb565b03611b88575050604080518082019091526005815264536d696c6560d81b6020820152919050565b600881600b811115611b9c57611b9c613deb565b03611bc4575050604080518082019091526005815264536d69726b60d81b6020820152919050565b600181600b811115611bd857611bd8613deb565b03611c0457505060408051808201909152600981526811dc985d1a599a595960ba1b6020820152919050565b600281600b811115611c1857611c18613deb565b03611c41575050604080518082019091526006815265506f6c69746560d01b6020820152919050565b600381600b811115611c5557611c55613deb565b03611c7b575050604080518082019091526003815262486d6d60e81b6020820152919050565b600481600b811115611c8f57611c8f613deb565b03611cb55750506040805180820190915260038152624f6f6f60e81b6020820152919050565b600781600b811115611cc957611cc9613deb565b03611cf2575050604080518082019091526006815265546f6f74687960d01b6020820152919050565b600981600b811115611d0657611d06613deb565b03611d2c57505060408051808201909152600381526256656560e81b6020820152919050565b600581600b811115611d4057611d40613deb565b03611d6757505060408051808201909152600481526323b934b760e11b6020820152919050565b600b81600b811115611d7b57611d7b613deb565b03611da25750506040805180820190915260048152630426c65760e41b6020820152919050565b600681600b811115611db657611db6613deb565b03611ddf5750506040805180820190915260068152650a6dadedec6d60d31b6020820152919050565b505060408051808201909152600381526210d85d60ea1b6020820152919050565b60606000611e0d83612d48565b90506000816003811115611e2357611e23613deb565b03611e4a5750506040805180820190915260048152634e6f6e6560e01b6020820152919050565b6001816003811115611e5e57611e5e613deb565b03611e8957505060408051808201909152600881526721b4b931bab630b960c11b6020820152919050565b6003816003811115611e9d57611e9d613deb565b03611ec357505060408051808201909152600381526242696760e81b6020820152919050565b5050604080518082019091526008815267467265636b6c657360c01b6020820152919050565b606061047b82612db4565b600080611f20846040518060400160405280600781526020016664656e7369747960c81b815250613093565b905082600003611f3457600091505061047b565b6050811015611f4757600091505061047b565b5060019392505050565b600080611f208460405180604001604052806008815260200167706f6c617269747960c01b815250613093565b60607304fb77f7006f1c2e7152cf33e199d2dcd0c0c013638c4e98a9611fa5604085614126565b6040518263ffffffff1660e01b8152600401611fc391815260200190565b600060405180830381865af4158015611fe0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261047b9190810190613ec8565b6040516315e62d3b60e01b8152600481018290526060907304fb77f7006f1c2e7152cf33e199d2dcd0c0c013906315e62d3b90602401611fc3565b6060604051602001612132907f786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f737681527f672220786d6c6e733a786c696e6b3d22687474703a2f2f7777772e77332e6f7260208201527f672f313939392f786c696e6b222077696474683d22313030252220686569676860408201527f743d2231303025222076696577426f783d22302030203330302033303022200060608201527f7072657365727665417370656374526174696f3d22784d6964594d6964206d65607f82015263032ba11160e51b609f8201526b03334b6361e913737b73291160a51b60a382015260af0190565b604051602081830303815290604052905090565b6060610d2d604051806040016040528060048152602001631c9958dd60e21b8152506121c4604051806040016040528060048152602001633130302560e01b815250604051806040016040528060048152602001633130302560e01b8152506121af88886111d1565b604051806020016040528060008152506130cd565b613117565b6040805161012081018252600260e08201818152610d8d60f21b61010084018190529083528351808501855282815260208181018390528085019190915284518086018652838152808201929092528385019190915283518085018552828152611a9b60f11b818301526060848101919091528451808601865283815261068760f31b8184015260808501528451808601865283815261199960f11b8184015260a08501528451808601909552918452610c8d60f21b9084015260c0820192909252600061229785856111d1565b90506000806122a68787611f51565b60018111156122b7576122b7613deb565b146122e257604051806040016040528060088152602001676d756c7469706c7960c01b815250612303565b604051806040016040528060078152602001663634b3b43a32b760c91b8152505b905060006123108361312c565b905060005b60078160ff16101561237b57816123488960ff84168a89826007811061233d5761233d61413a565b6020020151886131a1565b604051602001612359929190613d5b565b60405160208183030381529060405291508061237490614150565b9050612315565b506123e8604051806040016040528060018152602001606760f81b8152506123c3604051806040016040528060098152602001683134b13796b1363ab960b91b81525061347d565b6040516020016123d3919061416f565b60405160208183030381529060405283613490565b979650505050505050565b6060600082604051602001612417918152636661636560e01b602082015260240190565b60408051601f19818403018152919052805160209091012090506000600261243f81846141b0565b925061244b9083614126565b604080516101408101825260016101008201818152603160f81b610120840152825282518084018452818152601960f91b6020828101919091528084019190915283518085018552828152600d60fa1b818301528385015283518085018552918252601b60f91b828201526060830191909152825180840184526002808252612d3160f01b8284015260808401919091528351808501855281815261169960f11b8184015260a084015283518085018552818152610b4d60f21b8184015260c08401528351808501909452835261169b60f11b9083015260e08101919091529015915060009061253c600885614126565b6008811061254c5761254c61413a565b60200201519050600061264a60405180604001604052806002815260200161038360f41b81525060405180604001604052806040518060400160405280600381526020016203130360ec1b81525081526020016040518060400160405280600381526020016203130360ec1b81525081525060405180604001604052806005815260200164776869746560d81b8152506040518060400160405280600381526020016218171960e91b815250604051806040016040528060078152602001663634b3b43a32b760c91b8152506126456040518060400160405280600c81526020016b6269626f2d626c75722d6c6760a01b81525061347d565b6134c1565b905060008260405160200161265f91906141c4565b60408051601f19818403018152828201825260018352606760f81b6020848101919091528251808401845260048152631c9958dd60e21b818301528351808501855260038082526203230360ec1b828501819052865180880188529182528185015285518087018752600981526802330303030303030360bc1b818601528651948501909652600084529396506123e895948794612702946121c49392906130cd565b61272a60405180604001604052806006815260200165636972636c6560d01b81525087613117565b6040516316166e1560e31b8152600481018d905273fd61aff6cc3abc7339946f233f182dd17ef97b129063b0b370a890602401600060405180830381865af415801561277a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127a29190810190613ec8565b6040516316166e1560e31b8152600481018e90527340ccf25fc4c7e37a7aaaf58dbaf6b1f3996e478c9063b0b370a890602401600060405180830381865af41580156127f2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261281a9190810190613ec8565b6040516316166e1560e31b8152600481018f9052735a56533924d6694c617172592cfa7d8c63de4b4f9063b0b370a890602401600060405180830381865af415801561286a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128929190810190613ec8565b61142d6040518060400160405280600d81526020016c30b734b6b0ba32a6b7ba34b7b760991b8152506128ff8e6040518060400160405280600381526020016231317360e81b815250604051806040016040528060068152602001653634b732b0b960d11b815250613554565b61290761360f565b613490565b6060612942898989898989898960405160200161292e96959493929190614247565b604051602081830303815290604052613490565b9998505050505050505050565b6060816000036129765750506040805180820190915260018152600360fc1b602082015290565b606e6040510190508060405260005b82156129ab5760001990910190600101600a830660300180835350600a83049250612985565b601f19909101908152919050565b606082826040516020016116a39291906142c6565b606082826040516020016116a392919061431a565b60606040518060400160405280601a81526020017f646174613a696d6167652f7376672b786d6c3b6261736536342c000000000000815250612a248361362f565b604051602001610f26929190613d5b565b60606040518060400160405280601d81526020017f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000815250612a2483613796565b600080612aa0836040518060400160405280600581526020016419db1a5b9d60da1b815250613093565b90506001811015612ab45750600392915050565b6005811015612ac65750600292915050565b6023811015612ad85750600192915050565b50600092915050565b600080612b0a83604051806040016040528060048152602001636d6f746560e01b815250613093565b90506014811015612b1e5750600192915050565b6023811015612b305750600292915050565b6032811015612b425750600392915050565b603b811015612ad85750600492915050565b600080612b7c836040518060400160405280600381526020016265796560e81b815250613093565b90506014811015612b905750600092915050565b6028811015612ba25750600392915050565b6032811015612bb45750600192915050565b603c811015612bc65750600492915050565b6046811015612bd85750600292915050565b6050811015612bea5750600992915050565b6054811015612bfc5750600592915050565b6058811015612c0e5750600792915050565b605c811015612c205750600692915050565b6060811015612c325750600892915050565b6063811015612c445750600a92915050565b50600b92915050565b600080612c7783604051806040016040528060058152602001640dadeeae8d60db1b815250613093565b90506014811015612c8b5750600092915050565b6028811015612c9d5750600192915050565b603c811015612caf5750600292915050565b6046811015612cc15750600592915050565b6050811015612cd35750600892915050565b6059811015612ce55750600992915050565b605c811015612cf75750600492915050565b605e811015612d095750600392915050565b605f811015612d1b5750600792915050565b6061811015612d2d5750600b92915050565b6062811015612d3f5750600692915050565b50600a92915050565b600080612d738360405180604001604052806006815260200165636865656b7360d01b815250613093565b90506032811015612d875750600092915050565b604b811015612d995750600192915050565b6055811015612dab5750600392915050565b50600292915050565b60606000612de0836040518060400160405280600681526020016576697274756560d01b815250613093565b9050600f811015612e1357505060408051808201909152600a81526947656e746c656e65737360b01b6020820152919050565b601e811015612e415750506040805180820190915260078152664272617665727960c81b6020820152919050565b602d811015612e6f5750506040805180820190915260078152664d6f646573747960c81b6020820152919050565b603c811015612ea057505060408051808201909152600a81526954656d706572616e636560b01b6020820152919050565b6046811015612edb5750506040805180820190915260148152732934b3b43a37bab99024b73234b3b730ba34b7b760611b6020820152919050565b6050811015612f095750506040805180820190915260078152664a75737469636560c81b6020820152919050565b6055811015612f3957505060408051808201909152600981526853696e63657269747960b81b6020820152919050565b6058811015612f6c57505060408051808201909152600c81526b467269656e646c696e65737360a01b6020820152919050565b605c811015612f9a5750506040805180820190915260078152664469676e69747960c81b6020820152919050565b605e811015612fca575050604080518082019091526009815268456e647572616e636560b81b6020820152919050565b606081101561300457505060408051808201909152601381527211dc99585d1b995cdcc81bd98814dc1a5c9a5d606a1b6020820152919050565b606281101561303757505060408051808201909152600c81526b4d61676e69666963656e636560a01b6020820152919050565b6063811015613064575050604080518082019091526006815265576973646f6d60d01b6020820152919050565b505060408051808201909152601181527045787472656d652054617264696e65737360781b6020820152919050565b6000606483836040516020016130aa929190614365565b6040516020818303038152906040528051906020012060001c610d2d9190614126565b60606130d8856137a1565b6130e1856137a1565b6130ea856137a1565b846040516020016130fe949392919061438b565b6040516020818303038152906040529050949350505050565b606082826040516020016116a3929190614432565b606061047b604051806040016040528060048152602001631c9958dd60e21b8152506121c4604051806040016040528060048152602001633130302560e01b815250604051806040016040528060048152602001633130302560e01b81525086604051806020016040528060008152506130cd565b6060600086866040516020016131ce92919091825263626f647960e01b6020830152602482015260440190565b6040516020818303038152906040528051906020012060001c905060006131f68888886137b4565b9050600061320f8961320960078b613c76565b896137b4565b905060007304fb77f7006f1c2e7152cf33e199d2dcd0c0c013636f40b6756132386040876141b0565b9550856040518263ffffffff1660e01b815260040161325991815260200190565b600060405180830381865af4158015613276573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261329e9190810190613ec8565b905060008915613338577304fb77f7006f1c2e7152cf33e199d2dcd0c0c01363e927751f6132cd6002886141b0565b9650866040518263ffffffff1660e01b81526004016132ee91815260200190565b600060405180830381865af415801561330b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613333919081019061448a565b613384565b60405180604001604052806040518060400160405280600381526020016203135360ec1b81525081526020016040518060400160405280600381526020016203135360ec1b8152508152505b90506000613393600287614126565b600014905061346d60405180604001604052806006815260200165636972636c6560d01b8152506133f08b8589604051806040016040528060018152602001603160f81b8152508e604051806020016040528060008152506134c1565b6134426040518060400160405280600d81526020016c30b734b6b0ba32a6b7ba34b7b760991b8152506128ff8689604051806040016040528060068152602001653634b732b0b960d11b815250613554565b8d1561345d57604051806020016040528060008152506138aa565b613468898989613891565b6138aa565b9c9b505050505050505050505050565b606081604051602001610f269190614525565b6060838383866040516020016134a99493929190614583565b60405160208183030381529060405290509392505050565b60606134cc876137a1565b6134dd8760005b60200201516137a1565b6134e88860016134d3565b6134f1886137a1565b6134fa886137a1565b6135228860405160200161350e919061461c565b6040516020818303038152906040526137a1565b876040516020016135399796959493929190614653565b60405160208183030381529060405290509695505050505050565b6060600084613598576040518060400160405280601e81526020017f6b6579506f696e74733d27303b3127206b657954696d65733d27303b312700008152506135cf565b6040518060400160405280601e81526020017f6b6579506f696e74733d27313b3027206b657954696d65733d27303b312700008152505b9050806135db856137a1565b6135e4856137a1565b6040516020016135f69392919061473d565b6040516020818303038152906040529150509392505050565b606060405180606001604052806026815260200161497b60269139905090565b6060815160000361364e57505060408051602081019091526000815290565b60006040518060600160405280604081526020016149a1604091399050600060038451600261367d9190613c76565b61368791906141b0565b613692906004613c3a565b905060006136a1826020613c76565b67ffffffffffffffff8111156136b9576136b9613e01565b6040519080825280601f01601f1916602001820160405280156136e3576020820181803683370190505b509050818152600183018586518101602084015b818310156137515760039283018051603f601282901c811687015160f890811b8552600c83901c8216880151811b6001860152600683901c8216880151811b60028601529116860151901b938201939093526004016136f7565b60038951066001811461376b576002811461377c57613788565b613d3d60f01b600119830152613788565b603d60f81b6000198301525b509398975050505050505050565b606061047b8261362f565b606081604051602001610f2691906147d7565b6060600084846040516020016137e592919091825267189bd91e519a5b1b60c21b6020830152602882015260480190565b60408051601f1981840301815291905280516020909101209050600061380b8685611ef4565b600181111561381c5761381c613deb565b0361385d57600061382d8685611f51565b600181111561383e5761383e613deb565b036138545761384c816138cd565b915050610d2d565b61384c816138f4565b60006138698685611f51565b600181111561387a5761387a613deb565b036138885761384c8161392f565b61384c81613956565b6060838385846040516020016134a9949392919061480d565b60606138c48585858560405160200161292e929190613d5b565b95945050505050565b60607304fb77f7006f1c2e7152cf33e199d2dcd0c0c013632f0caf42611fa5604085614126565b6040516358e1eccb60e11b8152600481018290526060907304fb77f7006f1c2e7152cf33e199d2dcd0c0c0139063b1c3d99690602401611fc3565b60607304fb77f7006f1c2e7152cf33e199d2dcd0c0c0136328dbedf9611fa5604085614126565b604051638f629b2b60e01b8152600481018290526060907304fb77f7006f1c2e7152cf33e199d2dcd0c0c01390638f629b2b90602401611fc3565b6001600160e01b03198116811461065657600080fd5b6000602082840312156139b957600080fd5b8135610d2d81613991565b60005b838110156139df5781810151838201526020016139c7565b838111156139ee576000848401525b50505050565b6020815260008251806020840152613a138160408501602087016139c4565b601f01601f19169190910160400192915050565b600060208284031215613a3957600080fd5b5035919050565b6001600160a01b038116811461065657600080fd5b60008060408385031215613a6857600080fd5b8235613a7381613a40565b946020939093013593505050565b600060208284031215613a9357600080fd5b8135610d2d81613a40565b600080600060608486031215613ab357600080fd5b8335613abe81613a40565b92506020840135613ace81613a40565b929592945050506040919091013590565b60008060408385031215613af257600080fd5b8235613afd81613a40565b915060208301358015158114613b1257600080fd5b809150509250929050565b600080600080600060808688031215613b3557600080fd5b8535613b4081613a40565b94506020860135613b5081613a40565b935060408601359250606086013567ffffffffffffffff80821115613b7457600080fd5b818801915088601f830112613b8857600080fd5b813581811115613b9757600080fd5b896020828501011115613ba957600080fd5b9699959850939650602001949392505050565b60008060408385031215613bcf57600080fd5b8235613bda81613a40565b91506020830135613b1281613a40565b600181811c90821680613bfe57607f821691505b602082108103613c1e57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615613c5457613c54613c24565b500290565b600060208284031215613c6b57600080fd5b8151610d2d81613991565b60008219821115613c8957613c89613c24565b500190565b600081613c9d57613c9d613c24565b506000190190565b6001600160a01b038681168252851660208201526040810184905260806060820181905281018290526000828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b600060018201613d0b57613d0b613c24565b5060010190565b60008151613d248185602086016139c4565b9290920192915050565b6402134b137960dd1b815260008251613d4e8160058501602087016139c4565b9190910160050192915050565b60008351613d6d8184602088016139c4565b835190830190613d818183602088016139c4565b01949350505050565b60008351613d9c8184602088016139c4565b600b60fa1b9083019081528351613dba8160018401602088016139c4565b01600101949350505050565b60008251613dd88184602087016139c4565b605d60f81b920191825250600101919050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715613e3a57613e3a613e01565b60405290565b600082601f830112613e5157600080fd5b815167ffffffffffffffff80821115613e6c57613e6c613e01565b604051601f8301601f19908116603f01168101908282118183101715613e9457613e94613e01565b81604052838152866020858801011115613ead57600080fd5b613ebe8460208301602089016139c4565b9695505050505050565b600060208284031215613eda57600080fd5b815167ffffffffffffffff811115613ef157600080fd5b61163584828501613e40565b607b60f81b815260008751613f19816001850160208c016139c4565b8083019050600b60fa1b8060018301528851613f3c816002850160208d016139c4565b600292019182018190528751613f59816003850160208c016139c4565b600392019182018190528651613f76816004850160208b016139c4565b60049201918201528451613f918160058401602089016139c4565b01613fa260058201600b60fa1b9052565b613faf6006820185613d12565b607d60f81b81526001019998505050505050505050565b600181815b80851115614001578160001904821115613fe757613fe7613c24565b80851615613ff457918102915b93841c9390800290613fcb565b509250929050565b6000826140185750600161047b565b816140255750600061047b565b816001811461403b576002811461404557614061565b600191505061047b565b60ff84111561405657614056613c24565b50506001821b61047b565b5060208310610133831016604e8410600b8410161715614084575081810a61047b565b61408e8383613fc6565b80600019048211156140a2576140a2613c24565b029392505050565b6000610d2d60ff841683614009565b607b60f81b8152600083516140d58160018501602088016139c4565b600b60fa1b60019184019182015283516140f68160028401602088016139c4565b607d60f81b60029290910191820152600301949350505050565b634e487b7160e01b600052601260045260246000fd5b60008261413557614135614110565b500690565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff810361416657614166613c24565b60010192915050565b600082516141818184602087016139c4565b7f73686170652d72656e646572696e673d226f7074696d697a6553706565642200920191825250601f01919050565b6000826141bf576141bf614110565b500490565b697472616e73666f726d3d60b01b81526000602760f81b80600a8401527f7472616e736c617465283130302c31303029207363616c6528302e3529200000600b840152660e4dee8c2e8ca560cb1b6029840152835161422a8160308601602088016139c4565b602960f81b60309490910193840152603183015250603201919050565b60008751602061425a8285838d016139c4565b88519184019161426d8184848d016139c4565b885192019161427f8184848c016139c4565b87519201916142918184848b016139c4565b86519201916142a38184848a016139c4565b85519201916142b581848489016139c4565b919091019998505050505050505050565b6000601160f91b80835284516142e38160018601602089016139c4565b62111d1160e91b60019185019182015284516143068160048401602089016139c4565b016004810191909152600501949350505050565b601160f91b815282516000906143378160018501602088016139c4565b61111d60f11b60019184019182015283516143598160038401602088016139c4565b01600301949350505050565b8281526000825161437d8160208501602087016139c4565b919091016020019392505050565b6577696474683d60d01b8152600085516143ac816006850160208a016139c4565b666865696768743d60c81b60069184019182015285516143d381600d840160208a016139c4565b6466696c6c3d60d81b600d929091019182015284516143f98160128401602089016139c4565b808201915050600160fd1b806012830152845161441d8160138501602089016139c4565b60139201918201526014019695505050505050565b600f60fa1b81526000835161444e8160018501602088016139c4565b600160fd1b600191840191820152835161446f8160028401602088016139c4565b61179f60f11b60029290910191820152600401949350505050565b6000602080838503121561449d57600080fd5b825167ffffffffffffffff808211156144b557600080fd5b818501915085601f8301126144c957600080fd5b6144d1613e17565b8060408401888111156144e357600080fd5b845b81811015614517578051858111156144fd5760008081fd5b6145098b828901613e40565b8552509286019286016144e5565b509098975050505050505050565b6666696c7465723d60c81b8152601160f91b60078201526475726c282360d81b6008820152815160009061456081600d8501602087016139c4565b602960f81b600d93909101928301525061011160f51b600e820152601001919050565b600f60fa1b81526000855161459f816001850160208a016139c4565b600160fd1b60019184019182015285516145c0816002840160208a016139c4565b808201915050601f60f91b80600283015285516145e4816003850160208a016139c4565b613c2f60f01b6003939091019283015284516146078160058501602089016139c4565b60059201918201526006019695505050505050565b6e36b4bc16b13632b73216b6b7b2329d60891b81526000825161464681600f8501602087016139c4565b91909101600f0192915050565b61723d60f01b815260008851614670816002850160208d016139c4565b6263783d60e81b6002918401918201528851614693816005840160208d016139c4565b6263793d60e81b6005929091019182015287516146b7816008840160208c016139c4565b6466696c6c3d60d81b600892909101918201526146d7600d820188613d12565b676f7061636974793d60c01b815290506146f46008820187613d12565b657374796c653d60d01b8152905061470f6006820186613d12565b600160fd1b815290506147256001820185613d12565b600160fd1b81526001019a9950505050505050505050565b6000845161474f8184602089016139c4565b600160fd1b908301908152636475723d60e01b6001820152845161477a8160058401602089016139c4565b7f726570656174436f756e743d22696e646566696e697465222000000000000000600592909101918201526863616c634d6f64653d60b81b601e82015283516147ca8160278401602088016139c4565b0160270195945050505050565b601160f91b815281516000906147f48160018501602087016139c4565b61011160f51b6001939091019283015250600301919050565b7f3c616e696d617465206174747269627574654e616d653d2266696c6c2220726581527f70656174436f756e743d22696e646566696e697465222076616c7565733d220060208201526000855161486b81603f850160208a016139c4565b8083019050603b60f81b80603f830152865161488e816040850160208b016139c4565b604092019182015284516148a98160418401602089016139c4565b661110323ab91e9160c91b6041929091019182015283516148d18160488401602088016139c4565b6211179f60e91b60489290910191820152604b01969550505050505056fe466c6f6174696e672e204879706e6f74697a696e672e20446976696e653f204269626f7320617265203131313120667269656e646c79207370697269747320666f7220796f75722077616c6c65742e204a6f696e207468652062696c6c696f6e73206f662070656f706c652077686f206c6f766520616e642061646f7265206269626f7320746f6461792e3c6d7061746820786c696e6b3a687265663d22236269626f2d6a69747465722d6c6722202f3e4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa26469706673582212209089e989316e715acd65d4c221c17de33cda87aff46c02299d087d013905338e64736f6c634300080d0033
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.