[ { "inputs": [ { "internalType": "contract IEightPepenFCRenderer", "name": "_renderer", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "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" }, { "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": "_id", "type": "uint256" }, { "indexed": true, "internalType": "uint256", "name": "firstToken", "type": "uint256" }, { "indexed": true, "internalType": "uint256", "name": "secondToken", "type": "uint256" } ], "name": "CollabAccepted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "_id", "type": "uint256" }, { "indexed": true, "internalType": "uint256", "name": "firstToken", "type": "uint256" }, { "indexed": true, "internalType": "uint256", "name": "secondToken", "type": "uint256" } ], "name": "CollabRequested", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "_id", "type": "uint256" }, { "indexed": true, "internalType": "uint256", "name": "_setId", "type": "uint256" }, { "indexed": false, "internalType": "uint16", "name": "count", "type": "uint16" }, { "indexed": false, "internalType": "address", "name": "artist", "type": "address" } ], "name": "ImageAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "_id", "type": "uint256" }, { "indexed": true, "internalType": "uint256", "name": "_setId", "type": "uint256" }, { "indexed": false, "internalType": "uint16", "name": "count", "type": "uint16" }, { "indexed": false, "internalType": "address", "name": "artist", "type": "address" } ], "name": "SetPublished", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "_id", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "artist", "type": "address" } ], "name": "SetSubmitted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "indexed": true, "internalType": "uint256", "name": "_imageId", "type": "uint256" } ], "name": "TokenOptedIn", "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": [ { "components": [ { "internalType": "uint256[2]", "name": "pixelColors", "type": "uint256[2]" }, { "internalType": "uint24", "name": "bgColor", "type": "uint24" }, { "internalType": "uint16", "name": "count", "type": "uint16" } ], "internalType": "struct EightPepenFCNFT.ImageData[]", "name": "_nftDatas", "type": "tuple[]" }, { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "description", "type": "string" }, { "internalType": "contract IEightPepenFCRenderer", "name": "renderer", "type": "address" }, { "internalType": "bool", "name": "hasRenderer", "type": "bool" }, { "internalType": "address", "name": "artist", "type": "address" } ], "internalType": "struct EightPepenFCNFT.SetData", "name": "_setData", "type": "tuple" } ], "name": "addSet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "collabReq", "outputs": [ { "internalType": "uint256", "name": "imageId", "type": "uint256" }, { "internalType": "uint256", "name": "secondId", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "collabReqCount", "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": "uint256", "name": "_setId", "type": "uint256" } ], "name": "getCounts", "outputs": [ { "internalType": "uint16", "name": "setCounts", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_setId", "type": "uint256" } ], "name": "getVotes", "outputs": [ { "internalType": "uint32", "name": "setVotes", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "imageSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_imageId1", "type": "uint256" }, { "internalType": "uint256", "name": "_imageId2", "type": "uint256" } ], "name": "imageURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_imageId", "type": "uint256" } ], "name": "imageURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "images", "outputs": [ { "internalType": "uint24", "name": "bgColor", "type": "uint24" }, { "internalType": "uint64", "name": "setId", "type": "uint64" }, { "internalType": "bool", "name": "revealed", "type": "bool" }, { "internalType": "uint16", "name": "count", "type": "uint16" } ], "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": "maxSupply", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "mintPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_imageId", "type": "uint256" }, { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "opt_in", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renderer", "outputs": [ { "internalType": "contract IEightPepenFCRenderer", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "setNumber", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "setSupply", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "sets", "outputs": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "description", "type": "string" }, { "internalType": "contract IEightPepenFCRenderer", "name": "renderer", "type": "address" }, { "internalType": "bool", "name": "hasRenderer", "type": "bool" }, { "internalType": "address", "name": "artist", "type": "address" }, { "internalType": "bool", "name": "revealed", "type": "bool" }, { "internalType": "uint32", "name": "setNumber", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint256[2]", "name": "pixelColors", "type": "uint256[2]" }, { "internalType": "uint24", "name": "bgColor", "type": "uint24" }, { "internalType": "uint16", "name": "count", "type": "uint16" } ], "internalType": "struct EightPepenFCNFT.ImageData[]", "name": "nftDatas", "type": "tuple[]" }, { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "description", "type": "string" }, { "internalType": "contract IEightPepenFCRenderer", "name": "renderer", "type": "address" }, { "internalType": "bool", "name": "hasRenderer", "type": "bool" }, { "internalType": "address", "name": "artist", "type": "address" } ], "internalType": "struct EightPepenFCNFT.SetData", "name": "setData", "type": "tuple" } ], "name": "submitSet", "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": "uint256", "name": "", "type": "uint256" } ], "name": "tokens", "outputs": [ { "internalType": "uint256", "name": "imageId", "type": "uint256" }, { "internalType": "uint256", "name": "secondId", "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": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "votes", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" } ]
6080604052613e80600660006101000a81548161ffff021916908361ffff160217905550651b48eb57e0006008553480156200003a57600080fd5b50604051620069a1380380620069a18339818101604052810190620000609190620008eb565b6040518060400160405280601681526020017f456967687420506570656e2046756c6c20436f6c6f72000000000000000000008152506040518060400160405280600781526020017f3820504550454e000000000000000000000000000000000000000000000000008152508160009081620000dd919062000b97565b508060019081620000ef919062000b97565b50505080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200013d62000758565b7fffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff816000015160006002811062000179576200017862000c7e565b5b6020020181815250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008160000151600160028110620001be57620001bd62000c7e565b5b6020020181815250506000816020019062ffffff16908162ffffff16815250506001600660009054906101000a900461ffff16620001fd919062000cea565b816040019061ffff16908161ffff16815250506200021a6200078a565b6040518060400160405280600181526020017f2d0000000000000000000000000000000000000000000000000000000000000081525081600001819052506040518060400160405280600181526020017f2d000000000000000000000000000000000000000000000000000000000000008152508160200181905250600081606001901515908115158152505082816040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050620002f18282620002fa60201b60201c565b50505062000e29565b6009601481819054906101000a900467ffffffffffffffff1680929190620003229062000d3b565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550508060000151600c6000600960149054906101000a900467ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600001908162000392919062000b97565b508060200151600c6000600960149054906101000a900467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206001019081620003dc919062000b97565b508060400151600c6000600960149054906101000a900467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060600151600c6000600960149054906101000a900467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060020160146101000a81548160ff0219169083151502179055508060800151600c6000600960149054906101000a900467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200054e82600960149054906101000a900467ffffffffffffffff1683608001516200060f60201b60201c565b600c6000600960149054906101000a900467ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600401600a549080600181540180825580915050600190039060005260206000200160009091909190915055600960149054906101000a900467ffffffffffffffff1667ffffffffffffffff167fe502b3f80af399ad28c631abcfd9014a95397b793c892e51ad9666765afcfe42826080015160405162000603919062000d81565b60405180910390a25050565b600a6000815480929190620006249062000d9e565b91905055508260000151600e6000600a54815260200190815260200160002060000190600262000656929190620007e7565b508260200151600e6000600a54815260200190815260200160002060020160006101000a81548162ffffff021916908362ffffff1602179055508260400151600e6000600a548152602001908152602001600020600201600c6101000a81548161ffff021916908361ffff16021790555081600e6000600a54815260200190815260200160002060020160036101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508167ffffffffffffffff16600a547f5071c0db34a75c99a27e766bc5c6bc2eb7622236c9b01df7e4dd3f61c9e330fa8560400151846040516200074b92919062000dfc565b60405180910390a3505050565b60405180606001604052806200076d6200082c565b8152602001600062ffffff168152602001600061ffff1681525090565b6040518060a001604052806060815260200160608152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600015158152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b826002810192821562000819579160200282015b8281111562000818578251825591602001919060010190620007fb565b5b5090506200082891906200084e565b5090565b6040518060400160405280600290602082028036833780820191505090505090565b5b80821115620008695760008160009055506001016200084f565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200089f8262000872565b9050919050565b6000620008b38262000892565b9050919050565b620008c581620008a6565b8114620008d157600080fd5b50565b600081519050620008e581620008ba565b92915050565b6000602082840312156200090457620009036200086d565b5b60006200091484828501620008d4565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200099f57607f821691505b602082108103620009b557620009b462000957565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000a1f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620009e0565b62000a2b8683620009e0565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000a7862000a7262000a6c8462000a43565b62000a4d565b62000a43565b9050919050565b6000819050919050565b62000a948362000a57565b62000aac62000aa38262000a7f565b848454620009ed565b825550505050565b600090565b62000ac362000ab4565b62000ad081848462000a89565b505050565b5b8181101562000af85762000aec60008262000ab9565b60018101905062000ad6565b5050565b601f82111562000b475762000b1181620009bb565b62000b1c84620009d0565b8101602085101562000b2c578190505b62000b4462000b3b85620009d0565b83018262000ad5565b50505b505050565b600082821c905092915050565b600062000b6c6000198460080262000b4c565b1980831691505092915050565b600062000b87838362000b59565b9150826002028217905092915050565b62000ba2826200091d565b67ffffffffffffffff81111562000bbe5762000bbd62000928565b5b62000bca825462000986565b62000bd782828562000afc565b600060209050601f83116001811462000c0f576000841562000bfa578287015190505b62000c06858262000b79565b86555062000c76565b601f19841662000c1f86620009bb565b60005b8281101562000c495784890151825560018201915060208501945060208101905062000c22565b8683101562000c69578489015162000c65601f89168262000b59565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061ffff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000cf78262000cad565b915062000d048362000cad565b9250828201905061ffff81111562000d215762000d2062000cbb565b5b92915050565b600067ffffffffffffffff82169050919050565b600062000d488262000d27565b915067ffffffffffffffff820362000d655762000d6462000cbb565b5b600182019050919050565b62000d7b8162000892565b82525050565b600060208201905062000d98600083018462000d70565b92915050565b600062000dab8262000a43565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362000de05762000ddf62000cbb565b5b600182019050919050565b62000df68162000cad565b82525050565b600060408201905062000e13600083018562000deb565b62000e22602083018462000d70565b9392505050565b615b688062000e396000396000f3fe6080604052600436106101f95760003560e01c80636cf6faad1161010d578063999518fa116100a0578063b88d4fde1161006f578063b88d4fde14610791578063c87b56dd146107ba578063d5abeb01146107f7578063e985e9c514610822578063ff9810991461085f576101f9565b8063999518fa146106d7578063a22cb46514610714578063a3db6fe81461073d578063b743ccbd14610766576101f9565b80638ada6b0f116100dc5780638ada6b0f146106195780638f742d1614610644578063906005751461068157806395d89b41146106ac576101f9565b80636cf6faad1461053657806370a082311461055f5780637689f60c1461059c57806384856482146105d9576101f9565b806323b872dd116101905780634f64b2be1161015f5780634f64b2be146104105780635b227f9b1461044e5780635df81330146104915780636352211e146104ce5780636817c76c1461050b576101f9565b806323b872dd1461035557806334632c2e1461037e5780634154b243146103bc57806342842e0e146103e7576101f9565b80630b661b2b116101cc5780630b661b2b146102cc5780631249c58b146102f557806313e48d68146102ff57806318160ddd1461032a576101f9565b806301ffc9a7146101fe57806306fdde031461023b578063081812fc14610266578063095ea7b3146102a3575b600080fd5b34801561020a57600080fd5b50610225600480360381019061022091906138d4565b61089c565b604051610232919061391c565b60405180910390f35b34801561024757600080fd5b5061025061097e565b60405161025d91906139c7565b60405180910390f35b34801561027257600080fd5b5061028d60048036038101906102889190613a1f565b610a10565b60405161029a9190613a8d565b60405180910390f35b3480156102af57600080fd5b506102ca60048036038101906102c59190613ad4565b610a2c565b005b3480156102d857600080fd5b506102f360048036038101906102ee9190613b9d565b610a42565b005b6102fd610b4d565b005b34801561030b57600080fd5b50610314610c30565b6040516103219190613c28565b60405180910390f35b34801561033657600080fd5b5061033f610c36565b60405161034c9190613c28565b60405180910390f35b34801561036157600080fd5b5061037c60048036038101906103779190613c43565b610c3c565b005b34801561038a57600080fd5b506103a560048036038101906103a09190613a1f565b610d3e565b6040516103b3929190613c96565b60405180910390f35b3480156103c857600080fd5b506103d1610d62565b6040516103de9190613cde565b60405180910390f35b3480156103f357600080fd5b5061040e60048036038101906104099190613c43565b610d78565b005b34801561041c57600080fd5b5061043760048036038101906104329190613a1f565b610d98565b604051610445929190613c96565b60405180910390f35b34801561045a57600080fd5b5061047560048036038101906104709190613a1f565b610dbc565b6040516104889796959493929190613d58565b60405180910390f35b34801561049d57600080fd5b506104b860048036038101906104b39190613a1f565b610f78565b6040516104c59190613cde565b60405180910390f35b3480156104da57600080fd5b506104f560048036038101906104f09190613a1f565b610f9b565b6040516105029190613a8d565b60405180910390f35b34801561051757600080fd5b50610520610fad565b60405161052d9190613c28565b60405180910390f35b34801561054257600080fd5b5061055d60048036038101906105589190613dd5565b610fb3565b005b34801561056b57600080fd5b5061058660048036038101906105819190613e15565b6111e5565b6040516105939190613c28565b60405180910390f35b3480156105a857600080fd5b506105c360048036038101906105be9190613dd5565b61129f565b6040516105d091906139c7565b60405180910390f35b3480156105e557600080fd5b5061060060048036038101906105fb9190613a1f565b61159d565b6040516106109493929190613ea0565b60405180910390f35b34801561062557600080fd5b5061062e61160b565b60405161063b9190613ee5565b60405180910390f35b34801561065057600080fd5b5061066b60048036038101906106669190613a1f565b611631565b60405161067891906139c7565b60405180910390f35b34801561068d57600080fd5b50610696611935565b6040516106a39190613c28565b60405180910390f35b3480156106b857600080fd5b506106c161193b565b6040516106ce91906139c7565b60405180910390f35b3480156106e357600080fd5b506106fe60048036038101906106f99190613a1f565b6119cd565b60405161070b9190613f00565b60405180910390f35b34801561072057600080fd5b5061073b60048036038101906107369190613f47565b611ad8565b005b34801561074957600080fd5b50610764600480360381019061075f91906143f3565b611aee565b005b34801561077257600080fd5b5061077b611e27565b604051610788919061446b565b60405180910390f35b34801561079d57600080fd5b506107b860048036038101906107b39190614527565b611e41565b005b3480156107c657600080fd5b506107e160048036038101906107dc9190613a1f565b611e5e565b6040516107ee91906139c7565b60405180910390f35b34801561080357600080fd5b5061080c611f9b565b6040516108199190613f00565b60405180910390f35b34801561082e57600080fd5b50610849600480360381019061084491906145aa565b611faf565b604051610856919061391c565b60405180910390f35b34801561086b57600080fd5b5061088660048036038101906108819190613a1f565b612043565b6040516108939190613cde565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061096757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061097757506109768261214d565b5b9050919050565b60606000805461098d90614619565b80601f01602080910402602001604051908101604052809291908181526020018280546109b990614619565b8015610a065780601f106109db57610100808354040283529160200191610a06565b820191906000526020600020905b8154815290600101906020018083116109e957829003601f168201915b5050505050905090565b6000610a1b826121b7565b50610a258261223f565b9050919050565b610a3e8282610a3961227c565b612284565b5050565b806060016020810190610a55919061464a565b1580610aa05750600073ffffffffffffffffffffffffffffffffffffffff16816040016020810190610a879190614677565b73ffffffffffffffffffffffffffffffffffffffff1614155b610adf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad6906146f0565b60405180910390fd5b610b488383808060200260200160405190810160405280939291908181526020016000905b82821015610b3457848483905060800201803603810190610b259190614710565b81526020019060010190610b04565b505050505082610b439061473d565b611aee565b505050565b600660009054906101000a900461ffff1661ffff1660075410610ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9c9061479c565b60405180910390fd5b600854341015610bea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be190614808565b60405180910390fd5b600760008154610bf990614857565b91905081905550600060075490506001600f600083815260200190815260200160002060000181905550610c2d3382612296565b50565b600a5481565b60075481565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cae5760006040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401610ca59190613a8d565b60405180910390fd5b6000610cc28383610cbd61227c565b61238f565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d38578382826040517f64283d7b000000000000000000000000000000000000000000000000000000008152600401610d2f9392919061489f565b60405180910390fd5b50505050565b60106020528060005260406000206000915090508060000154908060010154905082565b6009601c9054906101000a900463ffffffff1681565b610d9383838360405180602001604052806000815250611e41565b505050565b600f6020528060005260406000206000915090508060000154908060010154905082565b600c602052806000526040600020600091509050806000018054610ddf90614619565b80601f0160208091040260200160405190810160405280929190818152602001828054610e0b90614619565b8015610e585780601f10610e2d57610100808354040283529160200191610e58565b820191906000526020600020905b815481529060010190602001808311610e3b57829003601f168201915b505050505090806001018054610e6d90614619565b80601f0160208091040260200160405190810160405280929190818152602001828054610e9990614619565b8015610ee65780601f10610ebb57610100808354040283529160200191610ee6565b820191906000526020600020905b815481529060010190602001808311610ec957829003601f168201915b5050505050908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160149054906101000a900460ff16908060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060050160009054906101000a900460ff16908060050160019054906101000a900463ffffffff16905087565b600d6020528060005260406000206000915054906101000a900463ffffffff1681565b6000610fa6826121b7565b9050919050565b60085481565b6007548111158015610fc55750600081115b611004576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffb90614922565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff1661102482610f9b565b73ffffffffffffffffffffffffffffffffffffffff161461107a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110719061498e565b60405180910390fd5b600a54821115801561108c5750600082115b6110cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c2906149fa565b60405180910390fd5b600e6000838152602001908152602001600020600201600b9054906101000a900460ff161561112f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112690614a66565b60405180910390fd5b600e6000600f6000848152602001908152602001600020600001548152602001908152602001600020600201600b9054906101000a900460ff16156111a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a090614af8565b60405180910390fd5b6111b382826125a9565b81817fc991fa97668660923579d259ca1844758ad35758afa3081fef1e7dde93979b7f60405160405180910390a35050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112585760006040517f89c62b6400000000000000000000000000000000000000000000000000000000815260040161124f9190613a8d565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606000831180156112b35750600a548311155b6112f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e990614b64565b60405180910390fd5b6000821180156113045750600a548211155b611343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133a90614b64565b60405180910390fd5b60008084141580156113a95750600c6000600e600087815260200190815260200160002060020160039054906101000a900467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060020160149054906101000a900460ff165b6113d557600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611441565b600c6000600e600087815260200190815260200160002060020160039054906101000a900467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b90506115756115478273ffffffffffffffffffffffffffffffffffffffff16630a0223fc600e6000898152602001908152602001600020600001600e60008a815260200190815260200160002060020160009054906101000a900462ffffff16600e60008a8152602001908152602001600020600001600e60008b815260200190815260200160002060020160009054906101000a900462ffffff166040518563ffffffff1660e01b81526004016114fc9493929190614c7a565b600060405180830381865afa158015611519573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906115429190614d2f565b612897565b61155086612a09565b604051602001611561929190614f56565b604051602081830303815290604052612897565b6040516020016115859190614ff2565b60405160208183030381529060405291505092915050565b600e6020528060005260406000206000915090508060020160009054906101000a900462ffffff16908060020160039054906101000a900467ffffffffffffffff169080600201600b9054906101000a900460ff169080600201600c9054906101000a900461ffff16905084565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606000821180156116455750600a548211155b611684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167b90614b64565b60405180910390fd5b60008083141580156116ea5750600c6000600e600086815260200190815260200160002060020160039054906101000a900467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060020160149054906101000a900460ff165b61171657600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611782565b600c6000600e600086815260200190815260200160002060020160039054906101000a900467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905061190e600c6000600e600087815260200190815260200160002060020160039054906101000a900467ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600001600c6000600e600088815260200190815260200160002060020160039054906101000a900467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206001016118de8473ffffffffffffffffffffffffffffffffffffffff1663c6458485600e60008a8152602001908152602001600020600001600e60008b815260200190815260200160002060020160009054906101000a900462ffffff166040518363ffffffff1660e01b8152600401611893929190615014565b600060405180830381865afa1580156118b0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906118d99190614d2f565b612897565b6118e787612a09565b6040516020016118fa94939291906151df565b604051602081830303815290604052612897565b60405160200161191e9190614ff2565b604051602081830303815290604052915050919050565b600b5481565b60606001805461194a90614619565b80601f016020809104026020016040519081016040528092919081815260200182805461197690614619565b80156119c35780601f10611998576101008083540402835291602001916119c3565b820191906000526020600020905b8154815290600101906020018083116119a657829003601f168201915b5050505050905090565b600080821180156119fe5750600960149054906101000a900467ffffffffffffffff1667ffffffffffffffff168211155b611a3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a34906152a0565b60405180910390fd5b60005b600c600084815260200190815260200160002060040180549050811015611ad257600e6000600c60008681526020019081526020016000206004018381548110611a8d57611a8c6152c0565b5b90600052602060002001548152602001908152602001600020600201600c9054906101000a900461ffff1682611ac391906152ef565b91508080600101915050611a40565b50919050565b611aea611ae361227c565b8383612cea565b5050565b6009601481819054906101000a900467ffffffffffffffff1680929190611b1490615325565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550508060000151600c6000600960149054906101000a900467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206000019081611b8291906154e2565b508060200151600c6000600960149054906101000a900467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206001019081611bca91906154e2565b508060400151600c6000600960149054906101000a900467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060600151600c6000600960149054906101000a900467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060020160146101000a81548160ff0219169083151502179055508060800151600c6000600960149054906101000a900467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060005b8251811015611dc657611d5a838281518110611d3157611d306152c0565b5b6020026020010151600960149054906101000a900467ffffffffffffffff168460800151612e59565b600c6000600960149054906101000a900467ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600401600a5490806001815401808255809150506001900390600052602060002001600090919091909150558080600101915050611d12565b50600960149054906101000a900467ffffffffffffffff1667ffffffffffffffff167fe502b3f80af399ad28c631abcfd9014a95397b793c892e51ad9666765afcfe428260800151604051611e1b9190613a8d565b60405180910390a25050565b600960149054906101000a900467ffffffffffffffff1681565b611e4c848484610c3c565b611e5884848484612f9c565b50505050565b6060600082118015611e7257506007548211155b611eb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea890615600565b60405180910390fd5b6000600c6000600e6000600f600088815260200190815260200160002060000154815260200190815260200160002060020160039054906101000a900467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060050160009054906101000a900460ff16611f2c576001611f44565b600f6000848152602001908152602001600020600001545b90506000600f60008581526020019081526020016000206001015414611f8957611f8481600f60008681526020019081526020016000206001015461129f565b611f93565b611f9281611631565b5b915050919050565b600660009054906101000a900461ffff1681565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600080821180156120745750600960149054906101000a900467ffffffffffffffff1667ffffffffffffffff168211155b6120b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120aa906152a0565b60405180910390fd5b60005b600c60008481526020019081526020016000206004018054905081101561214757600d6000600c60008681526020019081526020016000206004018381548110612103576121026152c0565b5b9060005260206000200154815260200190815260200160002060009054906101000a900463ffffffff16826121389190615620565b915080806001019150506120b6565b50919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000806121c383613153565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361223657826040517f7e27328900000000000000000000000000000000000000000000000000000000815260040161222d9190613c28565b60405180910390fd5b80915050919050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600033905090565b6122918383836001613190565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123085760006040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016122ff9190613a8d565b60405180910390fd5b60006123168383600061238f565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461238a5760006040517f73c6ac6e0000000000000000000000000000000000000000000000000000000081526004016123819190613a8d565b60405180910390fd5b505050565b60008061239b84613153565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146123dd576123dc818486613355565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461246e5761241f600085600080613190565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146124f1576001600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b846002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b81600f600083815260200190815260200160002060000181905550600d6000838152602001908152602001600020600081819054906101000a900463ffffffff16809291906125f790615658565b91906101000a81548163ffffffff021916908363ffffffff16021790555050600e6000838152602001908152602001600020600201600c9054906101000a900461ffff1661ffff16600d600084815260200190815260200160002060009054906101000a900463ffffffff1663ffffffff1603612893576001600e6000848152602001908152602001600020600201600b6101000a81548160ff0219169083151502179055506126da600e600084815260200190815260200160002060020160039054906101000a900467ffffffffffffffff1667ffffffffffffffff16613419565b15612892576009601c81819054906101000a900463ffffffff168092919061270190615658565b91906101000a81548163ffffffff021916908363ffffffff160217905550506001600c6000600e600086815260200190815260200160002060020160039054906101000a900467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060050160006101000a81548160ff0219169083151502179055506009601c9054906101000a900463ffffffff16600c6000600e600086815260200190815260200160002060020160039054906101000a900467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060050160016101000a81548163ffffffff021916908363ffffffff160217905550600e600083815260200190815260200160002060020160039054906101000a900467ffffffffffffffff1667ffffffffffffffff16827f99fd8a9845a8cdf92315d5d9dc25e399489e042393c59f67c3e1f426ff13738f600e6000868152602001908152602001600020600201600c9054906101000a900461ffff1633604051612889929190615684565b60405180910390a35b5b5050565b606060008251036128b957604051806020016040528060008152509050612a04565b6000604051806060016040528060408152602001615af360409139905060006003600285516128e891906156ad565b6128f29190615710565b60046128fe9190615741565b67ffffffffffffffff81111561291757612916613f87565b5b6040519080825280601f01601f1916602001820160405280156129495781602001600182028036833780820191505090505b50905060018201602082018586518701602081018051600082525b828410156129bf576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f8116870151865360018601955050612964565b80825260038a5106600181146129dc57600281146129ef576129f7565b603d6001870353603d60028703536129f7565b603d60018703535b5050505050505080925050505b919050565b60606000600c6000600e600086815260200190815260200160002060020160039054906101000a900467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060050160019054906101000a900463ffffffff1663ffffffff1614612ae157612adc600c6000600e600086815260200190815260200160002060020160039054906101000a900467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060050160019054906101000a900463ffffffff1663ffffffff16613529565b612b18565b6040518060400160405280600181526020017f2d000000000000000000000000000000000000000000000000000000000000008152505b600e6000848152602001908152602001600020600201600b9054906101000a900460ff16612b7b576040518060400160405280600581526020017f46616c7365000000000000000000000000000000000000000000000000000000815250612bb2565b6040518060400160405280600481526020017f54727565000000000000000000000000000000000000000000000000000000008152505b600c6000600e600087815260200190815260200160002060020160039054906101000a900467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015612c67573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190612c909190614d2f565b612cc1600e6000878152602001908152602001600020600201600c9054906101000a900461ffff1661ffff16613529565b604051602001612cd49493929190615971565b6040516020818303038152906040529050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d5b57816040517f5b08ba18000000000000000000000000000000000000000000000000000000008152600401612d529190613a8d565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051612e4c919061391c565b60405180910390a3505050565b600a6000815480929190612e6c90614857565b91905055508260000151600e6000600a548152602001908152602001600020600001906002612e9c92919061380b565b508260200151600e6000600a54815260200190815260200160002060020160006101000a81548162ffffff021916908362ffffff1602179055508260400151600e6000600a548152602001908152602001600020600201600c6101000a81548161ffff021916908361ffff16021790555081600e6000600a54815260200190815260200160002060020160036101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508167ffffffffffffffff16600a547f5071c0db34a75c99a27e766bc5c6bc2eb7622236c9b01df7e4dd3f61c9e330fa856040015184604051612f8f929190615684565b60405180910390a3505050565b60008373ffffffffffffffffffffffffffffffffffffffff163b111561314d578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02612fe061227c565b8685856040518563ffffffff1660e01b81526004016130029493929190615a3b565b6020604051808303816000875af192505050801561303e57506040513d601f19601f8201168201806040525081019061303b9190615a9c565b60015b6130c2573d806000811461306e576040519150601f19603f3d011682016040523d82523d6000602084013e613073565b606091505b5060008151036130ba57836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016130b19190613a8d565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461314b57836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016131429190613a8d565b60405180910390fd5b505b50505050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b80806131c95750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156132fd5760006131d9846121b7565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561324457508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561325757506132558184611faf565b155b1561329957826040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526004016132909190613a8d565b60405180910390fd5b81156132fb57838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b836004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b6133608383836135f7565b61341457600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036133d557806040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016133cc9190613c28565b60405180910390fd5b81816040517f177e802f00000000000000000000000000000000000000000000000000000000815260040161340b929190615ac9565b60405180910390fd5b505050565b6000808211801561344a5750600960149054906101000a900467ffffffffffffffff1667ffffffffffffffff168211155b613489576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613480906152a0565b60405180910390fd5b60005b600c60008481526020019081526020016000206004018054905081101561351e57600e6000600c600086815260200190815260200160002060040183815481106134d9576134d86152c0565b5b90600052602060002001548152602001908152602001600020600201600b9054906101000a900460ff16613511576000915050613524565b808060010191505061348c565b50600190505b919050565b606060006001613538846136b8565b01905060008167ffffffffffffffff81111561355757613556613f87565b5b6040519080825280601f01601f1916602001820160405280156135895781602001600182028036833780820191505090505b509050600082602001820190505b6001156135ec578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816135e0576135df6156e1565b5b04945060008503613597575b819350505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156136af57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480613670575061366f8484611faf565b5b806136ae57508273ffffffffffffffffffffffffffffffffffffffff166136968361223f565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310613716577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161370c5761370b6156e1565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310613753576d04ee2d6d415b85acef81000000008381613749576137486156e1565b5b0492506020810190505b662386f26fc10000831061378257662386f26fc100008381613778576137776156e1565b5b0492506010810190505b6305f5e10083106137ab576305f5e10083816137a1576137a06156e1565b5b0492506008810190505b61271083106137d05761271083816137c6576137c56156e1565b5b0492506004810190505b606483106137f357606483816137e9576137e86156e1565b5b0492506002810190505b600a8310613802576001810190505b80915050919050565b826002810192821561383a579160200282015b8281111561383957825182559160200191906001019061381e565b5b509050613847919061384b565b5090565b5b8082111561386457600081600090555060010161384c565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6138b18161387c565b81146138bc57600080fd5b50565b6000813590506138ce816138a8565b92915050565b6000602082840312156138ea576138e9613872565b5b60006138f8848285016138bf565b91505092915050565b60008115159050919050565b61391681613901565b82525050565b6000602082019050613931600083018461390d565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613971578082015181840152602081019050613956565b60008484015250505050565b6000601f19601f8301169050919050565b600061399982613937565b6139a38185613942565b93506139b3818560208601613953565b6139bc8161397d565b840191505092915050565b600060208201905081810360008301526139e1818461398e565b905092915050565b6000819050919050565b6139fc816139e9565b8114613a0757600080fd5b50565b600081359050613a19816139f3565b92915050565b600060208284031215613a3557613a34613872565b5b6000613a4384828501613a0a565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613a7782613a4c565b9050919050565b613a8781613a6c565b82525050565b6000602082019050613aa26000830184613a7e565b92915050565b613ab181613a6c565b8114613abc57600080fd5b50565b600081359050613ace81613aa8565b92915050565b60008060408385031215613aeb57613aea613872565b5b6000613af985828601613abf565b9250506020613b0a85828601613a0a565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112613b3957613b38613b14565b5b8235905067ffffffffffffffff811115613b5657613b55613b19565b5b602083019150836080820283011115613b7257613b71613b1e565b5b9250929050565b600080fd5b600060a08284031215613b9457613b93613b79565b5b81905092915050565b600080600060408486031215613bb657613bb5613872565b5b600084013567ffffffffffffffff811115613bd457613bd3613877565b5b613be086828701613b23565b9350935050602084013567ffffffffffffffff811115613c0357613c02613877565b5b613c0f86828701613b7e565b9150509250925092565b613c22816139e9565b82525050565b6000602082019050613c3d6000830184613c19565b92915050565b600080600060608486031215613c5c57613c5b613872565b5b6000613c6a86828701613abf565b9350506020613c7b86828701613abf565b9250506040613c8c86828701613a0a565b9150509250925092565b6000604082019050613cab6000830185613c19565b613cb86020830184613c19565b9392505050565b600063ffffffff82169050919050565b613cd881613cbf565b82525050565b6000602082019050613cf36000830184613ccf565b92915050565b6000819050919050565b6000613d1e613d19613d1484613a4c565b613cf9565b613a4c565b9050919050565b6000613d3082613d03565b9050919050565b6000613d4282613d25565b9050919050565b613d5281613d37565b82525050565b600060e0820190508181036000830152613d72818a61398e565b90508181036020830152613d86818961398e565b9050613d956040830188613d49565b613da2606083018761390d565b613daf6080830186613a7e565b613dbc60a083018561390d565b613dc960c0830184613ccf565b98975050505050505050565b60008060408385031215613dec57613deb613872565b5b6000613dfa85828601613a0a565b9250506020613e0b85828601613a0a565b9150509250929050565b600060208284031215613e2b57613e2a613872565b5b6000613e3984828501613abf565b91505092915050565b600062ffffff82169050919050565b613e5a81613e42565b82525050565b600067ffffffffffffffff82169050919050565b613e7d81613e60565b82525050565b600061ffff82169050919050565b613e9a81613e83565b82525050565b6000608082019050613eb56000830187613e51565b613ec26020830186613e74565b613ecf604083018561390d565b613edc6060830184613e91565b95945050505050565b6000602082019050613efa6000830184613d49565b92915050565b6000602082019050613f156000830184613e91565b92915050565b613f2481613901565b8114613f2f57600080fd5b50565b600081359050613f4181613f1b565b92915050565b60008060408385031215613f5e57613f5d613872565b5b6000613f6c85828601613abf565b9250506020613f7d85828601613f32565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613fbf8261397d565b810181811067ffffffffffffffff82111715613fde57613fdd613f87565b5b80604052505050565b6000613ff1613868565b9050613ffd8282613fb6565b919050565b600067ffffffffffffffff82111561401d5761401c613f87565b5b602082029050602081019050919050565b600080fd5b600080fd5b600067ffffffffffffffff82111561405357614052613f87565b5b602082029050919050565b600061407161406c84614038565b613fe7565b9050806020840283018581111561408b5761408a613b1e565b5b835b818110156140b457806140a08882613a0a565b84526020840193505060208101905061408d565b5050509392505050565b600082601f8301126140d3576140d2613b14565b5b60026140e084828561405e565b91505092915050565b6140f281613e42565b81146140fd57600080fd5b50565b60008135905061410f816140e9565b92915050565b61411e81613e83565b811461412957600080fd5b50565b60008135905061413b81614115565b92915050565b6000608082840312156141575761415661402e565b5b6141616060613fe7565b90506000614171848285016140be565b600083015250604061418584828501614100565b60208301525060606141998482850161412c565b60408301525092915050565b60006141b86141b384614002565b613fe7565b905080838252602082019050608084028301858111156141db576141da613b1e565b5b835b8181101561420457806141f08882614141565b8452602084019350506080810190506141dd565b5050509392505050565b600082601f83011261422357614222613b14565b5b81356142338482602086016141a5565b91505092915050565b600080fd5b600067ffffffffffffffff82111561425c5761425b613f87565b5b6142658261397d565b9050602081019050919050565b82818337600083830152505050565b600061429461428f84614241565b613fe7565b9050828152602081018484840111156142b0576142af61423c565b5b6142bb848285614272565b509392505050565b600082601f8301126142d8576142d7613b14565b5b81356142e8848260208601614281565b91505092915050565b60006142fc82613a6c565b9050919050565b61430c816142f1565b811461431757600080fd5b50565b60008135905061432981614303565b92915050565b600060a082840312156143455761434461402e565b5b61434f60a0613fe7565b9050600082013567ffffffffffffffff81111561436f5761436e614033565b5b61437b848285016142c3565b600083015250602082013567ffffffffffffffff81111561439f5761439e614033565b5b6143ab848285016142c3565b60208301525060406143bf8482850161431a565b60408301525060606143d384828501613f32565b60608301525060806143e784828501613abf565b60808301525092915050565b6000806040838503121561440a57614409613872565b5b600083013567ffffffffffffffff81111561442857614427613877565b5b6144348582860161420e565b925050602083013567ffffffffffffffff81111561445557614454613877565b5b6144618582860161432f565b9150509250929050565b60006020820190506144806000830184613e74565b92915050565b600067ffffffffffffffff8211156144a1576144a0613f87565b5b6144aa8261397d565b9050602081019050919050565b60006144ca6144c584614486565b613fe7565b9050828152602081018484840111156144e6576144e561423c565b5b6144f1848285614272565b509392505050565b600082601f83011261450e5761450d613b14565b5b813561451e8482602086016144b7565b91505092915050565b6000806000806080858703121561454157614540613872565b5b600061454f87828801613abf565b945050602061456087828801613abf565b935050604061457187828801613a0a565b925050606085013567ffffffffffffffff81111561459257614591613877565b5b61459e878288016144f9565b91505092959194509250565b600080604083850312156145c1576145c0613872565b5b60006145cf85828601613abf565b92505060206145e085828601613abf565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061463157607f821691505b602082108103614644576146436145ea565b5b50919050565b6000602082840312156146605761465f613872565b5b600061466e84828501613f32565b91505092915050565b60006020828403121561468d5761468c613872565b5b600061469b8482850161431a565b91505092915050565b7f4261642072656e646572657220636f6e66696700000000000000000000000000600082015250565b60006146da601383613942565b91506146e5826146a4565b602082019050919050565b60006020820190508181036000830152614709816146cd565b9050919050565b60006080828403121561472657614725613872565b5b600061473484828501614141565b91505092915050565b6000614749368361432f565b9050919050565b7f536f6c64206f7574000000000000000000000000000000000000000000000000600082015250565b6000614786600883613942565b915061479182614750565b602082019050919050565b600060208201905081810360008301526147b581614779565b9050919050565b7f4e6f7420656e6f756768204554482073656e7400000000000000000000000000600082015250565b60006147f2601383613942565b91506147fd826147bc565b602082019050919050565b60006020820190508181036000830152614821816147e5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614862826139e9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361489457614893614828565b5b600182019050919050565b60006060820190506148b46000830186613a7e565b6148c16020830185613c19565b6148ce6040830184613a7e565b949350505050565b7f746f6b656e206e6f7420666f756e640000000000000000000000000000000000600082015250565b600061490c600f83613942565b9150614917826148d6565b602082019050919050565b6000602082019050818103600083015261493b816148ff565b9050919050565b7f796f7520617265206e6f7420746865206f776e6572206f6620746f6b656e0000600082015250565b6000614978601e83613942565b915061498382614942565b602082019050919050565b600060208201905081810360008301526149a78161496b565b9050919050565b7f696d616765206e6f7420666f756e640000000000000000000000000000000000600082015250565b60006149e4600f83613942565b91506149ef826149ae565b602082019050919050565b60006020820190508181036000830152614a13816149d7565b9050919050565b7f696d61676520736f6c64206f7574000000000000000000000000000000000000600082015250565b6000614a50600e83613942565b9150614a5b82614a1a565b602082019050919050565b60006020820190508181036000830152614a7f81614a43565b9050919050565b7f796f752063616e2774206f70742d696e207769746820612072657665616c656460008201527f20746f6b656e0000000000000000000000000000000000000000000000000000602082015250565b6000614ae2602683613942565b9150614aed82614a86565b604082019050919050565b60006020820190508181036000830152614b1181614ad5565b9050919050565b7f496e76616c696420696d61676549640000000000000000000000000000000000600082015250565b6000614b4e600f83613942565b9150614b5982614b18565b602082019050919050565b60006020820190508181036000830152614b7d81614b41565b9050919050565b600060029050919050565b600081905092915050565b6000819050919050565b614bad816139e9565b82525050565b6000614bbf8383614ba4565b60208301905092915050565b60008160001c9050919050565b6000819050919050565b6000614bf5614bf083614bcb565b614bd8565b9050919050565b6000614c088254614be2565b9050919050565b6000600182019050919050565b614c2581614b84565b614c2f8184614b8f565b9250614c3a82614b9a565b8060005b83811015614c7257614c4f82614bfc565b614c598782614bb3565b9650614c6483614c0f565b925050600181019050614c3e565b505050505050565b600060c082019050614c8f6000830187614c1c565b614c9c6040830186613e51565b614ca96060830185614c1c565b614cb660a0830184613e51565b95945050505050565b6000614cd2614ccd84614241565b613fe7565b905082815260208101848484011115614cee57614ced61423c565b5b614cf9848285613953565b509392505050565b600082601f830112614d1657614d15613b14565b5b8151614d26848260208601614cbf565b91505092915050565b600060208284031215614d4557614d44613872565b5b600082015167ffffffffffffffff811115614d6357614d62613877565b5b614d6f84828501614d01565b91505092915050565b600081905092915050565b7f7b226e616d65223a2022456967687420506570656e2023000000000000000000600082015250565b6000614db9601783614d78565b9150614dc482614d83565b601782019050919050565b7f222c20226465736372697074696f6e223a2022456967687420506570656e206960008201527f73206120636f6c6c656374696f6e206f66203838382066756c6c79206f6e2d6360208201527f6861696e2c2072616e646f6d6c792067656e657261746564222c2022696d616760408201527f65223a22646174613a696d6167652f7376672b786d6c3b6261736536342c0000606082015250565b6000614e77607e83614d78565b9150614e8282614dcf565b607e82019050919050565b6000614e9882613937565b614ea28185614d78565b9350614eb2818560208601613953565b80840191505092915050565b7f222c202261747472696275746573223a205b0000000000000000000000000000600082015250565b6000614ef4601283614d78565b9150614eff82614ebe565b601282019050919050565b7f5d7d000000000000000000000000000000000000000000000000000000000000600082015250565b6000614f40600283614d78565b9150614f4b82614f0a565b600282019050919050565b6000614f6182614dac565b9150614f6c82614e6a565b9150614f788285614e8d565b9150614f8382614ee7565b9150614f8f8284614e8d565b9150614f9a82614f33565b91508190509392505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000600082015250565b6000614fdc601d83614d78565b9150614fe782614fa6565b601d82019050919050565b6000614ffd82614fcf565b91506150098284614e8d565b915081905092915050565b60006060820190506150296000830185614c1c565b6150366040830184613e51565b9392505050565b7f7b226e616d65223a202200000000000000000000000000000000000000000000600082015250565b6000615073600a83614d78565b915061507e8261503d565b600a82019050919050565b60008190508160005260206000209050919050565b600081546150ab81614619565b6150b58186614d78565b945060018216600081146150d057600181146150e557615118565b60ff1983168652811515820286019350615118565b6150ee85615089565b60005b83811015615110578154818901526001820191506020810190506150f1565b838801955050505b50505092915050565b7f222c20226465736372697074696f6e223a202200000000000000000000000000600082015250565b6000615157601383614d78565b915061516282615121565b601382019050919050565b7f222c2022696d616765223a22646174613a696d6167652f7376672b786d6c3b6260008201527f61736536342c0000000000000000000000000000000000000000000000000000602082015250565b60006151c9602683614d78565b91506151d48261516d565b602682019050919050565b60006151ea82615066565b91506151f6828761509e565b91506152018261514a565b915061520d828661509e565b9150615218826151bc565b91506152248285614e8d565b915061522f82614ee7565b915061523b8284614e8d565b915061524682614f33565b915081905095945050505050565b7f496e76616c696420736574496400000000000000000000000000000000000000600082015250565b600061528a600d83613942565b915061529582615254565b602082019050919050565b600060208201905081810360008301526152b98161527d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006152fa82613e83565b915061530583613e83565b9250828201905061ffff81111561531f5761531e614828565b5b92915050565b600061533082613e60565b915067ffffffffffffffff820361534a57615349614828565b5b600182019050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026153a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82615365565b6153ac8683615365565b95508019841693508086168417925050509392505050565b60006153df6153da6153d5846139e9565b613cf9565b6139e9565b9050919050565b6000819050919050565b6153f9836153c4565b61540d615405826153e6565b848454615372565b825550505050565b600090565b615422615415565b61542d8184846153f0565b505050565b5b818110156154515761544660008261541a565b600181019050615433565b5050565b601f8211156154965761546781615089565b61547084615355565b8101602085101561547f578190505b61549361548b85615355565b830182615432565b50505b505050565b600082821c905092915050565b60006154b96000198460080261549b565b1980831691505092915050565b60006154d283836154a8565b9150826002028217905092915050565b6154eb82613937565b67ffffffffffffffff81111561550457615503613f87565b5b61550e8254614619565b615519828285615455565b600060209050601f83116001811461554c576000841561553a578287015190505b61554485826154c6565b8655506155ac565b601f19841661555a86615089565b60005b828110156155825784890151825560018201915060208501945060208101905061555d565b8683101561559f578489015161559b601f8916826154a8565b8355505b6001600288020188555050505b505050505050565b7f496e76616c696420746f6b656e49640000000000000000000000000000000000600082015250565b60006155ea600f83613942565b91506155f5826155b4565b602082019050919050565b60006020820190508181036000830152615619816155dd565b9050919050565b600061562b82613cbf565b915061563683613cbf565b9250828201905063ffffffff81111561565257615651614828565b5b92915050565b600061566382613cbf565b915063ffffffff820361567957615678614828565b5b600182019050919050565b60006040820190506156996000830185613e91565b6156a66020830184613a7e565b9392505050565b60006156b8826139e9565b91506156c3836139e9565b92508282019050808211156156db576156da614828565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061571b826139e9565b9150615726836139e9565b925082615736576157356156e1565b5b828204905092915050565b600061574c826139e9565b9150615757836139e9565b9250828202615765816139e9565b9150828204841483151761577c5761577b614828565b5b5092915050565b7f7b2274726169745f74797065223a22536574222c202276616c7565223a202200600082015250565b60006157b9601f83614d78565b91506157c482615783565b601f82019050919050565b7f227d2c7b2274726169745f74797065223a2252657665616c6564222c2022766160008201527f6c7565223a202200000000000000000000000000000000000000000000000000602082015250565b600061582b602783614d78565b9150615836826157cf565b602782019050919050565b7f227d2c7b2274726169745f74797065223a2252656e6465726572222c2022766160008201527f6c7565223a202200000000000000000000000000000000000000000000000000602082015250565b600061589d602783614d78565b91506158a882615841565b602782019050919050565b7f227d2c7b2274726169745f74797065223a2245646974696f6e2053697a65222c60008201527f202276616c7565223a2022000000000000000000000000000000000000000000602082015250565b600061590f602b83614d78565b915061591a826158b3565b602b82019050919050565b7f227d000000000000000000000000000000000000000000000000000000000000600082015250565b600061595b600283614d78565b915061596682615925565b600282019050919050565b600061597c826157ac565b91506159888287614e8d565b91506159938261581e565b915061599f8286614e8d565b91506159aa82615890565b91506159b68285614e8d565b91506159c182615902565b91506159cd8284614e8d565b91506159d88261594e565b915081905095945050505050565b600081519050919050565b600082825260208201905092915050565b6000615a0d826159e6565b615a1781856159f1565b9350615a27818560208601613953565b615a308161397d565b840191505092915050565b6000608082019050615a506000830187613a7e565b615a5d6020830186613a7e565b615a6a6040830185613c19565b8181036060830152615a7c8184615a02565b905095945050505050565b600081519050615a96816138a8565b92915050565b600060208284031215615ab257615ab1613872565b5b6000615ac084828501615a87565b91505092915050565b6000604082019050615ade6000830185613a7e565b615aeb6020830184613c19565b939250505056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa264697066735822122005f7227a895b5f66952bf1484d019d9071e90e79ac06b4742b9276e81c8f4f1b64736f6c634300081800330000000000000000000000006258fa6db0f68d6afa114d4f53bdc13fbe3ee7ae
0x0000000000000000000000006258fa6db0f68d6afa114d4f53bdc13fbe3ee7ae
----Decoded View------------Arg [0] : _renderer (address): 0x6258Fa6DB0F68d6AFa114d4F53bdc13FBe3ee7ae
----Encoded View------------Arg [0] : 0x0000000000000000000000006258fa6db0f68d6afa114d4f53bdc13fbe3ee7ae