[ { "inputs": [ { "internalType": "string", "name": "_colName", "type": "string" }, { "internalType": "string", "name": "_colSymbol", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "bytes", "name": "input", "type": "bytes" }, { "internalType": "uint256", "name": "lengthInt", "type": "uint256" } ], "name": "ByteCodeLengthNotMet", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "numerator", "type": "uint256" }, { "internalType": "uint256", "name": "denominator", "type": "uint256" } ], "name": "ERC2981InvalidDefaultRoyalty", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC2981InvalidDefaultRoyaltyReceiver", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "numerator", "type": "uint256" }, { "internalType": "uint256", "name": "denominator", "type": "uint256" } ], "name": "ERC2981InvalidTokenRoyalty", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC2981InvalidTokenRoyaltyReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC721InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721NonexistentToken", "type": "error" }, { "inputs": [ { "internalType": "uint32", "name": "expected", "type": "uint32" }, { "internalType": "uint32", "name": "max", "type": "uint32" } ], "name": "InsufficientMint", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "maxSupp", "type": "uint256" }, { "internalType": "uint256", "name": "circulateSupp", "type": "uint256" } ], "name": "InsufficientSupply", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "mintPrice", "type": "uint256" } ], "name": "InsufficientValue", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "inputAddress", "type": "address" } ], "name": "InvalidAddr", "type": "error" }, { "inputs": [], "name": "NotWhitelistAddress", "type": "error" }, { "inputs": [], "name": "ReachedMintLimit", "type": "error" }, { "inputs": [], "name": "ReentrancyGuardReentrantCall", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "StringsInsufficientHexLength", "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": "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": "sender", "type": "address" }, { "indexed": false, "internalType": "string", "name": "_draftNftIds", "type": "string" }, { "indexed": true, "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }, { "indexed": false, "internalType": "bytes", "name": "inputData", "type": "bytes" } ], "name": "mintNfts", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "mintedNft", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "circularSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "creator", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getbalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_colName", "type": "string" }, { "internalType": "string", "name": "_colSymbol", "type": "string" }, { "internalType": "string", "name": "_baseTokenURI", "type": "string" }, { "internalType": "uint32", "name": "_maxPerMint", "type": "uint32" }, { "internalType": "uint256", "name": "_maxSupply", "type": "uint256" }, { "internalType": "uint256", "name": "_normalMintPrice", "type": "uint256" }, { "internalType": "uint96", "name": "_royaltyPercentInx100", "type": "uint96" }, { "internalType": "uint8", "name": "_whitelistControlFlag", "type": "uint8" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "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": "maxPerMint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "string", "name": "uri", "type": "string" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_isSafeMint", "type": "bool" }, { "internalType": "string", "name": "_jsonUri", "type": "string" }, { "internalType": "uint32", "name": "_quantity", "type": "uint32" }, { "internalType": "uint96", "name": "_royaltyPercentInx100", "type": "uint96" }, { "internalType": "string", "name": "_draftNftIds", "type": "string" }, { "internalType": "uint32", "name": "maxWlMint", "type": "uint32" }, { "internalType": "bytes", "name": "whitelistSignature", "type": "bytes" } ], "name": "normalMintNFTs", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "string", "name": "uri", "type": "string" } ], "name": "safeMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_mintPrice", "type": "uint256" } ], "name": "setMintPrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "tokensOfOwner", "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": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "payable", "type": "function" } ]
60806040523480156200001157600080fd5b5060405162003b8f38038062003b8f833981016040819052620000349162000169565b8181600162000044838262000262565b50600262000053828262000262565b50600160055550506001600b555050600c80547455b0cf9ea794c100a173dacca50ceb412c3969fc00610100600160a81b0319909116179055600f80546001600160a01b031916321790556200032e565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620000cc57600080fd5b81516001600160401b0380821115620000e957620000e9620000a4565b604051601f8301601f19908116603f01168101908282118183101715620001145762000114620000a4565b816040528381526020925086838588010111156200013157600080fd5b600091505b8382101562000155578582018301518183018401529082019062000136565b600093810190920192909252949350505050565b600080604083850312156200017d57600080fd5b82516001600160401b03808211156200019557600080fd5b620001a386838701620000ba565b93506020850151915080821115620001ba57600080fd5b50620001c985828601620000ba565b9150509250929050565b600181811c90821680620001e857607f821691505b6020821081036200020957634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200025d57600081815260208120601f850160051c81016020861015620002385750805b601f850160051c820191505b81811015620002595782815560010162000244565b5050505b505050565b81516001600160401b038111156200027e576200027e620000a4565b62000296816200028f8454620001d3565b846200020f565b602080601f831160018114620002ce5760008415620002b55750858301515b600019600386901b1c1916600185901b17855562000259565b600085815260208120601f198616915b82811015620002ff57888601518255948401946001909101908401620002de565b50858210156200031e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b613851806200033e6000396000f3fe6080604052600436106101c25760003560e01c80636352211e116100f7578063a3a16ea411610095578063d204c45e11610064578063d204c45e146104f2578063d5abeb0114610512578063e985e9c514610527578063f4a0a5281461057057600080fd5b8063a3a16ea41461047d578063b88d4fde14610492578063c87b56dd146104b2578063d0def521146104d257600080fd5b80638462151c116100d15780638462151c146103fb57806395d89b41146104285780639a26879d1461043d578063a22cb4651461045d57600080fd5b80636352211e146103a65780636c0360eb146103c657806370a08231146103db57600080fd5b80632a55205a1161016457806342842e0e1161013e57806342842e0e1461032f57806342966c681461034f5780634d9b3d5d1461036f578063507e094f1461038457600080fd5b80632a55205a146102d5578063371493ae146103145780633ccfd60b1461032757600080fd5b8063081812fc116101a0578063081812fc14610250578063095ea7b31461027057806318160ddd1461029257806323b872dd146102b557600080fd5b806301ffc9a7146101c757806302d05d3f146101fc57806306fdde031461022e575b600080fd5b3480156101d357600080fd5b506101e76101e2366004612d57565b610590565b60405190151581526020015b60405180910390f35b34801561020857600080fd5b50600f546001600160a01b03165b6040516001600160a01b0390911681526020016101f3565b34801561023a57600080fd5b506102436105a1565b6040516101f39190612dc4565b34801561025c57600080fd5b5061021661026b366004612dd7565b610633565b34801561027c57600080fd5b5061029061028b366004612e0c565b6106d1565b005b34801561029e57600080fd5b506102a761081f565b6040519081526020016101f3565b3480156102c157600080fd5b506102906102d0366004612e36565b61082e565b3480156102e157600080fd5b506102f56102f0366004612e72565b6108b5565b604080516001600160a01b0390931683526020830191909152016101f3565b610290610322366004612f77565b6108cd565b610290610dcf565b34801561033b57600080fd5b5061029061034a366004612e36565b610f23565b34801561035b57600080fd5b5061029061036a366004612dd7565b610f3e565b34801561037b57600080fd5b506102a7610f86565b34801561039057600080fd5b50600c54600160b01b900463ffffffff166102a7565b3480156103b257600080fd5b506102166103c1366004612dd7565b610ff8565b3480156103d257600080fd5b5061024361100c565b3480156103e757600080fd5b506102a76103f6366004613042565b61101b565b34801561040757600080fd5b5061041b610416366004613042565b6110fa565b6040516101f3919061305d565b34801561043457600080fd5b506102436111c1565b34801561044957600080fd5b506102906104583660046130b2565b6111d0565b34801561046957600080fd5b50610290610478366004613180565b611430565b34801561048957600080fd5b506102a76114f4565b34801561049e57600080fd5b506102906104ad3660046131b3565b61150b565b3480156104be57600080fd5b506102436104cd366004612dd7565b611599565b3480156104de57600080fd5b506102906104ed36600461321b565b6116b8565b3480156104fe57600080fd5b5061029061050d36600461321b565b61177a565b34801561051e57600080fd5b50600d546102a7565b34801561053357600080fd5b506101e7610542366004613269565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205460ff1690565b34801561057c57600080fd5b5061029061058b366004612dd7565b6117f1565b600061059b82611860565b92915050565b6060601080546105b090613293565b80601f01602080910402602001604051908101604052809291908181526020018280546105dc90613293565b80156106295780601f106105fe57610100808354040283529160200191610629565b820191906000526020600020905b81548152906001019060200180831161060c57829003601f168201915b5050505050905090565b600061063e826118b6565b6106b55760405162461bcd60e51b815260206004820152602f60248201527f4552433732315073693a20617070726f76656420717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e000000000000000000000000000000000060648201526084015b60405180910390fd5b506000908152600760205260409020546001600160a01b031690565b60006106dc82610ff8565b9050806001600160a01b0316836001600160a01b0316036107645760405162461bcd60e51b8152602060048201526024808201527f4552433732315073693a20617070726f76616c20746f2063757272656e74206f60448201527f776e65720000000000000000000000000000000000000000000000000000000060648201526084016106ac565b336001600160a01b038216148061079e57506001600160a01b038116600090815260086020908152604080832033845290915290205460ff165b6108105760405162461bcd60e51b815260206004820152603b60248201527f4552433732315073693a20617070726f76652063616c6c6572206973206e6f7460448201527f206f776e6572206e6f7220617070726f76656420666f7220616c6c000000000060648201526084016106ac565b61081a83836118d2565b505050565b600061082961194d565b905090565b610838338261195e565b6108aa5760405162461bcd60e51b815260206004820152603460248201527f4552433732315073693a207472616e736665722063616c6c6572206973206e6f60448201527f74206f776e6572206e6f7220617070726f76656400000000000000000000000060648201526084016106ac565b61081a838383611a59565b6000806108c28484611c39565b915091509250929050565b6108d5611cf4565b6000600e541180156108f957508463ffffffff16600e546108f691906132e3565b34105b1561094e57348563ffffffff16600e5461091391906132e3565b6040517f7040b58c000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016106ac565b600c5463ffffffff600160b01b909104811690861611156109b757600c546040517f1289b0fb00000000000000000000000000000000000000000000000000000000815263ffffffff8781166004830152600160b01b90920490911660248201526044016106ac565b600d548563ffffffff166109ca60055490565b6109d491906132fa565b1115610a1b57600d546005546040517f9e4c4461000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016106ac565b600c547501000000000000000000000000000000000000000000900460ff1615610b2457610a9d610a4b30611d37565b610a5433611d37565b610a638563ffffffff16611d4d565b604051602001610a759392919061330d565b60408051808303601f19018152919052600c54839061010090046001600160a01b0316611ded565b610ad3576040517f68c88eed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526014602052604090205463ffffffff808416911610610b24576040517f5a835bf900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008563ffffffff1667ffffffffffffffff811115610b4557610b45612ea4565b604051908082528060200260200182016040528015610b6e578160200160208202803683370190505b5033600090815260146020526040812080549293508892909190610b9990849063ffffffff16613383565b92506101000a81548163ffffffff021916908363ffffffff1602179055506000808915610bea57610be0338963ffffffff1660405180602001604052806000815250611f18565b9092509050610c00565b610bfa338963ffffffff16611f66565b90925090505b604080516000808252602082018084528251902090929091610c24918d91016133a0565b60408051601f198184030181529190528051602090910120141590506000835b838111610d20578215610c6057610c5b818d612153565b610c94565b610c94816012610c6f84611d4d565b604051602001610c809291906133bc565b604051602081830303815290604052612153565b60408051338152602081018390527fff16cc7280d4c70dab75220a16409785f7278c74b420603a41ac7d5ca2e49dd9910160405180910390a1600f54610ce59083906001600160a01b03168c6121b4565b808683610cf181613443565b945081518110610d0357610d0361345d565b602090810291909101015280610d1881613443565b915050610c44565b50600080368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604051929350610d6b928992509050613473565b6040518091039020336001600160a01b03167f2d7be94b923c7d1e80aa0d976e3be2391726a513895c7f75f70a2ccbc8c533468b84604051610dae9291906134a9565b60405180910390a3505050505050610dc66001600b55565b50505050505050565b600f546001600160a01b03163314610e395760405162461bcd60e51b815260206004820152602760248201527f4f6e6c79207468652063726561746f722063616e2063616c6c207468697320666044820152663ab731ba34b7b760c91b60648201526084016106ac565b4780610e875760405162461bcd60e51b815260206004820152600c60248201527f5a65726f2042616c616e6365000000000000000000000000000000000000000060448201526064016106ac565b604051600090339083908381818185875af1925050503d8060008114610ec9576040519150601f19603f3d011682016040523d82523d6000602084013e610ece565b606091505b5050905080610f1f5760405162461bcd60e51b815260206004820152601060248201527f5472616e73666572206661696c65642e0000000000000000000000000000000060448201526064016106ac565b5050565b61081a8383836040518060200160405280600081525061150b565b80610f4881610ff8565b6001600160a01b0316336001600160a01b031614610f6557600080fd5b610f7133600084611a59565b600654610f7f9060016132fa565b6006555050565b600f546000906001600160a01b03163314610ff35760405162461bcd60e51b815260206004820152602760248201527f4f6e6c79207468652063726561746f722063616e2063616c6c207468697320666044820152663ab731ba34b7b760c91b60648201526084016106ac565b504790565b600080611004836122b7565b509392505050565b6060601280546105b090613293565b60006001600160a01b0382166110995760405162461bcd60e51b815260206004820152602d60248201527f4552433732315073693a2062616c616e636520717565727920666f722074686560448201527f207a65726f20616464726573730000000000000000000000000000000000000060648201526084016106ac565b600060015b6005548110156110f3576110b1816118b6565b156110e3576110bf81610ff8565b6001600160a01b0316846001600160a01b0316036110e3576110e082613443565b91505b6110ec81613443565b905061109e565b5092915050565b60606000806111088461101b565b905060008167ffffffffffffffff81111561112557611125612ea4565b60405190808252806020026020018201604052801561114e578160200160208202803683370190505b50905060015b8284146111b857611164816118b6565b156111b057856001600160a01b031661117c82610ff8565b6001600160a01b0316036111b057808285806001019650815181106111a3576111a361345d565b6020026020010181815250505b600101611154565b50949350505050565b6060601180546105b090613293565b600c5460ff16156112235760405162461bcd60e51b815260206004820152600660248201527f4c6f636b6564000000000000000000000000000000000000000000000000000060448201526064016106ac565b600f80543273ffffffffffffffffffffffffffffffffffffffff19909116179055600c80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff167455b0cf9ea794c100a173dacca50ceb412c3969fc001790556040517f2000000000000000000000000000000000000000000000000000000000000000602082015260210160405160208183030381529060405280519060200120866040516020016112d691906133a0565b60405160208183030381529060405280519060200120146112ff5760126112fd878261351d565b505b611309328361235f565b600e839055600c80547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16750100000000000000000000000000000000000000000060ff84160217905563ffffffff85166113a757600c80547fffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffff1679ffffffff000000000000000000000000000000000000000000001790556113de565b600c80547fffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffff16600160b01b63ffffffff8816021790555b600084116113f157600019600d556113f7565b600d8490555b6010611403898261351d565b506011611410888261351d565b50611419612443565b5050600c805460ff19166001179055505050505050565b336001600160a01b038316036114885760405162461bcd60e51b815260206004820152601c60248201527f4552433732315073693a20617070726f766520746f2063616c6c65720000000060448201526064016106ac565b3360008181526008602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600060065461150161194d565b61082991906135dd565b611515338361195e565b6115875760405162461bcd60e51b815260206004820152603460248201527f4552433732315073693a207472616e736665722063616c6c6572206973206e6f60448201527f74206f776e6572206e6f7220617070726f76656400000000000000000000000060648201526084016106ac565b61159384848484612462565b50505050565b60606115a4826118b6565b6115dd576040517f7e273289000000000000000000000000000000000000000000000000000000008152600481018390526024016106ac565b600082815260156020526040812080546115f690613293565b80601f016020809104026020016040519081016040528092919081815260200182805461162290613293565b801561166f5780601f106116445761010080835404028352916020019161166f565b820191906000526020600020905b81548152906001019060200180831161165257829003601f168201915b5050505050905060008151116116af57601261168a84611d4d565b60405160200161169b9291906133bc565b6040516020818303038152906040526116b1565b805b9392505050565b600f546001600160a01b031633146117225760405162461bcd60e51b815260206004820152602760248201527f4f6e6c79207468652063726561746f722063616e2063616c6c207468697320666044820152663ab731ba34b7b760c91b60648201526084016106ac565b600061172f836001611f66565b50905061173c8183612153565b60408051338152602081018390527fff16cc7280d4c70dab75220a16409785f7278c74b420603a41ac7d5ca2e49dd9910160405180910390a1505050565b600f546001600160a01b031633146117e45760405162461bcd60e51b815260206004820152602760248201527f4f6e6c79207468652063726561746f722063616e2063616c6c207468697320666044820152663ab731ba34b7b760c91b60648201526084016106ac565b600061172f83600161247b565b600f546001600160a01b0316331461185b5760405162461bcd60e51b815260206004820152602760248201527f4f6e6c79207468652063726561746f722063616e2063616c6c207468697320666044820152663ab731ba34b7b760c91b60648201526084016106ac565b600e55565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f2a55205a00000000000000000000000000000000000000000000000000000000148061059b575061059b82612498565b60006118c160055490565b8210801561059b5750506001111590565b6000818152600760205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038416908117909155819061191482610ff8565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000600160055461082991906135dd565b6000611969826118b6565b6119db5760405162461bcd60e51b815260206004820152602f60248201527f4552433732315073693a206f70657261746f7220717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e000000000000000000000000000000000060648201526084016106ac565b60006119e683610ff8565b9050806001600160a01b0316846001600160a01b03161480611a215750836001600160a01b0316611a1684610633565b6001600160a01b0316145b80611a5157506001600160a01b0380821660009081526008602090815260408083209388168352929052205460ff165b949350505050565b600080611a65836122b7565b91509150846001600160a01b0316826001600160a01b031614611af05760405162461bcd60e51b815260206004820152602c60248201527f4552433732315073693a207472616e73666572206f6620746f6b656e2074686160448201527f74206973206e6f74206f776e000000000000000000000000000000000000000060648201526084016106ac565b611afb6000846118d2565b6000611b088460016132fa565b600881901c600090815260208190526040902054909150600160ff1b60ff83161c16158015611b38575060055481105b15611b91576000818152600460209081526040808320805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038b16179055600884901c83529082905290208054600160ff1b60ff84161c1790555b6000848152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038716179055818414611bef57600884901c60009081526020819052604090208054600160ff1b60ff87161c1790555b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b505050505050565b6000828152600a602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046bffffffffffffffffffffffff16928201929092528291611cb85750604080518082019091526009546001600160a01b0381168252600160a01b90046bffffffffffffffffffffffff1660208201525b602081015160009061271090611cdc906bffffffffffffffffffffffff16876132e3565b611ce69190613606565b915196919550909350505050565b6002600b5403611d30576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600b55565b606061059b6001600160a01b038316601461257b565b60606000611d5a83612799565b600101905060008167ffffffffffffffff811115611d7a57611d7a612ea4565b6040519080825280601f01601f191660200182016040528015611da4576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084611dae57509392505050565b60006001600160a01b03821615801590611e05575060015b611e46576040517f63e38c120000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016106ac565b6000611e52855161287b565b85604051602001611e6492919061361a565b6040516020818303038152906040528051906020012090506000806000611e8a87612971565b925092509250600060018585858560405160008152602001604052604051611ece949392919093845260ff9290921660208401526040830152606082015260800190565b6020604051602081039080840390855afa158015611ef0573d6000803e3d6000fd5b5050604051601f1901516001600160a01b039081169089161496505050505050509392505050565b6000806000611f2660055490565b9050611f328686611f66565b5050611f426000878388886129d1565b806001611f4f87836132fa565b611f5991906135dd565b9250925050935093915050565b6000806000611f7460055490565b905060008411611fec5760405162461bcd60e51b815260206004820152602560248201527f4552433732315073693a207175616e74697479206d757374206265206772656160448201527f746572203000000000000000000000000000000000000000000000000000000060648201526084016106ac565b6001600160a01b0385166120685760405162461bcd60e51b815260206004820152602360248201527f4552433732315073693a206d696e7420746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016106ac565b836005600082825461207a91906132fa565b90915550506000818152600460209081526040808320805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038a16179055600884901c83529082905290208054600160ff1b60ff84161c179055805b6120de85836132fa565b81101561212f5760405181906001600160a01b038816906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a48061212781613443565b9150506120d4565b5080600161213d86836132fa565b61214791906135dd565b92509250509250929050565b61215c826118b6565b612195576040517f7e273289000000000000000000000000000000000000000000000000000000008152600481018390526024016106ac565b805115610f1f57600082815260156020526040902061081a828261351d565b6127106bffffffffffffffffffffffff821681101561221d576040517fdfd1fc1b000000000000000000000000000000000000000000000000000000008152600481018590526bffffffffffffffffffffffff83166024820152604481018290526064016106ac565b6001600160a01b038316612267576040517f969f085200000000000000000000000000000000000000000000000000000000815260048101859052600060248201526044016106ac565b506040805180820182526001600160a01b0393841681526bffffffffffffffffffffffff92831660208083019182526000968752600a90529190942093519051909116600160a01b029116179055565b6000806122c3836118b6565b6123355760405162461bcd60e51b815260206004820152602c60248201527f4552433732315073693a206f776e657220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084016106ac565b61233e83612b9c565b6000818152600460205260409020546001600160a01b031694909350915050565b6127106bffffffffffffffffffffffff82168110156123c1576040517f6f483d090000000000000000000000000000000000000000000000000000000081526bffffffffffffffffffffffff83166004820152602481018290526044016106ac565b6001600160a01b038316612404576040517fb6d9900a000000000000000000000000000000000000000000000000000000008152600060048201526024016106ac565b50604080518082019091526001600160a01b039092168083526bffffffffffffffffffffffff9091166020909201829052600160a01b90910217600955565b60035460ff166124535760016005555b6003805460ff19166001179055565b61246d848484611a59565b6115938484846001856129d1565b6000806108c2848460405180602001604052806000815250611f18565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061252b57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061059b57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461059b565b606082600061258b8460026132e3565b6125969060026132fa565b67ffffffffffffffff8111156125ae576125ae612ea4565b6040519080825280601f01601f1916602001820160405280156125d8576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061260f5761260f61345d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106126725761267261345d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006126ae8560026132e3565b6126b99060016132fa565b90505b6001811115612756577f303132333435363738396162636465660000000000000000000000000000000083600f16601081106126fa576126fa61345d565b1a60f81b8282815181106127105761271061345d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049290921c9161274f81613675565b90506126bc565b508115611a51576040517fe22e27eb00000000000000000000000000000000000000000000000000000000815260048101869052602481018590526044016106ac565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106127e2577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061280e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061282c57662386f26fc10000830492506010015b6305f5e1008310612844576305f5e100830492506008015b612710831061285857612710830492506004015b6064831061286a576064830492506002015b600a83106116af5760010192915050565b60606001825b61288c600a82613606565b905080156128a6578161289e81613443565b925050612881565b60008267ffffffffffffffff8111156128c1576128c1612ea4565b6040519080825280601f01601f1916602001820160405280156128eb576020820181803683370190505b5090505b826128f981613675565b93506129089050600a8661368c565b6129139060306132fa565b60f81b8184815181106129285761292861345d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612962600a86613606565b9450826128ef57949350505050565b600080600083516041146129b55783516040517f843f6b300000000000000000000000000000000000000000000000000000000081526106ac9186916004016136a0565b5050506020810151604082015160609092015160001a92909190565b6001600160a01b0384163b15612b9557825b6129ed83856132fa565b811015611c31576040517f150b7a020000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063150b7a0290612a3f9033908a90869088906004016136c2565b6020604051808303816000875af1925050508015612a7a575060408051601f3d908101601f19168201909252612a77918101906136fe565b60015b612afc573d808015612aa8576040519150601f19603f3d011682016040523d82523d6000602084013e612aad565b606091505b508051600003612af4576040517f64a0ae920000000000000000000000000000000000000000000000000000000081526001600160a01b03871660048201526024016106ac565b805181602001fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081167f150b7a020000000000000000000000000000000000000000000000000000000014612b82576040517f64a0ae920000000000000000000000000000000000000000000000000000000081526001600160a01b03871660048201526024016106ac565b5080612b8d81613443565b9150506129e3565b5050505050565b600061059b8183600881901c60008181526020849052604081205490919060ff808516919082181c8015612be557612bd381612ca4565b60ff168203600884901b179350612c9b565b60008311612c5b5760405162461bcd60e51b815260206004820152603460248201527f4269744d6170733a205468652073657420626974206265666f7265207468652060448201527f696e64657820646f65736e27742065786973742e00000000000000000000000060648201526084016106ac565b506000199091016000818152602086905260409020549091908015612c9657612c8381612ca4565b60ff0360ff16600884901b179350612c9b565b612be5565b50505092915050565b6000604051806101200160405280610100815260200161371c610100913960f87e818283848586878898a8b8c8d8e8f929395969799a9b9d9e9faaeb6bedeeff612ced85612d0e565b02901c81518110612d0057612d0061345d565b016020015160f81c92915050565b6000808211612d1c57600080fd5b5060008190031690565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114612d5457600080fd5b50565b600060208284031215612d6957600080fd5b81356116b181612d26565b60005b83811015612d8f578181015183820152602001612d77565b50506000910152565b60008151808452612db0816020860160208601612d74565b601f01601f19169290920160200192915050565b6020815260006116b16020830184612d98565b600060208284031215612de957600080fd5b5035919050565b80356001600160a01b0381168114612e0757600080fd5b919050565b60008060408385031215612e1f57600080fd5b612e2883612df0565b946020939093013593505050565b600080600060608486031215612e4b57600080fd5b612e5484612df0565b9250612e6260208501612df0565b9150604084013590509250925092565b60008060408385031215612e8557600080fd5b50508035926020909101359150565b80358015158114612e0757600080fd5b634e487b7160e01b600052604160045260246000fd5b600082601f830112612ecb57600080fd5b813567ffffffffffffffff80821115612ee657612ee6612ea4565b604051601f8301601f19908116603f01168101908282118183101715612f0e57612f0e612ea4565b81604052838152866020858801011115612f2757600080fd5b836020870160208301376000602085830101528094505050505092915050565b803563ffffffff81168114612e0757600080fd5b80356bffffffffffffffffffffffff81168114612e0757600080fd5b600080600080600080600060e0888a031215612f9257600080fd5b612f9b88612e94565b9650602088013567ffffffffffffffff80821115612fb857600080fd5b612fc48b838c01612eba565b9750612fd260408b01612f47565b9650612fe060608b01612f5b565b955060808a0135915080821115612ff657600080fd5b6130028b838c01612eba565b945061301060a08b01612f47565b935060c08a013591508082111561302657600080fd5b506130338a828b01612eba565b91505092959891949750929550565b60006020828403121561305457600080fd5b6116b182612df0565b6020808252825182820181905260009190848201906040850190845b8181101561309557835183529284019291840191600101613079565b50909695505050505050565b803560ff81168114612e0757600080fd5b600080600080600080600080610100898b0312156130cf57600080fd5b883567ffffffffffffffff808211156130e757600080fd5b6130f38c838d01612eba565b995060208b013591508082111561310957600080fd5b6131158c838d01612eba565b985060408b013591508082111561312b57600080fd5b506131388b828c01612eba565b96505061314760608a01612f47565b94506080890135935060a0890135925061316360c08a01612f5b565b915061317160e08a016130a1565b90509295985092959890939650565b6000806040838503121561319357600080fd5b61319c83612df0565b91506131aa60208401612e94565b90509250929050565b600080600080608085870312156131c957600080fd5b6131d285612df0565b93506131e060208601612df0565b925060408501359150606085013567ffffffffffffffff81111561320357600080fd5b61320f87828801612eba565b91505092959194509250565b6000806040838503121561322e57600080fd5b61323783612df0565b9150602083013567ffffffffffffffff81111561325357600080fd5b61325f85828601612eba565b9150509250929050565b6000806040838503121561327c57600080fd5b61328583612df0565b91506131aa60208401612df0565b600181811c908216806132a757607f821691505b6020821081036132c757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761059b5761059b6132cd565b8082018082111561059b5761059b6132cd565b6000845161331f818460208901612d74565b80830190507f2c00000000000000000000000000000000000000000000000000000000000000808252855161335b816001850160208a01612d74565b60019201918201528351613376816002840160208801612d74565b0160020195945050505050565b63ffffffff8181168382160190808211156110f3576110f36132cd565b600082516133b2818460208701612d74565b9190910192915050565b60008084546133ca81613293565b600182811680156133e257600181146133f757613426565b60ff1984168752821515830287019450613426565b8860005260208060002060005b8581101561341d5781548a820152908401908201613404565b50505082870194505b50505050835161343a818360208801612d74565b01949350505050565b60006000198203613456576134566132cd565b5060010190565b634e487b7160e01b600052603260045260246000fd5b815160009082906020808601845b8381101561349d57815185529382019390820190600101613481565b50929695505050505050565b6040815260006134bc6040830185612d98565b82810360208401526134ce8185612d98565b95945050505050565b601f82111561081a57600081815260208120601f850160051c810160208610156134fe5750805b601f850160051c820191505b81811015611c315782815560010161350a565b815167ffffffffffffffff81111561353757613537612ea4565b61354b816135458454613293565b846134d7565b602080601f83116001811461358057600084156135685750858301515b600019600386901b1c1916600185901b178555611c31565b600085815260208120601f198616915b828110156135af57888601518255948401946001909101908401613590565b50858210156135cd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561059b5761059b6132cd565b634e487b7160e01b600052601260045260246000fd5b600082613615576136156135f0565b500490565b7f19457468657265756d205369676e6564204d6573736167653a0a00000000000081526000835161365281601a850160208801612d74565b83519083019061366981601a840160208801612d74565b01601a01949350505050565b600081613684576136846132cd565b506000190190565b60008261369b5761369b6135f0565b500690565b6040815260006136b36040830185612d98565b90508260208301529392505050565b60006001600160a01b038087168352808616602084015250836040830152608060608301526136f46080830184612d98565b9695505050505050565b60006020828403121561371057600080fd5b81516116b181612d2656fe0001020903110a19042112290b311a3905412245134d2a550c5d32651b6d3a7506264262237d468514804e8d2b95569d0d495ea533a966b11c886eb93bc176c9071727374353637324837e9b47af86c7155181ad4fd18ed32c9096db57d59ee30e2e4a6a5f92a6be3498aae067ddb2eb1d5989b56fd7baf33ca0c2ee77e5caf7ff0810182028303840444c545c646c7425617c847f8c949c48a4a8b087b8c0c816365272829aaec650acd0d28fdad4e22d6991bd97dfdcea58b4d6f29fede4f6fe0f1f2f3f4b5b6b607b8b93a3a7b7bf357199c5abcfd9e168bcdee9b3f1ecf5fd1e3e5a7a8aa2b670c4ced8bbe8f0f4fc3d79a1c3cde7effb78cce6facbf9f8a2646970667358221220805eae47eddb5fd51a5940895d6c24bd6e2b31f7f1641ca467cac5e8fdf550e264736f6c6343000815003300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001c496e676f744d79734765636b6f436f6c6c656374696f6e5479706533000000000000000000000000000000000000000000000000000000000000000000000008494d4765636b6f33000000000000000000000000000000000000000000000000