UNPKG

@towns-protocol/generated

Version:

## How to generate contract types

1,147 lines (1,145 loc) 57.5 kB
/* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; import type { Provider, TransactionRequest } from "@ethersproject/providers"; import type { PromiseOrValue } from "../common"; import type { SpaceOwner, SpaceOwnerInterface } from "../SpaceOwner"; const _abi = [ { type: "function", name: "CLOCK_MODE", inputs: [], outputs: [ { name: "", type: "string", internalType: "string", }, ], stateMutability: "view", }, { type: "function", name: "__ERC721A_init", inputs: [ { name: "name_", type: "string", internalType: "string", }, { name: "symbol_", type: "string", internalType: "string", }, ], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "__SpaceOwner_init", inputs: [ { name: "name", type: "string", internalType: "string", }, { name: "symbol", type: "string", internalType: "string", }, ], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "approve", inputs: [ { name: "to", type: "address", internalType: "address", }, { name: "tokenId", type: "uint256", internalType: "uint256", }, ], outputs: [], stateMutability: "payable", }, { type: "function", name: "balanceOf", inputs: [ { name: "owner", type: "address", internalType: "address", }, ], outputs: [ { name: "", type: "uint256", internalType: "uint256", }, ], stateMutability: "view", }, { type: "function", name: "clock", inputs: [], outputs: [ { name: "", type: "uint48", internalType: "uint48", }, ], stateMutability: "view", }, { type: "function", name: "delegate", inputs: [ { name: "delegatee", type: "address", internalType: "address", }, ], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "delegateBySig", inputs: [ { name: "delegatee", type: "address", internalType: "address", }, { name: "nonce", type: "uint256", internalType: "uint256", }, { name: "expiry", type: "uint256", internalType: "uint256", }, { name: "v", type: "uint8", internalType: "uint8", }, { name: "r", type: "bytes32", internalType: "bytes32", }, { name: "s", type: "bytes32", internalType: "bytes32", }, ], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "delegates", inputs: [ { name: "account", type: "address", internalType: "address", }, ], outputs: [ { name: "", type: "address", internalType: "address", }, ], stateMutability: "view", }, { type: "function", name: "getApproved", inputs: [ { name: "tokenId", type: "uint256", internalType: "uint256", }, ], outputs: [ { name: "", type: "address", internalType: "address", }, ], stateMutability: "view", }, { type: "function", name: "getDefaultUri", inputs: [], outputs: [ { name: "", type: "string", internalType: "string", }, ], stateMutability: "view", }, { type: "function", name: "getFactory", inputs: [], outputs: [ { name: "", type: "address", internalType: "address", }, ], stateMutability: "view", }, { type: "function", name: "getPastTotalSupply", inputs: [ { name: "timepoint", type: "uint256", internalType: "uint256", }, ], outputs: [ { name: "", type: "uint256", internalType: "uint256", }, ], stateMutability: "view", }, { type: "function", name: "getPastVotes", inputs: [ { name: "account", type: "address", internalType: "address", }, { name: "timepoint", type: "uint256", internalType: "uint256", }, ], outputs: [ { name: "", type: "uint256", internalType: "uint256", }, ], stateMutability: "view", }, { type: "function", name: "getSpaceByTokenId", inputs: [ { name: "tokenId", type: "uint256", internalType: "uint256", }, ], outputs: [ { name: "", type: "address", internalType: "address", }, ], stateMutability: "view", }, { type: "function", name: "getSpaceInfo", inputs: [ { name: "space", type: "address", internalType: "address", }, ], outputs: [ { name: "", type: "tuple", internalType: "struct ISpaceOwnerBase.Space", components: [ { name: "name", type: "string", internalType: "string", }, { name: "uri", type: "string", internalType: "string", }, { name: "tokenId", type: "uint256", internalType: "uint256", }, { name: "createdAt", type: "uint256", internalType: "uint256", }, { name: "shortDescription", type: "string", internalType: "string", }, { name: "longDescription", type: "string", internalType: "string", }, ], }, ], stateMutability: "view", }, { type: "function", name: "getVotes", inputs: [ { name: "account", type: "address", internalType: "address", }, ], outputs: [ { name: "", type: "uint256", internalType: "uint256", }, ], stateMutability: "view", }, { type: "function", name: "isApprovedForAll", inputs: [ { name: "owner", type: "address", internalType: "address", }, { name: "operator", type: "address", internalType: "address", }, ], outputs: [ { name: "", type: "bool", internalType: "bool", }, ], stateMutability: "view", }, { type: "function", name: "mintSpace", inputs: [ { name: "name", type: "string", internalType: "string", }, { name: "uri", type: "string", internalType: "string", }, { name: "space", type: "address", internalType: "address", }, { name: "shortDescription", type: "string", internalType: "string", }, { name: "longDescription", type: "string", internalType: "string", }, ], outputs: [ { name: "tokenId", type: "uint256", internalType: "uint256", }, ], stateMutability: "nonpayable", }, { type: "function", name: "name", inputs: [], outputs: [ { name: "", type: "string", internalType: "string", }, ], stateMutability: "view", }, { type: "function", name: "nextTokenId", inputs: [], outputs: [ { name: "", type: "uint256", internalType: "uint256", }, ], stateMutability: "view", }, { type: "function", name: "ownerOf", inputs: [ { name: "tokenId", type: "uint256", internalType: "uint256", }, ], outputs: [ { name: "", type: "address", internalType: "address", }, ], stateMutability: "view", }, { type: "function", name: "safeTransferFrom", inputs: [ { name: "from", type: "address", internalType: "address", }, { name: "to", type: "address", internalType: "address", }, { name: "tokenId", type: "uint256", internalType: "uint256", }, ], outputs: [], stateMutability: "payable", }, { type: "function", name: "safeTransferFrom", inputs: [ { name: "from", type: "address", internalType: "address", }, { name: "to", type: "address", internalType: "address", }, { name: "tokenId", type: "uint256", internalType: "uint256", }, { name: "_data", type: "bytes", internalType: "bytes", }, ], outputs: [], stateMutability: "payable", }, { type: "function", name: "setApprovalForAll", inputs: [ { name: "operator", type: "address", internalType: "address", }, { name: "approved", type: "bool", internalType: "bool", }, ], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "setDefaultUri", inputs: [ { name: "uri", type: "string", internalType: "string", }, ], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "setFactory", inputs: [ { name: "factory", type: "address", internalType: "address", }, ], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "symbol", inputs: [], outputs: [ { name: "", type: "string", internalType: "string", }, ], stateMutability: "view", }, { type: "function", name: "tokenURI", inputs: [ { name: "tokenId", type: "uint256", internalType: "uint256", }, ], outputs: [ { name: "", type: "string", internalType: "string", }, ], stateMutability: "view", }, { type: "function", name: "totalSupply", inputs: [], outputs: [ { name: "", type: "uint256", internalType: "uint256", }, ], stateMutability: "view", }, { type: "function", name: "transferFrom", inputs: [ { name: "from", type: "address", internalType: "address", }, { name: "to", type: "address", internalType: "address", }, { name: "tokenId", type: "uint256", internalType: "uint256", }, ], outputs: [], stateMutability: "payable", }, { type: "function", name: "updateSpaceInfo", inputs: [ { name: "space", type: "address", internalType: "address", }, { name: "name", type: "string", internalType: "string", }, { name: "uri", type: "string", internalType: "string", }, { name: "shortDescription", type: "string", internalType: "string", }, { name: "longDescription", type: "string", internalType: "string", }, ], outputs: [], stateMutability: "nonpayable", }, { type: "event", name: "Approval", inputs: [ { name: "owner", type: "address", indexed: true, internalType: "address", }, { name: "approved", type: "address", indexed: true, internalType: "address", }, { name: "tokenId", type: "uint256", indexed: true, internalType: "uint256", }, ], anonymous: false, }, { type: "event", name: "ApprovalForAll", inputs: [ { name: "owner", type: "address", indexed: true, internalType: "address", }, { name: "operator", type: "address", indexed: true, internalType: "address", }, { name: "approved", type: "bool", indexed: false, internalType: "bool", }, ], anonymous: false, }, { type: "event", name: "ConsecutiveTransfer", inputs: [ { name: "fromTokenId", type: "uint256", indexed: true, internalType: "uint256", }, { name: "toTokenId", type: "uint256", indexed: false, internalType: "uint256", }, { name: "from", type: "address", indexed: true, internalType: "address", }, { name: "to", type: "address", indexed: true, internalType: "address", }, ], anonymous: false, }, { type: "event", name: "DelegateChanged", inputs: [ { name: "delegator", type: "address", indexed: true, internalType: "address", }, { name: "fromDelegate", type: "address", indexed: true, internalType: "address", }, { name: "toDelegate", type: "address", indexed: true, internalType: "address", }, ], anonymous: false, }, { type: "event", name: "DelegateVotesChanged", inputs: [ { name: "delegate", type: "address", indexed: true, internalType: "address", }, { name: "previousVotes", type: "uint256", indexed: false, internalType: "uint256", }, { name: "newVotes", type: "uint256", indexed: false, internalType: "uint256", }, ], anonymous: false, }, { type: "event", name: "GuardianDefaultCooldownUpdated", inputs: [ { name: "cooldown", type: "uint256", indexed: true, internalType: "uint256", }, ], anonymous: false, }, { type: "event", name: "GuardianUpdated", inputs: [ { name: "caller", type: "address", indexed: true, internalType: "address", }, { name: "enabled", type: "bool", indexed: true, internalType: "bool", }, { name: "cooldown", type: "uint256", indexed: false, internalType: "uint256", }, { name: "timestamp", type: "uint256", indexed: false, internalType: "uint256", }, ], anonymous: false, }, { type: "event", name: "Initialized", inputs: [ { name: "version", type: "uint32", indexed: false, internalType: "uint32", }, ], anonymous: false, }, { type: "event", name: "InterfaceAdded", inputs: [ { name: "interfaceId", type: "bytes4", indexed: true, internalType: "bytes4", }, ], anonymous: false, }, { type: "event", name: "InterfaceRemoved", inputs: [ { name: "interfaceId", type: "bytes4", indexed: true, internalType: "bytes4", }, ], anonymous: false, }, { type: "event", name: "MetadataUpdate", inputs: [ { name: "_tokenId", type: "uint256", indexed: false, internalType: "uint256", }, ], anonymous: false, }, { type: "event", name: "OwnershipTransferred", inputs: [ { name: "previousOwner", type: "address", indexed: true, internalType: "address", }, { name: "newOwner", type: "address", indexed: true, internalType: "address", }, ], anonymous: false, }, { type: "event", name: "SpaceOwner__SetDefaultUri", inputs: [ { name: "uri", type: "string", indexed: false, internalType: "string", }, ], anonymous: false, }, { type: "event", name: "SpaceOwner__SetFactory", inputs: [ { name: "factory", type: "address", indexed: false, internalType: "address", }, ], anonymous: false, }, { type: "event", name: "SpaceOwner__UpdateSpace", inputs: [ { name: "space", type: "address", indexed: true, internalType: "address", }, ], anonymous: false, }, { type: "event", name: "Transfer", inputs: [ { name: "from", type: "address", indexed: true, internalType: "address", }, { name: "to", type: "address", indexed: true, internalType: "address", }, { name: "tokenId", type: "uint256", indexed: true, internalType: "uint256", }, ], anonymous: false, }, { type: "error", name: "ApprovalCallerNotOwnerNorApproved", inputs: [], }, { type: "error", name: "ApprovalQueryForNonexistentToken", inputs: [], }, { type: "error", name: "BalanceQueryForZeroAddress", inputs: [], }, { type: "error", name: "Guardian_AlreadyDisabled", inputs: [], }, { type: "error", name: "Guardian_AlreadyEnabled", inputs: [], }, { type: "error", name: "Guardian_Enabled", inputs: [], }, { type: "error", name: "Initializable_AlreadyInitialized", inputs: [ { name: "version", type: "uint32", internalType: "uint32", }, ], }, { type: "error", name: "Initializable_InInitializingState", inputs: [], }, { type: "error", name: "Initializable_NotInInitializingState", inputs: [], }, { type: "error", name: "Introspection_AlreadySupported", inputs: [], }, { type: "error", name: "Introspection_NotSupported", inputs: [], }, { type: "error", name: "InvalidAccountNonce", inputs: [ { name: "account", type: "address", internalType: "address", }, { name: "currentNonce", type: "uint256", internalType: "uint256", }, ], }, { type: "error", name: "MintERC2309QuantityExceedsLimit", inputs: [], }, { type: "error", name: "MintToZeroAddress", inputs: [], }, { type: "error", name: "MintZeroQuantity", inputs: [], }, { type: "error", name: "Ownable__NotOwner", inputs: [ { name: "account", type: "address", internalType: "address", }, ], }, { type: "error", name: "Ownable__ZeroAddress", inputs: [], }, { type: "error", name: "OwnerQueryForNonexistentToken", inputs: [], }, { type: "error", name: "OwnershipNotInitializedForExtraData", inputs: [], }, { type: "error", name: "SpaceOwner__DefaultUriNotSet", inputs: [], }, { type: "error", name: "SpaceOwner__OnlyFactoryAllowed", inputs: [], }, { type: "error", name: "SpaceOwner__OnlySpaceOwnerAllowed", inputs: [], }, { type: "error", name: "SpaceOwner__SpaceNotFound", inputs: [], }, { type: "error", name: "TransferCallerNotOwnerNorApproved", inputs: [], }, { type: "error", name: "TransferFromIncorrectOwner", inputs: [], }, { type: "error", name: "TransferToNonERC721ReceiverImplementer", inputs: [], }, { type: "error", name: "TransferToZeroAddress", inputs: [], }, { type: "error", name: "URIQueryForNonexistentToken", inputs: [], }, { type: "error", name: "VotesExpiredSignature", inputs: [ { name: "expiry", type: "uint256", internalType: "uint256", }, ], }, ] as const; const _bytecode = "0x6080604052348015600e575f5ffd5b5060156019565b60bd565b7f59b501c3653afc186af7d48dda36cf6732bd21629a6295693664240a6ef520008054640100000000900460ff16156064576040516366008a2d60e01b815260040160405180910390fd5b805463ffffffff908116101560ba57805463ffffffff191663ffffffff90811782556040519081527fe9c9b456cb2994b80aeef036cf59d26e9617df80f816a6ee5a5b4166e07e2f5c9060200160405180910390a15b50565b614454806100ca5f395ff3fe6080604052600436106101db575f3560e01c806370a08231116100fd578063a22cb46511610092578063d2468ff711610062578063d2468ff714610535578063d2f01f1914610554578063d653654014610573578063e985e9c514610587575f5ffd5b8063a22cb465146104c5578063b88d4fde146104e4578063c3cda520146104f7578063c87b56dd14610516575f5ffd5b80638e539e8c116100cd5780638e539e8c1461044857806391ddadf41461046757806395d89b41146104925780639ab24eb0146104a6575f5ffd5b806370a08231146103e257806375794a3c14610401578063848806141461041557806388cc58e414610434575f5ffd5b8063466a18de116101735780635c19a95c116101435780635c19a95c146103595780636352211e14610378578063673f0dd5146103975780636a9a38e6146103b6575f5ffd5b8063466a18de146102e85780634bf5d7e914610307578063587cde1e1461031b5780635bb478081461033a575f5ffd5b806323b872dd116101ae57806323b872dd146102845780633a46b1a8146102975780633bf5b8f4146102b657806342842e0e146102d5575f5ffd5b806306fdde03146101df578063081812fc14610209578063095ea7b31461024d57806318160ddd14610262575b5f5ffd5b3480156101ea575f5ffd5b506101f36105b6565b6040516102009190613b05565b60405180910390f35b348015610214575f5ffd5b50610228610223366004613b17565b610668565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610200565b61026061025b366004613b56565b610678565b005b34801561026d575f5ffd5b506102766106e6565b604051908152602001610200565b610260610292366004613b7e565b610737565b3480156102a2575f5ffd5b506102766102b1366004613b56565b610a93565b3480156102c1575f5ffd5b506102766102d0366004613c98565b610aa5565b6102606102e3366004613b7e565b610b62565b3480156102f3575f5ffd5b50610260610302366004613d61565b610b81565b348015610312575f5ffd5b506101f3610c04565b348015610326575f5ffd5b50610228610335366004613d93565b610c0e565b348015610345575f5ffd5b50610260610354366004613d93565b610c5b565b348015610364575f5ffd5b50610260610373366004613d93565b610cd6565b348015610383575f5ffd5b50610228610392366004613b17565b610ce0565b3480156103a2575f5ffd5b506102286103b1366004613b17565b610cea565b3480156103c1575f5ffd5b506103d56103d0366004613d93565b610d32565b6040516102009190613dac565b3480156103ed575f5ffd5b506102766103fc366004613d93565b610d72565b34801561040c575f5ffd5b50610276610d7c565b348015610420575f5ffd5b5061026061042f366004613e97565b610da5565b34801561043f575f5ffd5b50610228610e9c565b348015610453575f5ffd5b50610276610462366004613b17565b610edb565b348015610472575f5ffd5b5061047b610ee5565b60405165ffffffffffff9091168152602001610200565b34801561049d575f5ffd5b506101f3610eee565b3480156104b1575f5ffd5b506102766104c0366004613d93565b610f1f565b3480156104d0575f5ffd5b506102606104df366004613f1f565b610f29565b6102606104f2366004613f58565b610f7b565b348015610502575f5ffd5b50610260610511366004613fcf565b610feb565b348015610521575f5ffd5b506101f3610530366004613b17565b610ff9565b348015610540575f5ffd5b5061026061054f36600461402a565b611043565b34801561055f575f5ffd5b5061026061056e36600461402a565b61119e565b34801561057e575f5ffd5b506101f361120b565b348015610592575f5ffd5b506105a66105a136600461408f565b611215565b6040519015158152602001610200565b60607f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df0060020180546105e7906140c0565b80601f0160208091040260200160405190810160405280929190818152602001828054610613906140c0565b801561065e5780601f106106355761010080835404028352916020019161065e565b820191905f5260205f20905b81548152906001019060200180831161064157829003601f168201915b5050505050905090565b5f61067282611270565b92915050565b73ffffffffffffffffffffffffffffffffffffffff8216158015906106a157506106a1336112f7565b156106d8576040517fed551c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106e282826113d2565b5050565b5f6107327f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b905090565b5f610741826113de565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146107a8576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8281527f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df066020526040902080543380821473ffffffffffffffffffffffffffffffffffffffff881690911417610839576108038633611215565b610839576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8516610886576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610893868686600161150f565b801561089d575f82555b73ffffffffffffffffffffffffffffffffffffffff8681165f9081527f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df05602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055918716808252919020805460010190554260a01b177c0200000000000000000000000000000000000000000000000000000000175f8581527f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df0460205260408120919091557c020000000000000000000000000000000000000000000000000000000084169003610a2357600184015f8181527f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df0460205260408120549003610a21577f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00548114610a21575f8181527f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df04602052604090208490555b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610a8b8686866001611574565b505050505050565b5f610a9e838361157f565b9392505050565b5f807f7fc24c9500f4388b797f8975c0991ad4ffd0338c2cbf5335b2bf5b7fe5747700805490915073ffffffffffffffffffffffffffffffffffffffff163314610b1b576040517f887cea1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00549150610b4d878784888888611672565b610b5833600161180a565b5095945050505050565b610b7c83838360405180602001604052805f815250610f7b565b505050565b7f4675fa8241f86f37157864d3d49b85ad4b164352c516da28e1678a90470ae3005473ffffffffffffffffffffffffffffffffffffffff163314610bf8576040517f65f490650000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b610c01816119d2565b50565b6060610732611a43565b73ffffffffffffffffffffffffffffffffffffffff8082165f9081527f423fcc3514229d79a30fb79b40a232f70b3fabdf664a75db0859c67848497f656020526040812054909116610672565b7f4675fa8241f86f37157864d3d49b85ad4b164352c516da28e1678a90470ae3005473ffffffffffffffffffffffffffffffffffffffff163314610ccd576040517f65f49065000000000000000000000000000000000000000000000000000000008152336004820152602401610bef565b610c0181611af5565b610c013382611b96565b5f610672826113de565b5f8181527f7fc24c9500f4388b797f8975c0991ad4ffd0338c2cbf5335b2bf5b7fe5747701602052604081205473ffffffffffffffffffffffffffffffffffffffff16610672565b610d696040518060c0016040528060608152602001606081526020015f81526020015f815260200160608152602001606081525090565b61067282611c4b565b5f61067282611f57565b5f6107327f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df005490565b610dae85611ff6565b610dbb8585858585612094565b8473ffffffffffffffffffffffffffffffffffffffff1663410066056040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610e00575f5ffd5b505af1158015610e12573d5f5f3e3d5ffd5b505050507ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7610e848673ffffffffffffffffffffffffffffffffffffffff165f9081527f7fc24c9500f4388b797f8975c0991ad4ffd0338c2cbf5335b2bf5b7fe5747702602052604090206002015490565b60405190815260200160405180910390a15050505050565b5f6107327f7fc24c9500f4388b797f8975c0991ad4ffd0338c2cbf5335b2bf5b7fe57477005473ffffffffffffffffffffffffffffffffffffffff1690565b5f610672826121b4565b5f610732612284565b60607f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df0060030180546105e7906140c0565b5f6106728261228e565b808015610f3a5750610f3a336112f7565b15610f71576040517fed551c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106e282826122da565b610f86848484610737565b73ffffffffffffffffffffffffffffffffffffffff83163b15610fe557610faf8484848461238f565b610fe5576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b610a8b868686868686612505565b606061100482612614565b61103a576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61067282612691565b7f59b501c3653afc186af7d48dda36cf6732bd21629a6295693664240a6ef520008054640100000000900460ff16158061108057303b151561108f565b8154600163ffffffff90911610155b156110d15781546040517f5477bbf800000000000000000000000000000000000000000000000000000000815263ffffffff9091166004820152602401610bef565b81547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000166001178255801561112e5781547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff166401000000001782555b61113884846129ad565b8015610fe55781547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff168255604051600181527fe9c9b456cb2994b80aeef036cf59d26e9617df80f816a6ee5a5b4166e07e2f5c9060200160405180910390a150505050565b7f59b501c3653afc186af7d48dda36cf6732bd21629a6295693664240a6ef5200054640100000000900460ff16611201576040517f77a399b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106e282826129ad565b6060610732612a09565b73ffffffffffffffffffffffffffffffffffffffff8083165f9081527f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df076020908152604080832093851683529290529081205460ff16610a9e565b5f61127a82612614565b6112b0576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505f9081527f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df06602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b5f807f0c89d3aad1b583c77a2e9f9fffa651b386c9c29e300bf2a8e2f3de1bb0100a00905073ffffffffffffffffffffffffffffffffffffffff83167f7fc24c9500f4388b797f8975c0991ad4ffd0338c2cbf5335b2bf5b7fe57477005473ffffffffffffffffffffffffffffffffffffffff1614801590610a9e575073ffffffffffffffffffffffffffffffffffffffff83165f9081526001820160205260409020541580610a9e575073ffffffffffffffffffffffffffffffffffffffff83165f90815260018201602052604090205442109392505050565b6106e282826001612a3a565b5f8181527f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df046020526040812054907f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00907c0100000000000000000000000000000000000000000000000000000000831690036114dc57815f036114d65780548310611495576040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092015f81815260048401602052604090205490929091508115611496575b50919050565b506040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8416158015906115385750611538846112f7565b1561156f576040517fed551c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fe5565b61156f848483612b91565b5f611588612284565b65ffffffffffff1682106115f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f566f7465733a20667574757265206c6f6f6b75700000000000000000000000006044820152606401610bef565b61164d61160483612c8f565b73ffffffffffffffffffffffffffffffffffffffff85165f9081527f423fcc3514229d79a30fb79b40a232f70b3fabdf664a75db0859c67848497f666020526040902090612ca8565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169392505050565b61167d866002612df3565b611687855f612df3565b61169083612e25565b5f8481527f7fc24c9500f4388b797f8975c0991ad4ffd0338c2cbf5335b2bf5b7fe57477016020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff881690811790915581516080810183528a81528084018a90528083018990524260608201529084527f7fc24c9500f4388b797f8975c0991ad4ffd0338c2cbf5335b2bf5b7fe574770290925290912081517f7fc24c9500f4388b797f8975c0991ad4ffd0338c2cbf5335b2bf5b7fe574770092919081906117799082614156565b506020820151600182019061178e9082614156565b50604082810151600283015560609092015160039182015581518083018352858152602080820186905273ffffffffffffffffffffffffffffffffffffffff88165f9081529285019052919020815181906117e99082614156565b50602082015160018201906117fe9082614156565b50505050505050505050565b7f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00545f829003611866576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118725f84838561150f565b73ffffffffffffffffffffffffffffffffffffffff83165f8181527f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df056020908152604080832080546801000000000000000188020190558483527f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df0490915281206001851460e11b4260a01b178317905582840190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b8181146119695780835f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f5fa4600101611933565b50815f036119a3576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df005550610b7c5f848385611574565b6119dd816001612df3565b7f7fc24c9500f4388b797f8975c0991ad4ffd0338c2cbf5335b2bf5b7fe5747704611a088282614156565b507f8fe3adc25723aa6a0b7eb4b4bacf52e92165c180bde5353f7cf606fbf5591f2b81604051611a389190613b05565b60405180910390a150565b606043611a4e612284565b65ffffffffffff1614611abd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f566f7465733a2062726f6b656e20636c6f636b206d6f646500000000000000006044820152606401610bef565b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b611afe81612e25565b7f7fc24c9500f4388b797f8975c0991ad4ffd0338c2cbf5335b2bf5b7fe5747700805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff00000000000000000000000000000000000000009091168117825560408051918252517f64c14256e532eac2ec90ddc4973ed2d3f5623faf7951d90eec38f9b7812f99a79181900360200190a15050565b73ffffffffffffffffffffffffffffffffffffffff8281165f8181527f423fcc3514229d79a30fb79b40a232f70b3fabdf664a75db0859c67848497f65602052604080822080548686167fffffffffffffffffffffffff0000000000000000000000000000000000000000821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4610b7c8183611c4686612e69565b612e73565b611c826040518060c0016040528060608152602001606081526020015f81526020015f815260200160608152602001606081525090565b73ffffffffffffffffffffffffffffffffffffffff82165f9081527f7fc24c9500f4388b797f8975c0991ad4ffd0338c2cbf5335b2bf5b7fe5747702602090815260408083207f7fc24c9500f4388b797f8975c0991ad4ffd0338c2cbf5335b2bf5b7fe574770390925291829020825160c0810190935281549192909181908490611d0c906140c0565b80601f0160208091040260200160405190810160405280929190818152602001828054611d38906140c0565b8015611d835780601f10611d5a57610100808354040283529160200191611d83565b820191905f5260205f20905b815481529060010190602001808311611d6657829003601f168201915b50505050508152602001836001018054611d9c906140c0565b80601f0160208091040260200160405190810160405280929190818152602001828054611dc8906140c0565b8015611e135780601f10611dea57610100808354040283529160200191611e13565b820191905f5260205f20905b815481529060010190602001808311611df657829003601f168201915b505050505081526020018360020154815260200183600301548152602001825f018054611e3f906140c0565b80601f0160208091040260200160405190810160405280929190818152602001828054611e6b906140c0565b8015611eb65780601f10611e8d57610100808354040283529160200191611eb6565b820191905f5260205f20905b815481529060010190602001808311611e9957829003601f168201915b50505050508152602001826001018054611ecf906140c0565b80601f0160208091040260200160405190810160405280929190818152602001828054611efb906140c0565b8015611f465780601f10611f1d57610100808354040283529160200191611f46565b820191905f5260205f20905b815481529060010190602001808311611f2957829003601f168201915b505050505081525092505050919050565b5f73ffffffffffffffffffffffffffffffffffffffff8216611fa5576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff165f9081527f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df05602052604090205467ffffffffffffffff1690565b336120476103928373ffffffffffffffffffffffffffffffffffffffff165f9081527f7fc24c9500f4388b797f8975c0991ad4ffd0338c2cbf5335b2bf5b7fe5747702602052604090206002015490565b73ffffffffffffffffffffffffffffffffffffffff1614610c01576040517fdbfcf17d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61209f846002612df3565b6120a9835f612df3565b73ffffffffffffffffffffffffffffffffffffffff85165f9081527f7fc24c9500f4388b797f8975c0991ad4ffd0338c2cbf5335b2bf5b7fe5747702602052604090207f7fc24c9500f4388b797f8975c0991ad4ffd0338c2cbf5335b2bf5b7fe574770090806121198782614156565b50600181016121288682614156565b5073ffffffffffffffffffffffffffffffffffffffff87165f90815260038301602052604090208061215a8682614156565b50600181016121698582614156565b5060405173ffffffffffffffffffffffffffffffffffffffff8916907f66da702131703ee5e745ecf2f5b98311caa00729edd55541baad49289fc42ed8905f90a25050505050505050565b5f6121bd612284565b65ffffffffffff16821061222d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f566f7465733a20667574757265206c6f6f6b75700000000000000000000000006044820152606401610bef565b61226061223983612c8f565b7f423fcc3514229d79a30fb79b40a232f70b3fabdf664a75db0859c67848497f6790612ca8565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1692915050565b5f610732436130d1565b73ffffffffffffffffffffffffffffffffffffffff81165f9081527f423fcc3514229d79a30fb79b40a232f70b3fabdf664a75db0859c67848497f6660205260408120612260906130e8565b335f8181527f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df076020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6040517f150b7a020000000000000000000000000000000000000000000000000000000081525f9073ffffffffffffffffffffffffffffffffffffffff85169063150b7a02906123e990339089908890889060040161426d565b6020604051808303815f875af1925050508015612441575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261243e918101906142c7565b60015b6124b6573d80801561246e576040519150601f19603f3d011682016040523d82523d5f602084013e612473565b606091505b5080515f036124ae576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001490505b949350505050565b8342111561256f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f566f7465733a207369676e6174757265206578706972656400000000000000006044820152606401610bef565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf602082015273ffffffffffffffffffffffffffffffffffffffff88169181019190915260608101869052608081018590525f906125f5906125ed9060a00160405160208183030381529060405280519060200120613135565b858585613160565b905061260181876131a5565b61260b8188611b96565b50505050505050565b5f7f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df0054821080156106725750505f9081527f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df0460205260409020547c0100000000000000000000000000000000000000000000000000000000161590565b5f8181527f7fc24c9500f4388b797f8975c0991ad4ffd0338c2cbf5335b2bf5b7fe574770160205260409020546060907f7fc24c9500f4388b797f8975c0991ad4ffd0338c2cbf5335b2bf5b7fe57477009073ffffffffffffffffffffffffffffffffffffffff1680612730576040517faf5f208f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81165f9081526002830160205260409020600181018054612765906140c0565b1590506128015780600101805461277b906140c0565b80601f01602080910402602001604051908101604052809291908181526020018280546127a7906140c0565b80156127f25780601f106127c9576101008083540402835291602001916127f2565b820191905f5260205f20905b8154815290600101906020018083116127d557829003601f168201915b50505050509350505050919050565b5f836004018054612811906140c0565b80601f016020809104026020016040519081016040528092919081815260200182805461283d906140c0565b80156128885780601f1061285f57610100808354040283529160200191612888565b820191905f5260205f20905b81548152906001019060200180831161286b57829003601f168201915b505050505090505f81519050805f036128cd576040517fcd251ac500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160018203815181106128e2576128e2614306565b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167f2f000000000000000000000000000000000000000000000000000000000000001461297c57816129508573ffffffffffffffffffffffffffffffffffffffff16613249565b60405160200161296192919061434a565b60405160208183030381529060405295505050505050919050565b8161299c8573ffffffffffffffffffffffffffffffffffffffff16613249565b604051602001612961929190614385565b6129d67f80ac58cd00000000000000000000000000000000000000000000000000000000613329565b6129ff7f5b5e139f00000000000000000000000000000000000000000000000000000000613329565b6106e2828261347e565b60607f7fc24c9500f4388b797f8975c0991ad4ffd0338c2cbf5335b2bf5b7fe574770060040180546105e7906140c0565b5f612a4483610ce0565b90508115612af1573373ffffffffffffffffffffffffffffffffffffffff821614612af15773ffffffffffffffffffffffffffffffffffffffff81165f9081527f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df076020908152604080832033845290915290205460ff16612af1576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8381527f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df06602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff88811691821790925591518693918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a450505050565b73ffffffffffffffffffffffffffffffffffffffff8316612be457612be17f423fcc3514229d79a30fb79b40a232f70b3fabdf664a75db0859c67848497f676134e1612bdc846134ec565b613519565b50505b73ffffffffffffffffffffffffffffffffffffffff8216612c3257612c2f7f423fcc3514229d79a30fb79b40a232f70b3fabdf664a75db0859c67848497f67613561612bdc846134ec565b50505b73ffffffffffffffffffffffffffffffffffffffff8381165f9081527f423fcc3514229d79a30fb79b40a232f70b3fabdf664a75db0859c67848497f656020526040808220548584168352912054610b7c92918216911683612e73565b5f6401000000008210612ca457612ca461356c565b5090565b81545f9081816005811115612d89575f612d488470ffffffffffffffffffffffffffffffffff811160071b81811c68ffffffffffffffffff1060061b1781811c64ffffffffff1060051b1781811c62ffffff1060041b1781811c620100000160b5600192831c1b0260121c80830401811c80830401811c80830401811c80830401811c80830401811c80830401811c80830401901c908190048111900390565b612d5290856143c6565b5f8881526020902090915081015463ffffffff9081169087161015612d7957809150612d87565b612d848160016143d9565b92505b505b5f612d9687878585613579565b90508015612de657612dba87612dad6001846143c6565b5f91825260209091200190565b5464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16612de8565b5f5b979650505050505050565b80825110156106e2576106e27f947d5a84000000000000000000000000000000000000000000000000000000006135cd565b73ffffffffffffffffffffffffffffffffffffffff8116610c0157610c017fe6c4247b000000000000000000000000000000000000000000000000000000006135cd565b5f61067282610d72565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612eae57505f81115b15610b7c5773ffffffffffffffffffffffffffffffffffffffff831615612fc05773ffffffffffffffffffffffffffffffffffffffff83165f9081527f423fcc3514229d79a30fb79b40a232f70b3fabdf664a75db0859c67848497f66602052604081208190612f2490613561612bdc866134ec565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691508473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051612fb5929190918252602082015260400190565b60405180910390a250505b73ffffffffffffffffffffffffffffffffffffffff821615610b7c5773ffffffffffffffffffffffffffffffffffffffff82165f9081527f423fcc3514229d79a30fb79b40a232f70b3fabdf664a75db0859c67848497f66602052604081208190613031906134e1612bdc866134ec565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691508373ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516130c2929190918252602082015260400190565b60405180910390a25050505050565b5f66010000000000008210612ca457612ca461356c565b80545f90801561312d5761310183612dad6001846143c6565b5464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610a9e565b5f9392505050565b5f6106727f219639d1c7dec7d049ffb8dc11e39f070f052764b142bd61682a7811a502a600836135d5565b5f604051855f5260ff851660205283604052826060526020600160805f60015afa5191503d61319657638baa579f5f526004601cfd5b5f606052604052949350505050565b73ffffffffffffffffffffffffffffffffffffffff82165f9081527fda5d6d87446d81938877f0ee239dac391146dd7466ea30567f72becf06773c0060205260409020805460018101909155818114610b7c576040517f752d88c000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604401610bef565b60606132548261361c565b6028602282019081209192507f4040404040404040404040404040404040404040404040404040404040404040917f8888888888888888888888888888888888888888888888888888888888888880167e880000000000000000000000000000000000000000000000000000000000005f5b82811a82028180015260018101907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed016132c657505050818151165f511660011c8151188152602081019050818151166020511660011c81511881525050919050565b7fffffffff0000000000000000000000000000000000000000000000000000000081165f9081527f81088bbc801e045ea3e7620779ab349988f58afbdfba10dff983df3f33522b00602052604090205460ff166133fd577fffffffff0000000000000000000000000000000000000000000000000000000081165f9081527f81088bbc801e045ea3e7620779ab349988f58afbdfba10dff983df3f33522b006020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905561342f565b6040517ff2cfeefa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fffffffff000000000000000000000000000000000000000000000000000000008216907f78f84e5b1c5c05be2b5ad3800781dd404d6d6c6302bc755c0fe20f58a33a7f22905f90a250565b7f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df007f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df026134ca8482614156565b50600381016134d98382614156565b505f90555050565b5f610a9e82846143ec565b5f7c01000000000000000000000000000000000000000000000000000000008210612ca457612ca461356c565b5f5f613554613536613529612284565b65ffffffffffff16612c8f565b61354c613542886130e8565b868863ffffffff16565b87919061365e565b915091505b935093915050565b5f610a9e8284614420565b6335278d125f526004601cfd5b5f5b818310156135c5575f8581526020902083831684841860011c019081015463ffffffff868116911611156135b1578092506135bf565b6135bc8160016143d9565b93505b5061357b565b509392505050565b805f5260045ffd5b5f610a9e6135e28461366b565b7f19010000000000000000000000000000000000000000000000000000000000005f90815260029190915260228481526042822091905290565b606061362782613675565b805161307882526002017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe90910190815292915050565b5f80613554858585613700565b5f6106728261390d565b60606040519050608081016040526f30313233343536373839616263646566600f5260028101905060288152602081015f60288201528260601b92505f5b808101820184821a600f81165160018301538060041c518253505060018101907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed016136b3575050919050565b82545f908190801561389f575f61371c87612dad6001856143c6565b60408051808201909152905463ffffffff8082168084526401000000009092047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16602084015291925090871610156137cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b65797300000000006044820152606401610bef565b805163ffffffff80881691160361382b57846137ee88612dad6001866143c6565b80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092166401000000000263ffffffff90921691909117905561388f565b6040805180820190915263ffffffff80881682527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8088166020808501918