[ { "inputs": [ { "internalType": "address", "name": "owner_", "type": "address" }, { "internalType": "contract IVestPresaleScheduler", "name": "scheduler", "type": "address" }, { "internalType": "contract IVestFeeCollectorProvider", "name": "feeCollectorProvider", "type": "address" }, { "components": [ { "components": [ { "internalType": "uint16", "name": "numerator", "type": "uint16" }, { "internalType": "uint16", "name": "denominator", "type": "uint16" } ], "internalType": "struct Membership.Fees", "name": "fees", "type": "tuple" }, { "components": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "string", "name": "color", "type": "string" }, { "internalType": "string", "name": "description", "type": "string" } ], "internalType": "struct IVestMembership.Metadata", "name": "metadata", "type": "tuple" }, { "internalType": "contract IVestMembershipDescriptor", "name": "descriptor", "type": "address" } ], "internalType": "struct Membership.Configuration", "name": "configuration", "type": "tuple" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ERC721EnumerableForbiddenBatchMint", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721IncorrectOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721InsufficientApproval", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC721InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ERC721InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721InvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC721InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC721InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721NonexistentToken", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "ERC721OutOfBoundsIndex", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "mintId", "type": "uint256" } ], "name": "InvalidMintId", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "publicId", "type": "uint256" } ], "name": "TransferNotAllowed", "type": "error" }, { "inputs": [], "name": "UnacceptableReference", "type": "error" }, { "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": "mintId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "DynamicIdNFTMinted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "mintId", "type": "uint256" }, { "indexed": true, "internalType": "uint256", "name": "newPublicId", "type": "uint256" }, { "indexed": false, "internalType": "bytes", "name": "payload", "type": "bytes" } ], "name": "DynamicIdNFTUpdated", "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": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "publicId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "publicId", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "consume", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "publicId", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "extend", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "publicId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "publicId", "type": "uint256" } ], "name": "getAttributes", "outputs": [ { "components": [ { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "uint256", "name": "allocation", "type": "uint256" }, { "internalType": "uint256", "name": "claimbackPeriod", "type": "uint256" }, { "internalType": "uint32", "name": "tgeNumerator", "type": "uint32" }, { "internalType": "uint32", "name": "tgeDenominator", "type": "uint32" }, { "internalType": "uint32", "name": "cliffDuration", "type": "uint32" }, { "internalType": "uint32", "name": "cliffNumerator", "type": "uint32" }, { "internalType": "uint32", "name": "cliffDenominator", "type": "uint32" }, { "internalType": "uint32", "name": "vestingPeriodCount", "type": "uint32" }, { "internalType": "uint32", "name": "vestingPeriodDuration", "type": "uint32" }, { "internalType": "uint8", "name": "tradeable", "type": "uint8" } ], "internalType": "struct IVestMembership.Attributes", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "publicId", "type": "uint256" } ], "name": "getRoundId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getStartTimestamp", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "publicId", "type": "uint256" } ], "name": "getUsage", "outputs": [ { "components": [ { "internalType": "uint256", "name": "max", "type": "uint256" }, { "internalType": "uint256", "name": "current", "type": "uint256" } ], "internalType": "struct IVestMembership.Usage", "name": "", "type": "tuple" } ], "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": [ { "internalType": "address", "name": "owner_", "type": "address" }, { "internalType": "uint256", "name": "roundId", "type": "uint256" }, { "internalType": "uint256", "name": "currentUsage", "type": "uint256" }, { "internalType": "uint256", "name": "maxUsage", "type": "uint256" }, { "components": [ { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "uint256", "name": "allocation", "type": "uint256" }, { "internalType": "uint256", "name": "claimbackPeriod", "type": "uint256" }, { "internalType": "uint32", "name": "tgeNumerator", "type": "uint32" }, { "internalType": "uint32", "name": "tgeDenominator", "type": "uint32" }, { "internalType": "uint32", "name": "cliffDuration", "type": "uint32" }, { "internalType": "uint32", "name": "cliffNumerator", "type": "uint32" }, { "internalType": "uint32", "name": "cliffDenominator", "type": "uint32" }, { "internalType": "uint32", "name": "vestingPeriodCount", "type": "uint32" }, { "internalType": "uint32", "name": "vestingPeriodDuration", "type": "uint32" }, { "internalType": "uint8", "name": "tradeable", "type": "uint8" } ], "internalType": "struct IVestMembership.Attributes", "name": "attributes", "type": "tuple" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "publicId", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "publicId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "publicId", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "reduce", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "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": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "publicId", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "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": "index", "type": "uint256" } ], "name": "tokenByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "publicId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "publicId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "publicId", "type": "uint256" } ], "name": "unlocked", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" } ]
60e06040523480156200001157600080fd5b50604051620032083803806200320883398101604081905262000034916200042e565b8381604001516001600160a01b03166331831e8383602001516040518263ffffffff1660e01b81526004016200006b9190620005d6565b600060405180830381865afa15801562000089573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620000b391908101906200062e565b82604001516001600160a01b0316633047451484602001516040518263ffffffff1660e01b8152600401620000e99190620005d6565b600060405180830381865afa15801562000107573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200013191908101906200062e565b60006200013f8382620006ff565b5060016200014e8282620006ff565b5050506001600160a01b0381166200018057604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6200018b8162000281565b506001600160a01b038316620001b45760405163e21d05d360e01b815260040160405180910390fd5b6001600160a01b038216620001dc5760405163e21d05d360e01b815260040160405180910390fd5b80518051600e805460209384015161ffff908116620100000263ffffffff199092169316929092179190911790556001600160a01b03808516608052818301518051600b8054919093166001600160a01b031990911617825591820151600c90620002489082620006ff565b50604082015160028201906200025f9082620006ff565b505050604001516001600160a01b0390811660a0521660c05250620007cb9050565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0381168114620002e957600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715620003275762000327620002ec565b60405290565b604080519081016001600160401b0381118282101715620003275762000327620002ec565b805161ffff811681146200036557600080fd5b919050565b60005b83811015620003875781810151838201526020016200036d565b50506000910152565b600082601f830112620003a257600080fd5b81516001600160401b0380821115620003bf57620003bf620002ec565b604051601f8301601f19908116603f01168101908282118183101715620003ea57620003ea620002ec565b816040528381528660208588010111156200040457600080fd5b620004178460208301602089016200036a565b9695505050505050565b80516200036581620002d3565b600080600080608085870312156200044557600080fd5b84516200045281620002d3565b809450506020808601516200046781620002d3565b809450506040808701516200047c81620002d3565b60608801519094506001600160401b03808211156200049a57600080fd5b90880190818a036080811215620004b057600080fd5b620004ba62000302565b84821215620004c857600080fd5b620004d26200032d565b9150620004df8462000352565b8252620004ee86850162000352565b828701529081528284015190828211156200050857600080fd5b908301906060828d0312156200051d57600080fd5b6200052762000302565b82516200053481620002d3565b815282870151848111156200054857600080fd5b620005568e82860162000390565b888301525085830151848111156200056d57600080fd5b6200057b8e82860162000390565b828801525081870152620005926060850162000421565b8582015280965050505050505092959194509250565b60008151808452620005c28160208601602086016200036a565b601f01601f19169290920160200192915050565b602080825282516001600160a01b03168282015282015160606040830152600090620006066080840182620005a8565b90506040840151601f19848303016060850152620006258282620005a8565b95945050505050565b6000602082840312156200064157600080fd5b81516001600160401b038111156200065857600080fd5b620006668482850162000390565b949350505050565b600181811c908216806200068357607f821691505b602082108103620006a457634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620006fa576000816000526020600020601f850160051c81016020861015620006d55750805b601f850160051c820191505b81811015620006f657828155600101620006e1565b5050505b505050565b81516001600160401b038111156200071b576200071b620002ec565b62000733816200072c84546200066e565b84620006aa565b602080601f8311600181146200076b5760008415620007525750858301515b600019600386901b1c1916600185901b178555620006f6565b600085815260208120601f198616915b828110156200079c578886015182559484019460019091019084016200077b565b5085821015620007bb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c0516129f16200081760003960006107c901526000610ebe0152600081816105740152818161065c015281816106e501528181610aa20152610b2801526129f16000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c806370a0823111610104578063b88d4fde116100a2578063dfaca42111610071578063dfaca421146103e8578063e013fa0a146103fb578063e985e9c51461041b578063f2fde38b1461042e57600080fd5b8063b88d4fde1461039c578063c87b56dd146103af578063c89258db146103c2578063cfb510c8146103d557600080fd5b80638da5cb5b116100de5780638da5cb5b1461035d57806395d89b411461036e57806399ecedf614610376578063a22cb4651461038957600080fd5b806370a082311461032f578063715018a6146103425780638b1cf21c1461034a57600080fd5b80632a55205a116101715780634378a6e31161014b5780634378a6e3146102d65780634eeea7ad146102f65780634f6ccce7146103095780636352211e1461031c57600080fd5b80632a55205a1461027e5780632f745c59146102b057806342842e0e146102c357600080fd5b8063095ea7b3116101ad578063095ea7b31461023c57806318160ddd146102515780631f89f25e1461026357806323b872dd1461026b57600080fd5b806301ffc9a7146101d457806306fdde03146101fc578063081812fc14610211575b600080fd5b6101e76101e2366004612011565b610441565b60405190151581526020015b60405180910390f35b61020461046c565b6040516101f3919061207e565b61022461021f366004612091565b6104fe565b6040516001600160a01b0390911681526020016101f3565b61024f61024a3660046120bf565b61051c565b005b6008545b6040519081526020016101f3565b610255610570565b61024f6102793660046120eb565b6105f9565b61029161028c36600461212c565b61079a565b604080516001600160a01b0390931683526020830191909152016101f3565b6102556102be3660046120bf565b610853565b61024f6102d13660046120eb565b61087c565b6102e96102e4366004612091565b610897565b6040516101f3919061221a565b61025561030436600461212c565b6109b0565b610255610317366004612091565b6109fd565b61022461032a366004612091565b610a18565b61025561033d366004612229565b610a2f565b61024f610a77565b610255610358366004612091565b610a8b565b600a546001600160a01b0316610224565b610204610e30565b61025561038436600461212c565b610e3f565b61024f610397366004612246565b610e77565b61024f6103aa36600461231d565b610e86565b6102046103bd366004612091565b610ea3565b6102556103d036600461212c565b610f75565b6102556103e33660046123f6565b610fad565b6102556103f6366004612091565b61120d565b61040e610409366004612091565b61122f565b6040516101f3919061250a565b6101e7610429366004612521565b61127b565b61024f61043c366004612229565b6112a9565b60006001600160e01b0319821663780e9d6360e01b14806104665750610466826112e7565b92915050565b60606000805461047b9061254f565b80601f01602080910402602001604051908101604052809291908181526020018280546104a79061254f565b80156104f45780601f106104c9576101008083540402835291602001916104f4565b820191906000526020600020905b8154815290600101906020018083116104d757829003601f168201915b5050505050905090565b60008061050a83611337565b9050610515816113a3565b9392505050565b600061052782611337565b905061053383826113cc565b60405182906001600160a01b0385169033907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590600090a4505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b9469f486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f49190612583565b905090565b61060281610a18565b6001600160a01b0316336001600160a01b03161461078a57600061062582610897565b9050600160ff1681610140015160ff160361065a576040516212242560e91b8152600481018390526024015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b9469f486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106dc9190612583565b158061076857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b9469f486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610741573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107659190612583565b42105b15610788576040516212242560e91b815260048101839052602401610651565b505b6107958383836113d7565b505050565b600e546000908190819061ffff6201000082048116916107bb9116866125b2565b6107c591906125c9565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166312fde4b76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610825573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084991906125eb565b9590945092505050565b6000806108608484611424565b90506108748161086f83611489565b6114c4565b949350505050565b61079583838360405180602001604052806000815250610e86565b6040805161016081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052906108f983611337565b6000908152601160209081526040918290208251610160810184528154815260018201549281019290925260028101549282019290925260039091015463ffffffff8082166060840152640100000000820481166080840152600160401b8204811660a0840152600160601b8204811660c0840152600160801b8204811660e0840152600160a01b82048116610100840152600160c01b820416610120830152600160e01b900460ff166101408201529392505050565b60006109ba6114d0565b60006109c584611337565b905082600f600083815260200190815260200160002060010160008282546109ed9190612608565b90915550610874905084826114fd565b600080610a09836115dc565b90506105158161086f83611489565b600080610a2483611337565b905061051581611635565b60006001600160a01b038216610a5b576040516322718ad960e21b815260006004820152602401610651565b506001600160a01b031660009081526003602052604090205490565b610a7f6114d0565b610a896000611640565b565b600080610a9783611337565b9050600042905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663707d97386040518163ffffffff1660e01b8152600401602060405180830381865afa158015610afe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b229190612583565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b9469f486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba89190612583565b9050811580610bb657508183105b15610bc75750600095945050505050565b6000848152600f6020908152604080832054601183528184208251610160810184528154815260018201549481019490945260028101549284019290925260039091015463ffffffff8082166060850152640100000000820481166080850152600160401b8204811660a08501819052600160601b8304821660c0860152600160801b8304821660e0860152600160a01b830482166101008601819052600160c01b84049092166101208601819052600160e01b90930460ff1661014086015292949291610c949161261b565b610c9e9190612643565b63ffffffff1690508315801590610cbe5750610cba8185612608565b8610155b15610cd0575090979650505050505050565b6000826080015163ffffffff16836060015163ffffffff1685610cf391906125b2565b610cfd91906125c9565b9050841580610d1f575060a0830151610d1c9063ffffffff1686612608565b87105b15610d31579998505050505050505050565b60008360e0015163ffffffff168460c0015163ffffffff1686610d5491906125b2565b610d5e91906125c9565b905060008460a0015163ffffffff1687610d789190612608565b610d82908a612667565b9050600085610120015163ffffffff1682610d9d91906125c9565b90508560a0015163ffffffff16600014158015610dc2575060c086015163ffffffff16155b15610dd557610dd2816001612608565b90505b61010086015163ffffffff168184610ded878b612667565b610df79190612667565b610e0191906125b2565b610e0b91906125c9565b610e158486612608565b610e1f9190612608565b9d9c50505050505050505050505050565b60606001805461047b9061254f565b6000610e496114d0565b6000610e5484611337565b6000818152600f60205260408120805492935085929091906109ed908490612667565b610e82338383611692565b5050565b610e918484846105f9565b610e9d84848484611731565b50505050565b60606000610eb083611337565b9050610ebb8161185a565b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639f8c4ead610ef3610570565b6000848152600f6020908152604080832060119092529182902091516001600160e01b031960e086901b168152610f309392600b9160040161271e565b600060405180830381865afa158015610f4d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610515919081019061283d565b6000610f7f6114d0565b6000610f8a84611337565b6000818152600f60205260408120805492935085929091906109ed908490612608565b6000610fb76114d0565b6040516bffffffffffffffffffffffff19606088901b166020820152603481018690526054810184905242607482015260009061100590609401604051602081830303815290604052611893565b90506000604051806040016040528086815260200187815250905086601060008481526020019081526020016000208190555080600f60008481526020019081526020016000206000820151816000015560208201518160010155905050836011600084815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548163ffffffff021916908363ffffffff16021790555060808201518160030160046101000a81548163ffffffff021916908363ffffffff16021790555060a08201518160030160086101000a81548163ffffffff021916908363ffffffff16021790555060c082015181600301600c6101000a81548163ffffffff021916908363ffffffff16021790555060e08201518160030160106101000a81548163ffffffff021916908363ffffffff1602179055506101008201518160030160146101000a81548163ffffffff021916908363ffffffff1602179055506101208201518160030160186101000a81548163ffffffff021916908363ffffffff16021790555061014082015181600301601c6101000a81548160ff021916908360ff16021790555090505060008188866040516020016111e4939291906128b4565b60405160208183030381529060405290506112008984836118ac565b9998505050505050505050565b60008061121983611337565b6000908152601060205260409020549392505050565b6040805180820190915260008082526020820152600061124e83611337565b6000908152600f602090815260409182902082518084019093528054835260010154908201529392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6112b16114d0565b6001600160a01b0381166112db57604051631e4fbdf760e01b815260006004820152602401610651565b6112e481611640565b50565b60006001600160e01b031982166380ac58cd60e01b148061131857506001600160e01b03198216635b5e139f60e01b145b8061046657506301ffc9a760e01b6001600160e01b0319831614610466565b600061134282611957565b9050600061134f83611969565b90506001600160801b0319811661137261136884611489565b8051906020012090565b6001600160801b0319161461139d57604051637e27328960e01b815260048101849052602401610651565b50919050565b60006113ae8261185a565b506000828152600460205260409020546001600160a01b0316610466565b610e82828233611975565b60006113e282611337565b90506113ef848483611982565b81836001600160a01b0316856001600160a01b031660008051602061299c83398151915260405160405180910390a450505050565b600061142f83610a2f565b82106114605760405163295f44f760e21b81526001600160a01b038416600482015260248101839052604401610651565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b6060600f60008381526020019081526020016000206040516020016114ae91906128da565b6040516020818303038152906040529050919050565b60006105158383611a07565b600a546001600160a01b03163314610a895760405163118cdaa760e01b8152336004820152602401610651565b60008061150983611489565b905061151583826114c4565b600084815260026020526040812054919350906001600160a01b0316905061154f6000828560405180602001604052806000815250611731565b60405185906000906001600160a01b0384169060008051602061299c833981519152908390a460405183906001600160a01b0383169060009060008051602061299c833981519152908290a482847fa30dd0db0f85b5d2fde9ceb9bda88ad6d404c02a82d63cc2533beefbf6cb7852846040516115cc919061207e565b60405180910390a3505092915050565b60006115e760085490565b82106116105760405163295f44f760e21b81526000600482015260248101839052604401610651565b60088281548110611623576116236128f1565b90600052602060002001549050919050565b60006104668261185a565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166116c457604051630b61174360e31b81526001600160a01b0383166004820152602401610651565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b15610e9d57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290611773903390889087908790600401612907565b6020604051808303816000875af19250505080156117ae575060408051601f3d908101601f191682019092526117ab91810190612944565b60015b611817573d8080156117dc576040519150601f19603f3d011682016040523d82523d6000602084013e6117e1565b606091505b50805160000361180f57604051633250574960e11b81526001600160a01b0385166004820152602401610651565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b1461185357604051633250574960e11b81526001600160a01b0385166004820152602401610651565b5050505050565b6000818152600260205260408120546001600160a01b03168061046657604051637e27328960e01b815260048101849052602401610651565b805160208201206000906001600160801b031916610466565b6000806118b884611489565b905060006118c68583611a07565b90506118d3868286611a50565b856001600160a01b0316857f7288986977683bd4c1246831e878612ad817fb65770dd010d9639cf8d31bc9098660405161190d919061207e565b60405180910390a380857fa30dd0db0f85b5d2fde9ceb9bda88ad6d404c02a82d63cc2533beefbf6cb785284604051611946919061207e565b60405180910390a395945050505050565b60006001600160801b03198216610466565b60006104668260801b90565b6107958383836001611ac9565b6001600160a01b0382166119ac57604051633250574960e11b815260006004820152602401610651565b60006119b9838333611b87565b9050836001600160a01b0316816001600160a01b031614610e9d576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610651565b6000611a1283611c54565b82516020840120604080516001600160801b031993841660208201529290911660308301520160405160208183030381529060405261051590612961565b611a5982611969565b6001600160801b031916600003611a8557604051622144c160e41b815260048101839052602401610651565b6000611a9083611337565b9050611a9d848284611c5c565b60405183906001600160a01b0386169060009060008051602061299c833981519152908290a450505050565b8080611add57506001600160a01b03821615155b15611b57576000611aed8461185a565b90506001600160a01b03831615801590611b195750826001600160a01b0316816001600160a01b031614155b8015611b2c5750611b2a818461127b565b155b15611b555760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401610651565b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b600080611b95858585611c73565b90506001600160a01b038116611bf257611bed84600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b611c15565b846001600160a01b0316816001600160a01b031614611c1557611c158185611d3f565b6001600160a01b038516611c3157611c2c84611dd0565b610874565b846001600160a01b0316816001600160a01b031614610874576108748585611e7f565b600081610466565b611c668383611ecf565b6107956000848484611731565b6000828152600260205260408120546001600160a01b0390811690831615611ca057611ca0818486611f34565b6001600160a01b03811615611cde57611cbd600085600080611ac9565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b03851615611d0d576001600160a01b0385166000908152600360205260409020805460010190555b600084815260026020526040902080546001600160a01b0387166001600160a01b031990911617905590509392505050565b6000611d4a83610a2f565b600083815260076020526040902054909150808214611d9d576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b600854600090611de290600190612667565b60008381526009602052604081205460088054939450909284908110611e0a57611e0a6128f1565b906000526020600020015490508060088381548110611e2b57611e2b6128f1565b6000918252602080832090910192909255828152600990915260408082208490558582528120556008805480611e6357611e63612985565b6001900381819060005260206000200160009055905550505050565b60006001611e8c84610a2f565b611e969190612667565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6001600160a01b038216611ef957604051633250574960e11b815260006004820152602401610651565b6000611f0783836000611b87565b90506001600160a01b03811615610795576040516339e3563760e11b815260006004820152602401610651565b611f3f838383611f98565b610795576001600160a01b038316611f6d57604051637e27328960e01b815260048101829052602401610651565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401610651565b60006001600160a01b038316158015906108745750826001600160a01b0316846001600160a01b03161480611fd25750611fd2848461127b565b806108745750506000908152600460205260409020546001600160a01b03908116911614919050565b6001600160e01b0319811681146112e457600080fd5b60006020828403121561202357600080fd5b813561051581611ffb565b60005b83811015612049578181015183820152602001612031565b50506000910152565b6000815180845261206a81602086016020860161202e565b601f01601f19169290920160200192915050565b6020815260006105156020830184612052565b6000602082840312156120a357600080fd5b5035919050565b6001600160a01b03811681146112e457600080fd5b600080604083850312156120d257600080fd5b82356120dd816120aa565b946020939093013593505050565b60008060006060848603121561210057600080fd5b833561210b816120aa565b9250602084013561211b816120aa565b929592945050506040919091013590565b6000806040838503121561213f57600080fd5b50508035926020909101359150565b805182526020810151602083015260408101516040830152606081015161217d606084018263ffffffff169052565b506080810151612195608084018263ffffffff169052565b5060a08101516121ad60a084018263ffffffff169052565b5060c08101516121c560c084018263ffffffff169052565b5060e08101516121dd60e084018263ffffffff169052565b506101008181015163ffffffff81168483015250506101208181015163ffffffff81168483015250506101408181015160ff811684830152610e9d565b6101608101610466828461214e565b60006020828403121561223b57600080fd5b8135610515816120aa565b6000806040838503121561225957600080fd5b8235612264816120aa565b91506020830135801515811461227957600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051610160810167ffffffffffffffff811182821017156122be576122be612284565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156122ed576122ed612284565b604052919050565b600067ffffffffffffffff82111561230f5761230f612284565b50601f01601f191660200190565b6000806000806080858703121561233357600080fd5b843561233e816120aa565b9350602085013561234e816120aa565b925060408501359150606085013567ffffffffffffffff81111561237157600080fd5b8501601f8101871361238257600080fd5b8035612395612390826122f5565b6122c4565b8181528860208385010111156123aa57600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b803563ffffffff811681146123e057600080fd5b919050565b803560ff811681146123e057600080fd5b60008060008060008587036101e081121561241057600080fd5b863561241b816120aa565b9550602087013594506040870135935060608701359250610160607f19820181131561244657600080fd5b61244e61229a565b91506080880135825260a0880135602083015260c0880135604083015261247760e089016123cc565b606083015261010061248a818a016123cc565b608084015261012061249d818b016123cc565b60a08501526101406124b0818c016123cc565b60c08601526124c0848c016123cc565b60e08601526124d26101808c016123cc565b838601526124e36101a08c016123cc565b828601526124f46101c08c016123e5565b8186015250505050809150509295509295909350565b815181526020808301519082015260408101610466565b6000806040838503121561253457600080fd5b823561253f816120aa565b91506020830135612279816120aa565b600181811c9082168061256357607f821691505b60208210810361139d57634e487b7160e01b600052602260045260246000fd5b60006020828403121561259557600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176104665761046661259c565b6000826125e657634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156125fd57600080fd5b8151610515816120aa565b808201808211156104665761046661259c565b63ffffffff81811683821602808216919082811461263b5761263b61259c565b505092915050565b63ffffffff8181168382160190808211156126605761266061259c565b5092915050565b818103818111156104665761046661259c565b8054600090600181811c908083168061269457607f831692505b602080841082036126b557634e487b7160e01b600052602260045260246000fd5b838852602088018280156126d057600181146126e657612711565b60ff198716825285151560051b82019750612711565b60008981526020902060005b8781101561270b578154848201529086019084016126f2565b83019850505b5050505050505092915050565b848152835460208201526001840154604082015260006101e0606083810182905285546001600160a01b03169184019190915261020083015261276861024083016001860161267a565b8281036101df1901610220840152612783816002870161267a565b84546080850152600185015460a0850152600285015460c0850152600385015463ffffffff80821660e0870152602082901c8116610100870152604082901c8116610120870152606082901c811661014087015291935091506127f46101608501828460801c1663ffffffff169052565b61280c6101808501828460a01c1663ffffffff169052565b6128246101a08501828460c01c1663ffffffff169052565b5060e081901c60ff166101c08401525095945050505050565b60006020828403121561284f57600080fd5b815167ffffffffffffffff81111561286657600080fd5b8201601f8101841361287757600080fd5b8051612885612390826122f5565b81815285602083850101111561289a57600080fd5b6128ab82602083016020860161202e565b95945050505050565b83518152602080850151908201526101c08101836040830152610874606083018461214e565b815481526001820154602082015260408101610466565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061293a90830184612052565b9695505050505050565b60006020828403121561295657600080fd5b815161051581611ffb565b8051602080830151919081101561139d5760001960209190910360031b1b16919050565b634e487b7160e01b600052603160045260246000fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220f22f377330e6814019089d0e3f1ee205fef4b9b416cf3e2e63702783162a0fda64736f6c63430008170033000000000000000000000000f4bd98662bb9df6d5187148b40e4bab88b015544000000000000000000000000f4bd98662bb9df6d5187148b40e4bab88b015544000000000000000000000000b1892716e4e8d128021db98d57715de37eed7d330000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000080000000000000000000000000d89f5815e009ee93159027a2de94031e7aa486090000000000000000000000002659631cfbe9b1b6dcbc1384a3864509356e7b4d000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000072366666666666600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000750726573616c6500000000000000000000000000000000000000000000000000