[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "string", "name": "_baseTokenURI", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AlreadyDeposited", "type": "error" }, { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "ApprovalQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "BalanceQueryForZeroAddress", "type": "error" }, { "inputs": [], "name": "DepositAirdropped", "type": "error" }, { "inputs": [], "name": "DepositInactive", "type": "error" }, { "inputs": [ { "internalType": "enum IR.AirdropType", "name": "_airdropType", "type": "uint8" } ], "name": "ExceedsAllocationForAirdropType", "type": "error" }, { "inputs": [], "name": "ExceedsAllocationForDeposit", "type": "error" }, { "inputs": [], "name": "ExceedsMaxSupply", "type": "error" }, { "inputs": [], "name": "ExceedsVIPSupply", "type": "error" }, { "inputs": [], "name": "GiftAirdropped", "type": "error" }, { "inputs": [], "name": "HolderAirdropped", "type": "error" }, { "inputs": [], "name": "IncorrectLeaderboardLeaders", "type": "error" }, { "inputs": [], "name": "InsufficientBalance", "type": "error" }, { "inputs": [], "name": "InsufficientETHSent", "type": "error" }, { "inputs": [], "name": "InvalidGuaranteedQuantity", "type": "error" }, { "inputs": [], "name": "LeaderboardLeaderAirdropped", "type": "error" }, { "inputs": [], "name": "MintERC2309QuantityExceedsLimit", "type": "error" }, { "inputs": [], "name": "MintToZeroAddress", "type": "error" }, { "inputs": [], "name": "MintZeroQuantity", "type": "error" }, { "inputs": [], "name": "NonGuaranteedCapped", "type": "error" }, { "inputs": [], "name": "NotInAllowlist", "type": "error" }, { "inputs": [], "name": "OwnerQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "OwnershipNotInitializedForExtraData", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "RefundFailed", "type": "error" }, { "inputs": [], "name": "TransferCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "TransferFromIncorrectOwner", "type": "error" }, { "inputs": [], "name": "TransferToNonERC721ReceiverImplementer", "type": "error" }, { "inputs": [], "name": "TransferToZeroAddress", "type": "error" }, { "inputs": [], "name": "URIQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "UnequalArrayLength", "type": "error" }, { "inputs": [], "name": "WithdrawalFailed", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_qty", "type": "uint256" } ], "name": "Airdropped", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "toTokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" } ], "name": "ConsecutiveTransfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_from", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_qty", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_nonGuaranteedRemainingSupply", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_fcfsGuaranteedRemainingSupply", "type": "uint256" } ], "name": "FCFSDeposited", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "Refunded", "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": true, "internalType": "address", "name": "_from", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_guaranteedQty", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_nonGuaranteedQty", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_nonGuaranteedRemainingSupply", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_vipGuaranteedRemainingSupply", "type": "uint256" } ], "name": "VIPDeposited", "type": "event" }, { "inputs": [], "name": "DEPOSIT_PRICE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEPOSIT_SUPPLY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "FCFS_DEPOSIT_QUANTIY", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "FCFS_GUARANTEED_SUPPLY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "GIFT_SUPPLY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "HOLDER_SUPPLY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_SUPPLY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "REFUND_PRICE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "TOP_50_LEADERBOARD_SUPPLY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "TREASURY_SUPPLY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "TREASURY_WALLET", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "VIP_GUARANTEED_SUPPLY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "WITHDRAW_WALLET", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "addressesInfo", "outputs": [ { "internalType": "enum IR.MerkleRootType", "name": "userType", "type": "uint8" }, { "internalType": "enum IR.RefundStatus", "name": "refundStatus", "type": "uint8" }, { "internalType": "uint64", "name": "guaranteedQty", "type": "uint64" }, { "internalType": "uint64", "name": "nonGuaranteedQty", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "payable", "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": "_to", "type": "address[]" }, { "internalType": "uint64[]", "name": "_airdropQty", "type": "uint64[]" } ], "name": "batchAirdrop", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "_to", "type": "address[]" }, { "internalType": "uint64[]", "name": "_refundQty", "type": "uint64[]" } ], "name": "batchRefund", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32[]", "name": "_merkleProof", "type": "bytes32[]" } ], "name": "depositFCFS", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "bytes32[]", "name": "_merkleProof", "type": "bytes32[]" }, { "internalType": "uint256", "name": "_allowedQty", "type": "uint256" }, { "internalType": "uint64", "name": "_guaranteedDeposit", "type": "uint64" }, { "internalType": "uint64", "name": "_nonGuaranteedDeposit", "type": "uint64" } ], "name": "depositVIP", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "fcfsGuaranteedDeposited", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "fcfsMerkleRoot", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "enum IR.DepositType", "name": "_depositType", "type": "uint8" }, { "internalType": "address[]", "name": "addresses", "type": "address[]" } ], "name": "getAirdropQtyPerAddress", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "enum IR.DepositType", "name": "_depositType", "type": "uint8" } ], "name": "getDepositAddressesCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "enum IR.DepositType", "name": "_depositType", "type": "uint8" }, { "internalType": "uint256", "name": "fromIdx", "type": "uint256" }, { "internalType": "uint256", "name": "toIdx", "type": "uint256" } ], "name": "getDepositedAddresses", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getFCFSGuaranteedRemainingSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getNonGuaranteedRemainingSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getVIPGuaranteedRemainingSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "_to", "type": "address[]" }, { "internalType": "uint64[]", "name": "_airdropQty", "type": "uint64[]" } ], "name": "giftAirdrop", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "giftAirdrops", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "giftQtyAirdropped", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "_to", "type": "address[]" }, { "internalType": "uint64[]", "name": "_airdropQty", "type": "uint64[]" } ], "name": "holderAirdrop", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "holderAirdrops", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "holderQtyAirdropped", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "isDepositActive", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nonGuaranteedDeposited", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nonGuaranteedRefunded", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "operatorFilteringEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "payable", "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": "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": "baseURI", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "setDefaultRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "enum IR.MerkleRootType", "name": "_type", "type": "uint8" }, { "internalType": "bytes32", "name": "_merkleRoot", "type": "bytes32" } ], "name": "setMerkleRoot", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "value", "type": "bool" } ], "name": "setOperatorFilteringEnabled", "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": [], "name": "toggleDepositState", "outputs": [], "stateMutability": "nonpayable", "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": "_to", "type": "address[]" } ], "name": "top50LeaderboardAirdrop", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "top50LeaderboardAirdrops", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "top50LeaderboardQtyAirdropped", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "treasuryAirdrop", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "treasuryQtyAirdropped", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "vipGuaranteedDeposited", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "vipMerkleRoot", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60806040523480156200001157600080fd5b506040516200475338038062004753833981016040819052620000349162000361565b8282600262000044838262000481565b50600362000053828262000481565b50506001600055506200006633620000a8565b6001600b5562000075620000fa565b6013805460ff1916600117905562000090336101f46200011d565b60146200009e828262000481565b505050506200054d565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6200011b733cc6cdda760b79bafa08df41ecfa224f810dceb6600162000222565b565b6127106001600160601b0382161115620001915760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b60648201526084015b60405180910390fd5b6001600160a01b038216620001e95760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c696420726563656976657200000000000000604482015260640162000188565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600855565b6001600160a01b0390911690637d3e3dbe816200025257826200024b5750634420e48662000252565b5063a0af29035b8060e01b60005230600452826024526004600060446000806daaeb6d7670e522a718067333cd4e5af162000292578060005160e01c036200029257600080fd5b5060006024525050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620002c457600080fd5b81516001600160401b0380821115620002e157620002e16200029c565b604051601f8301601f19908116603f011681019082821181831017156200030c576200030c6200029c565b816040528381526020925086838588010111156200032957600080fd5b600091505b838210156200034d57858201830151818301840152908201906200032e565b600093810190920192909252949350505050565b6000806000606084860312156200037757600080fd5b83516001600160401b03808211156200038f57600080fd5b6200039d87838801620002b2565b94506020860151915080821115620003b457600080fd5b620003c287838801620002b2565b93506040860151915080821115620003d957600080fd5b50620003e886828701620002b2565b9150509250925092565b600181811c908216806200040757607f821691505b6020821081036200042857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200047c57600081815260208120601f850160051c81016020861015620004575750805b601f850160051c820191505b81811015620004785782815560010162000463565b5050505b505050565b81516001600160401b038111156200049d576200049d6200029c565b620004b581620004ae8454620003f2565b846200042e565b602080601f831160018114620004ed5760008415620004d45750858301515b600019600386901b1c1916600185901b17855562000478565b600085815260208120601f198616915b828110156200051e57888601518255948401946001909101908401620004fd565b50858210156200053d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6141f6806200055d6000396000f3fe6080604052600436106103ef5760003560e01c806381007b3811610208578063c87b56dd11610118578063e985e9c5116100ab578063f2fde38b1161007a578063f2fde38b14610b17578063f3a20ebd14610b37578063fb796e6c14610b9c578063fcc4fdac14610bb6578063fd43bf7714610bcc57600080fd5b8063e985e9c514610aaf578063ed4e76d914610acf578063ed7ae24214610ae5578063f228ad0914610afb57600080fd5b8063d568d72e116100e7578063d568d72e14610a5c578063de3d07d214610a84578063e2bb7c9f1461075b578063e459d51c14610a9957600080fd5b8063c87b56dd146109fb578063cd94b26414610a1b578063d340f5fb14610a2e578063d547cfb714610a4757600080fd5b80639f0fb5aa1161019b578063a95ada901161016a578063a95ada9014610941578063adad70541461096e578063b32b1a171461099b578063b7c0b8e8146109c8578063b88d4fde146109e857600080fd5b80639f0fb5aa146108c65780639ff12c6f146108df578063a22cb465146108f4578063a76c111c1461091457600080fd5b80638da5cb5b116101d75780638da5cb5b1461085057806395d89b411461086e5780639aa3f57b146108835780639f01863a146108b057600080fd5b806381007b38146107ef57806387d309e31461080557806389f8e1a91461081b5780638cf4ead21461083057600080fd5b8063460b8bcb11610303578063715018a6116102965780637644efaa116102655780637644efaa14610771578063771c550414610787578063786120ad146107a35780637ae4d7e3146107c35780637bb23e3a146107d957600080fd5b8063715018a61461071057806372a1056c14610725578063738f7ecc1461073b57806375d0abfa1461075b57600080fd5b8063560ecd5a116102d2578063560ecd5a146106925780635daf3146146106a85780636352211e146106d057806370a08231146106f057600080fd5b8063460b8bcb146106125780634da719f51461063257806354d77e0e1461065257806355f804b31461067257600080fd5b806323b872dd116103865780633cd48825116103555780633cd48825146105a25780633d29766d146105b757806340012d18146105ca57806342842e0e146105ea57806344f61ac8146105fd57600080fd5b806323b872dd146105255780632a55205a1461053857806332cb6b0c146105775780633ccfd60b1461058d57600080fd5b8063095ea7b3116103c2578063095ea7b3146104a5578063179ab108146104b857806318160ddd146104f25780631ea639011461050f57600080fd5b806301ffc9a7146103f457806304634d8d1461042957806306fdde031461044b578063081812fc1461046d575b600080fd5b34801561040057600080fd5b5061041461040f366004613845565b610be6565b60405190151581526020015b60405180910390f35b34801561043557600080fd5b5061044961044436600461387e565b610c06565b005b34801561045757600080fd5b50610460610c1c565b6040516104209190613911565b34801561047957600080fd5b5061048d610488366004613924565b610cae565b6040516001600160a01b039091168152602001610420565b6104496104b336600461393d565b610cf2565b3480156104c457600080fd5b506104e46104d3366004613967565b602080526000908152604090205481565b604051908152602001610420565b3480156104fe57600080fd5b5060015460005403600019016104e4565b34801561051b57600080fd5b506104e461015d81565b610449610533366004613982565b610d3a565b34801561054457600080fd5b506105586105533660046139be565b610d8b565b604080516001600160a01b039093168352602083019190915201610420565b34801561058357600080fd5b506104e4614e2081565b34801561059957600080fd5b50610449610e39565b3480156105ae57600080fd5b506104e4610e96565b6104496105c5366004613a24565b610ecd565b3480156105d657600080fd5b506104496105e5366004613a65565b611173565b6104496105f8366004613982565b6114d2565b34801561060957600080fd5b506104e4603981565b34801561061e57600080fd5b506104e461062d366004613adf565b6114ed565b34801561063e57600080fd5b5061044961064d366004613a65565b61153e565b34801561065e57600080fd5b5061044961066d366004613afa565b611861565b34801561067e57600080fd5b5061044961068d366004613b1c565b6118a7565b34801561069e57600080fd5b506104e460185481565b3480156106b457600080fd5b5061048d73299019b8f44d9a3bdbc501529383e9f32076efae81565b3480156106dc57600080fd5b5061048d6106eb366004613924565b6118bc565b3480156106fc57600080fd5b506104e461070b366004613967565b6118c7565b34801561071c57600080fd5b50610449611915565b34801561073157600080fd5b506104e460155481565b34801561074757600080fd5b50610449610756366004613a65565b611927565b34801561076757600080fd5b506104e46103e881565b34801561077d57600080fd5b506104e4601a5481565b34801561079357600080fd5b506104e46701cdda4faccd000081565b3480156107af57600080fd5b506104496107be366004613a65565b611b05565b3480156107cf57600080fd5b506104e460195481565b3480156107e557600080fd5b506104e460165481565b3480156107fb57600080fd5b506104e4601c5481565b34801561081157600080fd5b506104e461256b81565b34801561082757600080fd5b50610449611e00565b34801561083c57600080fd5b5061044961084b366004613a24565b611fc0565b34801561085c57600080fd5b50600a546001600160a01b031661048d565b34801561087a57600080fd5b5061046061218e565b34801561088f57600080fd5b506108a361089e366004613b8d565b61219d565b6040516104209190613bc0565b3480156108bc57600080fd5b506104e4601b5481565b3480156108d257600080fd5b5060185461256b036104e4565b3480156108eb57600080fd5b506104e461231e565b34801561090057600080fd5b5061044961090f366004613c1d565b612347565b34801561092057600080fd5b5061093461092f366004613c50565b61238a565b6040516104209190613ca2565b34801561094d57600080fd5b506104e461095c366004613967565b60226020526000908152604090205481565b34801561097a57600080fd5b50610983600181565b6040516001600160401b039091168152602001610420565b3480156109a757600080fd5b506104e46109b6366004613967565b60216020526000908152604090205481565b3480156109d457600080fd5b506104496109e3366004613cda565b61260c565b6104496109f6366004613d0b565b612627565b348015610a0757600080fd5b50610460610a16366004613924565b61266b565b610449610a29366004613dfd565b6126ef565b348015610a3a57600080fd5b506019546103e8036104e4565b348015610a5357600080fd5b50610460612a35565b348015610a6857600080fd5b5061048d7384f2dc09e31ce35b1ad1c65983bcea4683b4ee9e81565b348015610a9057600080fd5b50610449612ac3565b348015610aa557600080fd5b506104e4601d5481565b348015610abb57600080fd5b50610414610aca366004613e6a565b612adf565b348015610adb57600080fd5b506104e4601f5481565b348015610af157600080fd5b506104e4601e5481565b348015610b0757600080fd5b506104e4670214e8348c4f000081565b348015610b2357600080fd5b50610449610b32366004613967565b612b0d565b348015610b4357600080fd5b50610b8c610b52366004613967565b600c6020526000908152604090205460ff808216916101008104909116906001600160401b03620100008204811691600160501b90041684565b6040516104209493929190613eba565b348015610ba857600080fd5b506013546104149060ff1681565b348015610bc257600080fd5b506104e461226f81565b348015610bd857600080fd5b506017546104149060ff1681565b6000610bf182612b86565b80610c005750610c0082612bd4565b92915050565b610c0e612c09565b610c188282612c63565b5050565b606060028054610c2b90613ef8565b80601f0160208091040260200160405190810160405280929190818152602001828054610c5790613ef8565b8015610ca45780601f10610c7957610100808354040283529160200191610ca4565b820191906000526020600020905b815481529060010190602001808311610c8757829003601f168201915b5050505050905090565b6000610cb982612d60565b610cd6576040516333d1c03960e21b815260040160405180910390fd5b506000908152600660205260409020546001600160a01b031690565b81731e0049783f008a0085193e00003d00cd54003c716001600160a01b03821614610d2b5760135460ff1615610d2b57610d2b81612d95565b610d358383612dd9565b505050565b826001600160a01b0381163314610d7a57731e0049783f008a0085193e00003d00cd54003c713314610d7a5760135460ff1615610d7a57610d7a33612d95565b610d85848484612e79565b50505050565b60008281526009602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b0316928201929092528291610e005750604080518082019091526008546001600160a01b0381168252600160a01b90046001600160601b031660208201525b602081015160009061271090610e1f906001600160601b031687613f48565b610e299190613f5f565b91519350909150505b9250929050565b610e41612c09565b610e49613012565b6000610e697384f2dc09e31ce35b1ad1c65983bcea4683b4ee9e4761306b565b905080610e89576040516327fcd9d160e01b815260040160405180910390fd5b50610e946001600b55565b565b61226f61015d6103e8610eac6039614e20613f81565b610eb69190613f81565b610ec09190613f81565b610eca9190613f81565b81565b610ed5613012565b60175460ff16610ef8576040516358bdd18760e01b815260040160405180910390fd5b336000818152600c60205260409020546201000090046001600160401b0316151580610f4b57506001600160a01b0381166000908152600c6020526040902054600160501b90046001600160401b031615155b15610f695760405163d5a8211560e01b815260040160405180910390fd5b6040516bffffffffffffffffffffffff193360601b166020820152600090603401604051602081830303815290604052805190602001209050610fb08484601654846130eb565b610fcd576040516315ebf2b560e21b815260040160405180910390fd5b6701cdda4faccd0000341015610ff65760405163311c9fd160e01b815260040160405180910390fd5b336000908152600c60205260409020805460ff191660019081179091556019546103e89161102391613f94565b11156110af576110336001613105565b61109657601a80546001908101909155336000818152600c60205260409020805467ffffffffffffffff60501b1981166001600160401b03600160501b92839004811690950190941602929092179091556110909060119061316a565b50611108565b6040516306d3c77960e01b815260040160405180910390fd5b601980546001908101909155336000818152600c60205260409020805469ffffffffffffffff00001981166001600160401b0362010000928390048116909501909416029290921790915561110690600f9061316a565b505b337fa3c76bf786b679367bcd12aa3ec29e0da31124efe3258d5e574f35d98c5850d234600161113561231e565b6019546103e803604080519485526001600160401b03909316602085015291830152606082015260800160405180910390a25050610c186001600b55565b61117b612c09565b611183613012565b600361118f838361317f565b614e20816111a06000546000190190565b6111aa9190613f94565b11156111c95760405163c30436e960e01b815260040160405180910390fd5b60008260048111156111dd576111dd613e94565b1480156111f75750603981601c546111f59190613f94565b115b156112205781604051630edb33a960e41b81526004016112179190613fa7565b60405180910390fd5b600182600481111561123457611234613e94565b14801561124f57506103e881601d5461124d9190613f94565b115b1561126f5781604051630edb33a960e41b81526004016112179190613fa7565b600282600481111561128357611283613e94565b14801561129e575061015d81601e5461129c9190613f94565b115b156112be5781604051630edb33a960e41b81526004016112179190613fa7565b60038260048111156112d2576112d2613e94565b1480156112ed575061226f81601f546112eb9190613f94565b115b1561130d5781604051630edb33a960e41b81526004016112179190613fa7565b8585858580831461133157604051637e8c87cf60e11b815260040160405180910390fd5b60005b898110156114c1576000602260008d8d8581811061135457611354613fc1565b90506020020160208101906113699190613967565b6001600160a01b03166001600160a01b031681526020019081526020016000205411156113a9576040516314ecad8b60e21b815260040160405180910390fd5b6114088b8b838181106113be576113be613fc1565b90506020020160208101906113d39190613967565b8a8a848181106113e5576113e5613fc1565b90506020020160208101906113fa9190613fd7565b6001600160401b03166131d8565b88888281811061141a5761141a613fc1565b905060200201602081019061142f9190613fd7565b601f80546001600160401b0392909216909101905588888281811061145657611456613fc1565b905060200201602081019061146b9190613fd7565b6001600160401b0316602260008d8d8581811061148a5761148a613fc1565b905060200201602081019061149f9190613967565b6001600160a01b03168152602081019190915260400160002055600101611334565b50505050505050610d856001600b55565b610d3583838360405180602001604052806000815250612627565b60008082600281111561150257611502613e94565b0361151157610c00600d613229565b600182600281111561152557611525613e94565b0361153457610c00600f613229565b610c006011613229565b611546612c09565b61154e613012565b8383838380831461157257604051637e8c87cf60e11b815260040160405180910390fd5b60005b87811015611852576000600c60008b8b8581811061159557611595613fc1565b90506020020160208101906115aa9190613967565b6001600160a01b03168152602081019190915260409081016000208151608081019092528054829060ff1660018111156115e6576115e6613e94565b60018111156115f7576115f7613e94565b81528154602090910190610100900460ff16600181111561161a5761161a613e94565b600181111561162b5761162b613e94565b815290546001600160401b0362010000820481166020840152600160501b90910416604090910152905060008160200151600181111561166d5761166d613e94565b1480156116875750600081606001516001600160401b0316115b156118495760008888848181106116a0576116a0613fc1565b90506020020160208101906116b59190613fd7565b6116d0906001600160401b0316670214e8348c4f0000613f48565b905060006117048c8c868181106116e9576116e9613fc1565b90506020020160208101906116fe9190613967565b8361306b565b90508061175e578b8b8581811061171d5761171d613fc1565b90506020020160208101906117329190613967565b6040516357b9d85960e11b81526001600160a01b03909116600482015260248101839052604401611217565b6001602084015289898581811061177757611777613fc1565b905060200201602081019061178c9190613fd7565b606084018051919091036001600160401b031690528989858181106117b3576117b3613fc1565b90506020020160208101906117c89190613fd7565b601b80546001600160401b039290921690910190558b8b858181106117ef576117ef613fc1565b90506020020160208101906118049190613967565b6001600160a01b03167fd7dee2702d63ad89917b6a4da9981c90c4d24f8c2bdfd64c604ecae57d8d06518360405161183e91815260200190565b60405180910390a250505b50600101611575565b5050505050610d856001600b55565b611869612c09565b600082600181111561187d5761187d613e94565b036118885760155550565b600182600181111561189c5761189c613e94565b03610c185760165550565b6118af612c09565b6014610d35828483614038565b6000610c0082613233565b60006001600160a01b0382166118f0576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03166000908152600560205260409020546001600160401b031690565b61191d612c09565b610e9460006132a2565b61192f612c09565b611937613012565b8383838380831461195b57604051637e8c87cf60e11b815260040160405180910390fd5b60005b8781101561185257614e2087878381811061197b5761197b613fc1565b90506020020160208101906119909190613fd7565b6001600160401b03166119a66000546000190190565b6119b09190613f94565b11156119cf5760405163c30436e960e01b815260040160405180910390fd5b611a178989838181106119e4576119e4613fc1565b90506020020160208101906119f99190613967565b6001600160a01b031660009081526005602052604090205460c01c90565b6001600160401b031615611a3e57604051635d4d4e4560e11b815260040160405180910390fd5b611a7a898983818110611a5357611a53613fc1565b9050602002016020810190611a689190613967565b8888848181106113e5576113e5613fc1565b611afd898983818110611a8f57611a8f613fc1565b9050602002016020810190611aa49190613967565b888884818110611ab657611ab6613fc1565b9050602002016020810190611acb9190613fd7565b6001600160a01b03909116600090815260056020526040902080546001600160c01b031660c09290921b919091179055565b60010161195e565b611b0d612c09565b611b15613012565b6002611b21838361317f565b614e2081611b326000546000190190565b611b3c9190613f94565b1115611b5b5760405163c30436e960e01b815260040160405180910390fd5b6000826004811115611b6f57611b6f613e94565b148015611b895750603981601c54611b879190613f94565b115b15611ba95781604051630edb33a960e41b81526004016112179190613fa7565b6001826004811115611bbd57611bbd613e94565b148015611bd857506103e881601d54611bd69190613f94565b115b15611bf85781604051630edb33a960e41b81526004016112179190613fa7565b6002826004811115611c0c57611c0c613e94565b148015611c27575061015d81601e54611c259190613f94565b115b15611c475781604051630edb33a960e41b81526004016112179190613fa7565b6003826004811115611c5b57611c5b613e94565b148015611c76575061226f81601f54611c749190613f94565b115b15611c965781604051630edb33a960e41b81526004016112179190613fa7565b85858585808314611cba57604051637e8c87cf60e11b815260040160405180910390fd5b60005b898110156114c1576000602160008d8d85818110611cdd57611cdd613fc1565b9050602002016020810190611cf29190613967565b6001600160a01b03166001600160a01b03168152602001908152602001600020541115611d32576040516315ff82b560e21b815260040160405180910390fd5b611d478b8b838181106113be576113be613fc1565b888882818110611d5957611d59613fc1565b9050602002016020810190611d6e9190613fd7565b601e80546001600160401b03929092169091019055888882818110611d9557611d95613fc1565b9050602002016020810190611daa9190613fd7565b6001600160401b0316602160008d8d85818110611dc957611dc9613fc1565b9050602002016020810190611dde9190613967565b6001600160a01b03168152602081019190915260400160002055600101611cbd565b611e08612c09565b611e10613012565b60016103e8614e2081611e266000546000190190565b611e309190613f94565b1115611e4f5760405163c30436e960e01b815260040160405180910390fd5b6000826004811115611e6357611e63613e94565b148015611e7d5750603981601c54611e7b9190613f94565b115b15611e9d5781604051630edb33a960e41b81526004016112179190613fa7565b6001826004811115611eb157611eb1613e94565b148015611ecc57506103e881601d54611eca9190613f94565b115b15611eec5781604051630edb33a960e41b81526004016112179190613fa7565b6002826004811115611f0057611f00613e94565b148015611f1b575061015d81601e54611f199190613f94565b115b15611f3b5781604051630edb33a960e41b81526004016112179190613fa7565b6003826004811115611f4f57611f4f613e94565b148015611f6a575061226f81601f54611f689190613f94565b115b15611f8a5781604051630edb33a960e41b81526004016112179190613fa7565b611faa73299019b8f44d9a3bdbc501529383e9f32076efae6103e86131d8565b5050601d80546103e8019055610e946001600b55565b611fc8612c09565b611fd0613012565b60006039614e2081611fe56000546000190190565b611fef9190613f94565b111561200e5760405163c30436e960e01b815260040160405180910390fd5b600082600481111561202257612022613e94565b14801561203c5750603981601c5461203a9190613f94565b115b1561205c5781604051630edb33a960e41b81526004016112179190613fa7565b600182600481111561207057612070613e94565b14801561208b57506103e881601d546120899190613f94565b115b156120ab5781604051630edb33a960e41b81526004016112179190613fa7565b60028260048111156120bf576120bf613e94565b1480156120da575061015d81601e546120d89190613f94565b115b156120fa5781604051630edb33a960e41b81526004016112179190613fa7565b600382600481111561210e5761210e613e94565b148015612129575061226f81601f546121279190613f94565b115b156121495781604051630edb33a960e41b81526004016112179190613fa7565b6032831461216a576040516346a3f0a960e11b815260040160405180910390fd5b612176848460076132f4565b612182848460326132f4565b5050610c186001600b55565b606060038054610c2b90613ef8565b606060006121aa856114ed565b90506121b6838261347d565b925060006121c48585613f81565b90506000816001600160401b038111156121e0576121e0613cf5565b604051908082528060200260200182016040528015612209578160200160208202803683370190505b50905060005b8281101561231357600088600281111561222b5761222b613e94565b0361227c5761224561223d8883613f94565b600d90613493565b82828151811061225757612257613fc1565b60200260200101906001600160a01b031690816001600160a01b03168152505061230b565b600188600281111561229057612290613e94565b036122aa576122456122a28883613f94565b600f90613493565b60028860028111156122be576122be613e94565b0361230b576122d86122d08883613f94565b601190613493565b8282815181106122ea576122ea613fc1565b60200260200101906001600160a01b031690816001600160a01b0316815250505b60010161220f565b509695505050505050565b600061232a6000613105565b6123415750601a5460195460185401016126330390565b50600090565b81731e0049783f008a0085193e00003d00cd54003c716001600160a01b038216146123805760135460ff16156123805761238081612d95565b610d35838361349f565b60606000826001600160401b038111156123a6576123a6613cf5565b6040519080825280602002602001820160405280156123cf578160200160208202803683370190505b50905060005b838110156126035760008660028111156123f1576123f1613e94565b14801561245657506000600c600087878581811061241157612411613fc1565b90506020020160208101906124269190613967565b6001600160a01b0316815260208101919091526040016000205460ff16600181111561245457612454613e94565b145b156124d657600c600086868481811061247157612471613fc1565b90506020020160208101906124869190613967565b6001600160a01b031681526020810191909152604001600020548251620100009091046001600160401b0316908390839081106124c5576124c5613fc1565b6020026020010181815250506125fb565b60018660028111156124ea576124ea613e94565b14801561254f57506001600c600087878581811061250a5761250a613fc1565b905060200201602081019061251f9190613967565b6001600160a01b0316815260208101919091526040016000205460ff16600181111561254d5761254d613e94565b145b1561256a57600c600086868481811061247157612471613fc1565b600286600281111561257e5761257e613e94565b036125fb57600c600086868481811061259957612599613fc1565b90506020020160208101906125ae9190613967565b6001600160a01b031681526020810191909152604001600020548251600160501b9091046001600160401b0316908390839081106125ee576125ee613fc1565b6020026020010181815250505b6001016123d5565b50949350505050565b612614612c09565b6013805460ff1916911515919091179055565b612632848484610d3a565b6001600160a01b0383163b15610d855761264e8484848461350b565b610d85576040516368d2bf6b60e11b815260040160405180910390fd5b606061267682612d60565b61269357604051630a14c4b560e41b815260040160405180910390fd5b600061269d6135f3565b905080516000036126bd57604051806020016040528060008152506126e8565b806126c784613602565b6040516020016126d89291906140f7565b6040516020818303038152906040525b9392505050565b6126f7613012565b60175460ff1661271a576040516358bdd18760e01b815260040160405180910390fd5b336000818152600c60205260409020546201000090046001600160401b031615158061276d57506001600160a01b0381166000908152600c6020526040902054600160501b90046001600160401b031615155b1561278b5760405163d5a8211560e01b815260040160405180910390fd5b6040516bffffffffffffffffffffffff193360601b166020820152603481018590526000906054016040516020818303038152906040528051906020012090506127d98787601554846130eb565b6127f6576040516315ebf2b560e21b815260040160405180910390fd5b836001600160401b031660000361282057604051630a2d887d60e31b815260040160405180910390fd5b61282a8385614126565b612845906001600160401b03166701cdda4faccd0000613f48565b3410156128655760405163311c9fd160e01b815260040160405180910390fd5b84846001600160401b03161180612884575084836001600160401b0316115b156128a2576040516376be2b5760e01b815260040160405180910390fd5b61256b846001600160401b03166018546128bc9190613f94565b11156128db57604051634187f26760e11b815260040160405180910390fd5b336000818152600c60205260409020805460ff19168155601880546001600160401b03888116909101909155815469ffffffffffffffff00001981166201000091829004831689019092160217905561293690600d9061316a565b506001600160401b038316156129b757612958836001600160401b0316613105565b61109657601a80546001600160401b03858116909101909155336000818152600c60205260409020805467ffffffffffffffff60501b198116600160501b918290048516880190941602929092179091556129b59060119061316a565b505b337ffc01f1f9484f4757d21898bcc5a0ea624361cfa44c3c82233f141359269df1963486866129e461231e565b60185461256b03604080519586526001600160401b03948516602087015292909316918401919091526060830152608082015260a00160405180910390a25050612a2e6001600b55565b5050505050565b60148054612a4290613ef8565b80601f0160208091040260200160405190810160405280929190818152602001828054612a6e90613ef8565b8015612abb5780601f10612a9057610100808354040283529160200191612abb565b820191906000526020600020905b815481529060010190602001808311612a9e57829003601f168201915b505050505081565b612acb612c09565b6017805460ff19811660ff90911615179055565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b612b15612c09565b6001600160a01b038116612b7a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611217565b612b83816132a2565b50565b60006301ffc9a760e01b6001600160e01b031983161480612bb757506380ac58cd60e01b6001600160e01b03198316145b80610c005750506001600160e01b031916635b5e139f60e01b1490565b60006001600160e01b0319821663152a902d60e11b1480610c0057506301ffc9a760e01b6001600160e01b0319831614610c00565b600a546001600160a01b03163314610e945760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611217565b6127106001600160601b0382161115612cd15760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608401611217565b6001600160a01b038216612d275760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152606401611217565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600855565b600081600111158015612d74575060005482105b8015610c00575050600090815260046020526040902054600160e01b161590565b69c617113400112233445560005230601a5280603a52600080604460166daaeb6d7670e522a718067333cd4e5afa612dd1573d6000803e3d6000fd5b6000603a5250565b6000612de4826118bc565b9050336001600160a01b03821614612e1d57612e008133612adf565b612e1d576040516367d9dca160e11b815260040160405180910390fd5b60008281526006602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000612e8482613233565b9050836001600160a01b0316816001600160a01b031614612eb75760405162a1148160e81b815260040160405180910390fd5b60008281526006602052604090208054338082146001600160a01b03881690911417612f0457612ee78633612adf565b612f0457604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b038516612f2b57604051633a954ecd60e21b815260040160405180910390fd5b8015612f3657600082555b6001600160a01b038681166000908152600560205260408082208054600019019055918716808252919020805460010190554260a01b17600160e11b17600085815260046020526040812091909155600160e11b84169003612fc857600184016000818152600460205260408120549003612fc6576000548114612fc65760008181526004602052604090208490555b505b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b505050505050565b6002600b54036130645760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611217565b6002600b55565b60004782111561308e57604051631e9acf1760e31b815260040160405180910390fd5b6000836001600160a01b03168360405160006040518083038185875af1925050503d80600081146130db576040519150601f19603f3d011682016040523d82523d6000602084013e6130e0565b606091505b509095945050505050565b6000826130f9868685613646565b1490505b949350505050565b600061226f61015d6103e861311d6039614e20613f81565b6131279190613f81565b6131319190613f81565b61313b9190613f81565b82601a5460195460185461314f9190613f94565b6131599190613f94565b6131639190613f94565b1192915050565b60006126e8836001600160a01b038416613689565b600080805b838110156131d05784848281811061319e5761319e613fc1565b90506020020160208101906131b39190613fd7565b6131c6906001600160401b031683613f94565b9150600101613184565b509392505050565b6131e282826136d8565b816001600160a01b03167f7bd6d4be1decdc27a9ed9c7ccdf5bb7cc38e31b3647b958c6b37162a2296c0fa8260405161321d91815260200190565b60405180910390a25050565b6000610c00825490565b60008180600111613289576000548110156132895760008181526004602052604081205490600160e01b82169003613287575b806000036126e8575060001901600081815260046020526040902054613266565b505b604051636f96cda160e11b815260040160405180910390fd5b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600160005b82811015612a2e5760078110801561336757506002826020600088888681811061332557613325613fc1565b905060200201602081019061333a9190613967565b6001600160a01b03166001600160a01b03168152602001908152602001600020546133659190613f94565b115b806133d357506006811180156133d357506001826020600088888681811061339157613391613fc1565b90506020020160208101906133a69190613967565b6001600160a01b03166001600160a01b03168152602001908152602001600020546133d19190613f94565b115b156133f157604051639ec7fa4960e01b815260040160405180910390fd5b61342185858381811061340657613406613fc1565b905060200201602081019061341b9190613967565b836131d8565b601c805483019055816020600087878581811061344057613440613fc1565b90506020020160208101906134559190613967565b6001600160a01b031681526020810191909152604001600020805490910190556001016132f9565b600081831061348c57816126e8565b5090919050565b60006126e883836137d6565b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a029061354090339089908890889060040161414d565b6020604051808303816000875af192505050801561357b575060408051601f3d908101601f191682019092526135789181019061418a565b60015b6135d9573d8080156135a9576040519150601f19603f3d011682016040523d82523d6000602084013e6135ae565b606091505b5080516000036135d1576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506130fd565b606060148054610c2b90613ef8565b606060a06040510180604052602081039150506000815280825b600183039250600a81066030018353600a90048061361c5750819003601f19909101908152919050565b600081815b84811015612603576136758287878481811061366957613669613fc1565b90506020020135613800565b915080613681816141a7565b91505061364b565b60008181526001830160205260408120546136d057508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610c00565b506000610c00565b60008054908290036136fd5760405163b562e8dd60e01b815260040160405180910390fd5b6001600160a01b03831660008181526005602090815260408083208054680100000000000000018802019055848352600490915281206001851460e11b4260a01b178317905582840190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b8181146137ac57808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600101613774565b50816000036137cd57604051622e076360e81b815260040160405180910390fd5b60005550505050565b60008260000182815481106137ed576137ed613fc1565b9060005260206000200154905092915050565b600081831061381c5760008281526020849052604090206126e8565b60008381526020839052604090206126e8565b6001600160e01b031981168114612b8357600080fd5b60006020828403121561385757600080fd5b81356126e88161382f565b80356001600160a01b038116811461387957600080fd5b919050565b6000806040838503121561389157600080fd5b61389a83613862565b915060208301356001600160601b03811681146138b657600080fd5b809150509250929050565b60005b838110156138dc5781810151838201526020016138c4565b50506000910152565b600081518084526138fd8160208601602086016138c1565b601f01601f19169290920160200192915050565b6020815260006126e860208301846138e5565b60006020828403121561393657600080fd5b5035919050565b6000806040838503121561395057600080fd5b61395983613862565b946020939093013593505050565b60006020828403121561397957600080fd5b6126e882613862565b60008060006060848603121561399757600080fd5b6139a084613862565b92506139ae60208501613862565b9150604084013590509250925092565b600080604083850312156139d157600080fd5b50508035926020909101359150565b60008083601f8401126139f257600080fd5b5081356001600160401b03811115613a0957600080fd5b6020830191508360208260051b8501011115610e3257600080fd5b60008060208385031215613a3757600080fd5b82356001600160401b03811115613a4d57600080fd5b613a59858286016139e0565b90969095509350505050565b60008060008060408587031215613a7b57600080fd5b84356001600160401b0380821115613a9257600080fd5b613a9e888389016139e0565b90965094506020870135915080821115613ab757600080fd5b50613ac4878288016139e0565b95989497509550505050565b80356003811061387957600080fd5b600060208284031215613af157600080fd5b6126e882613ad0565b60008060408385031215613b0d57600080fd5b82356002811061395957600080fd5b60008060208385031215613b2f57600080fd5b82356001600160401b0380821115613b4657600080fd5b818501915085601f830112613b5a57600080fd5b813581811115613b6957600080fd5b866020828501011115613b7b57600080fd5b60209290920196919550909350505050565b600080600060608486031215613ba257600080fd5b613bab84613ad0565b95602085013595506040909401359392505050565b6020808252825182820181905260009190848201906040850190845b81811015613c015783516001600160a01b031683529284019291840191600101613bdc565b50909695505050505050565b8035801515811461387957600080fd5b60008060408385031215613c3057600080fd5b613c3983613862565b9150613c4760208401613c0d565b90509250929050565b600080600060408486031215613c6557600080fd5b613c6e84613ad0565b925060208401356001600160401b03811115613c8957600080fd5b613c95868287016139e0565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015613c0157835183529284019291840191600101613cbe565b600060208284031215613cec57600080fd5b6126e882613c0d565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215613d2157600080fd5b613d2a85613862565b9350613d3860208601613862565b92506040850135915060608501356001600160401b0380821115613d5b57600080fd5b818701915087601f830112613d6f57600080fd5b813581811115613d8157613d81613cf5565b604051601f8201601f19908116603f01168101908382118183101715613da957613da9613cf5565b816040528281528a6020848701011115613dc257600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b80356001600160401b038116811461387957600080fd5b600080600080600060808688031215613e1557600080fd5b85356001600160401b03811115613e2b57600080fd5b613e37888289016139e0565b90965094505060208601359250613e5060408701613de6565b9150613e5e60608701613de6565b90509295509295909350565b60008060408385031215613e7d57600080fd5b613e8683613862565b9150613c4760208401613862565b634e487b7160e01b600052602160045260246000fd5b60028110612b8357612b83613e94565b60808101613ec786613eaa565b858252613ed385613eaa565b60208201949094526001600160401b0392831660408201529116606090910152919050565b600181811c90821680613f0c57607f821691505b602082108103613f2c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610c0057610c00613f32565b600082613f7c57634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610c0057610c00613f32565b80820180821115610c0057610c00613f32565b6020810160058310613fbb57613fbb613e94565b91905290565b634e487b7160e01b600052603260045260246000fd5b600060208284031215613fe957600080fd5b6126e882613de6565b601f821115610d3557600081815260208120601f850160051c810160208610156140195750805b601f850160051c820191505b8181101561300a57828155600101614025565b6001600160401b0383111561404f5761404f613cf5565b6140638361405d8354613ef8565b83613ff2565b6000601f841160018114614097576000851561407f5750838201355b600019600387901b1c1916600186901b178355612a2e565b600083815260209020601f19861690835b828110156140c857868501358255602094850194600190920191016140a8565b50868210156140e55760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b600083516141098184602088016138c1565b83519083019061411d8183602088016138c1565b01949350505050565b6001600160401b0381811683821601908082111561414657614146613f32565b5092915050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090614180908301846138e5565b9695505050505050565b60006020828403121561419c57600080fd5b81516126e88161382f565b6000600182016141b9576141b9613f32565b506001019056fea26469706673582212204771cd92695463126f38b83d93421b768e54a8f50c9bc8c9127b5ff615f117aa64736f6c63430008110033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000f496d6167696e617279205269646573000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024952000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002d68747470733a2f2f7374672d72696465732d6d657461646174612e696d6167696e6172796f6e65732e636f6d2f00000000000000000000000000000000000000