0 txs
1 call
constructor
constructor(address _rolesManager, address _storageAdministrator, address _initialOwner)
functions
addressRefToLink
viewfunction addressRefToLink(address) view returns (string)
getIPFSLink
viewfunction getIPFSLink(uint96 _nftId) view returns (string)
getMyDirectSponsorAddress
viewfunction getMyDirectSponsorAddress(address _address) view returns (address)
getMyNFTIds
viewfunction getMyNFTIds(address _address) view returns (uint96[])
getMySponsorNFTId
viewfunction getMySponsorNFTId(uint96 _nftId) view returns (uint96)
getMySponsorRefLinkFromMyAddress
viewfunction getMySponsorRefLinkFromMyAddress(address _address) view returns (string)
getNFTAccountById
viewfunction getNFTAccountById(uint96 _id) view returns (tuple)
getNFTidFromARefLink
viewfunction getNFTidFromARefLink(string _link) view returns (uint96)
getSponsorAddressByReferralLink
viewfunction getSponsorAddressByReferralLink(string _link) view returns (address)
getSponsorDataByAddress
viewfunction getSponsorDataByAddress(address _address) view returns (address[])
getUsersRegisteredBulk
viewfunction getUsersRegisteredBulk(uint96 _fromIndex, uint96 _limit) view returns (address[] users)
isAnSponsor
viewfunction isAnSponsor(address) view returns (bool)
isImageIdSelected
viewfunction isImageIdSelected(uint96) view returns (bool)
isPaused
viewfunction isPaused() view returns (bool)
LAST_IMG_USED
viewfunction LAST_IMG_USED() view returns (uint96)
nftIPFSLink
viewfunction nftIPFSLink(uint96) view returns (string)
nftReferrentToAnIndex
viewfunction nftReferrentToAnIndex(uint96) view returns (uint96)
nftRegistered
viewfunction nftRegistered(uint96) view returns (bool)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
ROLES_MANAGER
viewfunction ROLES_MANAGER() view returns (address)
sponsorDirectReferral
viewfunction sponsorDirectReferral(uint96) view returns (address)
sponsorDirectReferralCount
viewfunction sponsorDirectReferralCount(address) view returns (uint96)
sponsorNftIDFromANFT
viewfunction sponsorNftIDFromANFT(uint96) view returns (uint96)
STORAGE_ADMINISTRATOR
viewfunction STORAGE_ADMINISTRATOR() view returns (address)
totalUsersRegistered
viewfunction totalUsersRegistered() view returns (uint96)
userHasNFT
viewfunction userHasNFT(address, uint96) view returns (bool)
userNFTAccount
viewfunction userNFTAccount(uint96) view returns (string name, uint96 nftImgId, uint96 NFT_COLLECTION_ID, uint96 tokenId, address ownerAddress, string referralsLink, uint96 planId, uint256 createdAt, uint256 membershipPlanBoughtDate)
userNFTIds
viewfunction userNFTIds(address, uint256) view returns (uint96)
emergencyPause
nonpayablefunction emergencyPause()
emergencyUnpause
nonpayablefunction emergencyUnpause()
renounceOwnership
nonpayablefunction renounceOwnership()
saveNFTAccount
nonpayablefunction saveNFTAccount(tuple _data, address _sponsorAddress, uint96 _sponsorNFTId, string _referralLink, uint8 _side, string _ipfsLink)
setContractsAddress
nonpayablefunction setContractsAddress(address _address, uint8 _contract)
transferNFT
nonpayablefunction transferNFT(address _oldOwner, address _newOwner, uint96 _tokenId)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
Unpaused
event Unpaused(address account)
errors
AccessDenied
error AccessDenied()
EnforcedPause
error EnforcedPause()
ExpectedPause
error ExpectedPause()
N1
error N1()
N2
error N2()
N3
error N3()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
V1
error V1()
V3
error V3()
V4
error V4()
creation bytecode
0x60806040523480156200001157600080fd5b5060405162004f2938038062004f29833981810160405281019062000037919062000282565b80600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000ad5760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000a49190620002ef565b60405180910390fd5b620000be816200015260201b60201c565b50600160178190555082601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050506200030c565b6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200024a826200021d565b9050919050565b6200025c816200023d565b81146200026857600080fd5b50565b6000815190506200027c8162000251565b92915050565b6000806000606084860312156200029e576200029d62000218565b5b6000620002ae868287016200026b565b9350506020620002c1868287016200026b565b9250506040620002d4868287016200026b565b9150509250925092565b620002e9816200023d565b82525050565b6000602082019050620003066000830184620002de565b92915050565b614c0d806200031c6000396000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c806371b0859b11610125578063b187bd26116100ad578063e14a39101161007c578063e14a3910146106d9578063e550a51e146106f5578063efb8d49d14610725578063f2fde38b14610755578063ff51ea6a146107715761021c565b8063b187bd261461062b578063c0a5a8cd14610649578063cb47066414610679578063d5463067146106a95761021c565b80638a6be067116100f45780638a6be0671461054d5780638bf7e6c71461057d5780638da5cb5b146105ad578063927ae7c5146105cb578063a457fd0d146105fb5761021c565b806371b0859b146104b357806376a6bf2c146104e3578063858ce6bb146104ff5780638690e43b1461052f5761021c565b806351858e27116101a85780635e3355aa116101775780635e3355aa146103e95780635e3cafb91461041957806367eb8560146104495780636bf59f5c14610479578063715018a6146104a95761021c565b806351858e271461037357806359c606131461037d5780635ae461d21461039b5780635c975abb146103cb5761021c565b8063243717e0116101ef578063243717e0146102a95780632ab1c188146102d957806343441837146103095780634a4e3bd5146103395780634fffd0b9146103435761021c565b8063085a512f146102215780630a2dd68d146102515780630d82cfa11461026f5780630eea54d61461028d575b600080fd5b61023b6004803603810190610236919061385f565b6107a9565b604051610248919061394a565b60405180910390f35b610259610815565b604051610266919061397b565b60405180910390f35b61027761083b565b60405161028491906139bd565b60405180910390f35b6102a760048036038101906102a29190613a04565b610857565b005b6102c360048036038101906102be9190613a57565b610c7b565b6040516102d09190613cef565b60405180910390f35b6102f360048036038101906102ee9190613a57565b611073565b60405161030091906139bd565b60405180910390f35b610323600480360381019061031e9190613a57565b611085565b6040516103309190613d2c565b60405180910390f35b6103416110a5565b005b61035d6004803603810190610358919061385f565b611140565b60405161036a9190613db6565b60405180910390f35b61037b611213565b005b6103856112ae565b60405161039291906139bd565b60405180910390f35b6103b560048036038101906103b09190613e04565b6112cc565b6040516103c291906139bd565b60405180910390f35b6103d361131d565b6040516103e09190613d2c565b60405180910390f35b61040360048036038101906103fe9190613e44565b611334565b6040516104109190613d2c565b60405180910390f35b610433600480360381019061042e919061385f565b611363565b60405161044091906139bd565b60405180910390f35b610463600480360381019061045e919061385f565b61138e565b604051610470919061397b565b60405180910390f35b610493600480360381019061048e9190613a57565b6113f7565b6040516104a0919061397b565b60405180910390f35b6104b161142a565b005b6104cd60048036038101906104c89190613a57565b61143e565b6040516104da91906139bd565b60405180910390f35b6104fd60048036038101906104f89190613ea9565b611469565b005b61051960048036038101906105149190613a57565b611540565b6040516105269190613f33565b60405180910390f35b6105376115e0565b604051610544919061397b565b60405180910390f35b6105676004803603810190610562919061385f565b611606565b6040516105749190613f33565b60405180910390f35b61059760048036038101906105929190613fba565b6116d7565b6040516105a491906139bd565b60405180910390f35b6105b561175a565b6040516105c2919061397b565b60405180910390f35b6105e560048036038101906105e09190613a57565b611784565b6040516105f29190613f33565b60405180910390f35b61061560048036038101906106109190613a57565b611845565b60405161062291906139bd565b60405180910390f35b610633611870565b6040516106409190613d2c565b60405180910390f35b610663600480360381019061065e919061385f565b61187f565b6040516106709190613f33565b60405180910390f35b610693600480360381019061068e9190613a57565b61191f565b6040516106a09190613d2c565b60405180910390f35b6106c360048036038101906106be9190613fba565b61193f565b6040516106d0919061397b565b60405180910390f35b6106f360048036038101906106ee91906143b9565b611a13565b005b61070f600480360381019061070a919061385f565b612678565b60405161071c9190613d2c565b60405180910390f35b61073f600480360381019061073a91906144a0565b612698565b60405161074c919061394a565b60405180910390f35b61076f600480360381019061076a919061385f565b6126c8565b005b61078b60048036038101906107869190613a57565b61274e565b6040516107a0999897969594939291906144ef565b60405180910390f35b606061080e600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff1661292c612985565b9050919050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a90046bffffffffffffffffffffffff1681565b61085f612a89565b61088a601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612aca565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661093a576040517fc71326c800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160036000836bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001908152602001600020600201600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610b03600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015610af857602002820191906000526020600020906000905b82829054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190600c0190602082600b01049283019260010382029150808411610aab5790505b505050505082612b32565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209080519060200190610b55929190613660565b506001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819080600181540180825580915050600190039060005260206000209060029182820401919006600c029091909190916101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550505050565b610c83613728565b60036000836bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060405180610160016040529081600082018054610cce906145b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610cfa906145b9565b8015610d475780601f10610d1c57610100808354040283529160200191610d47565b820191906000526020600020905b815481529060010190602001808311610d2a57829003601f168201915b505050505081526020016001820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160018201600c9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020016002820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160028201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382018054610e70906145b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610e9c906145b9565b8015610ee95780601f10610ebe57610100808354040283529160200191610ee9565b820191906000526020600020905b815481529060010190602001808311610ecc57829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020018280548015610f7d57602002820191906000526020600020906000905b82829054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190600c0190602082600b01049283019260010382029150808411610f305790505b505050505081526020016005820180548060200260200160405190810160405280929190818152602001828054801561101157602002820191906000526020600020906000905b82829054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190600c0190602082600b01049283019260010382029150808411610fc45790505b505050505081526020016006820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001600782015481526020016008820154815250509050919050565b600061107e82612c9a565b9050919050565b600d6020528060005260406000206000915054906101000a900460ff1681565b6110ad612d5e565b732ee70f0585d83f523ae876f86b8df2c6c8677a9973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611126576040517f3ee569bf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61112e612dc5565b611136612e0b565b61113e612e6e565b565b6060600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561120757602002820191906000526020600020906000905b82829054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190600c0190602082600b010492830192600103820291508084116111ba5790505b50505050509050919050565b61121b612d5e565b732ee70f0585d83f523ae876f86b8df2c6c8677a9973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611294576040517f3ee569bf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61129c612dc5565b6112a4612e78565b6112ac612e6e565b565b601060009054906101000a90046bffffffffffffffffffffffff1681565b600260205281600052604060002081815481106112e857600080fd5b9060005260206000209060029182820401919006600c02915091509054906101000a90046bffffffffffffffffffffffff1681565b6000601860009054906101000a900460ff16905090565b600a6020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b60076020528060005260406000206000915054906101000a90046bffffffffffffffffffffffff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60096020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611432612edb565b61143c6000612f62565b565b60136020528060005260406000206000915054906101000a90046bffffffffffffffffffffffff1681565b6114cb601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16336040518060400160405280600a81526020017f535550455241444d494e00000000000000000000000000000000000000000000815250613028565b6114d3612d5e565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611539576040517f2fb42d7000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181555050565b6004602052806000526040600020600091509050805461155f906145b9565b80601f016020809104026020016040519081016040528092919081815260200182805461158b906145b9565b80156115d85780601f106115ad576101008083540402835291602001916115d8565b820191906000526020600020905b8154815290600101906020018083116115bb57829003601f168201915b505050505081565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054611652906145b9565b80601f016020809104026020016040519081016040528092919081815260200182805461167e906145b9565b80156116cb5780601f106116a0576101008083540402835291602001916116cb565b820191906000526020600020905b8154815290600101906020018083116116ae57829003601f168201915b50505050509050919050565b6000600f83836040516116eb92919061461a565b908152602001604051809103902060009054906101000a900460ff16611718576402540be3ff9050611754565b6005838360405161172a92919061461a565b908152602001604051809103902060009054906101000a90046bffffffffffffffffffffffff1690505b92915050565b6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060046000836bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002080546117c0906145b9565b80601f01602080910402602001604051908101604052809291908181526020018280546117ec906145b9565b80156118395780601f1061180e57610100808354040283529160200191611839565b820191906000526020600020905b81548152906001019060200180831161181c57829003601f168201915b50505050509050919050565b60116020528060005260406000206000915054906101000a90046bffffffffffffffffffffffff1681565b600061187a61131d565b905090565b6006602052806000526040600020600091509050805461189e906145b9565b80601f01602080910402602001604051908101604052809291908181526020018280546118ca906145b9565b80156119175780601f106118ec57610100808354040283529160200191611917565b820191906000526020600020905b8154815290600101906020018083116118fa57829003601f168201915b505050505081565b600e6020528060005260406000206000915054906101000a900460ff1681565b600080600f848460405161195492919061461a565b908152602001604051809103902060009054906101000a900460ff1690508061197e576000611a0a565b600360006005868660405161199492919061461a565b908152602001604051809103902060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001908152602001600020600201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b91505092915050565b611a1b612a89565b611a46601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612aca565b600e600088602001516bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611abe576040517fbc7ce92300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614611e7e57600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611b9c576001600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600c6000886080015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611d5157866080015160096000600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081819054906101000a90046bffffffffffffffffffffffff1680929190611d2190614662565b91906101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550505b600060036000876bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002090506000611e37896060015160008660ff1614611da25783600501611da7565b836004015b805480602002602001604051908101604052809291908181526020018280548015611e2d57602002820191906000526020600020906000905b82829054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190600c0190602082600b01049283019260010382029150808411611de05790505b505050505061306e565b905060008460ff1614611e615780826005019080519060200190611e5c929190613660565b611e7a565b80826004019080519060200190611e79929190613660565b5b5050505b600c6000886080015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f0d5750600073ffffffffffffffffffffffffffffffffffffffff16876080015173ffffffffffffffffffffffffffffffffffffffff1614155b15611ffa578660800151600160008060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c6000896080015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b846011600089606001516bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060008081819054906101000a90046bffffffffffffffffffffffff168092919061208590614662565b91906101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550506001600d600089602001516bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508560086000896080015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550866060015160058860a0015160405161219b91906146c7565b908152602001604051809103902060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506001600f8860a001516040516121ed91906146c7565b908152602001604051809103902060006101000a81548160ff0219169083151502179055508383600660008a6080015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209182612264929190614895565b506001600e600089602001516bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000896080015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089606001516bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060026000886080015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002087606001519080600181540180825580915050600190039060005260206000209060029182820401919006600c029091909190916101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508660200151601060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550866003600089606001516bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001908152602001600020600082015181600001908161245f9190614965565b5060208201518160010160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550604082015181600101600c6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060608201518160020160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550608082015181600201600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160030190816125619190614965565b5060c082015181600401908051906020019061257e929190613660565b5060e082015181600501908051906020019061259b929190613660565b506101008201518160060160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506101208201518160070155610140820151816008015590505060008151111561263d57806004600089606001516bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002090816126379190614965565b5061266f565b6040517f16ce049b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b600b6020528060005260406000206000915054906101000a900460ff1681565b60606126c0838360008054906101000a90046bffffffffffffffffffffffff166131b561320e565b905092915050565b6126d0612edb565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036127425760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401612739919061397b565b60405180910390fd5b61274b81612f62565b50565b6003602052806000526040600020600091509050806000018054612771906145b9565b80601f016020809104026020016040519081016040528092919081815260200182805461279d906145b9565b80156127ea5780601f106127bf576101008083540402835291602001916127ea565b820191906000526020600020905b8154815290600101906020018083116127cd57829003601f168201915b5050505050908060010160009054906101000a90046bffffffffffffffffffffffff169080600101600c9054906101000a90046bffffffffffffffffffffffff16908060020160009054906101000a90046bffffffffffffffffffffffff169080600201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600301805461287f906145b9565b80601f01602080910402602001604051908101604052809291908181526020018280546128ab906145b9565b80156128f85780601f106128cd576101008083540402835291602001916128f8565b820191906000526020600020905b8154815290600101906020018083116128db57829003601f168201915b5050505050908060060160009054906101000a90046bffffffffffffffffffffffff16908060070154908060080154905089565b600060096000836bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60606000836bffffffffffffffffffffffff1667ffffffffffffffff8111156129b1576129b061400c565b5b6040519080825280602002602001820160405280156129df5781602001602082028036833780820191505090505b50905060005b846bffffffffffffffffffffffff16816bffffffffffffffffffffffff161015612a7e57612a16818563ffffffff16565b82826bffffffffffffffffffffffff1681518110612a3757612a36614a37565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505080806001019150506129e5565b508091505092915050565b612a9161131d565b15612ac8576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612b2f576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6060600060018451612b449190614a66565b67ffffffffffffffff811115612b5d57612b5c61400c565b5b604051908082528060200260200182016040528015612b8b5781602001602082028036833780820191505090505b509050600080600090505b8551816bffffffffffffffffffffffff161015612c8e57846bffffffffffffffffffffffff1686826bffffffffffffffffffffffff1681518110612bdd57612bdc614a37565b5b60200260200101516bffffffffffffffffffffffff1614612c7b5785816bffffffffffffffffffffffff1681518110612c1957612c18614a37565b5b602002602001015183836bffffffffffffffffffffffff1681518110612c4257612c41614a37565b5b60200260200101906bffffffffffffffffffffffff1690816bffffffffffffffffffffffff16815250508180612c7790614662565b9250505b8080612c8690614662565b915050612b96565b50819250505092915050565b6000600d6000836bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612d0f576040517fcb76ae1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60116000836bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614612dc3576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600260175403612e01576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002601781905550565b612e13613425565b6000601860006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612e57613465565b604051612e64919061397b565b60405180910390a1565b6001601781905550565b612e80612a89565b6001601860006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612ec4613465565b604051612ed1919061397b565b60405180910390a1565b612ee3613465565b73ffffffffffffffffffffffffffffffffffffffff16612f0161175a565b73ffffffffffffffffffffffffffffffffffffffff1614612f6057612f24613465565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401612f57919061397b565b60405180910390fd5b565b6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61303383838361346d565b613069576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b60606000600183516130809190614a9a565b67ffffffffffffffff8111156130995761309861400c565b5b6040519080825280602002602001820160405280156130c75781602001602082028036833780820191505090505b50905060005b8351816bffffffffffffffffffffffff16101561316b5783816bffffffffffffffffffffffff168151811061310557613104614a37565b5b602002602001015182826bffffffffffffffffffffffff168151811061312e5761312d614a37565b5b60200260200101906bffffffffffffffffffffffff1690816bffffffffffffffffffffffff1681525050808061316390614662565b9150506130cd565b50838184518151811061318157613180614a37565b5b60200260200101906bffffffffffffffffffffffff1690816bffffffffffffffffffffffff16815250508091505092915050565b600060016000836bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6060826bffffffffffffffffffffffff16856bffffffffffffffffffffffff161061328457600067ffffffffffffffff81111561324e5761324d61400c565b5b60405190808252806020026020018201604052801561327c5781602001602082028036833780820191505090505b50905061341d565b600084866132929190614ace565b9050836bffffffffffffffffffffffff16816bffffffffffffffffffffffff1611156132bc578390505b60006132c98783866135c1565b905086816132d79190614b0e565b6bffffffffffffffffffffffff1667ffffffffffffffff8111156132fe576132fd61400c565b5b60405190808252806020026020018201604052801561332c5781602001602082028036833780820191505090505b5092506000808890505b836bffffffffffffffffffffffff16816bffffffffffffffffffffffff161015613418576000613369828863ffffffff16565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461340a578086846bffffffffffffffffffffffff16815181106133c1576133c0614a37565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050828061340690614662565b9350505b508080600101915050613336565b505050505b949350505050565b61342d61131d565b613463576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600033905090565b6000808473ffffffffffffffffffffffffffffffffffffffff16637909185185856040518363ffffffff1660e01b81526004016134ab929190614b4e565b6020604051808303816000875af11580156134ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134ee9190614baa565b90508015801561352a57508373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614155b156135b5578473ffffffffffffffffffffffffffffffffffffffff16637909185132856040518363ffffffff1660e01b815260040161356a929190614b4e565b6020604051808303816000875af1158015613589573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135ad9190614baa565b9150506135ba565b809150505b9392505050565b6000806000905060008590505b846bffffffffffffffffffffffff16816bffffffffffffffffffffffff161015613654576000613601828663ffffffff16565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461364657828061364290614662565b9350505b5080806001019150506135ce565b50809150509392505050565b828054828255906000526020600020906001016002900481019282156137175791602002820160005b838211156136dd57835183826101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509260200192600c01602081600b01049283019260010302613689565b80156137155782816101000a8154906bffffffffffffffffffffffff0219169055600c01602081600b010492830192600103026136dd565b505b50905061372491906137d0565b5090565b6040518061016001604052806060815260200160006bffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160608152602001606081526020016060815260200160006bffffffffffffffffffffffff16815260200160008152602001600081525090565b5b808211156137e95760008160009055506001016137d1565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061382c82613801565b9050919050565b61383c81613821565b811461384757600080fd5b50565b60008135905061385981613833565b92915050565b600060208284031215613875576138746137f7565b5b60006138838482850161384a565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6138c181613821565b82525050565b60006138d383836138b8565b60208301905092915050565b6000602082019050919050565b60006138f78261388c565b6139018185613897565b935061390c836138a8565b8060005b8381101561393d57815161392488826138c7565b975061392f836138df565b925050600181019050613910565b5085935050505092915050565b6000602082019050818103600083015261396481846138ec565b905092915050565b61397581613821565b82525050565b6000602082019050613990600083018461396c565b92915050565b60006bffffffffffffffffffffffff82169050919050565b6139b781613996565b82525050565b60006020820190506139d260008301846139ae565b92915050565b6139e181613996565b81146139ec57600080fd5b50565b6000813590506139fe816139d8565b92915050565b600080600060608486031215613a1d57613a1c6137f7565b5b6000613a2b8682870161384a565b9350506020613a3c8682870161384a565b9250506040613a4d868287016139ef565b9150509250925092565b600060208284031215613a6d57613a6c6137f7565b5b6000613a7b848285016139ef565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613abe578082015181840152602081019050613aa3565b60008484015250505050565b6000601f19601f8301169050919050565b6000613ae682613a84565b613af08185613a8f565b9350613b00818560208601613aa0565b613b0981613aca565b840191505092915050565b613b1d81613996565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000613b5b8383613b14565b60208301905092915050565b6000602082019050919050565b6000613b7f82613b23565b613b898185613b2e565b9350613b9483613b3f565b8060005b83811015613bc5578151613bac8882613b4f565b9750613bb783613b67565b925050600181019050613b98565b5085935050505092915050565b6000819050919050565b613be581613bd2565b82525050565b6000610160830160008301518482036000860152613c098282613adb565b9150506020830151613c1e6020860182613b14565b506040830151613c316040860182613b14565b506060830151613c446060860182613b14565b506080830151613c5760808601826138b8565b5060a083015184820360a0860152613c6f8282613adb565b91505060c083015184820360c0860152613c898282613b74565b91505060e083015184820360e0860152613ca38282613b74565b915050610100830151613cba610100860182613b14565b50610120830151613ccf610120860182613bdc565b50610140830151613ce4610140860182613bdc565b508091505092915050565b60006020820190508181036000830152613d098184613beb565b905092915050565b60008115159050919050565b613d2681613d11565b82525050565b6000602082019050613d416000830184613d1d565b92915050565b600082825260208201905092915050565b6000613d6382613b23565b613d6d8185613d47565b9350613d7883613b3f565b8060005b83811015613da9578151613d908882613b4f565b9750613d9b83613b67565b925050600181019050613d7c565b5085935050505092915050565b60006020820190508181036000830152613dd08184613d58565b905092915050565b613de181613bd2565b8114613dec57600080fd5b50565b600081359050613dfe81613dd8565b92915050565b60008060408385031215613e1b57613e1a6137f7565b5b6000613e298582860161384a565b9250506020613e3a85828601613def565b9150509250929050565b60008060408385031215613e5b57613e5a6137f7565b5b6000613e698582860161384a565b9250506020613e7a858286016139ef565b9150509250929050565b60028110613e9157600080fd5b50565b600081359050613ea381613e84565b92915050565b60008060408385031215613ec057613ebf6137f7565b5b6000613ece8582860161384a565b9250506020613edf85828601613e94565b9150509250929050565b600082825260208201905092915050565b6000613f0582613a84565b613f0f8185613ee9565b9350613f1f818560208601613aa0565b613f2881613aca565b840191505092915050565b60006020820190508181036000830152613f4d8184613efa565b905092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112613f7a57613f79613f55565b5b8235905067ffffffffffffffff811115613f9757613f96613f5a565b5b602083019150836001820283011115613fb357613fb2613f5f565b5b9250929050565b60008060208385031215613fd157613fd06137f7565b5b600083013567ffffffffffffffff811115613fef57613fee6137fc565b5b613ffb85828601613f64565b92509250509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61404482613aca565b810181811067ffffffffffffffff821117156140635761406261400c565b5b80604052505050565b60006140766137ed565b9050614082828261403b565b919050565b600080fd5b600080fd5b600067ffffffffffffffff8211156140ac576140ab61400c565b5b6140b582613aca565b9050602081019050919050565b82818337600083830152505050565b60006140e46140df84614091565b61406c565b905082815260208101848484011115614100576140ff61408c565b5b61410b8482856140c2565b509392505050565b600082601f83011261412857614127613f55565b5b81356141388482602086016140d1565b91505092915050565b600067ffffffffffffffff82111561415c5761415b61400c565b5b602082029050602081019050919050565b600061418061417b84614141565b61406c565b905080838252602082019050602084028301858111156141a3576141a2613f5f565b5b835b818110156141cc57806141b888826139ef565b8452602084019350506020810190506141a5565b5050509392505050565b600082601f8301126141eb576141ea613f55565b5b81356141fb84826020860161416d565b91505092915050565b6000610160828403121561421b5761421a614007565b5b61422661016061406c565b9050600082013567ffffffffffffffff81111561424657614245614087565b5b61425284828501614113565b6000830152506020614266848285016139ef565b602083015250604061427a848285016139ef565b604083015250606061428e848285016139ef565b60608301525060806142a28482850161384a565b60808301525060a082013567ffffffffffffffff8111156142c6576142c5614087565b5b6142d284828501614113565b60a08301525060c082013567ffffffffffffffff8111156142f6576142f5614087565b5b614302848285016141d6565b60c08301525060e082013567ffffffffffffffff81111561432657614325614087565b5b614332848285016141d6565b60e083015250610100614347848285016139ef565b6101008301525061012061435d84828501613def565b6101208301525061014061437384828501613def565b6101408301525092915050565b600060ff82169050919050565b61439681614380565b81146143a157600080fd5b50565b6000813590506143b38161438d565b92915050565b600080600080600080600060c0888a0312156143d8576143d76137f7565b5b600088013567ffffffffffffffff8111156143f6576143f56137fc565b5b6144028a828b01614204565b97505060206144138a828b0161384a565b96505060406144248a828b016139ef565b955050606088013567ffffffffffffffff811115614445576144446137fc565b5b6144518a828b01613f64565b945094505060806144648a828b016143a4565b92505060a088013567ffffffffffffffff811115614485576144846137fc565b5b6144918a828b01614113565b91505092959891949750929550565b600080604083850312156144b7576144b66137f7565b5b60006144c5858286016139ef565b92505060206144d6858286016139ef565b9150509250929050565b6144e981613bd2565b82525050565b600061012082019050818103600083015261450a818c613efa565b9050614519602083018b6139ae565b614526604083018a6139ae565b61453360608301896139ae565b614540608083018861396c565b81810360a08301526145528187613efa565b905061456160c08301866139ae565b61456e60e08301856144e0565b61457c6101008301846144e0565b9a9950505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806145d157607f821691505b6020821081036145e4576145e361458a565b5b50919050565b600081905092915050565b600061460183856145ea565b935061460e8385846140c2565b82840190509392505050565b60006146278284866145f5565b91508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061466d82613996565b91506bffffffffffffffffffffffff820361468b5761468a614633565b5b600182019050919050565b60006146a182613a84565b6146ab81856145ea565b93506146bb818560208601613aa0565b80840191505092915050565b60006146d38284614696565b915081905092915050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261474b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261470e565b614755868361470e565b95508019841693508086168417925050509392505050565b6000819050919050565b600061479261478d61478884613bd2565b61476d565b613bd2565b9050919050565b6000819050919050565b6147ac83614777565b6147c06147b882614799565b84845461471b565b825550505050565b600090565b6147d56147c8565b6147e08184846147a3565b505050565b5b81811015614804576147f96000826147cd565b6001810190506147e6565b5050565b601f8211156148495761481a816146e9565b614823846146fe565b81016020851015614832578190505b61484661483e856146fe565b8301826147e5565b50505b505050565b600082821c905092915050565b600061486c6000198460080261484e565b1980831691505092915050565b6000614885838361485b565b9150826002028217905092915050565b61489f83836146de565b67ffffffffffffffff8111156148b8576148b761400c565b5b6148c282546145b9565b6148cd828285614808565b6000601f8311600181146148fc57600084156148ea578287013590505b6148f48582614879565b86555061495c565b601f19841661490a866146e9565b60005b828110156149325784890135825560018201915060208501945060208101905061490d565b8683101561494f578489013561494b601f89168261485b565b8355505b6001600288020188555050505b50505050505050565b61496e82613a84565b67ffffffffffffffff8111156149875761498661400c565b5b61499182546145b9565b61499c828285614808565b600060209050601f8311600181146149cf57600084156149bd578287015190505b6149c78582614879565b865550614a2f565b601f1984166149dd866146e9565b60005b82811015614a05578489015182556001820191506020850194506020810190506149e0565b86831015614a225784890151614a1e601f89168261485b565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614a7182613bd2565b9150614a7c83613bd2565b9250828203905081811115614a9457614a93614633565b5b92915050565b6000614aa582613bd2565b9150614ab083613bd2565b9250828201905080821115614ac857614ac7614633565b5b92915050565b6000614ad982613996565b9150614ae483613996565b925082820190506bffffffffffffffffffffffff811115614b0857614b07614633565b5b92915050565b6000614b1982613996565b9150614b2483613996565b925082820390506bffffffffffffffffffffffff811115614b4857614b47614633565b5b92915050565b6000604082019050614b63600083018561396c565b8181036020830152614b758184613efa565b90509392505050565b614b8781613d11565b8114614b9257600080fd5b50565b600081519050614ba481614b7e565b92915050565b600060208284031215614bc057614bbf6137f7565b5b6000614bce84828501614b95565b9150509291505056fea264697066735822122016f9267ac9d2e1654de438196f43571e5858312000e6b01523e6b10006fe271064736f6c6343000818003300000000000000000000000039572b7c375a4be0be74fcf1ce33080a001f09a400000000000000000000000052ccc4dac4463cae593d719a20334c34e51135c30000000000000000000000001bd41c988fd8807a73e79cfb465df488e73d6c0d