0 txs
4 calls
constructor
No constructor.
functions
affiliateBalance
viewfunction affiliateBalance(address affiliate) view returns (uint128)
affiliateBalanceToken
viewfunction affiliateBalanceToken(address affiliate, address token) view returns (uint128)
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
computePrice
viewfunction computePrice(bytes32 key, uint256 quantity, bool affiliateUsed) view returns (uint256)
config
viewfunction config() view returns (string baseUri, address affiliateSigner, uint32 maxSupply, uint32 maxBatchSize, uint16 affiliateFee, uint16 defaultRoyalty, tuple discounts)
decimals
purefunction decimals() pure returns (uint8)
devVault
purefunction devVault() pure returns (address)
getSkipNFT
viewfunction getSkipNFT(address owner) view returns (bool)
invites
viewfunction invites(bytes32) view returns (uint128 price, uint128 reservePrice, uint128 delta, uint32 start, uint32 end, uint32 limit, uint32 maxSupply, uint32 interval, uint32 unitSize, address tokenAddress, bool isBlacklist)
listSupply
viewfunction listSupply(bytes32 key) view returns (uint256)
minted
viewfunction minted(address minter, bytes32 key) view returns (uint256)
mirrorERC721
viewfunction mirrorERC721() view returns (address)
name
viewfunction name() view returns (string)
numMinted
viewfunction numMinted() view returns (uint256)
options
viewfunction options() view returns (bool uriLocked, bool maxSupplyLocked, bool affiliateFeeLocked, bool discountsLocked, bool ownerAltPayoutLocked)
owner
viewfunction owner() view returns (address)
ownerBalance
viewfunction ownerBalance() view returns (uint128)
ownerBalanceToken
viewfunction ownerBalanceToken(address token) view returns (uint128)
payoutConfig
viewfunction payoutConfig() view returns (uint16 ownerBps, uint16 platformBps, uint16 partnerBps, uint16 superAffiliateBps, address partner, address superAffiliate)
platform
purefunction platform() pure returns (address)
royaltyInfo
viewfunction royaltyInfo(uint256 _tokenId, uint256 _salePrice) view returns (address, uint256)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
tokenURI
viewfunction tokenURI(uint256 tokenId) view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
batchMintTo
payablefunction batchMintTo(tuple auth, address[] toList, uint256[] quantityList, address affiliate, bytes signature) payable
initialize
nonpayablefunction initialize(string name_, string symbol_, tuple config_, tuple payoutConfig_, address mirror, address _receiver)
lockAffiliateFee
nonpayablefunction lockAffiliateFee()
lockDiscounts
nonpayablefunction lockDiscounts()
lockMaxSupply
nonpayablefunction lockMaxSupply(string password)
lockURI
nonpayablefunction lockURI(string password)
mint
payablefunction mint(tuple auth, uint256 quantity, address affiliate, bytes signature) payable
mintTo
payablefunction mintTo(tuple auth, uint256 quantity, address to, address affiliate, bytes signature) payable
renounceOwnership
nonpayablefunction renounceOwnership()
setAffiliateFee
nonpayablefunction setAffiliateFee(uint16 affiliateFee)
setBaseURI
nonpayablefunction setBaseURI(string baseUri)
setDefaultRoyalty
nonpayablefunction setDefaultRoyalty(address receiver, uint16 feeNumerator)
setDiscounts
nonpayablefunction setDiscounts(tuple discounts)
setDutchInvite
nonpayablefunction setDutchInvite(bytes32 _key, bytes32 _cid, tuple _dutchInvite)
setInvite
nonpayablefunction setInvite(bytes32 _key, bytes32 _cid, tuple _invite)
setMaxBatchSize
nonpayablefunction setMaxBatchSize(uint32 maxBatchSize)
setMaxSupply
nonpayablefunction setMaxSupply(uint32 maxSupply)
setSkipNFT
nonpayablefunction setSkipNFT(bool skipNFT) returns (bool)
transfer
nonpayablefunction transfer(address to, uint256 amount) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 amount) returns (bool)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
withdraw
nonpayablefunction withdraw()
withdrawAffiliate
nonpayablefunction withdrawAffiliate()
withdrawTokens
nonpayablefunction withdrawTokens(address[] tokens)
withdrawTokensAffiliate
nonpayablefunction withdrawTokensAffiliate(address[] tokens)
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 amount)
Initialized
event Initialized(uint8 version)
Invited
event Invited(bytes32 indexed key, bytes32 indexed cid)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Referral
event Referral(address indexed affiliate, address token, uint128 wad, uint256 numMints)
SkipNFTSet
event SkipNFTSet(address indexed target, bool status)
Transfer
event Transfer(address indexed from, address indexed to, uint256 amount)
Withdrawal
event Withdrawal(address indexed src, address token, uint128 wad)
errors
ApprovalCallerNotOwnerNorApproved
error ApprovalCallerNotOwnerNorApproved()
DNAlreadyInitialized
error DNAlreadyInitialized()
FnSelectorNotRecognized
error FnSelectorNotRecognized()
InsufficientAllowance
error InsufficientAllowance()
InsufficientBalance
error InsufficientBalance()
InvalidConfig
error InvalidConfig()
InvalidSplitShares
error InvalidSplitShares()
LinkMirrorContractFailed
error LinkMirrorContractFailed()
LockedForever
error LockedForever()
MaxSupplyExceeded
error MaxSupplyExceeded()
MirrorAddressIsZero
error MirrorAddressIsZero()
NotApprovedToTransfer
error NotApprovedToTransfer()
NotOwner
error NotOwner()
SenderNotMirror
error SenderNotMirror()
TokenDoesNotExist
error TokenDoesNotExist()
TotalSupplyOverflow
error TotalSupplyOverflow()
TransferCallerNotOwnerNorApproved
error TransferCallerNotOwnerNorApproved()
TransferFailed
error TransferFailed()
TransferFromIncorrectOwner
error TransferFromIncorrectOwner()
TransferToZeroAddress
error TransferToZeroAddress()
UnitIsZero
error UnitIsZero()
URIQueryForNonexistentToken
error URIQueryForNonexistentToken()
WrongPassword
error WrongPassword()
creation bytecode
0x608060405234801561001057600080fd5b50615fa780620000216000396000f3fe6080604052600436106103035760003560e01c8063715018a611610190578063bcc1ed07116100dc578063d52079b411610095578063f2fde38b1161006f578063f2fde38b14611024578063f588eb5014611044578063f9da322414611064578063fd614f2a1461108457610315565b8063d52079b414610fb0578063dd62ed3e14610fc5578063de6cd0db1461100457610315565b8063bcc1ed0714610e5d578063bedcf00314610e70578063c3652ab214610eb6578063c87b56dd14610ed6578063caf3e53214610ef6578063d404844114610f1657610315565b8063978a450911610149578063a5aa4aa411610123578063a5aa4aa414610cda578063a9059cbb14610df6578063b344a57d14610e16578063bb8fdd0714610e3d57610315565b8063978a450914610c205780639a7a973c14610c6a578063a3edb86a14610c9757610315565b8063715018a614610b7d57806379502c5514610b925780637c5d0a0814610bba5780638da5cb5b14610bda5780639564e8e414610bf857806395d89b4114610c0b57610315565b8063313ce5671161024f57806355f804b3116102085780636c962e03116101e25780636c962e0314610ada5780636e88490014610aef5780636f33659f14610b0f57806370a0823114610b2f57610315565b806355f804b314610a855780635652d24d14610aa55780635ecb16cd14610aba57610315565b8063313ce567146109c05780633ccfd60b146109dc5780634331f639146109f15780634a21a2df14610a115780634bde38c814610a245780634ef41efc14610a5f57610315565b806318160ddd116102bc578063274e430b11610296578063274e430b1461090257806327a59437146109225780632a55205a146109615780632a6a935d146109a057610315565b806318160ddd1461084457806321d5bf241461087b57806323b872dd146108e257610315565b806301ffc9a71461072557806306fdde031461075a578063095ea7b31461077c5780630c6f910b1461079c5780631069143a146107bc57806315ec67201461082f57610315565b3661031557341561031357600080fd5b005b68a20d6e21d0e525530860003560e01c63e5eb36c88114156103935760018201546001600160a01b0316331461035e5760405163ce5a776b60e01b815260040160405180910390fd5b608436101561036c57600080fd5b600435602435604435606435610384848484846110a4565b61038e6001611407565b505050505b8063813500fc14156104165760018201546001600160a01b031633146103cc5760405163ce5a776b60e01b815260040160405180910390fd5b60643610156103da57600080fd5b6004356028818152604435601481905268a20d6e21d0e525530b60009081526048812092526024351515918290556104126001611407565b5050505b8063e985e9c5141561048d5760018201546001600160a01b0316331461044f5760405163ce5a776b60e01b815260040160405180910390fd5b604436101561045d57600080fd5b60243560288181526004356014819052600385016000908152604881209252905490919061048a90611407565b50505b80636352211e14156104f35760018201546001600160a01b031633146104c65760405163ce5a776b60e01b815260040160405180910390fd5b60243610156104d457600080fd5b6004356104f16104e382611411565b6001600160a01b0316611407565b505b806324359879141561054b5760018201546001600160a01b0316331461052c5760405163ce5a776b60e01b815260040160405180910390fd5b602436101561053a57600080fd5b6004356105496104e382611448565b505b8063d10b6e0c14156105ad5760018201546001600160a01b031633146105845760405163ce5a776b60e01b815260040160405180910390fd5b606436101561059257600080fd5b6004356024356044356105a96104e38484846114a4565b5050505b8063081812fc14156106055760018201546001600160a01b031633146105e65760405163ce5a776b60e01b815260040160405180910390fd5b60243610156105f457600080fd5b6004356106036104e382611598565b505b8063f5b100ea141561068e5760018201546001600160a01b0316331461063e5760405163ce5a776b60e01b815260040160405180910390fd5b602436101561064c57600080fd5b60043561068c610687826001600160a01b0316600090815268a20d6e21d0e5255313602052604090205463ffffffff600160801b9091041690565b611407565b505b8063e2c7928114156106f65760018201546001600160a01b031633146106c75760405163ce5a776b60e01b815260040160405180910390fd5b60043610156106d557600080fd5b68a20d6e21d0e5255308546106f690600160801b900463ffffffff16611407565b8063b7a94eb8141561070c5761070c6001611407565b604051631e085ca760e11b815260040160405180910390fd5b34801561073157600080fd5b50610745610740366004614feb565b6115e4565b60405190151581526020015b60405180910390f35b34801561076657600080fd5b5061076f611619565b60405161075191906154fe565b34801561078857600080fd5b50610745610797366004614d0f565b6116ab565b3480156107a857600080fd5b506103136107b7366004615340565b6116c1565b3480156107c857600080fd5b5060d6546107fd9060ff80821691610100810482169162010000820481169163010000008104821691600160201b9091041685565b60408051951515865293151560208601529115159284019290925290151560608301521515608082015260a001610751565b34801561083b57600080fd5b5061031361176f565b34801561085057600080fd5b5068a20d6e21d0e525530854600160a01b90046001600160601b03165b604051908152602001610751565b34801561088757600080fd5b506108ca610896366004614c97565b6001600160a01b03918216600090815260cd602090815260408083209390941682529190915220546001600160801b031690565b6040516001600160801b039091168152602001610751565b3480156108ee57600080fd5b506107456108fd366004614ccf565b6117e0565b34801561090e57600080fd5b5061074561091d366004614c7b565b61184e565b34801561092e57600080fd5b506108ca61093d366004614c7b565b6001600160a01b0316600090815260cc60205260409020546001600160801b031690565b34801561096d57600080fd5b5061098161097c366004615374565b61189b565b604080516001600160a01b039093168352602083019190915201610751565b3480156109ac57600080fd5b506107456109bb366004614e1a565b611949565b3480156109cc57600080fd5b5060405160128152602001610751565b3480156109e857600080fd5b5061031361195d565b3480156109fd57600080fd5b50610313610a0c366004614d3a565b6119cb565b610313610a1f36600461526f565b611a36565b348015610a3057600080fd5b507386b82972282dd22348374bc63fd21620f7ed847b5b6040516001600160a01b039091168152602001610751565b348015610a6b57600080fd5b5068a20d6e21d0e5255309546001600160a01b0316610a47565b348015610a9157600080fd5b50610313610aa0366004615013565b611a52565b348015610ab157600080fd5b50610313611ac4565b348015610ac657600080fd5b50610313610ad5366004614d67565b611b12565b348015610ae657600080fd5b50610313611b8e565b348015610afb57600080fd5b50610313610b0a366004614f72565b611bde565b348015610b1b57600080fd5b50610313610b2a366004615395565b611f82565b348015610b3b57600080fd5b5061086d610b4a366004614c7b565b6001600160a01b0316600090815268a20d6e21d0e52553136020526040902054600160a01b90046001600160601b031690565b348015610b8957600080fd5b50610313611fe3565b348015610b9e57600080fd5b50610ba7611ff7565b6040516107519796959493929190615511565b348015610bc657600080fd5b50610313610bd5366004615013565b612153565b348015610be657600080fd5b506033546001600160a01b0316610a47565b610313610c063660046151d6565b612211565b348015610c1757600080fd5b5061076f61258b565b348015610c2c57600080fd5b506108ca610c3b366004614c7b565b6001600160a01b0316600090815260cd602090815260408083208380529091529020546001600160801b031690565b348015610c7657600080fd5b5061086d610c85366004614e52565b600090815260cb602052604090205490565b348015610ca357600080fd5b5061086d610cb2366004614d0f565b6001600160a01b0391909116600090815260ca60209081526040808320938352929052205490565b348015610ce657600080fd5b50610d7f610cf5366004614e52565b60c9602052600090815260409020805460018201546002909201546001600160801b0380831693600160801b938490048216939181169263ffffffff928204831692600160a01b8304811692600160c01b8104821692600160e01b9182900483169281811692600160201b8304909116916001600160a01b03600160401b8204169160ff9104168b565b604080516001600160801b039c8d1681529a8c1660208c015298909a169789019790975263ffffffff9586166060890152938516608088015291841660a0870152831660c0860152821660e0850152166101008301526001600160a01b031661012082015290151561014082015261016001610751565b348015610e0257600080fd5b50610745610e11366004614d0f565b61259a565b348015610e2257600080fd5b5073e9191e06eaa1b32997ffafb9a2abbab525518fa8610a47565b348015610e4957600080fd5b50610313610e58366004614e6a565b6125a7565b610313610e6b366004615109565b612834565b348015610e7c57600080fd5b506000805260cc6020527f435daec636ce435a90bde0aeec309a303a359a854c5a51b7d6a5a941d6db6094546001600160801b03166108ca565b348015610ec257600080fd5b50610313610ed136600461504d565b612c5b565b348015610ee257600080fd5b5061076f610ef1366004614e52565b6130de565b348015610f0257600080fd5b5061086d610f11366004614fb3565b613161565b348015610f2257600080fd5b5060d45460d554610f6a9161ffff80821692620100008304821692600160201b81048316926601000000000000820416916001600160a01b03600160401b9092048216911686565b6040805161ffff9788168152958716602087015293861693850193909352931660608301526001600160a01b0392831660808301529190911660a082015260c001610751565b348015610fbc57600080fd5b5061086d613224565b348015610fd157600080fd5b5061086d610fe0366004614c97565b602890815260149190915268a20d6e21d0e525530f60009081526048812091525490565b34801561101057600080fd5b5061031361101f366004615013565b613260565b34801561103057600080fd5b5061031361103f366004614c7b565b61331c565b34801561105057600080fd5b5061031361105f366004614d67565b613392565b34801561107057600080fd5b5061031361107f366004615395565b6133cc565b34801561109057600080fd5b5061031361109f3660046152f4565b613484565b68a20d6e21d0e52553086001600160a01b0384166110d557604051633a954ecd60e21b815260040160405180910390fd5b600a810160028201600061111e836110fa600160201b891089025b6000190160011b90565b60008160031c8360601b0180546007841660051b1c63ffffffff1691505092915050565b63ffffffff1681526020810191909152604001600020546001600160a01b0387811691161461115f5760405162a1148160e81b815260040160405180910390fd5b856001600160a01b0316836001600160a01b0316146111d25760288381526014879052600383016000908152604881209152546111d25760008481526004830160205260409020546001600160a01b038481169116146111d257604051632ce44b5f60e11b815260040160405180910390fd5b60006111dd87613656565b905060006111ea87613656565b8254909150670de0b6b3a764000090600160a01b90046001600160601b03168082111561122a57604051631e9acf1760e31b815260040160405180910390fd5b83546001600160601b03918390038216600160a01b9081026001600160a01b039283161786558454818104841685019093160291811691909117835589166000908152600886016020819052604090912061129c600588018a60609190911b600882901c0154600160ff9092161c1690565b156112da576005870160601b60088a901c018054600160ff8c161b191690556000898152600488016020526040902080546001600160a01b03191690555b845463ffffffff60801b198116600160801b9182900463ffffffff90811660001901808216909302919091178755606083901b631fffffff600384901c16015460009260e060059190911b161c1690506000611340886000198d01600190811b016110fa565b9050611353838263ffffffff16846136ab565b61136e8860001963ffffffff851601600190811b01836136ab565b5050835463ffffffff60801b198116600160801b9182900463ffffffff908116600181019091169092021785556001600160a01b038b1660009081526020849052604090206113be90828c6136ab565b6113d3878b6113cd888f6136d8565b84613765565b505050806000528760601b60601c8960601b60601c600080516020615f5283398151915260206000a3505050505050505050565b8060005260206000f35b600061141c826137a9565b6114395760405163677510db60e11b815260040160405180910390fd5b61144282611448565b92915050565b600068a20d6e21d0e525530868a20d6e21d0e525530a8261147d68a20d6e21d0e52553126110fa600160201b881088026110f0565b63ffffffff1681526020810191909152604001600020546001600160a01b03169392505050565b600068a20d6e21d0e525530868a20d6e21d0e525530a826114d968a20d6e21d0e52553126110fa600160201b891089026110f0565b63ffffffff1681526020810191909152604001600020546001600160a01b0390811692508316821461153c57602883815260148390526003820160009081526048812091525461153c576040516367d9dca160e11b815260040160405180910390fd5b6000848152600482016020526040902080546001600160a01b0319166001600160a01b0387169081179091556005820160601b600886901c018054600160ff881690811b1991909116921515901b919091179055509392505050565b60006115a3826137a9565b6115c05760405163677510db60e11b815260040160405180910390fd5b50600090815268a20d6e21d0e525530c60205260409020546001600160a01b031690565b60006001600160e01b0319821663152a902d60e11b148061144257506301ffc9a760e01b6001600160e01b0319831614611442565b606060ce805461162890615b01565b80601f016020809104026020016040519081016040528092919081815260200182805461165490615b01565b80156116a15780601f10611676576101008083540402835291602001916116a1565b820191906000526020600020905b81548152906001019060200180831161168457829003601f168201915b5050505050905090565b60006116b83384846137c6565b50600192915050565b6033546001600160a01b03166116d5613828565b6001600160a01b0316146116fc576040516330cd747160e01b815260040160405180910390fd5b60d65462010000900460ff16156117265760405163249fab5d60e01b815260040160405180910390fd5b61138861ffff8216111561174d576040516306b7c75960e31b815260040160405180910390fd5b60d1805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b604080516001808252818301909252600091602080830190803683370190505090506000816000815181106117b457634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250506117dd81613392565b50565b336028908152601484905268a20d6e21d0e525530f60009081526048812091819052815490919060001981146118375780841115611831576040516313be252b60e01b815260040160405180910390fd5b83810382555b61184286868661384f565b50600195945050505050565b6001600160a01b038116600090815268a20d6e21d0e5255313602052604081208054600160581b900460011661188857823b5b9392505050565b54600160581b9004600216151592915050565b60008281526098602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b03169282019290925282916119105750604080518082019091526097546001600160a01b0381168252600160a01b90046001600160601b031660208201525b60208101516000906127109061192f906001600160601b0316876158ab565b611939919061588b565b91519350909150505b9250929050565b600061195533836140d2565b506001919050565b604080516001808252818301909252600091602080830190803683370190505090506000816000815181106119a257634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250506117dd81611b12565b6033546001600160a01b03166119df613828565b6001600160a01b031614611a06576040516330cd747160e01b815260040160405180910390fd5b60d180546001600160f01b0316600160f01b61ffff841690810291909117909155611a32908390614150565b5050565b611a4b8585611a43613828565b868686612211565b5050505050565b6033546001600160a01b0316611a66613828565b6001600160a01b031614611a8d576040516330cd747160e01b815260040160405180910390fd5b60d65460ff1615611ab15760405163249fab5d60e01b815260040160405180910390fd5b8051611a329060d0906020840190614a56565b6033546001600160a01b0316611ad8613828565b6001600160a01b031614611aff576040516330cd747160e01b815260040160405180910390fd5b60d6805462ff0000191662010000179055565b736309b70d4e692dd3123ac94029b28557c61d1374638e1ab86660d460cc611b426033546001600160a01b031690565b856040518563ffffffff1660e01b8152600401611b629493929190615774565b60006040518083038186803b158015611b7a57600080fd5b505af4158015611a4b573d6000803e3d6000fd5b6033546001600160a01b0316611ba2613828565b6001600160a01b031614611bc9576040516330cd747160e01b815260040160405180910390fd5b60d6805463ff00000019166301000000179055565b6033546001600160a01b0316611bf2613828565b6001600160a01b031614611c19576040516330cd747160e01b815260040160405180910390fd5b6000611c2b60e0830160c08401614c7b565b6001600160a01b031614611d04576000611c4b60e0830160c08401614c7b565b60405163095ea7b360e01b815273aafdfa4a935d8511bf285af11a0544ce7e4a1199600482015260001960248201526001600160a01b03919091169063095ea7b390604401602060405180830381600087803b158015611caa57600080fd5b505af1158015611cbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce29190614e36565b905080611d02576040516302df483560e21b815260040160405180910390fd5b505b60408051610160810190915280611d1e6020840184615326565b6001600160801b03168152602090810190611d3b90840184615326565b6001600160801b0316815260200160006001600160801b03168152602001826020016020810190611d6c9190615395565b63ffffffff168152602001611d876060840160408501615395565b63ffffffff168152602001611da26080840160608501615395565b63ffffffff168152602001611dbd60a0840160808501615395565b63ffffffff16815260006020820152604001611ddf60c0840160a08501615395565b63ffffffff168152602001611dfa60e0840160c08501614c7b565b6001600160a01b03168152602001611e19610100840160e08501614e1a565b15159052600084815260c9602090815260408083208451928501516001600160801b03938416600160801b918516820217825585830151600183018054606089015160808a015160a08b015160c08c0151959099166001600160a01b03199093169290921763ffffffff9182169095029490941767ffffffffffffffff60a01b1916600160a01b9185169190910263ffffffff60c01b191617600160c01b96841696909602959095176001600160e01b0316600160e01b91831682021790945560e0860151600290920180546101008801516101208901516101409099015194841667ffffffffffffffff1990921691909117600160201b919093160291909117600160401b600160e81b031916600160401b6001600160a01b039097169690960260ff60e01b191695909517901515909202919091179092559051839185917fe9a0c17645ed78ccc9996259f00297ffc75e6b9d22cd605ccc9992cc8ca3f4c19190a3505050565b6033546001600160a01b0316611f96613828565b6001600160a01b031614611fbd576040516330cd747160e01b815260040160405180910390fd5b60d1805463ffffffff909216600160c01b0263ffffffff60c01b19909216919091179055565b611feb61424d565b611ff560006142c6565b565b60d08054819061200690615b01565b80601f016020809104026020016040519081016040528092919081815260200182805461203290615b01565b801561207f5780601f106120545761010080835404028352916020019161207f565b820191906000526020600020905b81548152906001019060200180831161206257829003601f168201915b505050600184015460408051808201825260028701805461ffff90811683526003890180548551602082810282018101909752818152999a6001600160a01b0388169a63ffffffff600160a01b8a0481169b50600160c01b8a04169950600160e01b8904851698600160f01b90049094169690959493818601939092909160009084015b82821015612146576000848152602090819020604080518082019091529084015461ffff8082168352620100009091041681830152825260019092019101612103565b5050505081525050905087565b6033546001600160a01b0316612167613828565b6001600160a01b03161461218e576040516330cd747160e01b815260040160405180910390fd5b604051663337b932bb32b960c91b602082015260270160405160208183030381529060405280519060200120816040516020016121cb9190615449565b60405160208183030381529060405280519060200120146121ff57604051635ee88f9760e01b815260040160405180910390fd5b5060d6805461ff001916610100179055565b8535600090815260c96020526040902060028101546001600160201b90910463ffffffff16111561225b57600281015461225890600160201b900463ffffffff16876158ab565b95505b612263614ada565b6040518060a001604052806122806033546001600160a01b031690565b6001600160a01b03168152602001866001600160a01b031681526020018881526020016122ab613224565b81528935600090815260cb602090815260408083205493820193909352838301516080850151918501519351630735176d60e11b81526004810188905260d26024820152604481019190915260648101919091526001600160a01b0390921615156084830152919250736309b70d4e692dd3123ac94029b28557c61d137490630e6a2eda9060a40160206040518083038186803b15801561234b57600080fd5b505af415801561235f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612383919061535c565b6040516297345560e01b8152909150736309b70d4e692dd3123ac94029b28557c61d13749062973455906123cb90869060d0908e9060ca908c908c908b908b9060040161565d565b60006040518083038186803b1580156123e357600080fd5b505af41580156123f7573d6000803e3d6000fd5b5050505061241d8761240e670de0b6b3a764000090565b612418908b6158ab565b614318565b600183015463ffffffff600160e01b82048116600160c01b909204161015612496578760ca600061244c613828565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008b60000135815260200190815260200160002060008282546124909190615873565b90915550505b600183015463ffffffff600160e01b909104811610156124d6578835600090815260cb6020526040812080548a92906124d0908490615873565b90915550505b736309b70d4e692dd3123ac94029b28557c61d1374630d7f2c6f8460d060cc60cd8b8e886040518863ffffffff1660e01b815260040161251c979695949392919061561b565b60006040518083038186803b15801561253457600080fd5b505af4158015612548573d6000803e3d6000fd5b50505050806001600160801b031634111561258057612580612568613828565b61257b6001600160801b038416346158ca565b6145d1565b505050505050505050565b606060cf805461162890615b01565b60006116b833848461384f565b6033546001600160a01b03166125bb613828565b6001600160a01b0316146125e2576040516330cd747160e01b815260040160405180910390fd5b6101208101516001600160a01b0316156126b55761012081015160405163095ea7b360e01b815273aafdfa4a935d8511bf285af11a0544ce7e4a1199600482015260001960248201526000916001600160a01b03169063095ea7b390604401602060405180830381600087803b15801561265b57600080fd5b505af115801561266f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126939190614e36565b9050806126b3576040516302df483560e21b815260040160405180910390fd5b505b42816060015163ffffffff1610156126d45763ffffffff421660608201525b600083815260c9602090815260408083208451928501516001600160801b03938416600160801b918516820217825585830151600183018054606089015160808a015160a08b015160c08c0151959099166001600160a01b03199093169290921763ffffffff9182169095029490941767ffffffffffffffff60a01b1916600160a01b9185169190910263ffffffff60c01b191617600160c01b96841696909602959095176001600160e01b0316600160e01b91831682021790945560e0860151600290920180546101008801516101208901516101408a015195851667ffffffffffffffff1990931692909217600160201b919094160292909217600160401b600160e81b031916600160401b6001600160a01b039093169290920260ff60e01b1916919091179115159093021790915551839185917fe9a0c17645ed78ccc9996259f00297ffc75e6b9d22cd605ccc9992cc8ca3f4c19190a3505050565b838614612854576040516306b7c75960e31b815260040160405180910390fd5b8735600090815260c96020526040812090805b888110156129605760028301546000906001600160201b90910463ffffffff1611156128d7576002840154600160201b900463ffffffff168989848181106128bf57634e487b7160e01b600052603260045260246000fd5b905060200201356128d091906158ab565b9050612901565b8888838181106128f757634e487b7160e01b600052603260045260246000fd5b9050602002013590505b61290b8184615873565b92506129578b8b8481811061293057634e487b7160e01b600052603260045260246000fd5b90506020020160208101906129459190614c7b565b612418670de0b6b3a7640000846158ab565b50600101612867565b50612969614ada565b6040518060a001604052806129866033546001600160a01b031690565b6001600160a01b03168152602001876001600160a01b031681526020018381526020016129b1613224565b81528c35600090815260cb602090815260408083205493820193909352838301516080850151918501519351630735176d60e11b81526004810189905260d26024820152604481019190915260648101919091526001600160a01b0390921615156084830152919250736309b70d4e692dd3123ac94029b28557c61d137490630e6a2eda9060a40160206040518083038186803b158015612a5157600080fd5b505af4158015612a65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a89919061535c565b9050736309b70d4e692dd3123ac94029b28557c61d1374629734558560d08f60ca8b8b89896040518963ffffffff1660e01b8152600401612ad198979695949392919061565d565b60006040518083038186803b158015612ae957600080fd5b505af4158015612afd573d6000803e3d6000fd5b505050600185015463ffffffff600160e01b82048116600160c01b9092041610159050612b7b578260ca6000612b31613828565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008e6000013581526020019081526020016000206000828254612b759190615873565b90915550505b600184015463ffffffff600160e01b90910481161015612bbb578b35600090815260cb602052604081208054859290612bb5908490615873565b90915550505b604051630d7f2c6f60e01b8152736309b70d4e692dd3123ac94029b28557c61d137490630d7f2c6f90612c0190879060d09060cc9060cd908e908b908a9060040161561b565b60006040518083038186803b158015612c1957600080fd5b505af4158015612c2d573d6000803e3d6000fd5b50505050806001600160801b0316341115612c4d57612c4d612568613828565b505050505050505050505050565b600054610100900460ff1615808015612c7b5750600054600160ff909116105b80612c955750303b158015612c95575060005460ff166001145b612cfd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015612d20576000805461ff0019166101001790555b8651612d339060ce9060208a0190614a56565b508551612d479060cf906020890190614a56565b50612d5460008085614645565b611388612d6760a0870160808801615340565b61ffff161180612d965750611388612d8260c08701876157e8565b612d90906020810190615340565b61ffff16115b80612db957506000612dae6040870160208801614c7b565b6001600160a01b0316145b80612dd75750612dcf6080860160608701615395565b63ffffffff16155b15612df5576040516306b7c75960e31b815260040160405180910390fd5b60015b612e0560c08701876157e8565b612e139060208101906157a1565b9050811015612f5357611388612e2c60c08801886157e8565b612e3a9060208101906157a1565b83818110612e5857634e487b7160e01b600052603260045260246000fd5b9050604002016020016020810190612e709190615340565b61ffff161180612f2d5750612e8860c08701876157e8565b612e969060208101906157a1565b612ea16001846158ca565b818110612ebe57634e487b7160e01b600052603260045260246000fd5b612ed49260206040909202019081019150615340565b61ffff16612ee560c08801886157e8565b612ef39060208101906157a1565b83818110612f1157634e487b7160e01b600052603260045260246000fd5b612f279260206040909202019081019150615340565b61ffff16115b15612f4b576040516306b7c75960e31b815260040160405180910390fd5b600101612df8565b508460d0612f618282615ba9565b905050612f6c6147e8565b6000612f7e6080860160608701615340565b612f8e6060870160408801615340565b612f9e6040880160208901615340565b612fab6020890189615340565b612fb59190615856565b612fbf9190615856565b612fc99190615856565b61ffff16905060fa612fe16040870160208801615340565b61ffff16108061301d575073e9191e06eaa1b32997ffafb9a2abbab525518fa861301160c0870160a08801614c7b565b6001600160a01b031614155b8061303b575060fa6130356080870160608801615340565b61ffff16105b8061304857508061271014155b1561306657604051632429608560e11b815260040160405180910390fd5b8460d46130738282615dd2565b505060d15461308e908490600160f01b900461ffff166119cb565b5080156130d5576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60606130e9826137a9565b61310657604051630a14c4b560e41b815260040160405180910390fd5b60d0805461311390615b01565b151590506131305760405180602001604052806000815250611442565b60d061313b83614817565b60405160200161314c929190615465565b60405160208183030381529060405292915050565b600083815260c96020908152604080832060cb909252808320549051630735176d60e11b81526004810183905260d2602482015260448101869052606481018290528415156084820152736309b70d4e692dd3123ac94029b28557c61d137490630e6a2eda9060a40160206040518083038186803b1580156131e257600080fd5b505af41580156131f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061321a919061535c565b9695505050505050565b6000670de0b6b3a764000061325168a20d6e21d0e5255308546001600160601b03600160a01b9091041690565b61325b919061588b565b905090565b6033546001600160a01b0316613274613828565b6001600160a01b03161461329b576040516330cd747160e01b815260040160405180910390fd5b604051663337b932bb32b960c91b602082015260270160405160208183030381529060405280519060200120816040516020016132d89190615449565b604051602081830303815290604052805190602001201461330c57604051635ee88f9760e01b815260040160405180910390fd5b5060d6805460ff19166001179055565b61332461424d565b6001600160a01b0381166133895760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401612cf4565b6117dd816142c6565b60405163140fbc8560e01b8152736309b70d4e692dd3123ac94029b28557c61d13749063140fbc8590611b629060cd9085906004016154e5565b6033546001600160a01b03166133e0613828565b6001600160a01b031614613407576040516330cd747160e01b815260040160405180910390fd5b60d654610100900460ff16156134305760405163249fab5d60e01b815260040160405180910390fd5b613438613224565b8163ffffffff16101561345e57604051638a164f6360e01b815260040160405180910390fd5b60d1805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b6033546001600160a01b0316613498613828565b6001600160a01b0316146134bf576040516330cd747160e01b815260040160405180910390fd5b60d6546301000000900460ff16156134ea5760405163249fab5d60e01b815260040160405180910390fd5b6113886134fa6020830183615340565b61ffff16111561351d576040516306b7c75960e31b815260040160405180910390fd5b60015b61352d60208301836157a1565b90508110156136435761138861354660208401846157a1565b8381811061356457634e487b7160e01b600052603260045260246000fd5b905060400201602001602081019061357c9190615340565b61ffff16118061361d575061359460208301836157a1565b61359f6001846158ca565b8181106135bc57634e487b7160e01b600052603260045260246000fd5b6135d29260206040909202019081019150615340565b61ffff166135e360208401846157a1565b8381811061360157634e487b7160e01b600052603260045260246000fd5b6136179260206040909202019081019150615340565b61ffff16115b1561363b576040516306b7c75960e31b815260040160405180910390fd5b600101613520565b508060d26136518282615cf2565b505050565b6001600160a01b038116600090815268a20d6e21d0e5255313602052604090208054600160581b90046001166136a657805460ff60581b1916600160581b60ff843b151560020260011716021781555b919050565b8160031c8360601b016007831660051b815463ffffffff8482841c188116831b8218845550505050505050565b8154600160601b900463ffffffff1668a20d6e21d0e52553088161375e57805463ffffffff198116600163ffffffff928316019182169081178355855463ffffffff60601b1916600160601b82021786556000818152600284016020526040902080546001600160a01b0319166001600160a01b03871617905590925061375e57600080fd5b5092915050565b600183038060021c8560601b016003821660061b915080546001600160401b038563ffffffff168560201b178083861c188216851b83188455505050505050505050565b6000806137b583611448565b6001600160a01b0316141592915050565b6028828152601484905268a20d6e21d0e525530f600090815260488120915281905560008181526001600160a01b0380841691908516907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590602090a3505050565b60003373ea49e7be310716da66725c84a5127d2f6a202eaf1461384a57503390565b503290565b6001600160a01b03821661387657604051633a954ecd60e21b815260040160405180910390fd5b600061388184613656565b9050600061388e84613656565b9050600068a20d6e21d0e52553089050613915604051806101a0016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600063ffffffff16815260200160008152602001600063ffffffff1681525090565b835463ffffffff600160801b808304821660808501528554041660a083015282546001600160601b03600160a01b91829004811660c08501529104166040820181905285111561397857604051631e9acf1760e31b815260040160405180910390fd5b6040810180518690039081905284546001600160601b03918216600160a01b9081026001600160a01b03928316178755855481810484168901606086018190529093160291161783556080810151613a03906139d9670de0b6b3a764000090565b8360400151816139f957634e487b7160e01b600052601260045260246000fd5b0480821191030290565b81528254600160581b9004600216613a7e57856001600160a01b0316876001600160a01b03161415613a3d57805160808201510360a08201525b613a78670de0b6b3a7640000826060015181613a6957634e487b7160e01b600052601260045260246000fd5b048260a0015180821191030290565b60208201525b80516020820151835463ffffffff600160801b80830482169093019390930360e085018190529092160263ffffffff60801b19909116178255600a82016001600160a01b03888116908816141560011615613cb6576000613b008360800151613af585600001518660200151808218908211021890565b808218908211021890565b90508015613cb457604080516080810182526000808252602080830182815283850183815260608086019081528651888152600589901b81018501885290819052908e9052908e90528101835286518590038752868101805186900390526001600160a01b03808e16835260088901909152838220908c168252929020909190613b8a888c6136d8565b63ffffffff166101408701525b6080860180516000190190819052600381901c606084901b015460009160051b60e0161c63ffffffff1663ffffffff169050613bd8828860a00151836136ab565b613bf786828961014001518a60a0018051809190600101815250613765565b83518181526020018452600881901c6005890160601b015460ff82161c60011615613c55576005880160601b600882901c018054600160ff84161b191690556000818152600489016020526040902080546001600160a01b03191690555b506000199093019283613b97576001870154613c7b9084906001600160a01b0316614865565b5050506080830151865463ffffffff918216600160801b90810263ffffffff60801b1992831617895560a0860151885493160291161785555b505b6000613ccb83602001518460000151016148b5565b8454600160601b900463ffffffff16610180850152835190915015613e5f57606089901b6001176020828101919091526001600160a01b038a16600090815260088601909152604081206080850151855181036101008701819052895463ffffffff909116600160801b0263ffffffff60801b199091161789556101808601515b60001991909101600381901c606084901b0154909190600583901b60e0161c63ffffffff16613d7e8782600080613765565b8551602080880151600884901b1782520186526006890160601b600882901c018054600160ff84161b191690558415613dcb57613dcb896009018380600101945063ffffffff16836136ab565b600881901c60058a0160601b015460ff82161c60011615613e1f576005890160601b600882901c018054600160ff84161b19169055600081815260048a016020526040902080546001600160a01b03191690555b50866101000151821415613d4c578315613e5a5763ffffffff81166101808801819052885463ffffffff60601b1916600160601b9091021788555b505050505b60208301511561407d57606088901b60208201528354600160201b900463ffffffff166101608401526001600160a01b03881660009081526008850160205260409020613eac868a6136d8565b63ffffffff166101408501526000670de0b6b3a76400008560c0015181613ee357634e487b7160e01b600052601260045260246000fd5b60a08701516020880151810161012089018190528a5463ffffffff60801b1916600160801b63ffffffff92831602178b55895493909204935091600160401b9004165b600087610180015163ffffffff168263ffffffff1614613f76576009890160601b631fffffff600384901c160154600183019260e060059190911b161c63ffffffff1663ffffffff169050613fd8565b506101608701515b613f8f87600019830160011b6110fa565b63ffffffff1615613fc457613fbd613fb18a60060183600101876001016148fc565b85811180159091021790565b9050613f7e565b600181018481118015909102176101608901525b600881901c60068a0160601b018054600160ff84161b80199091161790556140018584836136ab565b61401887828a610140015186806001019750613765565b8551602080880151600884901b17825201865250866101200151821415613f2657875461016088015163ffffffff908116600160201b0267ffffffff000000001991909316600160401b02166bffffffffffffffff0000000019909116171787555050505b604081015151156140a15760018401546140a19082906001600160a01b03166149e3565b5050846000528560601b60601c8760601b60601c600080516020615f5283398151915260206000a350505050505050565b60006140dd83613656565b8054909150600160581b900460021615158215151461411857805460ff600160581b80830482166002189091160260ff60581b199091161781555b8115156000528260601b60601c7fb5a1de456fff688115a4f75380060c23c8532d14ff85f687cc871456d642039360206000a2505050565b6127106001600160601b03821611156141be5760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608401612cf4565b6001600160a01b0382166142145760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152606401612cf4565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217609755565b614255613828565b6001600160a01b03166142706033546001600160a01b031690565b6001600160a01b031614611ff55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401612cf4565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821661433f57604051633a954ecd60e21b815260040160405180910390fd5b600061434a83613656565b6040805180820190915260006020820181905282546001600160601b03600160a01b8083048216880180831682026001600160a01b03948516178755670de0b6b3a764000090819004865268a20d6e21d0e525530880548381048516808c018087169095029190961617815596975080840460010194939284916143de91841163fffffffe91850491909111171515151590565b90508882108117156144035760405163e5cfe95760e01b815260040160405180910390fd5b508654670de0b6b3a76400009091049250600160581b9004600216151590506145a5576001600160a01b03871660009081526008850160205260408120865485519192600a880192600160801b90920463ffffffff169161446a90838103908410026148b5565b90508060400151516000146145a05760608b901b6020820152604081015151885463ffffffff600160801b80830482169093018116830263ffffffff60801b19928316178b5589518c54911690920291161789556144c8898c6136d8565b63ffffffff1660208801525b855b6144e784600019830160011b6110fa565b63ffffffff161561451c576145156145098a60060183600101896001016148fc565b87811180159091021790565b90506144d6565b600181018681118015909102179650600881901c60068a0160601b018054600160ff84161b80199091161790556145548584836136ab565b61456a84828a6020015186806001019750613765565b8151602080840151600884901b1782520182525086518214156144d45760018801546145a09082906001600160a01b03166149e3565b505050505b60008681526001600160a01b03881690600080516020615f52833981519152602082a350505050505050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461461e576040519150601f19603f3d011682016040523d82523d6000602084013e614623565b606091505b5050905080613651576040516312171d8360e31b815260040160405180910390fd5b68a20d6e21d0e52553088054600160201b900463ffffffff161561467c57604051633ab534b960e21b815260040160405180910390fd5b6001600160a01b0382166146a3576040516339a84a7b60e01b815260040160405180910390fd5b630f4599e560005233602052602060006024601c6000865af1600160005114166146d55763d125259c6000526004601cfd5b805467ffffffff000000001916600160201b1781556001810180546001600160a01b0384166001600160a01b031990911617905583156147e2576001600160a01b03831661473657604051633a954ecd60e21b815260040160405180910390fd5b6001600160601b03841163fffffffe670de0b6b3a764000086041117156147705760405163e5cfe95760e01b815260040160405180910390fd5b80546001600160a01b0316600160a01b6001600160601b03861602178155600061479984613656565b80546001600160601b038716600160a01b026001600160a01b039182161782556000878152919250851690600080516020615f52833981519152602082a3611a4b8460016140d2565b50505050565b600054610100900460ff1661480f5760405162461bcd60e51b8152600401612cf4906155d0565b611ff5614a1f565b606060a06040510180604052602081039150506000815280825b600183039250600a81066030018353600a90048061484e57614853565b614831565b50819003601f19909101908152919050565b6060820151805160051b60840160808203915063144027d38252836020015160208301528360400151604083015260608083015260208282601c85016000875af16001835114166147e257600082fd5b6148d960405180606001604052806000815260200160008152602001606081525090565b604051828152806020018360051b81016040528183604001528083525050919050565b6000801990508360601b8360081c81018054198560ff161c8560ff161b8061495b578460081c83015b600183019250825419915080831182171561493f57614944565b614925565b808311156149595760ff86191691821b90911c905b505b80156149d95782820360081b7e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b1503160405821960010183166001600160801b03811160071b81811c6001600160401b031060061b1781811c63ffffffff1060051b1790811c63d76453e004601f169190911a171785811015878210176000031793505b5050509392505050565b60408201516040810363263c69d68152602080820152815160051b604401915060208183601c84016000875af16001825114166147e257600081fd5b600054610100900460ff16614a465760405162461bcd60e51b8152600401612cf4906155d0565b611ff5614a51613828565b6142c6565b828054614a6290615b01565b90600052602060002090601f016020900481019282614a845760008555614aca565b82601f10614a9d57805160ff1916838001178555614aca565b82800160010185558215614aca579182015b82811115614aca578251825591602001919060010190614aaf565b50614ad6929150614b1b565b5090565b6040518060a0016040528060006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001600081525090565b5b80821115614ad65760008155600101614b1c565b80356136a681615f0c565b60008083601f840112614b4c578182fd5b5081356001600160401b03811115614b62578182fd5b6020830191508360208260051b850101111561194257600080fd5b80356136a681615f21565b60008083601f840112614b99578182fd5b5081356001600160401b03811115614baf578182fd5b60208301915083602082850101111561194257600080fd5b600082601f830112614bd7578081fd5b81356001600160401b03811115614bf057614bf0615b4c565b614c03601f8201601f1916602001615826565b818152846020838601011115614c17578283fd5b816020850160208301379081016020019190915292915050565b600060408284031215614c42578081fd5b50919050565b600060c08284031215614c42578081fd5b80356001600160801b03811681146136a657600080fd5b80356136a681615f3f565b600060208284031215614c8c578081fd5b813561188181615f0c565b60008060408385031215614ca9578081fd5b8235614cb481615f0c565b91506020830135614cc481615f0c565b809150509250929050565b600080600060608486031215614ce3578081fd5b8335614cee81615f0c565b92506020840135614cfe81615f0c565b929592945050506040919091013590565b60008060408385031215614d21578182fd5b8235614d2c81615f0c565b946020939093013593505050565b60008060408385031215614d4c578182fd5b8235614d5781615f0c565b91506020830135614cc481615f2f565b60006020808385031215614d79578182fd5b82356001600160401b0380821115614d8f578384fd5b818501915085601f830112614da2578384fd5b813581811115614db457614db4615b4c565b8060051b9150614dc5848301615826565b8181528481019084860184860187018a1015614ddf578788fd5b8795505b83861015614e0d5780359450614df885615f0c565b84835260019590950194918601918601614de3565b5098975050505050505050565b600060208284031215614e2b578081fd5b813561188181615f21565b600060208284031215614e47578081fd5b815161188181615f21565b600060208284031215614e63578081fd5b5035919050565b60008060008385036101a0811215614e80578182fd5b843593506020850135925061016080603f1983011215614e9e578283fd5b614ea66157fd565b9150614eb460408701614c59565b8252614ec260608701614c59565b6020830152614ed360808701614c59565b6040830152614ee460a08701614c70565b6060830152614ef560c08701614c70565b6080830152614f0660e08701614c70565b60a0830152610100614f19818801614c70565b60c0840152610120614f2c818901614c70565b60e0850152610140614f3f818a01614c70565b83860152614f4e848a01614b30565b82860152614f5f6101808a01614b7d565b8186015250505050809150509250925092565b6000806000838503610140811215614f88578182fd5b8435935060208501359250610100603f1982011215614fa5578182fd5b506040840190509250925092565b600080600060608486031215614fc7578081fd5b83359250602084013591506040840135614fe081615f21565b809150509250925092565b600060208284031215614ffc578081fd5b81356001600160e01b031981168114611881578182fd5b600060208284031215615024578081fd5b81356001600160401b03811115615039578182fd5b61504584828501614bc7565b949350505050565b6000806000806000806101608789031215615066578384fd5b86356001600160401b038082111561507c578586fd5b6150888a838b01614bc7565b9750602089013591508082111561509d578586fd5b6150a98a838b01614bc7565b965060408901359150808211156150be578586fd5b50870160e0818a0312156150d0578485fd5b93506150df8860608901614c48565b92506150ee6101208801614b30565b91506150fd6101408801614b30565b90509295509295509295565b60008060008060008060008060a0898b031215615124578586fd5b88356001600160401b038082111561513a578788fd5b6151468c838d01614c31565b995060208b013591508082111561515b578788fd5b6151678c838d01614b3b565b909950975060408b013591508082111561517f578384fd5b61518b8c838d01614b3b565b909750955060608b013591506151a082615f0c565b90935060808a013590808211156151b5578384fd5b506151c28b828c01614b88565b999c989b5096995094979396929594505050565b60008060008060008060a087890312156151ee578384fd5b86356001600160401b0380821115615204578586fd5b6152108a838b01614c31565b9750602089013596506040890135915061522982615f0c565b90945060608801359061523b82615f0c565b90935060808801359080821115615250578384fd5b5061525d89828a01614b88565b979a9699509497509295939492505050565b600080600080600060808688031215615286578283fd5b85356001600160401b038082111561529c578485fd5b6152a889838a01614c31565b965060208801359550604088013591506152c182615f0c565b909350606087013590808211156152d6578283fd5b506152e388828901614b88565b969995985093965092949392505050565b600060208284031215615305578081fd5b81356001600160401b0381111561531a578182fd5b61504584828501614c31565b600060208284031215615337578081fd5b61188182614c59565b600060208284031215615351578081fd5b813561188181615f2f565b60006020828403121561536d578081fd5b5051919050565b60008060408385031215615386578182fd5b50508035926020909101359150565b6000602082840312156153a6578081fd5b813561188181615f3f565b6000815180845260208085019450808401835b838110156153e95781516001600160a01b0316875295820195908201906001016153c4565b509495945050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600081518084526154358160208601602086016159f5565b601f01601f19169290920160200192915050565b6000825161545b8184602087016159f5565b9190910192915050565b600080845461547381615b01565b6001828116801561548b576001811461549c576154c8565b60ff198416875282870194506154c8565b8886526020808720875b858110156154bf5781548a8201529084019082016154a6565b50505082870194505b5050505083516154dc8183602088016159f5565b01949350505050565b82815260406020820152600061504560408301846153b1565b602081526000611881602083018461541d565b60e08152600061552460e083018a61541d565b602060018060a01b038a1681850152604063ffffffff808b1682870152808a1660608701525061ffff808916608087015280881660a087015285840360c087015281840181885116855283880151838587015281815180845260608801915086830197508893505b808410156155bc57875180518616835287810151861688840152978701976001949094019392509085019061558c565b509f9e505050505050505050505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b9687526020870195909552604086019390935260608501919091526001600160a01b0316608084015260a08301526001600160801b031660c082015260e00190565b60006101608a8352896020840152806040840152883581840152506020880135601e1989360301811261568e578182fd5b880180356001600160401b038111156156a5578283fd5b8060051b8036038b13156156b7578384fd5b60406101808601526101a085018290526101c06001600160fb1b038311156156dd578485fd5b816020850182880137818601935080840192508483528a606087015280868503016080870152505061571081888a6153f4565b86516001600160a01b0390811660a087015260208801511660c0860152604087015160e0860152606087015161010086015260808701516101208601529250615757915050565b6001600160801b0383166101408301529998505050505050505050565b84815283602082015260018060a01b038316604082015260806060820152600061321a60808301846153b1565b6000808335601e198436030181126157b7578283fd5b8301803591506001600160401b038211156157d0578283fd5b6020019150600681901b360382131561194257600080fd5b60008235603e1983360301811261545b578182fd5b60405161016081016001600160401b038111828210171561582057615820615b4c565b60405290565b604051601f8201601f191681016001600160401b038111828210171561584e5761584e615b4c565b604052919050565b600061ffff8083168185168083038211156154dc576154dc615b36565b6000821982111561588657615886615b36565b500190565b6000826158a657634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156158c5576158c5615b36565b500290565b6000828210156158dc576158dc615b36565b500390565b5b81811015611a3257600081556001016158e2565b6001600160401b0383111561590d5761590d615b4c565b6159178154615b01565b600080601f8611601f8411818117156159365760008681526020902092505b801561596557601f880160051c830160208910156159515750825b615963601f870160051c8501826158e1565b505b50806001811461599957600094508715615980578387013594505b600188901b60001960038a901b1c1986161786556159eb565b601f198816945082845b868110156159c357888601358255602095860195600190920191016159a3565b50888610156159e05760001960f88a60031b161c19858901351681555b5060018860011b0186555b5050505050505050565b60005b83811015615a105781810151838201526020016159f8565b838111156147e25750506000910152565b8135615a2c81615f2f565b815461ffff191661ffff82161782555060018082016020840135601e19853603018112615a5857600080fd5b840180356001600160401b03811115615a7057600080fd5b6020820191508060061b3603821315615a8857600080fd5b600160401b811115615a9c57615a9c615b4c565b825481845580821015615ad1576000848152602081208381019083015b80821015615acd5782825590870190615ab9565b5050505b50600092835260208320925b818110156130d557615aef8385615ec7565b92840192604092909201918401615add565b600181811c90821680615b1557607f821691505b60208210811415614c4257634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6000813561144281615f0c565b6000813561144281615f2f565b6000813561144281615f3f565b80546001600160a01b0319166001600160a01b0392909216919091179055565b8135601e19833603018112615bbd57600080fd5b820180356001600160401b03811115615bd557600080fd5b602082019150803603821315615bea57600080fd5b615bf58183856158f6565b505060018101615c10615c0a60208501615b62565b82615b89565b615c43615c1f60408501615b7c565b82805463ffffffff60a01b191660a09290921b63ffffffff60a01b16919091179055565b615c76615c5260608501615b7c565b82805463ffffffff60c01b191660c09290921b63ffffffff60c01b16919091179055565b615ca5615c8560808501615b6f565b82805461ffff60e01b191660e09290921b61ffff60e01b16919091179055565b615cd8615cb460a08501615b6f565b8280546001600160f01b031660f09290921b6001600160f01b031916919091179055565b50611a32615ce960c08401846157e8565b60028301615a21565b8135615cfd81615f2f565b815461ffff191661ffff82161782555060018082016020840135601e19853603018112615d2957600080fd5b840180356001600160401b03811115615d4157600080fd5b6020820191508060061b3603821315615d5957600080fd5b600160401b811115615d6d57615d6d615b4c565b825481845580821015615da2576000848152602081208381019083015b80821015615d9e5782825590870190615d8a565b5050505b50600092835260208320925b818110156130d557615dc08385615ec7565b92840192604092909201918401615dae565b8135615ddd81615f2f565b815461ffff191661ffff8216178255506020820135615dfb81615f2f565b815463ffff00001916601082901b63ffff000016178255506040820135615e2181615f2f565b815465ffff000000008260201b1691508165ffff000000001982161783556060840135615e4d81615f2f565b67ffff0000000000008160301b169050808367ffffffff00000000198416171784556080850135615e7d81615f0c565b640100000000600160e01b0319929092169092179190911760409190911b68010000000000000000600160e01b0316178155611a32615ebe60a08401615b62565b60018301615b89565b8135615ed281615f2f565b815461ffff191661ffff8216178255506020820135615ef081615f2f565b815463ffff00001916601082901b63ffff000016178255505050565b6001600160a01b03811681146117dd57600080fd5b80151581146117dd57600080fd5b61ffff811681146117dd57600080fd5b63ffffffff811681146117dd57600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122097b8ea453bcf545a786ff1764d10535eeba396e0a4747ce88994375e9e181e2364736f6c63430008040033