2 txs
3 calls
constructor
constructor(address _rolesManager, address _paymentSplitter, address _accountManager, address _initialOwner, address _pauser)
functions
_customName
viewfunction _customName() view returns (string)
_customSymbol
viewfunction _customSymbol() view returns (string)
ACCOUNT_MANAGER
viewfunction ACCOUNT_MANAGER() view returns (address)
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
cooldown
viewfunction cooldown() view returns (uint256)
defilyNFTsIdCounter
viewfunction defilyNFTsIdCounter() view returns (uint256)
getAllNFTCollections
viewfunction getAllNFTCollections() view returns (tuple[])
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
isPaused
viewfunction isPaused() view returns (bool)
name
viewfunction name() view returns (string)
nftCollections
viewfunction nftCollections(uint256) view returns (string baseURI, string name, uint256 price, uint256 createdAt, uint256 tokensCount, uint256 tokensLimit)
nftCollectionsIdCounter
viewfunction nftCollectionsIdCounter() view returns (uint256)
nftIdToPurchaseForLPTime
viewfunction nftIdToPurchaseForLPTime(address) view returns (uint256)
owner
viewfunction owner() view returns (address)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
paused
viewfunction paused() view returns (bool)
PAYMENT_SPLITTER
viewfunction PAYMENT_SPLITTER() view returns (address)
ROLES_MANAGER
viewfunction ROLES_MANAGER() view returns (address)
safeTransferFrom
purefunction safeTransferFrom(address, address, uint256, bytes) pure
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
tokenURI
viewfunction tokenURI(uint256 tokenId) view returns (string)
approve
nonpayablefunction approve(address to, uint256 tokenId)
buyNFT
nonpayablefunction buyNFT(tuple _data, string _CID)
emergencyPause
nonpayablefunction emergencyPause()
emergencyUnpause
nonpayablefunction emergencyUnpause()
migrateNFT
nonpayablefunction migrateNFT(tuple[] _data, address[] _nftOwnerAddress, uint96[] _sponsorNftId, string[] _CID)
renounceOwnership
nonpayablefunction renounceOwnership()
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setContractsAddress
nonpayablefunction setContractsAddress(address _address, uint8 _contract)
setCooldown
nonpayablefunction setCooldown(uint256 _cooldown)
setNewNFTCollection
nonpayablefunction setNewNFTCollection(string _name, string _uri, uint256 _price)
transferFrom
nonpayablefunction transferFrom(address, address _to, uint256 _tokenId)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateNFTCollection
nonpayablefunction updateNFTCollection(uint96 _id, string _name, string _uri, uint256 _price)
events
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
BatchMetadataUpdate
event BatchMetadataUpdate(uint256 _fromTokenId, uint256 _toTokenId)
MetadataUpdate
event MetadataUpdate(uint256 _tokenId)
NFTBought
event NFTBought(address indexed signer, uint256 indexed tokenId, address sponsorAddress, uint256 indexed sponsorNFTId, uint256 price)
NFTMigrated
event NFTMigrated(address nftOwner, uint96 tokenId, uint96 sponsorNftId, uint256 timestamp)
NFTtransfer
event NFTtransfer(address oldOwner, address newOwner, uint96 tokenId, uint256 timestamp)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
Unpaused
event Unpaused(address account)
errors
AccessDenied
error AccessDenied()
EnforcedPause
error EnforcedPause()
ERC721IncorrectOwner
error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner)
ERC721InsufficientApproval
error ERC721InsufficientApproval(address operator, uint256 tokenId)
ERC721InvalidApprover
error ERC721InvalidApprover(address approver)
ERC721InvalidOperator
error ERC721InvalidOperator(address operator)
ERC721InvalidOwner
error ERC721InvalidOwner(address owner)
ERC721InvalidReceiver
error ERC721InvalidReceiver(address receiver)
ERC721InvalidSender
error ERC721InvalidSender(address sender)
ERC721NonexistentToken
error ERC721NonexistentToken(uint256 tokenId)
ExpectedPause
error ExpectedPause()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
V1
error V1()
V2
error V2()
V3
error V3()
V6
error V6()
creation bytecode
0x608060405234801562000010575f80fd5b506040516200569a3803806200569a833981810160405281019062000036919062000388565b6040518060400160405280600a81526020017f446566696c79204e4654000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f444e465400000000000000000000000000000000000000000000000000000000815250835f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000116575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016200010d91906200041d565b60405180910390fd5b62000127816200026060201b60201c565b506001600c8190555081600d90816200014191906200069c565b5080600e90816200015391906200069c565b505050845f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508360015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505062000780565b5f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620003528262000327565b9050919050565b620003648162000346565b81146200036f575f80fd5b50565b5f81519050620003828162000359565b92915050565b5f805f805f60a08688031215620003a457620003a362000323565b5b5f620003b38882890162000372565b9550506020620003c68882890162000372565b9450506040620003d98882890162000372565b9350506060620003ec8882890162000372565b9250506080620003ff8882890162000372565b9150509295509295909350565b620004178162000346565b82525050565b5f602082019050620004325f8301846200040c565b92915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620004b457607f821691505b602082108103620004ca57620004c96200046f565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200052e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620004f1565b6200053a8683620004f1565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620005846200057e620005788462000552565b6200055b565b62000552565b9050919050565b5f819050919050565b6200059f8362000564565b620005b7620005ae826200058b565b848454620004fd565b825550505050565b5f90565b620005cd620005bf565b620005da81848462000594565b505050565b5b818110156200060157620005f55f82620005c3565b600181019050620005e0565b5050565b601f82111562000650576200061a81620004d0565b6200062584620004e2565b8101602085101562000635578190505b6200064d6200064485620004e2565b830182620005df565b50505b505050565b5f82821c905092915050565b5f620006725f198460080262000655565b1980831691505092915050565b5f6200068c838362000661565b9150826002028217905092915050565b620006a78262000438565b67ffffffffffffffff811115620006c357620006c262000442565b5b620006cf82546200049c565b620006dc82828562000605565b5f60209050601f83116001811462000712575f8415620006fd578287015190505b6200070985826200067f565b86555062000778565b601f1984166200072286620004d0565b5f5b828110156200074b5784890151825560018201915060208501945060208101905062000724565b868310156200076b578489015162000767601f89168262000661565b8355505b6001600288020188555050505b505050505050565b614f0c806200078e5f395ff3fe608060405234801561000f575f80fd5b5060043610610225575f3560e01c8063715018a61161012e578063b187bd26116100b6578063cf61b2f21161007a578063cf61b2f21461061e578063e97c46b21461063a578063e985e9c514610658578063f2fde38b14610688578063f41e685d146106a457610225565b8063b187bd2614610561578063b88d4fde1461057f578063bc5929531461059b578063bfca66c9146105b9578063c87b56dd146105ee57610225565b80638da5cb5b116100fd5780638da5cb5b146104bb57806395d89b41146104d95780639d911197146104f7578063a22cb46514610527578063a5f0292b1461054357610225565b8063715018a61461045957806376a6bf2c14610463578063787a08a61461047f5780638690e43b1461049d57610225565b806342842e0e116101b157806351858e271161018057806351858e27146103b35780635c975abb146103bd5780636352211e146103db5780636ee2e7d91461040b57806370a082311461042957610225565b806342842e0e146103535780634a4e3bd51461036f5780634fc3f41a1461037957806350ea849b1461039557610225565b80630b8e58c9116101f85780630b8e58c9146102c357806322288126146102e157806323b872dd146102ff5780632a764b861461031b5780633584464e1461033757610225565b806301ffc9a71461022957806306fdde0314610259578063081812fc14610277578063095ea7b3146102a7575b5f80fd5b610243600480360381019061023e91906133e4565b6106c0565b6040516102509190613429565b60405180910390f35b610261610720565b60405161026e91906134cc565b60405180910390f35b610291600480360381019061028c919061351f565b6107b0565b60405161029e9190613589565b60405180910390f35b6102c160048036038101906102bc91906135cc565b6107cb565b005b6102cb6107e1565b6040516102d891906134cc565b60405180910390f35b6102e961086d565b6040516102f691906137a9565b60405180910390f35b610319600480360381019061031491906137c9565b61087c565b005b6103356004803603810190610330919061389c565b61092f565b005b610351600480360381019061034c9190613a3d565b610cb3565b005b61036d600480360381019061036891906137c9565b610dbd565b005b610377610ddc565b005b610393600480360381019061038e919061351f565b610e84565b005b61039d610efd565b6040516103aa9190613ad4565b60405180910390f35b6103bb610f03565b005b6103c5610fab565b6040516103d29190613429565b60405180910390f35b6103f560048036038101906103f0919061351f565b610fc0565b6040516104029190613589565b60405180910390f35b610413610fd1565b6040516104209190613b48565b60405180910390f35b610443600480360381019061043e9190613b61565b610ff6565b6040516104509190613ad4565b60405180910390f35b6104616110ac565b005b61047d60048036038101906104789190613baf565b6110bf565b005b6104876112dd565b6040516104949190613ad4565b60405180910390f35b6104a56112e3565b6040516104b29190613589565b60405180910390f35b6104c3611306565b6040516104d09190613589565b60405180910390f35b6104e161132e565b6040516104ee91906134cc565b60405180910390f35b610511600480360381019061050c9190613b61565b6113be565b60405161051e9190613ad4565b60405180910390f35b610541600480360381019061053c9190613c17565b6113d3565b005b61054b6113e9565b6040516105589190613c75565b60405180910390f35b61056961140e565b6040516105769190613429565b60405180910390f35b61059960048036038101906105949190613d2c565b61141c565b005b6105a361144e565b6040516105b09190613ad4565b60405180910390f35b6105d360048036038101906105ce919061351f565b611454565b6040516105e596959493929190613dac565b60405180910390f35b6106086004803603810190610603919061351f565b611598565b60405161061591906134cc565b60405180910390f35b61063860048036038101906106339190613f6d565b6116a3565b005b6106426119e4565b60405161064f91906134cc565b60405180910390f35b610672600480360381019061066d9190614051565b611a70565b60405161067f9190613429565b60405180910390f35b6106a2600480360381019061069d9190613b61565b611afe565b005b6106be60048036038101906106b991906140d0565b611b82565b005b5f634906490660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610719575061071882611cd6565b5b9050919050565b6060600d805461072f90614199565b80601f016020809104026020016040519081016040528092919081815260200182805461075b90614199565b80156107a65780601f1061077d576101008083540402835291602001916107a6565b820191905f5260205f20905b81548152906001019060200180831161078957829003601f168201915b5050505050905090565b5f6107ba82611db7565b506107c482611e3d565b9050919050565b6107dd82826107d8611e76565b611e7d565b5050565b600780546107ee90614199565b80601f016020809104026020016040519081016040528092919081815260200182805461081a90614199565b80156108655780601f1061083c57610100808354040283529160200191610865565b820191905f5260205f20905b81548152906001019060200180831161084857829003601f168201915b505050505081565b6060610877611e8f565b905090565b61088461208c565b61088c6120d2565b610897338383612113565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630eea54d63384846040518463ffffffff1660e01b81526004016108f5939291906141d8565b5f604051808303815f87803b15801561090c575f80fd5b505af115801561091e573d5f803e3d5ffd5b5050505061092a612212565b505050565b61093761208c565b61093f6120d2565b5f33905060085f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20544210156109ba576040517f3ee569bf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a54426109c8919061423a565b60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60035f866040016020810190610a2091906142a4565b61ffff1681526020019081526020015f2090505f816002015403610a70576040517f96cd25ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806004015f815480929190610a84906142cf565b91905055505f600554905060055f815480929190610aa1906142cf565b91905055505f8060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636cfb0af8895f868b8b8b5f6040518863ffffffff1660e01b8152600401610b0e9796959493929190614560565b60408051808303815f875af1158015610b29573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b4d91906145f7565b9150915060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635647685186838588600201545f806040518763ffffffff1660e01b8152600401610bb9969594939291906146ee565b5f604051808303815f87803b158015610bd0575f80fd5b505af1158015610be2573d5f803e3d5ffd5b50505050610bf0858461221c565b610c3d8388888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050612239565b816bffffffffffffffffffffffff16838673ffffffffffffffffffffffffffffffffffffffff167f76da1cce06bef514cd31f5ad6eb50d59bdcefca95a2b95387a092ef7306096fb848860020154604051610c9992919061474d565b60405180910390a45050505050610cae612212565b505050565b610cbb6120d2565b610d1a5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16336040518060400160405280600a81526020017f535550455241444d494e00000000000000000000000000000000000000000000815250612293565b610d226122a3565b60045f815480929190610d34906142cf565b9190505550610d448383836122ad565b60035f6001600454610d569190614774565b81526020019081526020015f205f820151815f019081610d76919061493b565b506020820151816001019081610d8c919061493b565b5060408201518160020155606082015181600301556080820151816004015560a08201518160050155905050505050565b610dd783838360405180602001604052805f81525061141c565b505050565b610de46122a3565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e6a576040517f3ee569bf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e7261208c565b610e7a6122eb565b610e82612212565b565b610e8c6120d2565b610eeb5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16336040518060400160405280600a81526020017f535550455241444d494e00000000000000000000000000000000000000000000815250612293565b610ef36122a3565b80600a8190555050565b60045481565b610f0b6122a3565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f91576040517f3ee569bf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f9961208c565b610fa161234c565b610fa9612212565b565b5f60145f9054906101000a900460ff16905090565b5f610fca82611db7565b9050919050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611067575f6040517f89c62b6400000000000000000000000000000000000000000000000000000000815260040161105e9190613589565b60405180910390fd5b60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6110b46123ae565b6110bd5f612435565b565b61111e5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16336040518060400160405280600a81526020017f535550455241444d494e00000000000000000000000000000000000000000000815250612293565b6111266122a3565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361118b576040517f2fb42d7000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600281111561119e5761119d614635565b5b8160028111156111b1576111b0614635565b5b036111fa57815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506112d9565b6001600281111561120e5761120d614635565b5b81600281111561122157611220614635565b5b0361126b578160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506112d8565b60028081111561127e5761127d614635565b5b81600281111561129157611290614635565b5b036112d7578160025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b5050565b600a5481565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600e805461133d90614199565b80601f016020809104026020016040519081016040528092919081815260200182805461136990614199565b80156113b45780601f1061138b576101008083540402835291602001916113b4565b820191905f5260205f20905b81548152906001019060200180831161139757829003601f168201915b5050505050905090565b6008602052805f5260405f205f915090505481565b6113e56113de611e76565b83836124f8565b5050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f611417610fab565b905090565b6040517fdb34179500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60055481565b6003602052805f5260405f205f91509050805f01805461147390614199565b80601f016020809104026020016040519081016040528092919081815260200182805461149f90614199565b80156114ea5780601f106114c1576101008083540402835291602001916114ea565b820191905f5260205f20905b8154815290600101906020018083116114cd57829003601f168201915b5050505050908060010180546114ff90614199565b80601f016020809104026020016040519081016040528092919081815260200182805461152b90614199565b80156115765780601f1061154d57610100808354040283529160200191611576565b820191905f5260205f20905b81548152906001019060200180831161155957829003601f168201915b5050505050908060020154908060030154908060040154908060050154905086565b60606115a382611db7565b505f60135f8481526020019081526020015f2080546115c190614199565b80601f01602080910402602001604051908101604052809291908181526020018280546115ed90614199565b80156116385780601f1061160f57610100808354040283529160200191611638565b820191905f5260205f20905b81548152906001019060200180831161161b57829003601f168201915b505050505090505f611648612661565b90505f81510361165c57819250505061169e565b5f82511115611690578082604051602001611678929190614a44565b6040516020818303038152906040529250505061169e565b61169984612677565b925050505b919050565b6117025f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16336040518060400160405280600681526020017f53595354454d0000000000000000000000000000000000000000000000000000815250612293565b61170a6120d2565b6117126122a3565b5f8888905090505f8114806117275750603281115b1561175e576040517fdb34179500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b898990508110156119d8575f88888381811061177f5761177e614a67565b5b90506020020160208101906117949190613b61565b90505f8787848181106117aa576117a9614a67565b5b90506020020160208101906117bf9190614a94565b90505f8c8c858181106117d5576117d4614a67565b5b90506020028101906117e79190614acb565b6117f090614bcf565b90505f8d8d8681811061180657611805614a67565b5b90506020028101906118189190614acb565b5f0135905060018161182a919061423a565b60058190555060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636cfb0af86040518060a001604052808560200151815260200185604001516bffffffffffffffffffffffff168152602001856060015161ffff168152602001856080015181526020018560a0015160ff1681525085848c8c8b8181106118d2576118d1614a67565b5b90506020028101906118e49190614be1565b8a60016040518863ffffffff1660e01b81526004016119099796959493929190614cbd565b60408051808303815f875af1158015611924573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061194891906145f7565b505061195784835f015161221c565b6119c78189898881811061196e5761196d614a67565b5b90506020028101906119809190614be1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050612239565b505050508080600101915050611760565b50505050505050505050565b600680546119f190614199565b80601f0160208091040260200160405190810160405280929190818152602001828054611a1d90614199565b8015611a685780601f10611a3f57610100808354040283529160200191611a68565b820191905f5260205f20905b815481529060010190602001808311611a4b57829003601f168201915b505050505081565b5f60125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b611b066123ae565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b76575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401611b6d9190613589565b60405180910390fd5b611b7f81612435565b50565b611b8a6120d2565b611be95f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16336040518060400160405280600a81526020017f535550455241444d494e00000000000000000000000000000000000000000000815250612293565b611bf16122a3565b5f60035f866bffffffffffffffffffffffff1681526020019081526020015f2090505f816004015490505f826005015490505f836003015490506040518060c001604052808781526020018881526020018681526020018281526020018481526020018381525060035f8a6bffffffffffffffffffffffff1681526020019081526020015f205f820151815f019081611c8a919061493b565b506020820151816001019081611ca0919061493b565b5060408201518160020155606082015181600301556080820151816004015560a082015181600501559050505050505050505050565b5f7f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611da057507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611db05750611daf826126dd565b5b9050919050565b5f80611dc283612746565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e3457826040517f7e273289000000000000000000000000000000000000000000000000000000008152600401611e2b9190613ad4565b60405180910390fd5b80915050919050565b5f60115f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f33905090565b611e8a838383600161277f565b505050565b60605f60045467ffffffffffffffff811115611eae57611ead613919565b5b604051908082528060200260200182016040528015611ee757816020015b611ed461334c565b815260200190600190039081611ecc5790505b5090505f5b6004548110156120845760035f8281526020019081526020015f206040518060c00160405290815f82018054611f2190614199565b80601f0160208091040260200160405190810160405280929190818152602001828054611f4d90614199565b8015611f985780601f10611f6f57610100808354040283529160200191611f98565b820191905f5260205f20905b815481529060010190602001808311611f7b57829003601f168201915b50505050508152602001600182018054611fb190614199565b80601f0160208091040260200160405190810160405280929190818152602001828054611fdd90614199565b80156120285780601f10611fff57610100808354040283529160200191612028565b820191905f5260205f20905b81548152906001019060200180831161200b57829003601f168201915b5050505050815260200160028201548152602001600382015481526020016004820154815260200160058201548152505082828151811061206c5761206b614a67565b5b60200260200101819052508080600101915050611eec565b508091505090565b6002600c54036120c8576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600c81905550565b6120da610fab565b15612111576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612183575f6040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161217a9190613589565b60405180910390fd5b5f6121968383612191611e76565b61293e565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461220c578382826040517f64283d7b00000000000000000000000000000000000000000000000000000000815260040161220393929190614d2c565b60405180910390fd5b50505050565b6001600c81905550565b612235828260405180602001604052805f815250612b49565b5050565b8060135f8481526020019081526020015f209081612257919061493b565b507ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7826040516122879190613ad4565b60405180910390a15050565b61229e838383612b6c565b505050565b6122ab612bb2565b565b6122b561334c565b6040518060c001604052808481526020018581526020018381526020014281526020015f81526020015f81525090509392505050565b6122f3612c4a565b5f60145f6101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612335611e76565b6040516123429190613589565b60405180910390a1565b6123546120d2565b600160145f6101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612397611e76565b6040516123a49190613589565b60405180910390a1565b6123b6611e76565b73ffffffffffffffffffffffffffffffffffffffff166123d4611306565b73ffffffffffffffffffffffffffffffffffffffff1614612433576123f7611e76565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161242a9190613589565b60405180910390fd5b565b5f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361256857816040517f5b08ba1800000000000000000000000000000000000000000000000000000000815260040161255f9190613589565b60405180910390fd5b8060125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516126549190613429565b60405180910390a3505050565b606060405180602001604052805f815250905090565b606061268282611db7565b505f61268c612661565b90505f8151116126aa5760405180602001604052805f8152506126d5565b806126b484612c8a565b6040516020016126c5929190614a44565b6040516020818303038152906040525b915050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f600f5f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b80806127b757505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156128e9575f6127c684611db7565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561283057508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561284357506128418184611a70565b155b1561288557826040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815260040161287c9190613589565b60405180910390fd5b81156128e757838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b8360115f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b5f8061294984612746565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461298a57612989818486612d54565b5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612a15576129c95f855f8061277f565b600160105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614612a9457600160105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b84600f5f8681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b612b538383612e17565b612b67612b5e611e76565b5f858585612f0a565b505050565b612b778383836130b6565b612bad576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b5f80339050803b91505f821115612bf5576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8173ffffffffffffffffffffffffffffffffffffffff163b1115612c46576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b612c52610fab565b612c88576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60605f6001612c988461313b565b0190505f8167ffffffffffffffff811115612cb657612cb5613919565b5b6040519080825280601f01601f191660200182016040528015612ce85781602001600182028036833780820191505090505b5090505f82602083010190505b600115612d49578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581612d3e57612d3d614d61565b5b0494505f8503612cf5575b819350505050919050565b612d5f83838361328c565b612e12575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612dd357806040517f7e273289000000000000000000000000000000000000000000000000000000008152600401612dca9190613ad4565b60405180910390fd5b81816040517f177e802f000000000000000000000000000000000000000000000000000000008152600401612e0992919061474d565b60405180910390fd5b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e87575f6040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401612e7e9190613589565b60405180910390fd5b5f612e9383835f61293e565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612f05575f6040517f73c6ac6e000000000000000000000000000000000000000000000000000000008152600401612efc9190613589565b60405180910390fd5b505050565b5f8373ffffffffffffffffffffffffffffffffffffffff163b11156130af578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02868685856040518563ffffffff1660e01b8152600401612f689493929190614de0565b6020604051808303815f875af1925050508015612fa357506040513d601f19601f82011682018060405250810190612fa09190614e3e565b60015b613024573d805f8114612fd1576040519150601f19603f3d011682016040523d82523d5f602084013e612fd6565b606091505b505f81510361301c57836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016130139190613589565b60405180910390fd5b805160208201fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146130ad57836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016130a49190613589565b60405180910390fd5b505b5050505050565b5f8373ffffffffffffffffffffffffffffffffffffffff16637909185184846040518363ffffffff1660e01b81526004016130f2929190614e69565b6020604051808303815f875af115801561310e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131329190614eab565b90509392505050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310613197577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161318d5761318c614d61565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106131d4576d04ee2d6d415b85acef810000000083816131ca576131c9614d61565b5b0492506020810190505b662386f26fc10000831061320357662386f26fc1000083816131f9576131f8614d61565b5b0492506010810190505b6305f5e100831061322c576305f5e100838161322257613221614d61565b5b0492506008810190505b612710831061325157612710838161324757613246614d61565b5b0492506004810190505b60648310613274576064838161326a57613269614d61565b5b0492506002810190505b600a8310613283576001810190505b80915050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561334357508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061330457506133038484611a70565b5b8061334257508273ffffffffffffffffffffffffffffffffffffffff1661332a83611e3d565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b6040518060c0016040528060608152602001606081526020015f81526020015f81526020015f81526020015f81525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6133c38161338f565b81146133cd575f80fd5b50565b5f813590506133de816133ba565b92915050565b5f602082840312156133f9576133f8613387565b5b5f613406848285016133d0565b91505092915050565b5f8115159050919050565b6134238161340f565b82525050565b5f60208201905061343c5f83018461341a565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561347957808201518184015260208101905061345e565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61349e82613442565b6134a8818561344c565b93506134b881856020860161345c565b6134c181613484565b840191505092915050565b5f6020820190508181035f8301526134e48184613494565b905092915050565b5f819050919050565b6134fe816134ec565b8114613508575f80fd5b50565b5f81359050613519816134f5565b92915050565b5f6020828403121561353457613533613387565b5b5f6135418482850161350b565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6135738261354a565b9050919050565b61358381613569565b82525050565b5f60208201905061359c5f83018461357a565b92915050565b6135ab81613569565b81146135b5575f80fd5b50565b5f813590506135c6816135a2565b92915050565b5f80604083850312156135e2576135e1613387565b5b5f6135ef858286016135b8565b92505060206136008582860161350b565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f82825260208201905092915050565b5f61364d82613442565b6136578185613633565b935061366781856020860161345c565b61367081613484565b840191505092915050565b613684816134ec565b82525050565b5f60c083015f8301518482035f8601526136a48282613643565b915050602083015184820360208601526136be8282613643565b91505060408301516136d3604086018261367b565b5060608301516136e6606086018261367b565b5060808301516136f9608086018261367b565b5060a083015161370c60a086018261367b565b508091505092915050565b5f613722838361368a565b905092915050565b5f602082019050919050565b5f6137408261360a565b61374a8185613614565b93508360208202850161375c85613624565b805f5b8581101561379757848403895281516137788582613717565b94506137838361372a565b925060208a0199505060018101905061375f565b50829750879550505050505092915050565b5f6020820190508181035f8301526137c18184613736565b905092915050565b5f805f606084860312156137e0576137df613387565b5b5f6137ed868287016135b8565b93505060206137fe868287016135b8565b925050604061380f8682870161350b565b9150509250925092565b5f80fd5b5f60a0828403121561383257613831613819565b5b81905092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261385c5761385b61383b565b5b8235905067ffffffffffffffff8111156138795761387861383f565b5b60208301915083600182028301111561389557613894613843565b5b9250929050565b5f805f604084860312156138b3576138b2613387565b5b5f84013567ffffffffffffffff8111156138d0576138cf61338b565b5b6138dc8682870161381d565b935050602084013567ffffffffffffffff8111156138fd576138fc61338b565b5b61390986828701613847565b92509250509250925092565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61394f82613484565b810181811067ffffffffffffffff8211171561396e5761396d613919565b5b80604052505050565b5f61398061337e565b905061398c8282613946565b919050565b5f67ffffffffffffffff8211156139ab576139aa613919565b5b6139b482613484565b9050602081019050919050565b828183375f83830152505050565b5f6139e16139dc84613991565b613977565b9050828152602081018484840111156139fd576139fc613915565b5b613a088482856139c1565b509392505050565b5f82601f830112613a2457613a2361383b565b5b8135613a348482602086016139cf565b91505092915050565b5f805f60608486031215613a5457613a53613387565b5b5f84013567ffffffffffffffff811115613a7157613a7061338b565b5b613a7d86828701613a10565b935050602084013567ffffffffffffffff811115613a9e57613a9d61338b565b5b613aaa86828701613a10565b9250506040613abb8682870161350b565b9150509250925092565b613ace816134ec565b82525050565b5f602082019050613ae75f830184613ac5565b92915050565b5f819050919050565b5f613b10613b0b613b068461354a565b613aed565b61354a565b9050919050565b5f613b2182613af6565b9050919050565b5f613b3282613b17565b9050919050565b613b4281613b28565b82525050565b5f602082019050613b5b5f830184613b39565b92915050565b5f60208284031215613b7657613b75613387565b5b5f613b83848285016135b8565b91505092915050565b60038110613b98575f80fd5b50565b5f81359050613ba981613b8c565b92915050565b5f8060408385031215613bc557613bc4613387565b5b5f613bd2858286016135b8565b9250506020613be385828601613b9b565b9150509250929050565b613bf68161340f565b8114613c00575f80fd5b50565b5f81359050613c1181613bed565b92915050565b5f8060408385031215613c2d57613c2c613387565b5b5f613c3a858286016135b8565b9250506020613c4b85828601613c03565b9150509250929050565b5f613c5f82613b17565b9050919050565b613c6f81613c55565b82525050565b5f602082019050613c885f830184613c66565b92915050565b5f67ffffffffffffffff821115613ca857613ca7613919565b5b613cb182613484565b9050602081019050919050565b5f613cd0613ccb84613c8e565b613977565b905082815260208101848484011115613cec57613ceb613915565b5b613cf78482856139c1565b509392505050565b5f82601f830112613d1357613d1261383b565b5b8135613d23848260208601613cbe565b91505092915050565b5f805f8060808587031215613d4457613d43613387565b5b5f613d51878288016135b8565b9450506020613d62878288016135b8565b9350506040613d738782880161350b565b925050606085013567ffffffffffffffff811115613d9457613d9361338b565b5b613da087828801613cff565b91505092959194509250565b5f60c0820190508181035f830152613dc48189613494565b90508181036020830152613dd88188613494565b9050613de76040830187613ac5565b613df46060830186613ac5565b613e016080830185613ac5565b613e0e60a0830184613ac5565b979650505050505050565b5f8083601f840112613e2e57613e2d61383b565b5b8235905067ffffffffffffffff811115613e4b57613e4a61383f565b5b602083019150836020820283011115613e6757613e66613843565b5b9250929050565b5f8083601f840112613e8357613e8261383b565b5b8235905067ffffffffffffffff811115613ea057613e9f61383f565b5b602083019150836020820283011115613ebc57613ebb613843565b5b9250929050565b5f8083601f840112613ed857613ed761383b565b5b8235905067ffffffffffffffff811115613ef557613ef461383f565b5b602083019150836020820283011115613f1157613f10613843565b5b9250929050565b5f8083601f840112613f2d57613f2c61383b565b5b8235905067ffffffffffffffff811115613f4a57613f4961383f565b5b602083019150836020820283011115613f6657613f65613843565b5b9250929050565b5f805f805f805f806080898b031215613f8957613f88613387565b5b5f89013567ffffffffffffffff811115613fa657613fa561338b565b5b613fb28b828c01613e19565b9850985050602089013567ffffffffffffffff811115613fd557613fd461338b565b5b613fe18b828c01613e6e565b9650965050604089013567ffffffffffffffff8111156140045761400361338b565b5b6140108b828c01613ec3565b9450945050606089013567ffffffffffffffff8111156140335761403261338b565b5b61403f8b828c01613f18565b92509250509295985092959890939650565b5f806040838503121561406757614066613387565b5b5f614074858286016135b8565b9250506020614085858286016135b8565b9150509250929050565b5f6bffffffffffffffffffffffff82169050919050565b6140af8161408f565b81146140b9575f80fd5b50565b5f813590506140ca816140a6565b92915050565b5f805f80608085870312156140e8576140e7613387565b5b5f6140f5878288016140bc565b945050602085013567ffffffffffffffff8111156141165761411561338b565b5b61412287828801613a10565b935050604085013567ffffffffffffffff8111156141435761414261338b565b5b61414f87828801613a10565b92505060606141608782880161350b565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806141b057607f821691505b6020821081036141c3576141c261416c565b5b50919050565b6141d28161408f565b82525050565b5f6060820190506141eb5f83018661357a565b6141f8602083018561357a565b61420560408301846141c9565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f614244826134ec565b915061424f836134ec565b92508282019050808211156142675761426661420d565b5b92915050565b5f61ffff82169050919050565b6142838161426d565b811461428d575f80fd5b50565b5f8135905061429e8161427a565b92915050565b5f602082840312156142b9576142b8613387565b5b5f6142c684828501614290565b91505092915050565b5f6142d9826134ec565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361430b5761430a61420d565b5b600182019050919050565b5f80fd5b5f80fd5b5f80fd5b5f808335600160200384360303811261433e5761433d61431e565b5b83810192508235915060208301925067ffffffffffffffff82111561436657614365614316565b5b60018202360383131561437c5761437b61431a565b5b509250929050565b5f61438f8385613633565b935061439c8385846139c1565b6143a583613484565b840190509392505050565b5f6143be60208401846140bc565b905092915050565b6143cf8161408f565b82525050565b5f6143e36020840184614290565b905092915050565b6143f48161426d565b82525050565b5f60ff82169050919050565b61440f816143fa565b8114614419575f80fd5b50565b5f8135905061442a81614406565b92915050565b5f61443e602084018461441c565b905092915050565b61444f816143fa565b82525050565b5f60a083016144665f840184614322565b8583035f870152614478838284614384565b9250505061448960208401846143b0565b61449660208601826143c6565b506144a460408401846143d5565b6144b160408601826143eb565b506144bf6060840184614322565b85830360608701526144d2838284614384565b925050506144e36080840184614430565b6144f06080860182614446565b508091505092915050565b5f819050919050565b5f61451e614519614514846144fb565b613aed565b61408f565b9050919050565b61452e81614504565b82525050565b5f61453f838561344c565b935061454c8385846139c1565b61455583613484565b840190509392505050565b5f60c0820190508181035f830152614578818a614455565b90506145876020830189614525565b61459460408301886141c9565b81810360608301526145a7818688614534565b90506145b6608083018561357a565b6145c360a083018461341a565b98975050505050505050565b5f815190506145dd816140a6565b92915050565b5f815190506145f1816135a2565b92915050565b5f806040838503121561460d5761460c613387565b5b5f61461a858286016145cf565b925050602061462b858286016145e3565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6003811061467357614672614635565b5b50565b5f81905061468382614662565b919050565b5f61469282614676565b9050919050565b6146a281614688565b82525050565b600381106146b9576146b8614635565b5b50565b5f8190506146c9826146a8565b919050565b5f6146d8826146bc565b9050919050565b6146e8816146ce565b82525050565b5f60c0820190506147015f83018961357a565b61470e602083018861357a565b61471b60408301876141c9565b6147286060830186613ac5565b6147356080830185614699565b61474260a08301846146df565b979650505050505050565b5f6040820190506147605f83018561357a565b61476d6020830184613ac5565b9392505050565b5f61477e826134ec565b9150614789836134ec565b92508282039050818111156147a1576147a061420d565b5b92915050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026148037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826147c8565b61480d86836147c8565b95508019841693508086168417925050509392505050565b5f61483f61483a614835846134ec565b613aed565b6134ec565b9050919050565b5f819050919050565b61485883614825565b61486c61486482614846565b8484546147d4565b825550505050565b5f90565b614880614874565b61488b81848461484f565b505050565b5b818110156148ae576148a35f82614878565b600181019050614891565b5050565b601f8211156148f3576148c4816147a7565b6148cd846147b9565b810160208510156148dc578190505b6148f06148e8856147b9565b830182614890565b50505b505050565b5f82821c905092915050565b5f6149135f19846008026148f8565b1980831691505092915050565b5f61492b8383614904565b9150826002028217905092915050565b61494482613442565b67ffffffffffffffff81111561495d5761495c613919565b5b6149678254614199565b6149728282856148b2565b5f60209050601f8311600181146149a3575f8415614991578287015190505b61499b8582614920565b865550614a02565b601f1984166149b1866147a7565b5f5b828110156149d8578489015182556001820191506020850194506020810190506149b3565b868310156149f557848901516149f1601f891682614904565b8355505b6001600288020188555050505b505050505050565b5f81905092915050565b5f614a1e82613442565b614a288185614a0a565b9350614a3881856020860161345c565b80840191505092915050565b5f614a4f8285614a14565b9150614a5b8284614a14565b91508190509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215614aa957614aa8613387565b5b5f614ab6848285016140bc565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8235600160c003833603038112614ae657614ae5614abf565b5b80830191505092915050565b5f80fd5b5f80fd5b5f60c08284031215614b0f57614b0e614af2565b5b614b1960c0613977565b90505f614b288482850161350b565b5f83015250602082013567ffffffffffffffff811115614b4b57614b4a614af6565b5b614b5784828501613a10565b6020830152506040614b6b848285016140bc565b6040830152506060614b7f84828501614290565b606083015250608082013567ffffffffffffffff811115614ba357614ba2614af6565b5b614baf84828501613a10565b60808301525060a0614bc38482850161441c565b60a08301525092915050565b5f614bda3683614afa565b9050919050565b5f8083356001602003843603038112614bfd57614bfc614abf565b5b80840192508235915067ffffffffffffffff821115614c1f57614c1e614ac3565b5b602083019250600182023603831315614c3b57614c3a614ac7565b5b509250929050565b5f60a083015f8301518482035f860152614c5d8282613643565b9150506020830151614c7260208601826143c6565b506040830151614c8560408601826143eb565b5060608301518482036060860152614c9d8282613643565b9150506080830151614cb26080860182614446565b508091505092915050565b5f60c0820190508181035f830152614cd5818a614c43565b9050614ce460208301896141c9565b614cf160408301886141c9565b8181036060830152614d04818688614534565b9050614d13608083018561357a565b614d2060a083018461341a565b98975050505050505050565b5f606082019050614d3f5f83018661357a565b614d4c6020830185613ac5565b614d59604083018461357a565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f614db282614d8e565b614dbc8185614d98565b9350614dcc81856020860161345c565b614dd581613484565b840191505092915050565b5f608082019050614df35f83018761357a565b614e00602083018661357a565b614e0d6040830185613ac5565b8181036060830152614e1f8184614da8565b905095945050505050565b5f81519050614e38816133ba565b92915050565b5f60208284031215614e5357614e52613387565b5b5f614e6084828501614e2a565b91505092915050565b5f604082019050614e7c5f83018561357a565b8181036020830152614e8e8184613494565b90509392505050565b5f81519050614ea581613bed565b92915050565b5f60208284031215614ec057614ebf613387565b5b5f614ecd84828501614e97565b9150509291505056fea264697066735822122085b4dd483097fdaf6fbe37df78ee3563d2226fed95f504d966cede536218b2e264736f6c63430008180033000000000000000000000000f79641d66bf22e777f9cf74bdaf535cb2539490900000000000000000000000072ea08b038597a42147c3dbe5f3aad3e3ac87cd5000000000000000000000000385b7afcb963e0bb5d9f281caa20810cf1b8c3780000000000000000000000001bd41c988fd8807a73e79cfb465df488e73d6c0d0000000000000000000000002ee70f0585d83f523ae876f86b8df2c6c8677a99