0 txs
0 calls
constructor
No constructor.
functions
admin
viewfunction admin() view returns (address)
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
getLastDepositId
viewfunction getLastDepositId() view returns (uint48 depositId)
getReserve
viewfunction getReserve() view returns (uint128 reserve)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
isDepositExists
viewfunction isDepositExists(uint256 depositId) view returns (bool)
lockedLiquidity
viewfunction lockedLiquidity() view returns (uint128)
name
viewfunction name() view returns (string)
nextNode
viewfunction nextNode() view returns (uint48)
nodeWithdrawView
viewfunction nodeWithdrawView(uint48 leaf) view returns (uint128 withdrawAmount)
owner
viewfunction owner() view returns (address)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
token
viewfunction token() view returns (address)
tokenByIndex
viewfunction tokenByIndex(uint256 index) view returns (uint256)
tokenOfOwnerByIndex
viewfunction tokenOfOwnerByIndex(address owner, uint256 index) view returns (uint256)
tokenURI
viewfunction tokenURI(uint256 tokenId) view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
treeNode
viewfunction treeNode(uint48) view returns (uint64 updateId, uint128 amount)
updateId
viewfunction updateId() view returns (uint64)
addDeposit
nonpayablefunction addDeposit(address depositor, uint128 amount) returns (uint48 depositId)
addLiquidity
nonpayablefunction addLiquidity(uint128 amount, uint48 depositId)
approve
nonpayablefunction approve(address to, uint256 tokenId)
changeAdmin
nonpayablefunction changeAdmin(address newAdmin)
initialize
nonpayablefunction initialize(address token_)
lockLiquidity
nonpayablefunction lockLiquidity(uint128 amount)
renounceOwnership
nonpayablefunction renounceOwnership()
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId, bytes data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 tokenId)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unlockLiquidity
nonpayablefunction unlockLiquidity(uint128 amount)
withdrawDeposit
nonpayablefunction withdrawDeposit(uint48 depositId, uint40 percent) returns (uint128 withdrawnAmount)
withdrawLiquidityFor
nonpayablefunction withdrawLiquidityFor(address to, uint128 amount, uint48 depositId)
events
AdminChanged
event AdminChanged(address newAdmin)
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
Initialized
event Initialized(uint64 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
Withdrawn
event Withdrawn(address wallet, uint128 amount)
errors
DepositDoesNotExist
error DepositDoesNotExist()
ERC721EnumerableForbiddenBatchMint
error ERC721EnumerableForbiddenBatchMint()
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)
ERC721OutOfBoundsIndex
error ERC721OutOfBoundsIndex(address owner, uint256 index)
IncorrectAmount
error IncorrectAmount()
IncorrectDeposit
error IncorrectDeposit()
IncorrectLeaf
error IncorrectLeaf()
IncorrectPercent
error IncorrectPercent()
InsufficientTopNodeAmount
error InsufficientTopNodeAmount()
InvalidInitialization
error InvalidInitialization()
LeafNotExist
error LeafNotExist()
LeafNumberRangeExceeded
error LeafNumberRangeExceeded()
LiquidityIsLocked
error LiquidityIsLocked()
NotEnoughLiquidity
error NotEnoughLiquidity()
NotEnoughLockedLiquidity
error NotEnoughLockedLiquidity()
NotInitializing
error NotInitializing()
OnlyAdmin
error OnlyAdmin()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
creation bytecode
0x6080604052348015600f57600080fd5b50613b148061001f6000396000f3fe608060405234801561001057600080fd5b50600436106101b75760003560e01c806301ffc9a7146101bc578063048a7d80146101e457806306fdde03146101f9578063081812fc1461020e578063095ea7b31461022e57806318160ddd14610241578063204e4df51461025757806323b872dd1461028257806329ae21b6146102955780632c94e18c146102bf5780632f2a6c77146102d25780632f745c59146102e557806342842e0e146102f85780634f6ccce71461030b578063574be4221461031e57806359bf5d39146103315780636352211e1461033957806365715c561461034c57806370a082311461035e578063715018a6146103715780637f4270c1146103795780638da5cb5b1461038c5780638f2839701461039457806395d89b41146103a7578063a22cb465146103af578063b4398244146103c2578063b88d4fde146103d5578063bfcf04cf146103e8578063c4d66de81461040f578063c87b56dd14610422578063cd6072e614610435578063dd9ea29914610497578063e985e9c51461049f578063f2fde38b146104b2578063f6ff5df3146104c5578063f851a440146104d8578063fc0c546a146104eb575b600080fd5b6101cf6101ca3660046132e3565b6104fe565b60405190151581526020015b60405180910390f35b6101f76101f236600461331c565b610529565b005b6102016105b3565b6040516101db9190613387565b61022161021c36600461339a565b610654565b6040516101db91906133b3565b6101f761023c3660046133de565b610669565b610249610678565b6040519081526020016101db565b61026a61026536600461341e565b61068d565b6040516001600160801b0390911681526020016101db565b6101f761029036600461345f565b610789565b6102a86102a336600461349c565b61081d565b60405165ffffffffffff90911681526020016101db565b6101f76102cd3660046134cf565b61089c565b6101f76102e0366004613512565b6108ef565b6102496102f33660046133de565b61096b565b6101f761030636600461345f565b6109cd565b61024961031936600461339a565b6109e8565b6101f761032c36600461331c565b610a49565b61026a610af0565b61022161034736600461339a565b610b1d565b6000546102a89065ffffffffffff1681565b61024961036c36600461353c565b610b28565b6101f7610b80565b61026a610387366004613557565b610b94565b610221610c66565b6101f76103a236600461353c565b610c81565b610201610d09565b6101f76103bd366004613580565b610d26565b60045461026a906001600160801b031681565b6101f76103e33660046135c2565b610d31565b60005461040290600160301b90046001600160401b031681565b6040516101db91906136a3565b6101f761041d36600461353c565b610d49565b61020161043036600461339a565b610ec1565b610470610443366004613557565b6001602052600090815260409020546001600160401b03811690600160401b90046001600160801b031682565b604080516001600160401b0390931683526001600160801b039091166020830152016101db565b6102a8610f36565b6101cf6104ad3660046136b7565b610f53565b6101f76104c036600461353c565b610f92565b6101cf6104d336600461339a565b610fcd565b600254610221906001600160a01b031681565b600354610221906001600160a01b031681565b60006001600160e01b0319821663780e9d6360e01b1480610523575061052382610fea565b92915050565b6002546001600160a01b0316331461055457604051634755657960e01b815260040160405180910390fd5b6004546001600160801b0390811690821681101561058557604051631151962760e31b815260040160405180910390fd5b61058f82826136f7565b600480546001600160801b0319166001600160801b03929092169190911790555050565b606060006105bf61103a565b90508060000180546105d090613716565b80601f01602080910402602001604051908101604052809291908181526020018280546105fc90613716565b80156106495780601f1061061e57610100808354040283529160200191610649565b820191906000526020600020905b81548152906001019060200180831161062c57829003601f168201915b505050505091505090565b600061065f8261105e565b5061052382611096565b6106748282336110bf565b5050565b6000806106836110cc565b6002015492915050565b6002546000906001600160a01b031633146106bb57604051634755657960e01b815260040160405180910390fd5b60006106ce8465ffffffffffff16610b1d565b905060006106da610af0565b905060006106e786610b94565b90506106f386866110f0565b9350806001600160801b0316846001600160801b03160361071f5761071f8665ffffffffffff166112a6565b6001600160801b0384161561078057600454610744906001600160801b0316836136f7565b6001600160801b0316846001600160801b0316111561077657604051636bac637f60e01b815260040160405180910390fd5b61078083856112e1565b50505092915050565b6001600160a01b0382166107bc576000604051633250574960e11b81526004016107b391906133b3565b60405180910390fd5b60006107c9838333611301565b9050836001600160a01b0316816001600160a01b031614610817576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016107b3565b50505050565b6002546000906001600160a01b0316331461084b57604051634755657960e01b815260040160405180910390fd5b816001600160801b031660000361087557604051633596131f60e21b815260040160405180910390fd5b61087f3383611397565b610888826113b8565b9050610523838265ffffffffffff16611483565b6002546001600160a01b031633146108c757604051634755657960e01b815260040160405180910390fd5b6001600160801b038216156108ea576108e082826114e8565b6108ea83836112e1565b505050565b6002546001600160a01b0316331461091a57604051634755657960e01b815260040160405180910390fd5b60005465ffffffffffff908116908216106109485760405163c7c9660f60e01b815260040160405180910390fd5b6001600160801b03821615610674576109613383611397565b610674828261165a565b6000806109766110cc565b905061098184610b28565b83106109a457838360405163295f44f760e21b81526004016107b3929190613750565b6001600160a01b0384166000908152602091825260408082208583529092522054905092915050565b6108ea83838360405180602001604052806000815250610d31565b6000806109f36110cc565b90506109fd610678565b8310610a215760008360405163295f44f760e21b81526004016107b3929190613750565b806002018381548110610a3657610a36613769565b9060005260206000200154915050919050565b6002546001600160a01b03163314610a7457604051634755657960e01b815260040160405180910390fd5b60048054829190600090610a929084906001600160801b031661377f565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550610abe610af0565b6004546001600160801b0391821691161115610aed57604051634323a55560e01b815260040160405180910390fd5b50565b60016000819052602052600080516020613abf83398151915254600160401b90046001600160801b031690565b60006105238261105e565b600080610b3361103a565b90506001600160a01b038316610b5f5760006040516322718ad960e21b81526004016107b391906133b3565b6001600160a01b039092166000908152600390920160205250604090205490565b610b8861174f565b610b926000611781565b565b6000600160281b65ffffffffffff83161080610bd957506001610bbc600160281b600261379e565b610bc691906137c6565b65ffffffffffff168265ffffffffffff16115b15610be657506000919050565b65ffffffffffff82166000908152600160205260408120546001600160401b03169003610c1557506000919050565b6105236001600160281b81610c2b82600261379e565b610c3591906137c6565b60016000819052602052600080516020613abf833981519152548690600160401b90046001600160801b03166117dd565b600080610c71611948565b546001600160a01b031692915050565b610c8961174f565b6004546001600160801b031615610cb357604051636bac637f60e01b815260040160405180910390fd5b600280546001600160a01b0319166001600160a01b0383161790556040517f7ce7ec0b50378fb6c0186ffb5f48325f6593fcb4ca4386f21861af3129188f5c90610cfe9083906133b3565b60405180910390a150565b60606000610d1561103a565b90508060010180546105d090613716565b61067433838361196c565b610d3c848484610789565b6108173385858585611a11565b6000610d53611b21565b805490915060ff600160401b82041615906001600160401b0316600081158015610d7a5750825b90506000826001600160401b03166001148015610d965750303b155b905081158015610da4575080155b15610dc25760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b03191660011785558315610deb57845460ff60401b1916600160401b1785555b610df433611b45565b610e4b60405180604001604052806017815260200176105e9d5c9bc8131a5c5d5a591a5d1e4811195c1bdcda5d604a1b81525060405180604001604052806006815260200165262816a0ad2960d11b815250611b4d565b610e53611b5f565b600380546001600160a01b0319166001600160a01b0388161790558315610eb957845460ff60401b191685556040517fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290610eb0906001906136a3565b60405180910390a15b505050505050565b6060610ecc8261105e565b506000610ee460408051602081019091526000815290565b90506000815111610f045760405180602001604052806000815250610f2f565b80610f0e84611bb9565b604051602001610f1f9291906137e4565b6040516020818303038152906040525b9392505050565b60008054610f4e9060019065ffffffffffff166137c6565b905090565b600080610f5e61103a565b6001600160a01b03948516600090815260059190910160209081526040808320959096168252939093525050205460ff1690565b610f9a61174f565b6001600160a01b038116610fc4576000604051631e4fbdf760e01b81526004016107b391906133b3565b610aed81611781565b600080610fd983611c4b565b6001600160a01b0316141592915050565b60006001600160e01b031982166380ac58cd60e01b148061101b57506001600160e01b03198216635b5e139f60e01b145b8061052357506301ffc9a760e01b6001600160e01b0319831614610523565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930090565b60008061106a83611c4b565b90506001600160a01b03811661052357604051637e27328960e01b8152600481018490526024016107b3565b6000806110a161103a565b6000938452600401602052505060409020546001600160a01b031690565b6108ea8383836001611c74565b7f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed0090565b6000826110fc81611d7e565b65ffffffffffff84166000908152600160205260408120546001600160401b0316900361113c57604051631b2862ff60e21b815260040160405180910390fd5b64e8d4a510008364ffffffffff16111561116957604051635a60b01360e01b815260040160405180910390fd5b6111d36001600160281b8161117f82600261379e565b61118991906137c6565b876000600681819054906101000a90046001600160401b03166111ab90613813565b91906101000a8154816001600160401b0302191690836001600160401b031602179055611ddf565b65ffffffffffff841660009081526001602052604090205461120c90600160401b90046001600160801b031664ffffffffff8516611f5c565b915061125e848360016000600681819054906101000a90046001600160401b031661123690613813565b91906101000a8154816001600160401b0302191690836001600160401b031602179055611f78565b604080513381526001600160801b03841660208201527fab48b3d59a240196dc5bdd7f7a638fca310f8194c7d350c3dd7765861311ddf8910160405180910390a15092915050565b60006112b56000836000611301565b90506001600160a01b03811661067457604051637e27328960e01b8152600481018390526024016107b3565b600354610674906001600160a01b0316836001600160801b038416611fa8565b60008061130f8585856120d4565b90506001600160a01b03811661132d57611328846121db565b611350565b846001600160a01b0316816001600160a01b031614611350576113508185612214565b6001600160a01b03851661136c57611367846122ad565b61138f565b846001600160a01b0316816001600160a01b03161461138f5761138f8585612376565b949350505050565b600354610674906001600160a01b031683306001600160801b0385166123ce565b6000816113c481612504565b60016113d5600160281b600261379e565b6113df91906137c6565b60005465ffffffffffff9182169116111561140d57604051630c68c9c560e11b815260040160405180910390fd5b600080546114409165ffffffffffff821691869190819060069061123690600160301b90046001600160401b0316613813565b6000805465ffffffffffff16925082908061145a8361383f565b91906101000a81548165ffffffffffff021916908365ffffffffffff1602179055505050919050565b6001600160a01b0382166114ad576000604051633250574960e11b81526004016107b391906133b3565b60006114bb83836000611301565b90506001600160a01b038116156108ea5760006040516339e3563760e11b81526004016107b391906133b3565b806114f281611d7e565b826114fc81612504565b600080546115149060019065ffffffffffff166137c6565b90508065ffffffffffff168465ffffffffffff161115611532578093505b60016000819052602052600080516020613abf833981519152546001600160801b03808716600160401b90920416101561157f5760405163ba3745fb60e01b815260040160405180910390fd5b6115956001600160281b8161117f82600261379e565b6115c36001600160281b816115ab82600261379e565b6115b591906137c6565b600160281b888a600161252e565b156115e1579250826115e16001600160281b8161117f82600261379e565b6116536001600160281b816115f782600261379e565b61160191906137c6565b600160281b888a60016000600681819054906101000a90046001600160401b031661162b90613813565b91906101000a8154816001600160401b0302191690836001600160401b03160217905561294c565b5050505050565b8061166481611d7e565b8261166e81612504565b600080546116869060019065ffffffffffff166137c6565b90508065ffffffffffff168465ffffffffffff1611156116a4578093505b6116ba6001600160281b8161117f82600261379e565b6116e86001600160281b816116d082600261379e565b6116da91906137c6565b600160281b888a600061252e565b15611706579250826117066001600160281b8161117f82600261379e565b6116536001600160281b8161171c82600261379e565b61172691906137c6565b600160281b888a600080600681819054906101000a90046001600160401b031661162b90613813565b33611758610c66565b6001600160a01b031614610b92573360405163118cdaa760e01b81526004016107b391906133b3565b600061178b611948565b80546001600160a01b038481166001600160a01b031983168117845560405193945091169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60008265ffffffffffff168665ffffffffffff16036117fd57508061193f565b600061180a87600261379e565b9050600061181988600261379e565b61182490600161385f565b65ffffffffffff8084166000908152600160205260408082205492841682528120549293506001600160801b03600160401b92839004811693929092049091169061186f828461387d565b90506000811561189c578161188d856001600160801b038b16613890565b61189791906138bd565b61189f565b60005b9050600060026118af8c8e61385f565b6118b991906138d1565b90508965ffffffffffff168c65ffffffffffff16111580156118eb57508065ffffffffffff168a65ffffffffffff1611155b1561191957841561190857611903878d838d866117dd565b61190b565b60005b97505050505050505061193f565b8315611908576119038661192e83600161385f565b8d8d61193a878f6136f7565b6117dd565b95945050505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930090565b600061197661103a565b90506001600160a01b0383166119a15782604051630b61174360e31b81526004016107b391906133b3565b6001600160a01b038481166000818152600584016020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6001600160a01b0383163b1561165357604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290611a539088908890879087906004016138fd565b6020604051808303816000875af1925050508015611a8e575060408051601f3d908101601f19168201909252611a8b9181019061393a565b60015b611aee573d808015611abc576040519150601f19603f3d011682016040523d82523d6000602084013e611ac1565b606091505b508051600003611ae65783604051633250574960e11b81526004016107b391906133b3565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610eb95783604051633250574960e11b81526004016107b391906133b3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b610f9a612d23565b611b55612d23565b6106748282612d48565b6000805465ffffffffffff1916600160281b178082556001600160401b03600160301b90910416906006611b9283613813565b91906101000a8154816001600160401b0302191690836001600160401b0316021790555050565b60606000611bc683612d76565b60010190506000816001600160401b03811115611be557611be56135ac565b6040519080825280601f01601f191660200182016040528015611c0f576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611c1957509392505050565b600080611c5661103a565b6000938452600201602052505060409020546001600160a01b031690565b6000611c7e61103a565b90508180611c9457506001600160a01b03831615155b15611d4d576000611ca48561105e565b90506001600160a01b03841615801590611cd05750836001600160a01b0316816001600160a01b031614155b8015611ce35750611ce18185610f53565b155b15611d03578360405163a9fbf51f60e01b81526004016107b391906133b3565b8215611d4b5784866001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b600093845260040160205250506040902080546001600160a01b0319166001600160a01b0392909216919091179055565b600160281b65ffffffffffff82161080611dc157506001611da4600160281b600261379e565b611dae91906137c6565b65ffffffffffff168165ffffffffffff16115b15610aed5760405163e761b03360e01b815260040160405180910390fd5b8165ffffffffffff168565ffffffffffff160315611653576000611e0486600261379e565b90506000611e1387600261379e565b611e1e90600161385f565b65ffffffffffff808916600090815260016020526040808220548684168352818320549385168352908220549394506001600160801b03600160401b9182900481169493829004811693919091041690611e78828461387d565b905060008115611ea55781611e96856001600160801b038816613890565b611ea091906138bd565b611ea8565b60005b90508315611ebb57611ebb87828a612e4c565b8215611ed557611ed586611ecf83886136f7565b8a612e4c565b60006002611ee38c8e61385f565b611eed91906138d1565b90508965ffffffffffff168c65ffffffffffff1611158015611f1f57508065ffffffffffff168a65ffffffffffff1611155b15611f3657611f31888d838d8d611ddf565b611f4d565b611f4d87611f4583600161385f565b8d8d8d611ddf565b50505050505050505050505050565b600064e8d4a51000611f6e8385613890565b610f2f91906138bd565b611f8484848484612ec5565b8365ffffffffffff1660011461081757610817611fa085612ffc565b848484611f78565b600080846001600160a01b031663a9059cbb8585604051602401611fcd929190613750565b6040516020818303038152906040529060e01b6020820180516001600160e01b0383818316178352505050506040516120069190613957565b6000604051808303816000865af19150503d8060008114612043576040519150601f19603f3d011682016040523d82523d6000602084013e612048565b606091505b50915091508180156120725750805115806120725750808060200190518101906120729190613973565b6116535760405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201526c185b9cd9995c8819985a5b1959609a1b60648201526084016107b3565b6000806120df61103a565b905060006120ec85611c4b565b90506001600160a01b0384161561210857612108818587613021565b6001600160a01b0381161561214857612125600086600080611c74565b6001600160a01b0381166000908152600383016020526040902080546000190190555b6001600160a01b03861615612179576001600160a01b03861660009081526003830160205260409020805460010190555b600085815260028301602052604080822080546001600160a01b0319166001600160a01b038a811691821790925591518893918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a495945050505050565b60006121e56110cc565b600281018054600085815260039093016020908152604084208290556001820183559183529120019190915550565b600061221e6110cc565b9050600061222b84610b28565b60008481526001840160209081526040808320546001600160a01b03891684529186905290912091925090818314612285576000838152602082815260408083205485845281842081905583526001870190915290208290555b6000948552600190930160209081526040808620869055928552929092528220919091555050565b60006122b76110cc565b60028101549091506000906122ce90600190613990565b60008481526003840160205260408120546002850180549394509092849081106122fa576122fa613769565b906000526020600020015490508084600201838154811061231d5761231d613769565b600091825260208083209091019290925582815260038601909152604080822084905586825281205560028401805480612359576123596139a3565b600190038181906000526020600020016000905590555050505050565b60006123806110cc565b90506000600161238f85610b28565b6123999190613990565b6001600160a01b0390941660009081526020838152604080832087845282528083208690559482526001909301909252502055565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17905291516000928392908816916124329190613957565b6000604051808303816000865af19150503d806000811461246f576040519150601f19603f3d011682016040523d82523d6000602084013e612474565b606091505b509150915081801561249e57508051158061249e57508080602001905181019061249e9190613973565b610eb95760405162461bcd60e51b815260206004820152603160248201527f5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472604482015270185b9cd9995c919c9bdb4819985a5b1959607a1b60648201526084016107b3565b806001600160801b0316600003610aed576040516334b2073960e11b815260040160405180910390fd5b6000818015612566575065ffffffffffff88166000908152600160205260409020546001600160801b03808516600160401b90920416105b8061259f57508115801561259f575065ffffffffffff8816600090815260016020526040902054600160401b90046001600160801b0316155b156125ac57506001612941565b8465ffffffffffff168765ffffffffffff161480156125da57508365ffffffffffff168665ffffffffffff16145b806125f457508565ffffffffffff168765ffffffffffff16145b1561260157506000612941565b6000600261260f888a61385f565b61261991906138d1565b90508565ffffffffffff168865ffffffffffff161115801561264b57508065ffffffffffff168665ffffffffffff1611155b15612911578465ffffffffffff168865ffffffffffff161115801561268057508065ffffffffffff168565ffffffffffff1611155b156126f057600160006126948b600261379e565b65ffffffffffff1681526020810191909152604001600090812054600160401b90046001600160801b031690036126cf576001915050612941565b6126e86126dd8a600261379e565b89838989898961252e565b915050612941565b60006126fd8a600261379e565b65ffffffffffff81166000908152600160208190526040822054929350600160401b9092046001600160801b03169181612737858361385f565b65ffffffffffff1681526020810191909152604001600090812054600160401b90046001600160801b0316915061278f61277285600161385f565b61277d87600161385f565b8d6127898d600161385f565b8f613077565b6127a2906001600160801b031683613990565b6127ac908461387d565b9050806000036127c457600195505050505050612941565b600064e8d4a510006127e9836127e3876001600160801b038e16613890565b9061323c565b6127f391906138bd565b905087801561280a5750806001600160801b031684105b8015612830575061281b818a6136f7565b6001600160801b031661282e8584613990565b105b156128445760019650505050505050612941565b87156128e3576000816001600160801b031611801561286c5750806001600160801b03168410155b1561288d57612880858e888e8a868e61252e565b9650505050505050612941565b612897818a6136f7565b6001600160801b031683106128de576128806128b486600161385f565b6128bf88600161385f565b8e6128cb8a600161385f565b8e868f6128d891906136f7565b8e61252e565b612907565b6128f2858e888e8a868e61252e565b801561288057506128806128b486600161385f565b505050505061293f565b6126e861291f8a600261379e565b61292a90600161385f565b61293583600161385f565b898989898961252e565b505b979650505050505050565b8765ffffffffffff166001148015612962575081155b8015612993575065ffffffffffff8816600090815260016020526040902054600160401b90046001600160801b0316155b156129a9576129a488848484612ec5565b612d19565b8465ffffffffffff168765ffffffffffff161480156129d757508365ffffffffffff168665ffffffffffff16145b806129f157508565ffffffffffff168765ffffffffffff16145b15612a2f5765ffffffffffff8816600090815260016020526040902054600160401b90046001600160801b0316156129a4576129a488848484612ec5565b60006002612a3d888a61385f565b612a4791906138d1565b90508565ffffffffffff168865ffffffffffff1611158015612a7957508065ffffffffffff168665ffffffffffff1611155b15612c9a578465ffffffffffff168865ffffffffffff1611158015612aae57508065ffffffffffff168565ffffffffffff1611155b15612ad257612acd612ac18a600261379e565b8983898989898961294c565b612cc9565b6000600181612ae28c600261379e565b65ffffffffffff1681526020810191909152604001600090812054600160401b90046001600160801b03169150612b45612b1d8c600261379e565b612b2890600161385f565b612b3385600161385f565b8b612b3f8b600161385f565b8d613077565b60016000612b548e600261379e565b612b5f90600161385f565b65ffffffffffff168152602081019190915260400160002054612b929190600160401b90046001600160801b03166136f7565b6001600160801b031690506000612ba9828461387d565b905080600003612c0a578b65ffffffffffff1660011480612bf0575065ffffffffffff8c16600090815260016020526040902054600160401b90046001600160801b031615155b15612c0157612c018c888888612ec5565b50505050612d19565b600064e8d4a51000612c29836127e3876001600160801b038d16613890565b612c3391906138bd565b9050612c4f612c438e600261379e565b8d878d89868d8d61294c565b612c91612c5d8e600261379e565b612c6890600161385f565b612c7387600161385f565b8d612c7f89600161385f565b8d612c8a878f6136f7565b8d8d61294c565b50505050612cc9565b612cc9612ca88a600261379e565b612cb390600161385f565b612cbe83600161385f565b89898989898961294c565b8865ffffffffffff1660011480612d06575065ffffffffffff8916600090815260016020526040902054600160401b90046001600160801b031615155b15612d1757612d1789858585612ec5565b505b5050505050505050565b612d2b61324e565b610b9257604051631afcd79f60e31b815260040160405180910390fd5b612d50612d23565b6000612d5a61103a565b905080612d678482613a00565b50600181016108178382613a00565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310612db55772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b8310612ddf576904ee2d6d415b85acef8160201b830492506020015b662386f26fc100008310612dfd57662386f26fc10000830492506010015b6305f5e1008310612e15576305f5e100830492506008015b6127108310612e2957612710830492506004015b60648310612e3b576064830492506002015b600a83106105235760010192915050565b65ffffffffffff83166000908152600160205260409020546001600160801b03838116600160401b90920416146108ea5765ffffffffffff8316600090815260016020526040902080546001600160801b038416600160401b026001600160c01b03199091166001600160401b03841617179055505050565b818015612efb575065ffffffffffff84166000908152600160205260409020546001600160801b03808516600160401b90920416105b6108175765ffffffffffff8416600090815260016020526040902080546001600160401b0319166001600160401b0383161790558115612f985765ffffffffffff841660009081526001602052604090208054849190600890612f6f908490600160401b90046001600160801b03166136f7565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550610817565b65ffffffffffff841660009081526001602052604090208054849190600890612fd2908490600160401b90046001600160801b031661377f565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555050505050565b60008165ffffffffffff1660010361301657506001919050565b6105236002836138d1565b61302c838383613268565b6108ea576001600160a01b03831661305a57604051637e27328960e01b8152600481018290526024016107b3565b818160405163177e802f60e01b81526004016107b3929190613750565b60008265ffffffffffff168565ffffffffffff161480156130a757508165ffffffffffff168465ffffffffffff16145b806130c157508365ffffffffffff168565ffffffffffff16145b156130f4575065ffffffffffff8516600090815260016020526040902054600160401b90046001600160801b031661193f565b60006002613102868861385f565b61310c91906138d1565b90508365ffffffffffff168665ffffffffffff161115801561313e57508065ffffffffffff168465ffffffffffff1611155b156131f9578265ffffffffffff168665ffffffffffff161115801561317357508065ffffffffffff168365ffffffffffff1611155b156131a05761318f61318688600261379e565b87838787613077565b613199908361377f565b9150613232565b6131b76131ae88600261379e565b87838785613077565b6131c1908361377f565b915061318f6131d188600261379e565b6131dc90600161385f565b6131e783600161385f565b876131f385600161385f565b87613077565b61322561320788600261379e565b61321290600161385f565b61321d83600161385f565b878787613077565b61322f908361377f565b91505b5095945050505050565b600081611f6e64e8d4a5100085613890565b6000613258611b21565b54600160401b900460ff16919050565b60006001600160a01b0383161580159061138f5750826001600160a01b0316846001600160a01b031614806132a257506132a28484610f53565b8061138f5750826001600160a01b03166132bb83611096565b6001600160a01b031614949350505050565b6001600160e01b031981168114610aed57600080fd5b6000602082840312156132f557600080fd5b8135610f2f816132cd565b80356001600160801b038116811461331757600080fd5b919050565b60006020828403121561332e57600080fd5b610f2f82613300565b60005b8381101561335257818101518382015260200161333a565b50506000910152565b60008151808452613373816020860160208601613337565b601f01601f19169290920160200192915050565b602081526000610f2f602083018461335b565b6000602082840312156133ac57600080fd5b5035919050565b6001600160a01b0391909116815260200190565b80356001600160a01b038116811461331757600080fd5b600080604083850312156133f157600080fd5b6133fa836133c7565b946020939093013593505050565b803565ffffffffffff8116811461331757600080fd5b6000806040838503121561343157600080fd5b61343a83613408565b9150602083013564ffffffffff8116811461345457600080fd5b809150509250929050565b60008060006060848603121561347457600080fd5b61347d846133c7565b925061348b602085016133c7565b929592945050506040919091013590565b600080604083850312156134af57600080fd5b6134b8836133c7565b91506134c660208401613300565b90509250929050565b6000806000606084860312156134e457600080fd5b6134ed846133c7565b92506134fb60208501613300565b915061350960408501613408565b90509250925092565b6000806040838503121561352557600080fd5b61352e83613300565b91506134c660208401613408565b60006020828403121561354e57600080fd5b610f2f826133c7565b60006020828403121561356957600080fd5b610f2f82613408565b8015158114610aed57600080fd5b6000806040838503121561359357600080fd5b61359c836133c7565b9150602083013561345481613572565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156135d857600080fd5b6135e1856133c7565b93506135ef602086016133c7565b92506040850135915060608501356001600160401b0381111561361157600080fd5b8501601f8101871361362257600080fd5b80356001600160401b0381111561363b5761363b6135ac565b604051601f8201601f19908116603f011681016001600160401b0381118282101715613669576136696135ac565b60405281815282820160200189101561368157600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b6001600160401b0391909116815260200190565b600080604083850312156136ca57600080fd5b6136d3836133c7565b91506134c6602084016133c7565b634e487b7160e01b600052601160045260246000fd5b6001600160801b038281168282160390811115610523576105236136e1565b600181811c9082168061372a57607f821691505b60208210810361374a57634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b03929092168252602082015260400190565b634e487b7160e01b600052603260045260246000fd5b6001600160801b038181168382160190811115610523576105236136e1565b65ffffffffffff81811683821602908116908181146137bf576137bf6136e1565b5092915050565b65ffffffffffff8281168282160390811115610523576105236136e1565b600083516137f6818460208801613337565b83519083019061380a818360208801613337565b01949350505050565b60006001600160401b0382166002600160401b03198101613836576138366136e1565b60010192915050565b600065ffffffffffff821665ffffffffffff8103613836576138366136e1565b65ffffffffffff8181168382160190811115610523576105236136e1565b80820180821115610523576105236136e1565b8082028115828204841417610523576105236136e1565b634e487b7160e01b600052601260045260246000fd5b6000826138cc576138cc6138a7565b500490565b600065ffffffffffff8316806138e9576138e96138a7565b8065ffffffffffff84160491505092915050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906139309083018461335b565b9695505050505050565b60006020828403121561394c57600080fd5b8151610f2f816132cd565b60008251613969818460208701613337565b9190910192915050565b60006020828403121561398557600080fd5b8151610f2f81613572565b81810381811115610523576105236136e1565b634e487b7160e01b600052603160045260246000fd5b601f8211156108ea57806000526020600020601f840160051c810160208510156139e05750805b601f840160051c820191505b8181101561165357600081556001016139ec565b81516001600160401b03811115613a1957613a196135ac565b613a2d81613a278454613716565b846139b9565b6020601f821160018114613a615760008315613a495750848201515b600019600385901b1c1916600184901b178455611653565b600084815260208120601f198516915b82811015613a915787850151825560209485019460019092019101613a71565b5084821015613aaf5786840151600019600387901b60f8161c191681555b50505050600190811b0190555056fecc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792fa26469706673582212202059751b9255e7613619a802487dd51bdb0258bd678682603250b06904bf72d264736f6c634300081c0033