[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "string", "name": "_baseTokenURI", "type": "string" }, { "internalType": "address", "name": "_layerZeroEndpoint", "type": "address" }, { "internalType": "uint256", "name": "_startMintId", "type": "uint256" }, { "internalType": "uint256", "name": "_endMintId", "type": "uint256" }, { "internalType": "address", "name": "_stableTokenAddress", "type": "address" }, { "internalType": "uint256", "name": "_stableTokenDecimals", "type": "uint256" }, { "internalType": "address", "name": "_feeCollectorAddress", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "indexed": false, "internalType": "bytes", "name": "_srcAddress", "type": "bytes" }, { "indexed": false, "internalType": "uint64", "name": "_nonce", "type": "uint64" }, { "indexed": false, "internalType": "bytes", "name": "_payload", "type": "bytes" } ], "name": "MessageFailed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "indexed": false, "internalType": "address", "name": "_toAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint64", "name": "_nonce", "type": "uint64" } ], "name": "ReceiveFromChain", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_sender", "type": "address" }, { "indexed": true, "internalType": "uint16", "name": "_dstChainId", "type": "uint16" }, { "indexed": true, "internalType": "bytes", "name": "_toAddress", "type": "bytes" }, { "indexed": false, "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint64", "name": "_nonce", "type": "uint64" } ], "name": "SendToChain", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "indexed": false, "internalType": "bytes", "name": "_srcAddress", "type": "bytes" } ], "name": "SetTrustedRemote", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "inputs": [], "name": "activateMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "activateReveal", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "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": [], "name": "baseTokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "claimed", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "contractURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "customName", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "customSymbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "endMintId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_dstChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_toAddress", "type": "bytes" }, { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "bool", "name": "_payInZRO", "type": "bool" }, { "internalType": "bytes", "name": "_adapterParams", "type": "bytes" } ], "name": "estimateSendFee", "outputs": [ { "internalType": "uint256", "name": "nativeFee", "type": "uint256" }, { "internalType": "uint256", "name": "_zroFee", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "", "type": "uint16" }, { "internalType": "bytes", "name": "", "type": "bytes" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "failedMessages", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "feeCollectorAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_srcAddress", "type": "bytes" } ], "name": "forceResumeReceive", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "", "type": "uint16" }, { "internalType": "uint16", "name": "_chainId", "type": "uint16" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "_configType", "type": "uint256" } ], "name": "getConfig", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getLzEndpoint", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_chainId", "type": "uint16" } ], "name": "getTrustedRemote", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isMintActive", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_srcAddress", "type": "bytes" } ], "name": "isTrustedRemote", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_srcAddress", "type": "bytes" }, { "internalType": "uint64", "name": "_nonce", "type": "uint64" }, { "internalType": "bytes", "name": "_payload", "type": "bytes" } ], "name": "lzReceive", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "maxMintQuantity", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_quantity", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_srcAddress", "type": "bytes" }, { "internalType": "uint64", "name": "_nonce", "type": "uint64" }, { "internalType": "bytes", "name": "_payload", "type": "bytes" } ], "name": "nonblockingLzReceive", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "pause", "type": "bool" } ], "name": "pauseSendTokens", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "price", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_srcAddress", "type": "bytes" }, { "internalType": "uint64", "name": "_nonce", "type": "uint64" }, { "internalType": "bytes", "name": "_payload", "type": "bytes" } ], "name": "retryMessage", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "reveal", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_dstChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_toAddress", "type": "bytes" }, { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "address payable", "name": "_refundAddress", "type": "address" }, { "internalType": "address", "name": "_zroPaymentAddress", "type": "address" }, { "internalType": "bytes", "name": "_adapterParam", "type": "bytes" } ], "name": "send", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_from", "type": "address" }, { "internalType": "uint16", "name": "_dstChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_toAddress", "type": "bytes" }, { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "address payable", "name": "_refundAddress", "type": "address" }, { "internalType": "address", "name": "_zroPaymentAddress", "type": "address" }, { "internalType": "bytes", "name": "_adapterParam", "type": "bytes" } ], "name": "sendFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_baseTokenURI", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_version", "type": "uint16" }, { "internalType": "uint16", "name": "_chainId", "type": "uint16" }, { "internalType": "uint256", "name": "_configType", "type": "uint256" }, { "internalType": "bytes", "name": "_config", "type": "bytes" } ], "name": "setConfig", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_contractURI", "type": "string" } ], "name": "setContractURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_feeCollectorAddress", "type": "address" } ], "name": "setFeeCollector", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_price", "type": "uint256" } ], "name": "setMintPrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_maxMintQuantity", "type": "uint256" } ], "name": "setMintQuantity", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "name", "type": "string" } ], "name": "setName", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_version", "type": "uint16" } ], "name": "setReceiveVersion", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_version", "type": "uint16" } ], "name": "setSendVersion", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "symbol", "type": "string" } ], "name": "setSymbol", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_srcAddress", "type": "bytes" } ], "name": "setTrustedRemote", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "stableToken", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "startMintId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "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": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60e06040523480156200001157600080fd5b506040516200565d3803806200565d833981016040819052620000349162000390565b88888782828280620000463362000152565b60601b6001600160601b0319166080525081516200006c9060039060208501906200021a565b508051620000829060049060208401906200021a565b5050600a805460ff1916905550506001600b5550508851620000ac9060119060208c01906200021a565b508751620000c29060129060208b01906200021a565b50620000ce87620001a2565b8651620000e39060109060208a01906200021a565b50600c85905560a08490526001600160601b0319606084901b1660c0526003600e556200011282600a620004bc565b620001209061019062000587565b600d55601480546001600160a01b0319166001600160a01b039290921691909117905550620006129650505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b03163314620002015760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b8051620002169060099060208401906200021a565b5050565b8280546200022890620005a9565b90600052602060002090601f0160209004810192826200024c576000855562000297565b82601f106200026757805160ff191683800117855562000297565b8280016001018555821562000297579182015b82811115620002975782518255916020019190600101906200027a565b50620002a5929150620002a9565b5090565b5b80821115620002a55760008155600101620002aa565b80516001600160a01b0381168114620002d857600080fd5b919050565b600082601f830112620002ee578081fd5b81516001600160401b03808211156200030b576200030b620005fc565b604051601f8301601f19908116603f01168101908282118183101715620003365762000336620005fc565b8160405283815260209250868385880101111562000352578485fd5b8491505b8382101562000375578582018301518183018401529082019062000356565b838211156200038657848385830101525b9695505050505050565b60008060008060008060008060006101208a8c031215620003af578485fd5b89516001600160401b0380821115620003c6578687fd5b620003d48d838e01620002dd565b9a5060208c0151915080821115620003ea578687fd5b620003f88d838e01620002dd565b995060408c01519150808211156200040e578687fd5b506200041d8c828d01620002dd565b9750506200042e60608b01620002c0565b955060808a0151945060a08a015193506200044c60c08b01620002c0565b925060e08a01519150620004646101008b01620002c0565b90509295985092959850929598565b600181815b80851115620004b4578160001904821115620004985762000498620005e6565b80851615620004a657918102915b93841c939080029062000478565b509250929050565b6000620004ca8383620004d1565b9392505050565b600082620004e25750600162000581565b81620004f15750600062000581565b81600181146200050a5760028114620005155762000535565b600191505062000581565b60ff841115620005295762000529620005e6565b50506001821b62000581565b5060208310610133831016604e8410600b84101617156200055a575081810a62000581565b62000566838362000473565b80600019048211156200057d576200057d620005e6565b0290505b92915050565b6000816000190483118215151615620005a457620005a4620005e6565b500290565b600181811c90821680620005be57607f821691505b60208210811415620005e057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60805160601c60a05160c05160601c614fc8620006956000396000818161080b0152611c500152600081816109370152611b8e01526000818161099001528181610b1701528181610e4c01528181611173015281816112c1015281816115e50152818161209a015281816126a101528181612e6001526137080152614fc86000f3fe6080604052600436106103755760003560e01c806395d89b41116101d1578063cbed8b9c11610102578063eb8d72b7116100a0578063f2fde38b1161006f578063f2fde38b14610a9f578063f4a0a52814610abf578063f5a8622a14610adf578063f5ecbdbc14610af457600080fd5b8063eb8d72b714610a1f578063eed33cef14610a3f578063f108e22514610a52578063f187892214610a7f57600080fd5b8063d547cfb7116100dc578063d547cfb71461096c578063dacbcbe214610981578063e8a3d485146109b4578063e985e9c5146109c957600080fd5b8063cbed8b9c14610905578063d0f62e1b14610925578063d1deba1f1461095957600080fd5b8063ae9aea6d1161016f578063c47f002711610149578063c47f002714610883578063c87b56dd146108a3578063c884ef83146108c3578063c91c0462146108f057600080fd5b8063ae9aea6d1461082d578063b84c824614610843578063b88d4fde1461086357600080fd5b8063a22cb465116101ab578063a22cb4651461079f578063a42dce80146107bf578063a475b5dd146107df578063a9d75b2b146107f957600080fd5b806395d89b4114610754578063a035b1fe14610769578063a0712d681461077f57600080fd5b806342d65a8d116102ab57806369b41f95116102495780638d81592a116102235780638d81592a146106a55780638da5cb5b146106ba5780638ee74912146106e5578063938e3d7b1461073457600080fd5b806369b41f951461065057806370a0823114610670578063715018a61461069057600080fd5b80635b92ac0d116102855780635b92ac0d146105d95780635c975abb146105f85780636352211e1461061057806366ad5c8a1461063057600080fd5b806342d65a8d1461058657806351905636146105a657806355f804b3146105b957600080fd5b806323b872dd1161031857806336ecd177116102f257806336ecd1771461050d5780633d8b38f6146105315780633f388b331461055157806342842e0e1461056657600080fd5b806323b872dd146104985780632a205e3d146104b85780632c236490146104ed57600080fd5b806307e0db171161035457806307e0db17146103f3578063081812fc14610413578063095ea7b31461045857806310ddb1371461047857600080fd5b80621d35671461037a57806301ffc9a71461039c57806306fdde03146103d1575b600080fd5b34801561038657600080fd5b5061039a6103953660046146e5565b610b14565b005b3480156103a857600080fd5b506103bc6103b7366004614334565b610c3c565b60405190151581526020015b60405180910390f35b3480156103dd57600080fd5b506103e6610d21565b6040516103c89190614a2b565b3480156103ff57600080fd5b5061039a61040e36600461442a565b610db3565b34801561041f57600080fd5b5061043361042e366004614811565b610ec1565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103c8565b34801561046457600080fd5b5061039a6104733660046142d1565b610f81565b34801561048457600080fd5b5061039a61049336600461442a565b6110da565b3480156104a457600080fd5b5061039a6104b3366004614133565b6111b7565b3480156104c457600080fd5b506104d86104d33660046145be565b61123e565b604080519283526020830191909152016103c8565b3480156104f957600080fd5b5061039a610508366004614811565b61135f565b34801561051957600080fd5b50610523600c5481565b6040519081526020016103c8565b34801561053d57600080fd5b506103bc61054c366004614462565b6113cb565b34801561055d57600080fd5b506103e6611498565b34801561057257600080fd5b5061039a610581366004614133565b611526565b34801561059257600080fd5b5061039a6105a1366004614462565b611541565b61039a6105b436600461420a565b611655565b3480156105c557600080fd5b5061039a6105d43660046143e4565b6116a8565b3480156105e557600080fd5b50600f546103bc90610100900460ff1681565b34801561060457600080fd5b50600a5460ff166103bc565b34801561061c57600080fd5b5061043361062b366004614811565b611726565b34801561063c57600080fd5b5061039a61064b3660046146e5565b6117be565b34801561065c57600080fd5b506103e661066b36600461442a565b61183f565b34801561067c57600080fd5b5061052361068b3660046140df565b6118e6565b34801561069c57600080fd5b5061039a61199a565b3480156106b157600080fd5b506103e6611a0d565b3480156106c657600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610433565b3480156106f157600080fd5b50610523610700366004614567565b6002602090815260009384526040808520845180860184018051928152908401958401959095209452929052825290205481565b34801561074057600080fd5b5061039a61074f3660046143e4565b611a1a565b34801561076057600080fd5b506103e6611a94565b34801561077557600080fd5b50610523600d5481565b34801561078b57600080fd5b5061039a61079a366004614811565b611aa3565b3480156107ab57600080fd5b5061039a6107ba3660046141dd565b611cde565b3480156107cb57600080fd5b5061039a6107da3660046140df565b611ce9565b3480156107eb57600080fd5b50600f546103bc9060ff1681565b34801561080557600080fd5b506104337f000000000000000000000000000000000000000000000000000000000000000081565b34801561083957600080fd5b50610523600e5481565b34801561084f57600080fd5b5061039a61085e3660046143e4565b611d97565b34801561086f57600080fd5b5061039a61087e366004614173565b611e11565b34801561088f57600080fd5b5061039a61089e3660046143e4565b611e99565b3480156108af57600080fd5b506103e66108be366004614811565b611f13565b3480156108cf57600080fd5b506105236108de3660046140df565b60136020526000908152604090205481565b3480156108fc57600080fd5b5061039a611f61565b34801561091157600080fd5b5061039a6109203660046147b1565b611ff6565b34801561093157600080fd5b506105237f000000000000000000000000000000000000000000000000000000000000000081565b61039a610967366004614656565b612105565b34801561097857600080fd5b506103e66122c6565b34801561098d57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610433565b3480156109c057600080fd5b506103e66122d3565b3480156109d557600080fd5b506103bc6109e43660046140fb565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260086020908152604080832093909416825291909152205460ff1690565b348015610a2b57600080fd5b5061039a610a3a366004614462565b6122e0565b61039a610a4d3660046144b5565b6123a6565b348015610a5e57600080fd5b506014546104339073ffffffffffffffffffffffffffffffffffffffff1681565b348015610a8b57600080fd5b5061039a610a9a3660046142fc565b6123f8565b348015610aab57600080fd5b5061039a610aba3660046140df565b612477565b348015610acb57600080fd5b5061039a610ada366004614811565b612570565b348015610aeb57600080fd5b5061039a6125dc565b348015610b0057600080fd5b506103e6610b0f366004614761565b612670565b337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614610b5657600080fd5b61ffff841660009081526001602052604090208054610b7490614de0565b90508351148015610bb3575061ffff8416600090815260016020526040908190209051610ba19190614926565b60405180910390208380519060200120145b610c2a5760405162461bcd60e51b815260206004820152602b60248201527f4c7a52656365697665723a20696e76616c696420736f757263652073656e646960448201527f6e6720636f6e747261637400000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610c3684848484612804565b50505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd000000000000000000000000000000000000000000000000000000001480610ccf57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b80610d1b57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b606060118054610d3090614de0565b80601f0160208091040260200160405190810160405280929190818152602001828054610d5c90614de0565b8015610da95780601f10610d7e57610100808354040283529160200191610da9565b820191906000526020600020905b815481529060010190602001808311610d8c57829003601f168201915b5050505050905090565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e1a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c21565b6040517f07e0db1700000000000000000000000000000000000000000000000000000000815261ffff821660048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906307e0db17906024015b600060405180830381600087803b158015610ea657600080fd5b505af1158015610eba573d6000803e3d6000fd5b5050505050565b60008181526005602052604081205473ffffffffffffffffffffffffffffffffffffffff16610f585760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e00000000000000000000000000000000000000006064820152608401610c21565b5060009081526007602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b6000610f8c82611726565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156110305760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610c21565b3373ffffffffffffffffffffffffffffffffffffffff82161480611059575061105981336109e4565b6110cb5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610c21565b6110d5838361290f565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146111415760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c21565b6040517f10ddb13700000000000000000000000000000000000000000000000000000000815261ffff821660048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906310ddb13790602401610e8c565b6111c133826129af565b6112335760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610c21565b6110d5838383612b01565b60008060008787604051602001611256929190614a3e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f40a7bb10000000000000000000000000000000000000000000000000000000008252915073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906340a7bb1090611300908c90309086908c908c908c90600401614a60565b604080518083038186803b15801561131757600080fd5b505afa15801561132b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134f9190614829565b9250925050965096945050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146113c65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c21565b600e55565b61ffff8316600090815260016020526040812080548291906113ec90614de0565b80601f016020809104026020016040519081016040528092919081815260200182805461141890614de0565b80156114655780601f1061143a57610100808354040283529160200191611465565b820191906000526020600020905b81548152906001019060200180831161144857829003601f168201915b50505050509050838360405161147c9291906148fa565b60405180910390208180519060200120149150505b9392505050565b601280546114a590614de0565b80601f01602080910402602001604051908101604052809291908181526020018280546114d190614de0565b801561151e5780601f106114f35761010080835404028352916020019161151e565b820191906000526020600020905b81548152906001019060200180831161150157829003601f168201915b505050505081565b6110d583838360405180602001604052806000815250611e11565b60005473ffffffffffffffffffffffffffffffffffffffff1633146115a85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c21565b6040517f42d65a8d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906342d65a8d9061161e90869086908690600401614ac1565b600060405180830381600087803b15801561163857600080fd5b505af115801561164c573d6000803e3d6000fd5b50505050505050565b61169d898989898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b92508a91508990508888612d34565b505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461170f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c21565b8051611722906009906020840190613ecd565b5050565b60008181526005602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610d1b5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e00000000000000000000000000000000000000000000006064820152608401610c21565b3330146118335760405162461bcd60e51b815260206004820152602260248201527f4c7a52656365697665723a2063616c6c6572206d75737420626520427269646760448201527f652e0000000000000000000000000000000000000000000000000000000000006064820152608401610c21565b610c3684848484612f6b565b61ffff8116600090815260016020526040902080546060919061186190614de0565b80601f016020809104026020016040519081016040528092919081815260200182805461188d90614de0565b80156118da5780601f106118af576101008083540402835291602001916118da565b820191906000526020600020905b8154815290600101906020018083116118bd57829003601f168201915b50505050509050919050565b600073ffffffffffffffffffffffffffffffffffffffff82166119715760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610c21565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526006602052604090205490565b60005473ffffffffffffffffffffffffffffffffffffffff163314611a015760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c21565b611a0b600061300a565b565b601180546114a590614de0565b60005473ffffffffffffffffffffffffffffffffffffffff163314611a815760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c21565b8051611722906010906020840190613ecd565b606060128054610d3090614de0565b600f54610100900460ff16611afa5760405162461bcd60e51b815260206004820152601960248201527f4f4e46543a204d696e74206973206e6f74206163746976652e000000000000006044820152606401610c21565b600e5433600090815260136020526040902054611b18908390614d34565b1115611b8c5760405162461bcd60e51b815260206004820152602260248201527f4f4e46543a204d6178204d696e74207065722077616c6c65742072656163686560448201527f642e0000000000000000000000000000000000000000000000000000000000006064820152608401610c21565b7f000000000000000000000000000000000000000000000000000000000000000081600c54611bbb9190614d34565b1115611c095760405162461bcd60e51b815260206004820152601d60248201527f4f4e46543a204d6178204d696e74206c696d697420726561636865642e0000006044820152606401610c21565b601454600d54611c7891339173ffffffffffffffffffffffffffffffffffffffff90911690611c39908590614d60565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001692919061307f565b33600090815260136020526040902054611c93908290614d34565b3360009081526013602052604090205560015b81811161172257600c8054611ccc913391906000611cc383614e34565b91905055613114565b80611cd681614e34565b915050611ca6565b61172233838361312e565b60005473ffffffffffffffffffffffffffffffffffffffff163314611d505760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c21565b601480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314611dfe5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c21565b8051611722906012906020840190613ecd565b611e1b33836129af565b611e8d5760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610c21565b610c3684848484613242565b60005473ffffffffffffffffffffffffffffffffffffffff163314611f005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c21565b8051611722906011906020840190613ecd565b600f5460609060ff1615611f5957611f296132cb565b611f32836132da565b604051602001611f439291906149b3565b6040516020818303038152906040529050919050565b610d1b6132cb565b60005473ffffffffffffffffffffffffffffffffffffffff163314611fc85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c21565b600f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461205d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c21565b6040517fcbed8b9c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063cbed8b9c906120d79088908890889088908890600401614c71565b600060405180830381600087803b1580156120f157600080fd5b505af115801561169d573d6000803e3d6000fd5b61ffff8516600090815260026020526040808220905161212690879061490a565b908152604080516020928190038301902067ffffffffffffffff87166000908152925290205490508061219b5760405162461bcd60e51b815260206004820152601d60248201527f4c7a52656365697665723a206e6f2073746f726564206d6573736167650000006044820152606401610c21565b8083836040516121ac9291906148fa565b6040518091039020146122015760405162461bcd60e51b815260206004820152601b60248201527f4c7a52656365697665723a20696e76616c6964207061796c6f616400000000006044820152606401610c21565b61ffff8616600090815260026020526040808220905161222290889061490a565b90815260408051918290036020908101832067ffffffffffffffff89166000908152915220919091557f66ad5c8a00000000000000000000000000000000000000000000000000000000815230906366ad5c8a9061228c9089908990899089908990600401614adf565b600060405180830381600087803b1580156122a657600080fd5b505af11580156122ba573d6000803e3d6000fd5b50505050505050505050565b600980546114a590614de0565b601080546114a590614de0565b60005473ffffffffffffffffffffffffffffffffffffffff1633146123475760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c21565b61ffff83166000908152600160205260409020612365908383613f51565b507ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab83838360405161239993929190614ac1565b60405180910390a1505050565b6123ee338989898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b92508a91508990508888612d34565b5050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461245f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c21565b8061246f5761246c61345a565b50565b61246c613521565b60005473ffffffffffffffffffffffffffffffffffffffff1633146124de5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c21565b73ffffffffffffffffffffffffffffffffffffffff81166125675760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610c21565b61246c8161300a565b60005473ffffffffffffffffffffffffffffffffffffffff1633146125d75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c21565b600d55565b60005473ffffffffffffffffffffffffffffffffffffffff1633146126435760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c21565b600f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b6040517f096568f60000000000000000000000000000000000000000000000000000000081523060048201526060907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063f5ecbdbc90829063096568f69060240160206040518083038186803b15801561270057600080fd5b505afa158015612714573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127389190614446565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815261ffff918216600482015290871660248201523060448201526064810185905260840160006040518083038186803b15801561279f57600080fd5b505afa1580156127b3573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526127f9919081019061436c565b90505b949350505050565b6040517f66ad5c8a00000000000000000000000000000000000000000000000000000000815230906366ad5c8a90612846908790879087908790600401614b2b565b600060405180830381600087803b15801561286057600080fd5b505af1925050508015612871575060015b610c36578080519060200120600260008661ffff1661ffff168152602001908152602001600020846040516128a6919061490a565b90815260408051918290036020908101832067ffffffffffffffff87166000908152915220919091557fe6f254030bcb01ffd20558175c13fcaed6d1520be7becee4c961b65f79243b0d90612902908690869086908690614b2b565b60405180910390a1610c36565b600081815260076020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416908117909155819061296982611726565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008181526005602052604081205473ffffffffffffffffffffffffffffffffffffffff16612a465760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e00000000000000000000000000000000000000006064820152608401610c21565b6000612a5183611726565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612ac057508373ffffffffffffffffffffffffffffffffffffffff16612aa884610ec1565b73ffffffffffffffffffffffffffffffffffffffff16145b806127fc575073ffffffffffffffffffffffffffffffffffffffff80821660009081526008602090815260408083209388168352929052205460ff166127fc565b8273ffffffffffffffffffffffffffffffffffffffff16612b2182611726565b73ffffffffffffffffffffffffffffffffffffffff1614612baa5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610c21565b73ffffffffffffffffffffffffffffffffffffffff8216612c325760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610c21565b612c3d60008261290f565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600660205260408120805460019290612c73908490614d9d565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600660205260408120805460019290612cae908490614d34565b909155505060008181526005602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b612d3e33866129af565b612db05760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610c21565b612dbc888888886135c7565b60008686604051602001612dd1929190614a3e565b6040516020818303038152906040529050612e258882878787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061362392505050565b6040517f7a14574800000000000000000000000000000000000000000000000000000000815261ffff891660048201523060248201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690637a1457489060440160206040518083038186803b158015612eb757600080fd5b505afa158015612ecb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eef919061484c565b905087604051612eff919061490a565b6040805191829003822089835267ffffffffffffffff841660208401529161ffff8c169173ffffffffffffffffffffffffffffffffffffffff8e16917f024797cc77ce15dc717112d54fb1df125fdfd8c81344fb046c5e074427ce1543910160405180910390a46122ba565b60008082806020019051810190612f82919061439f565b60148201519193509150612f97878284613761565b6040805161ffff8916815273ffffffffffffffffffffffffffffffffffffffff8316602082015290810183905267ffffffffffffffff861660608201527fd4d39d20f72eabd06c301e516d54653dfc9116de62c1d54bf1cb48cf3b42a7db9060800160405180910390a150505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052610c3690859061376b565b61172282826040518060200160405280600081525061385d565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156131aa5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610c21565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526008602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61324d848484612b01565b613259848484846138e6565b610c365760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610c21565b606060098054610d3090614de0565b60608161331a57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115613344578061332e81614e34565b915061333d9050600a83614d4c565b915061331e565b60008167ffffffffffffffff811115613386577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156133b0576020820181803683370190505b5090505b84156127fc576133c5600183614d9d565b91506133d2600a86614e6d565b6133dd906030614d34565b60f81b818381518110613419577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350613453600a86614d4c565b94506133b4565b600a5460ff166134ac5760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610c21565b600a80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b600a5460ff16156135745760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610c21565b600a80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586134f73390565b600a5460ff161561361a5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610c21565b610c3681613ac8565b61ffff85166000908152600160205260409020805461364190614de0565b151590506136b75760405162461bcd60e51b815260206004820152603260248201527f4c7a53656e643a2064657374696e6174696f6e20636861696e206973206e6f7460448201527f2061207472757374656420736f757263652e00000000000000000000000000006064820152608401610c21565b61ffff85166000908152600160205260409081902090517fc580310000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163c5803100913491613748918a91908a908a908a908a90600401614b6a565b6000604051808303818588803b1580156122a657600080fd5b6110d58282613114565b60006137cd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613b959092919063ffffffff16565b8051909150156110d557808060200190518101906137eb9190614318565b6110d55760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610c21565b6138678383613ba4565b61387460008484846138e6565b6110d55760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610c21565b600073ffffffffffffffffffffffffffffffffffffffff84163b15613ac0576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a029061395d9033908990889088906004016149e2565b602060405180830381600087803b15801561397757600080fd5b505af19250505080156139c5575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526139c291810190614350565b60015b613a75573d8080156139f3576040519150601f19603f3d011682016040523d82523d6000602084013e6139f8565b606091505b508051613a6d5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610c21565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001490506127fc565b5060016127fc565b6000613ad382611726565b9050613ae060008361290f565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600660205260408120805460019290613b16908490614d9d565b909155505060008281526005602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555183919073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b60606127fc8484600085613d32565b73ffffffffffffffffffffffffffffffffffffffff8216613c075760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610c21565b60008181526005602052604090205473ffffffffffffffffffffffffffffffffffffffff1615613c795760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610c21565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600660205260408120805460019290613caf908490614d34565b909155505060008181526005602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b606082471015613daa5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610c21565b73ffffffffffffffffffffffffffffffffffffffff85163b613e0e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610c21565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051613e37919061490a565b60006040518083038185875af1925050503d8060008114613e74576040519150601f19603f3d011682016040523d82523d6000602084013e613e79565b606091505b5091509150613e89828286613e94565b979650505050505050565b60608315613ea3575081611491565b825115613eb35782518084602001fd5b8160405162461bcd60e51b8152600401610c219190614a2b565b828054613ed990614de0565b90600052602060002090601f016020900481019282613efb5760008555613f41565b82601f10613f1457805160ff1916838001178555613f41565b82800160010185558215613f41579182015b82811115613f41578251825591602001919060010190613f26565b50613f4d929150613fe3565b5090565b828054613f5d90614de0565b90600052602060002090601f016020900481019282613f7f5760008555613f41565b82601f10613fb6578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00823516178555613f41565b82800160010185558215613f41579182015b82811115613f41578235825591602001919060010190613fc8565b5b80821115613f4d5760008155600101613fe4565b600061400b61400684614cee565b614c9f565b905082815283838301111561401f57600080fd5b828260208301376000602084830101529392505050565b60008083601f840112614047578182fd5b50813567ffffffffffffffff81111561405e578182fd5b60208301915083602082850101111561407657600080fd5b9250929050565b600082601f83011261408d578081fd5b61149183833560208501613ff8565b600082601f8301126140ac578081fd5b81516140ba61400682614cee565b8181528460208386010111156140ce578283fd5b6127fc826020830160208701614db4565b6000602082840312156140f0578081fd5b813561149181614f0e565b6000806040838503121561410d578081fd5b823561411881614f0e565b9150602083013561412881614f0e565b809150509250929050565b600080600060608486031215614147578081fd5b833561415281614f0e565b9250602084013561416281614f0e565b929592945050506040919091013590565b60008060008060808587031215614188578081fd5b843561419381614f0e565b935060208501356141a381614f0e565b925060408501359150606085013567ffffffffffffffff8111156141c5578182fd5b6141d18782880161407d565b91505092959194509250565b600080604083850312156141ef578182fd5b82356141fa81614f0e565b9150602083013561412881614f30565b600080600080600080600080600060e08a8c031215614227578485fd5b893561423281614f0e565b985060208a013561424281614f6c565b975060408a013567ffffffffffffffff8082111561425e578687fd5b61426a8d838e01614036565b909950975060608c0135965060808c0135915061428682614f0e565b90945060a08b01359061429882614f0e565b90935060c08b013590808211156142ad578384fd5b506142ba8c828d01614036565b915080935050809150509295985092959850929598565b600080604083850312156142e3578182fd5b82356142ee81614f0e565b946020939093013593505050565b60006020828403121561430d578081fd5b813561149181614f30565b600060208284031215614329578081fd5b815161149181614f30565b600060208284031215614345578081fd5b813561149181614f3e565b600060208284031215614361578081fd5b815161149181614f3e565b60006020828403121561437d578081fd5b815167ffffffffffffffff811115614393578182fd5b6127fc8482850161409c565b600080604083850312156143b1578182fd5b825167ffffffffffffffff8111156143c7578283fd5b6143d38582860161409c565b925050602083015190509250929050565b6000602082840312156143f5578081fd5b813567ffffffffffffffff81111561440b578182fd5b8201601f8101841361441b578182fd5b6127fc84823560208401613ff8565b60006020828403121561443b578081fd5b813561149181614f6c565b600060208284031215614457578081fd5b815161149181614f6c565b600080600060408486031215614476578081fd5b833561448181614f6c565b9250602084013567ffffffffffffffff81111561449c578182fd5b6144a886828701614036565b9497909650939450505050565b60008060008060008060008060c0898b0312156144d0578182fd5b88356144db81614f6c565b9750602089013567ffffffffffffffff808211156144f7578384fd5b6145038c838d01614036565b909950975060408b0135965060608b0135915061451f82614f0e565b90945060808a01359061453182614f0e565b90935060a08a01359080821115614546578384fd5b506145538b828c01614036565b999c989b5096995094979396929594505050565b60008060006060848603121561457b578081fd5b833561458681614f6c565b9250602084013567ffffffffffffffff8111156145a1578182fd5b6145ad8682870161407d565b925050604084013590509250925092565b60008060008060008060a087890312156145d6578384fd5b86356145e181614f6c565b9550602087013567ffffffffffffffff808211156145fd578586fd5b6146098a838b0161407d565b9650604089013595506060890135915061462282614f30565b90935060808801359080821115614637578384fd5b5061464489828a01614036565b979a9699509497509295939492505050565b60008060008060006080868803121561466d578283fd5b853561467881614f6c565b9450602086013567ffffffffffffffff80821115614694578485fd5b6146a089838a0161407d565b9550604088013591506146b282614f7c565b909350606087013590808211156146c7578283fd5b506146d488828901614036565b969995985093965092949392505050565b600080600080608085870312156146fa578182fd5b843561470581614f6c565b9350602085013567ffffffffffffffff80821115614721578384fd5b61472d8883890161407d565b94506040870135915061473f82614f7c565b90925060608601359080821115614754578283fd5b506141d18782880161407d565b60008060008060808587031215614776578182fd5b843561478181614f6c565b9350602085013561479181614f6c565b925060408501356147a181614f0e565b9396929550929360600135925050565b6000806000806000608086880312156147c8578283fd5b85356147d381614f6c565b945060208601356147e381614f6c565b935060408601359250606086013567ffffffffffffffff811115614805578182fd5b6146d488828901614036565b600060208284031215614822578081fd5b5035919050565b6000806040838503121561483b578182fd5b505080516020909101519092909150565b60006020828403121561485d578081fd5b815161149181614f7c565b81835281816020850137506000806020838501015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600081518084526148c8816020860160208601614db4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b8183823760009101908152919050565b6000825161491c818460208701614db4565b9190910192915050565b600080835461493481614de0565b6001828116801561494c576001811461497b576149a7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008416875282870194506149a7565b8786526020808720875b8581101561499e5781548a820152908401908201614985565b50505082870194505b50929695505050505050565b600083516149c5818460208801614db4565b8351908301906149d9818360208801614db4565b01949350505050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152614a2160808301846148b0565b9695505050505050565b60208152600061149160208301846148b0565b604081526000614a5160408301856148b0565b90508260208301529392505050565b61ffff8716815273ffffffffffffffffffffffffffffffffffffffff8616602082015260a060408201526000614a9960a08301876148b0565b85151560608401528281036080840152614ab4818587614868565b9998505050505050505050565b61ffff841681526040602082015260006127f9604083018486614868565b61ffff86168152608060208201526000614afc60808301876148b0565b67ffffffffffffffff861660408401528281036060840152614b1f818587614868565b98975050505050505050565b61ffff85168152608060208201526000614b4860808301866148b0565b67ffffffffffffffff851660408401528281036060840152613e8981856148b0565b61ffff871681526000602060c081840152818854614b8781614de0565b8060c087015260e0600180841660008114614ba95760018114614bdc57614c07565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008516838a015261010089019550614c07565b8d8852868820885b85811015614bff5781548b8201860152908301908801614be4565b8a0184019650505b50505050508381036040850152614c1e81896148b0565b915050614c43606084018773ffffffffffffffffffffffffffffffffffffffff169052565b73ffffffffffffffffffffffffffffffffffffffff8516608084015282810360a0840152614ab481856148b0565b600061ffff808816835280871660208401525084604083015260806060830152613e89608083018486614868565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614ce657614ce6614edf565b604052919050565b600067ffffffffffffffff821115614d0857614d08614edf565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60008219821115614d4757614d47614e81565b500190565b600082614d5b57614d5b614eb0565b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614d9857614d98614e81565b500290565b600082821015614daf57614daf614e81565b500390565b60005b83811015614dcf578181015183820152602001614db7565b83811115610c365750506000910152565b600181811c90821680614df457607f821691505b60208210811415614e2e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614e6657614e66614e81565b5060010190565b600082614e7c57614e7c614eb0565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461246c57600080fd5b801515811461246c57600080fd5b7fffffffff000000000000000000000000000000000000000000000000000000008116811461246c57600080fd5b61ffff8116811461246c57600080fd5b67ffffffffffffffff8116811461246c57600080fdfea2646970667358221220a581e9b373477251dc06990aa2621f2c30e38c37ba30874127384da6cb03e0a364736f6c634300080400330000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000003c2269811836af69497e5f486a85d7316753cf6200000000000000000000000000000000000000000000000000000000000007d00000000000000000000000000000000000000000000000000000000000000c5e000000000000000000000000b97ef9ef8734c71904d8002f8b6bc66dd9c48a6e0000000000000000000000000000000000000000000000000000000000000006000000000000000000000000f0638096047ef0183d0f3232e82205b118e100dd000000000000000000000000000000000000000000000000000000000000000d59616b757a612050616e646173000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004594b5053000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000042697066733a2f2f6261667962656961636777336865666e66617a6267646d656469796e6673356a756b3271636d326c64367671753763756662623368627462787461000000000000000000000000000000000000000000000000000000000000
0xa2646970667358221220a581e9b373477251dc06990aa2621f2c30e38c37ba30874127384da6cb03e0a364736f6c634300080400330000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000003c2269811836af69497e5f486a85d7316753cf6200000000000000000000000000000000000000000000000000000000000007d00000000000000000000000000000000000000000000000000000000000000c5e000000000000000000000000b97ef9ef8734c71904d8002f8b6bc66dd9c48a6e0000000000000000000000000000000000000000000000000000000000000006000000000000000000000000f0638096047ef0183d0f3232e82205b118e100dd000000000000000000000000000000000000000000000000000000000000000d59616b757a612050616e646173000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004594b5053000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000042697066733a2f2f6261667962656961636777336865666e66617a6267646d656469796e6673356a756b3271636d326c64367671753763756662623368627462787461000000000000000000000000000000000000000000000000000000000000