0 txs
1.2k calls
constructor
No constructor.
functions
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
custodians
viewfunction custodians(address) view returns (bool)
FRACTAL_SIGNER
viewfunction FRACTAL_SIGNER() view returns (address)
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
getEthSignedMessageHash
purefunction getEthSignedMessageHash(bytes32 _messageHash) pure returns (bytes32)
getRedemptionWindow
viewfunction getRedemptionWindow() view returns (tuple)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
isCustodian
viewfunction isCustodian(address _address) view returns (bool)
isOperator
viewfunction isOperator(address _account) view returns (bool)
isWhitelistedForTransfer
viewfunction isWhitelistedForTransfer(address _address) view returns (bool)
mintLimit
viewfunction mintLimit() view returns (uint256)
name
viewfunction name() view returns (string)
nfcId
viewfunction nfcId(uint256 _tokenId) view returns (uint256)
nfcIdRegistry
viewfunction nfcIdRegistry() view returns (address)
nftFromNfc
viewfunction nftFromNfc(uint256 _nfcId) view returns (uint256)
owner
viewfunction owner() view returns (address)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
paused
viewfunction paused() view returns (bool)
recoverSigner
purefunction recoverSigner(bytes32 _ethSignedMessageHash, bytes _signature) pure returns (address)
skipKyc
viewfunction skipKyc() view returns (bool)
splitSignature
purefunction splitSignature(bytes sig) pure returns (bytes32 r, bytes32 s, uint8 v)
stateOf
viewfunction stateOf(uint256) view returns (uint8)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
tokenExists
viewfunction tokenExists(uint256 _tokenId) view returns (bool)
tokenURI
viewfunction tokenURI(uint256 tokenId) view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
transferWhitelist
viewfunction transferWhitelist(address) view returns (bool)
transitionRequiresAuth
purefunction transitionRequiresAuth(uint8 fromState, uint8 toState) pure returns (bool)
transitionRequiresKyc
purefunction transitionRequiresKyc(uint8 fromState, uint8 toState) pure returns (bool)
transitionValid
purefunction transitionValid(uint8 fromState, uint8 toState) pure returns (bool)
verifyClaimNft
purefunction verifyClaimNft(address _signer, address _user, uint256 _tokenId, uint256 _expirationTimestamp, bytes signature) pure returns (bool)
verifySetState
purefunction verifySetState(address _signer, address _user, uint256 _tokenId, uint256 _state, uint256 _expirationTimestamp, bytes signature) pure returns (bool)
__AN1Mintable_initialize_unchained
nonpayablefunction __AN1Mintable_initialize_unchained(uint256 _mintLimit)
__AN1Mintable_initialize
nonpayablefunction __AN1Mintable_initialize(address _owner, string _name, string _symbol, uint256 _mintLimit)
__PhygitalItems_initialize
nonpayablefunction __PhygitalItems_initialize(address _owner, address _nfcIdRegistry, string _name, string _symbol, string _baseItemsURI, uint256 _mintLimit, address[] _transferWhitelist, address[] _custodians, address _fractalSigner, bool _skipKyc)
__PhygitalItems_unchained
nonpayablefunction __PhygitalItems_unchained(address _nfcIdRegistry, string _baseItemsURI, address[] _transferWhitelist, address[] _custodians, address _fractalSigner, bool _skipKyc)
addCustodian
nonpayablefunction addCustodian(address _address)
addOperator
nonpayablefunction addOperator(address _operator)
addOperators
nonpayablefunction addOperators(address[] _operators)
addWhitelistedAddress
nonpayablefunction addWhitelistedAddress(address _address)
approve
nonpayablefunction approve(address to, uint256 tokenId)
batchMintAndTransfer
nonpayablefunction batchMintAndTransfer(address[] _receivers, uint256[] _quantities)
cancelRedemptionOfTokens
nonpayablefunction cancelRedemptionOfTokens(uint256[] _tokenIds)
claimNft
nonpayablefunction claimNft(uint256 tokenId, bytes authSig)
mintAndHold
nonpayablefunction mintAndHold(uint256 quantity)
mintAndTransfer
nonpayablefunction mintAndTransfer(address _to, uint256 _quantity)
onERC721Received
nonpayablefunction onERC721Received(address, address, uint256, bytes) returns (bytes4)
overrideState
nonpayablefunction overrideState(uint256[] _tokenIds, uint8 _state)
pause
nonpayablefunction pause()
removeCustodian
nonpayablefunction removeCustodian(address _address)
removeOperator
nonpayablefunction removeOperator(address _operator)
removeWhitelistedAddress
nonpayablefunction removeWhitelistedAddress(address _address)
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)
setBaseItemsURI
nonpayablefunction setBaseItemsURI(string _baseItemsURI)
setMintLimit
nonpayablefunction setMintLimit(uint256 _mintLimit)
setNfcIdRegistry
nonpayablefunction setNfcIdRegistry(address _addr)
setRedemptionWindow
nonpayablefunction setRedemptionWindow(uint256 from, uint256 to, uint256 redemptionPrice)
setSkipKyc
nonpayablefunction setSkipKyc(bool _skipKyc)
setState
nonpayablefunction setState(uint256 tokenId, uint8 state, bytes authSig, tuple cred)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 tokenId)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
events
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
BaseAssetsURIChanged
event BaseAssetsURIChanged(string _baseItemsURI)
ConsecutiveTransfer
event ConsecutiveTransfer(uint256 indexed fromTokenId, uint256 toTokenId, address indexed from, address indexed to)
CustodianListChanged
event CustodianListChanged(address indexed _address, bool _isAdded)
Initialized
event Initialized(uint8 version)
MintLimitChanged
event MintLimitChanged(uint256 _previousLimit, uint256 _newLimit)
OperatorAccessChanged
event OperatorAccessChanged(address indexed operator, bool indexed status)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
RedemptionWindowSet
event RedemptionWindowSet(uint256 from, uint256 to, uint256 redemptionPrice)
StateChanged
event StateChanged(uint256 indexed tokenId, uint8 previousState, uint8 currentState)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
TransferWhitelistChanged
event TransferWhitelistChanged(address indexed _address, bool _isAdded)
Unpaused
event Unpaused(address account)
errors
ApprovalCallerNotOwnerNorApproved
error ApprovalCallerNotOwnerNorApproved()
ApprovalQueryForNonexistentToken
error ApprovalQueryForNonexistentToken()
ApproveToCaller
error ApproveToCaller()
BalanceQueryForZeroAddress
error BalanceQueryForZeroAddress()
MintERC2309QuantityExceedsLimit
error MintERC2309QuantityExceedsLimit()
MintToZeroAddress
error MintToZeroAddress()
MintZeroQuantity
error MintZeroQuantity()
OwnerQueryForNonexistentToken
error OwnerQueryForNonexistentToken()
OwnershipNotInitializedForExtraData
error OwnershipNotInitializedForExtraData()
TransferCallerNotOwnerNorApproved
error TransferCallerNotOwnerNorApproved()
TransferFromIncorrectOwner
error TransferFromIncorrectOwner()
TransferToNonERC721ReceiverImplementer
error TransferToNonERC721ReceiverImplementer()
TransferToZeroAddress
error TransferToZeroAddress()
URIQueryForNonexistentToken
error URIQueryForNonexistentToken()
creation bytecode
0x608060405234801561001057600080fd5b50615f0d80620000216000396000f3fe608060405234801561001057600080fd5b50600436106103e55760003560e01c80637c74d8e61161020a5780639f82214211610125578063c09ed3c0116100b8578063eff04ad411610087578063eff04ad414610918578063f2fde38b1461092b578063f4a3662c1461093e578063fa54080114610951578063ff0acf4d1461096457600080fd5b8063c09ed3c0146108b5578063c87b56dd146108df578063e759b6fd146108f2578063e985e9c51461090557600080fd5b8063a7bb5803116100f4578063a7bb58031461084b578063ac8a584a1461087c578063b3643dbc1461088f578063b88d4fde146108a257600080fd5b80639f822142146107ff578063a07aea1c14610812578063a22cb46514610825578063a3a7333d1461083857600080fd5b80638fce789f1161019d5780639870d7fe1161016c5780639870d7fe146107bd578063996517cf146107d05780639d812072146107d95780639e6a1d7d146107ec57600080fd5b80638fce789f1461077b57806391571ba71461078e57806395d89b41146107a257806397aba7f9146107aa57600080fd5b8063807db818116101d9578063807db8181461073c5780638456cb591461074f57806385d95b81146107575780638da5cb5b1461076a57600080fd5b80637c74d8e6146106df5780637c93031e146106f25780637f0c7cbd146107055780637ffbe2411461071857600080fd5b806333c21d2c11610305578063530cd5ab116102985780636352211e116102675780636352211e146106725780636809b9f3146106855780636d70f7ae1461069857806370a08231146106c4578063715018a6146106d757600080fd5b8063530cd5ab1461062e578063545e399b1461064157806357a38513146106545780635c975abb1461066757600080fd5b806342842e0e116102d457806342842e0e146105e257806345fa3750146105f55780634cb9c777146106085780634f85fac71461061b57600080fd5b806333c21d2c1461058557806335c80c8c146105985780633d345d75146105c55780633f4ba83a146105da57600080fd5b80630f12a66a1161037d57806318160ddd1161034c57806318160ddd146105445780631eb751e81461054c57806323b872dd1461055f57806329975b431461057257600080fd5b80630f12a66a146104b3578063131a7e24146104c6578063150b7a02146104f7578063177eaf3d1461052357600080fd5b8063080571eb116103b9578063080571eb1461044f578063081812fc14610462578063094cfb581461048d578063095ea7b3146104a057600080fd5b8062923f9e146103ea57806301ffc9a714610412578063040b3ba51461042557806306fdde031461043a575b600080fd5b6103fd6103f8366004615537565b610988565b60405190151581526020015b60405180910390f35b6103fd610420366004615593565b610999565b6104386104333660046156cf565b6109c1565b005b610442611073565b6040516104099190615a10565b61043861045d36600461532a565b61110e565b610475610470366004615537565b611175565b6040516001600160a01b039091168152602001610409565b61043861049b366004614f17565b6111c2565b6104386104ae36600461532a565b611359565b6104386104c1366004614ec3565b611407565b6104ea6104d4366004615537565b6101006020526000908152604090205460ff1681565b60405161040991906159e7565b61050a610505366004615070565b611514565b6040516001600160e01b03199091168152602001610409565b610536610531366004615537565b611525565b604051908152602001610409565b6105366115a6565b61043861055a366004614ec3565b6115c6565b61043861056d366004615030565b611696565b610438610580366004614ec3565b611892565b610536610593366004615537565b6119b2565b6103fd6105a6366004614ec3565b6001600160a01b03166000908152610107602052604090205460ff1690565b610108546103fd90600160a01b900460ff1681565b610438611a36565b6104386105f0366004615030565b611a65565b61043861060336600461546d565b611a85565b6103fd6106163660046155fd565b611d1a565b6104386106293660046154ff565b611e8c565b61043861063c366004614ec3565b611ed0565b61043861064f3660046151f4565b611fe6565b60fe54610475906001600160a01b031681565b60985460ff166103fd565b610475610680366004615537565b6122b2565b610438610693366004615537565b6122bd565b6103fd6106a6366004614ec3565b6001600160a01b031660009081526065602052604090205460ff1690565b6105366106d2366004614ec3565b6122e9565b610438612351565b6104386106ed36600461541c565b612363565b6104386107003660046152b0565b6124ac565b6103fd61071336600461514c565b6124f7565b6103fd610726366004614ec3565b6101066020526000908152604090205460ff1681565b61043861074a366004615537565b61258d565b610438612664565b610438610765366004614ec3565b612691565b6033546001600160a01b0316610475565b610438610789366004615382565b6127a8565b61010854610475906001600160a01b031681565b6104426129a0565b6104756107b836600461554f565b6129b8565b6104386107cb366004614ec3565b612a37565b61053660ca5481565b6103fd6107e73660046155fd565b612a4b565b6104386107fa366004615537565b612aa7565b6103fd61080d3660046150d9565b612ba5565b6104386108203660046153ea565b612c33565b6104386108333660046151c7565b612cdb565b6103fd6108463660046155fd565b612d82565b61085e6108593660046155cb565b612ed5565b60408051938452602084019290925260ff1690820152606001610409565b61043861088a366004614ec3565b612f49565b6103fd61089d366004614ec3565b612f9e565b6104386108b0366004615070565b612fde565b6108bd613022565b6040805182518152602080840151908201529181015190820152606001610409565b6104426108ed366004615537565b61306e565b61043861090036600461562f565b6130f2565b6103fd610913366004614edf565b613160565b6104386109263660046157be565b61319d565b610438610939366004614ec3565b6132a3565b61043861094c366004615686565b613319565b61053661095f366004615537565b613667565b6103fd610972366004614ec3565b6101076020526000908152604090205460ff1681565b6000610993826136bb565b92915050565b60006109a482613704565b806109935750506001600160e01b031916634244f90d60e01b1490565b6000858152610100602052604090205460ff1660018560048111156109f657634e487b7160e01b600052602160045260246000fd5b141580610a1257503360009081526065602052604090205460ff165b610a985760405162461bcd60e51b815260206004820152604660248201527f506879676974616c4974656d733a3a73657453746174653a3a204f6e6c79206f60448201527f70657261746f722063616e2073657420737461746520746f204d414e55464143606482015265545552494e4760d01b608482015260a4015b60405180910390fd5b6001856004811115610aba57634e487b7160e01b600052602160045260246000fd5b1480610ad6575033610acb876122b2565b6001600160a01b0316145b80610b465750336000908152610107602052604090205460ff168015610b1b57506002816004811115610b1957634e487b7160e01b600052602160045260246000fd5b145b8015610b4657506003856004811115610b4457634e487b7160e01b600052602160045260246000fd5b145b610bc25760405162461bcd60e51b815260206004820152604160248201527f506879676974616c4974656d733a73657453746174653a3a2043616c6c65722060448201527f6d757374206265204e4654206f776e6572206f72206120637573746f6469616e6064820152601760f91b608482015260a401610a8f565b610bcc8186611d1a565b610c40576040805162461bcd60e51b81526020600482015260248101919091527f506879676974616c4974656d733a73657453746174653a3a205472616e73697460448201527f696f6e206265747765656e20737461746573206973206e6f742076616c69642e6064820152608401610a8f565b61010854600160a01b900460ff16158015610c605750610c608186612a4b565b15610c6e57610c6e8261372c565b610c788186612d82565b15610ec65782610cf05760405162461bcd60e51b815260206004820152603e60248201527f506879676974616c4974656d733a73657453746174653a3a205369676e61747560448201527f726520697320726571756972656420666f72207468697320616374696f6e00006064820152608401610a8f565b6000806000610d3487878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061396092505050565b925092509250610d5c836001600160a01b031660009081526065602052604090205460ff1690565b610dc95760405162461bcd60e51b815260206004820152603860248201527f506879676974616c4974656d733a73657453746174653a3a205369676e65722060448201527734b9903737ba1030903b30b634b21037b832b930ba37b91760411b6064820152608401610a8f565b81421115610e305760405162461bcd60e51b815260206004820152602e60248201527f506879676974616c4974656d733a73657453746174653a3a205369676e61747560448201526d39329034b99032bc3834b932b21760911b6064820152608401610a8f565b610e5d83338b8b6004811115610e5657634e487b7160e01b600052602160045260246000fd5b86866124f7565b610ec25760405162461bcd60e51b815260206004820152603060248201527f506879676974616c4974656d733a73657453746174653a3a205369676e61747560448201526f39329034b9903737ba103b30b634b21760811b6064820152608401610a8f565b5050505b6000816004811115610ee857634e487b7160e01b600052602160045260246000fd5b148015610f1457506001856004811115610f1257634e487b7160e01b600052602160045260246000fd5b145b80610f6857506001816004811115610f3c57634e487b7160e01b600052602160045260246000fd5b148015610f6857506000856004811115610f6657634e487b7160e01b600052602160045260246000fd5b145b1561100457610f756139e3565b6110045760405162461bcd60e51b815260206004820152605460248201527f506879676974616c4974656d733a73657453746174653a3a2043616e206f6e6c60448201527f792072656564656d206f722063616e63656c20647572696e6720612076616c6960648201527332103932b232b6b83a34b7b7103bb4b73237bb9760611b608482015260a401610a8f565b600086815261010060205260409020805486919060ff1916600183600481111561103e57634e487b7160e01b600052602160045260246000fd5b021790555085600080516020615e9883398151915282876040516110639291906159f5565b60405180910390a2505050505050565b606061107d613a01565b600201805461108b90615ddc565b80601f01602080910402602001604051908101604052809291908181526020018280546110b790615ddc565b80156111045780601f106110d957610100808354040283529160200191611104565b820191906000526020600020905b8154815290600101906020018083116110e757829003601f168201915b5050505050905090565b611117336106a6565b6111335760405162461bcd60e51b8152600401610a8f90615b40565b60ca548161113f6115a6565b6111499190615d62565b11156111675760405162461bcd60e51b8152600401610a8f90615ac9565b6111718282613a25565b5050565b6000611180826136bb565b61119d576040516333d1c03960e21b815260040160405180910390fd5b6111a5613a01565b60009283526006016020525060409020546001600160a01b031690565b600080516020615eb883398151915254610100900460ff166111f757600080516020615eb88339815191525460ff16156111fb565b303b155b6112175760405162461bcd60e51b8152600401610a8f90615c3f565b600080516020615eb883398151915254610100900460ff1615801561125357600080516020615eb8833981519152805461ffff19166101011790555b600054610100900460ff16158080156112735750600054600160ff909116105b8061128d5750303b15801561128d575060005460ff166001145b6112a95760405162461bcd60e51b8152600401610a8f90615bf1565b6000805460ff1916600117905580156112cc576000805461ff0019166101001790555b6112d88c8b8b8a6124ac565b6112e68b8988888888611fe6565b801561132c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50801561134c57600080516020615eb8833981519152805461ff00191690555b5050505050505050505050565b6000611364826122b2565b9050336001600160a01b0382161461139d576113808133613160565b61139d576040516367d9dca160e11b815260040160405180910390fd5b826113a6613a01565b6000848152600691909101602052604080822080546001600160a01b0319166001600160a01b0394851617905551849286811692908516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259190a4505050565b611410336106a6565b61142c5760405162461bcd60e51b8152600401610a8f90615b40565b6001600160a01b0381166000908152610107602052604090205460ff166114bd576040805162461bcd60e51b81526020600482015260248101919091527f506879676974616c4974656d733a72656d6f7665437573746f6469616e3a3a2060448201527f546869732061646472657373206973206e6f74206120637573746f6469616e2e6064820152608401610a8f565b6001600160a01b038116600081815261010760209081526040808320805460ff19169055519182527f0acf688a90eca35423ff3ea6eeb1954eea40201fd077cee8417f1a4ccb3c498691015b60405180910390a250565b630a85bd0160e11b5b949350505050565b61010854604051631222545360e11b81526004810183905260009182916001600160a01b0390911690632444a8a690602401604080518083038186803b15801561156e57600080fd5b505afa158015611582573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151d9190615355565b600060016115b2613a01565b600101546115be613a01565b540303919050565b6115cf336106a6565b6115eb5760405162461bcd60e51b8152600401610a8f90615b40565b6001600160a01b0381166116735760405162461bcd60e51b815260206004820152604360248201527f506879676974616c4974656d733a7365744e6663496452656769737472793a3a60448201527f2052656769737472792061646472657373206d757374206e6f74206265207a6560648201526239379760e91b608482015260a401610a8f565b61010880546001600160a01b0319166001600160a01b0392909216919091179055565b60006116a182613b66565b9050836001600160a01b0316816001600160a01b0316146116d45760405162a1148160e81b815260040160405180910390fd5b6000806116e084613bf5565b9150915061170581876116f03390565b6001600160a01b039081169116811491141790565b611730576117138633613160565b61173057604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b03851661175757604051633a954ecd60e21b815260040160405180910390fd5b6117648686866001613c1d565b801561176f57600082555b611777613a01565b6001600160a01b03871660009081526005919091016020526040902080546000190190556117a3613a01565b6001600160a01b03861660008181526005929092016020526040909120805460010190554260a01b17600160e11b176117da613a01565b60008681526004919091016020526040902055600160e11b83166118495760018401611804613a01565b6000828152600491909101602052604090205461184757611823613a01565b5481146118475783611833613a01565b600083815260049190910160205260409020555b505b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050505050565b61189b336106a6565b6118b75760405162461bcd60e51b8152600401610a8f90615b40565b6001600160a01b0381166000908152610106602052604090205460ff161561195a5760405162461bcd60e51b815260206004820152604a60248201527f506879676974616c4974656d733a61646457686974656c69737465644164647260448201527f6573733a3a2054686973206164647265737320697320616c726561647920776860648201526934ba32b634b9ba32b21760b11b608482015260a401610a8f565b6001600160a01b03811660008181526101066020908152604091829020805460ff1916600190811790915591519182527f0b122098eda9cf7b2c637dcf85fc0df00849ee084bfb7a181d73b6f9d5dd714d9101611509565b6101085460405163d6ca050b60e01b8152306004820152602481018390526000916001600160a01b03169063d6ca050b9060440160206040518083038186803b1580156119fe57600080fd5b505afa158015611a12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610993919061566e565b611a3f336106a6565b611a5b5760405162461bcd60e51b8152600401610a8f90615b40565b611a63613f00565b565b611a8083838360405180602001604052806000815250612fde565b505050565b611a8e336106a6565b611aaa5760405162461bcd60e51b8152600401610a8f90615b40565b60005b815181101561117157611ae6828281518110611ad957634e487b7160e01b600052603260045260246000fd5b60200260200101516136bb565b611b585760405162461bcd60e51b815260206004820152603f60248201527f506879676974616c4974656d733a63616e63656c526564656d7074696f6e4f6660448201527f546f6b656e733a3a54686973204e465420646f6573206e6f74206578697374006064820152608401610a8f565b60016101006000848481518110611b7f57634e487b7160e01b600052603260045260246000fd5b60209081029190910181015182528101919091526040016000205460ff166004811115611bbc57634e487b7160e01b600052602160045260246000fd5b14611c465760405162461bcd60e51b815260206004820152604e60248201527f506879676974616c4974656d733a63616e63656c526564656d7074696f6e4f6660448201527f546f6b656e733a3a54686973204e4654206973206e6f7420696e204d414e554660648201526d4143545552494e4720737461746560901b608482015260a401610a8f565b60006101006000848481518110611c6d57634e487b7160e01b600052603260045260246000fd5b6020026020010151815260200190815260200160002060006101000a81548160ff02191690836004811115611cb257634e487b7160e01b600052602160045260246000fd5b0217905550818181518110611cd757634e487b7160e01b600052603260045260246000fd5b6020026020010151600080516020615e9883398151915260016000604051611d009291906159f5565b60405180910390a280611d1281615e17565b915050611aad565b600080836004811115611d3d57634e487b7160e01b600052602160045260246000fd5b1415611d6e5760015b826004811115611d6657634e487b7160e01b600052602160045260246000fd5b149050610993565b6001836004811115611d9057634e487b7160e01b600052602160045260246000fd5b1415611dcd576002826004811115611db857634e487b7160e01b600052602160045260246000fd5b1480611dc657506000611d46565b9050610993565b6002836004811115611def57634e487b7160e01b600052602160045260246000fd5b1415611e25576003826004811115611e1757634e487b7160e01b600052602160045260246000fd5b1480611dc657506004611d46565b6003836004811115611e4757634e487b7160e01b600052602160045260246000fd5b1415611e54576002611d46565b6004836004811115611e7657634e487b7160e01b600052602160045260246000fd5b1415611e83576002611d46565b50600092915050565b611e95336106a6565b611eb15760405162461bcd60e51b8152600401610a8f90615b40565b6101088054911515600160a01b0260ff60a01b19909216919091179055565b611ed9336106a6565b611ef55760405162461bcd60e51b8152600401610a8f90615b40565b6001600160a01b0381166000908152610106602052604090205460ff16611f965760405162461bcd60e51b815260206004820152604960248201527f506879676974616c4974656d733a72656d6f766557686974656c69737465644160448201527f6464726573733a3a20546869732061646472657373206973206e6f74207768696064820152683a32b634b9ba32b21760b91b608482015260a401610a8f565b6001600160a01b038116600081815261010660209081526040808320805460ff19169055519182527f0b122098eda9cf7b2c637dcf85fc0df00849ee084bfb7a181d73b6f9d5dd714d9101611509565b600080516020615eb883398151915254610100900460ff1661201b57600080516020615eb88339815191525460ff161561201f565b303b155b61203b5760405162461bcd60e51b8152600401610a8f90615c3f565b600080516020615eb883398151915254610100900460ff1615801561207757600080516020615eb8833981519152805461ffff19166101011790555b600054610100900460ff16158080156120975750600054600160ff909116105b806120b15750303b1580156120b1575060005460ff166001145b6120cd5760405162461bcd60e51b8152600401610a8f90615bf1565b6000805460ff1916600117905580156120f0576000805461ff0019166101001790555b86516121039060ff9060208a0190614c2e565b5061010880546001600160a01b0319166001600160a01b038a1617905560005b8651811015612197576001610106600089848151811061215357634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061218f81615e17565b915050612123565b5060005b855181101561220f57600161010760008884815181106121cb57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061220781615e17565b91505061219b565b5060fe80546001600160a01b0319166001600160a01b038616179055610108805460ff60a01b1916600160a01b851515021790558015612289576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5080156122a957600080516020615eb8833981519152805461ff00191690555b50505050505050565b600061099382613b66565b600054610100900460ff166122e45760405162461bcd60e51b8152600401610a8f90615c9c565b60ca55565b60006001600160a01b038216612312576040516323d3ad8160e21b815260040160405180910390fd5b6001600160401b03612322613a01565b6005016000846001600160a01b03166001600160a01b0316815260200190815260200160002054169050919050565b612359613f52565b611a636000613fac565b61236c336106a6565b6123885760405162461bcd60e51b8152600401610a8f90615b40565b60005b828110156124a6578161010060008686858181106123b957634e487b7160e01b600052603260045260246000fd5b60209081029290920135835250810191909152604001600020805460ff191660018360048111156123fa57634e487b7160e01b600052602160045260246000fd5b021790555083838281811061241f57634e487b7160e01b600052603260045260246000fd5b90506020020135600080516020615e98833981519152610100600087878681811061245a57634e487b7160e01b600052603260045260246000fd5b90506020020135815260200190815260200160002060009054906101000a900460ff168460405161248c9291906159f5565b60405180910390a28061249e81615e17565b91505061238b565b50505050565b600054610100900460ff166124d35760405162461bcd60e51b8152600401610a8f90615c9c565b6124dd8383613ffe565b6124e68461403c565b6124ee614074565b6124a6816122bd565b60405163040b3ba560e01b60208201526bffffffffffffffffffffffff19606087901b1660248201526038810185905260588101849052607881018390526000908190609801604051602081830303815290604052805190602001209050600061256082613667565b9050886001600160a01b031661257682866129b8565b6001600160a01b0316149998505050505050505050565b612596336106a6565b6125b25760405162461bcd60e51b8152600401610a8f90615b40565b60ca54816125be6115a6565b6125c89190615d62565b11156125e65760405162461bcd60e51b8152600401610a8f90615ac9565b60006125f06140a3565b90506125fc3083613a25565b805b6126088383615d62565b811015611a805760008181526101006020526040808220805460ff1916600290811790915590518392600080516020615e988339815191529261264a926159f5565b60405180910390a28061265c81615e17565b9150506125fe565b61266d336106a6565b6126895760405162461bcd60e51b8152600401610a8f90615b40565b611a636140b3565b61269a336106a6565b6126b65760405162461bcd60e51b8152600401610a8f90615b40565b6001600160a01b0381166000908152610107602052604090205460ff16156127505760405162461bcd60e51b815260206004820152604160248201527f506879676974616c4974656d733a616464437573746f6469616e3a3a2054686960448201527f73206164647265737320697320616c7265616479206120637573746f6469616e6064820152601760f91b608482015260a401610a8f565b6001600160a01b03811660008181526101076020908152604091829020805460ff1916600190811790915591519182527f0acf688a90eca35423ff3ea6eeb1954eea40201fd077cee8417f1a4ccb3c49869101611509565b6127b1336106a6565b6127cd5760405162461bcd60e51b8152600401610a8f90615b40565b82811461284c5760405162461bcd60e51b815260206004820152604160248201527f414e314d696e7461626c653a3a6d696e744c696d69743a20526563656976657260448201527f7320616e64207175616e74697479206c656e677468206d757374206d617463686064820152601760f91b608482015260a401610a8f565b60005b838110156129995760ca5483838381811061287a57634e487b7160e01b600052603260045260246000fd5b905060200201356128896115a6565b6128939190615d62565b11156129235760405162461bcd60e51b815260206004820152605360248201527f414e314d696e7461626c653a3a6d696e744c696d69743a204d696e742074686560448201527f20726571756573746564207175616e74697469657320776f756c64207375727060648201527230b9b9903a34329036b4b73a103634b6b4ba1760691b608482015260a401610a8f565b61298785858381811061294657634e487b7160e01b600052603260045260246000fd5b905060200201602081019061295b9190614ec3565b84848481811061297b57634e487b7160e01b600052603260045260246000fd5b90506020020135613a25565b8061299181615e17565b91505061284f565b5050505050565b60606129aa613a01565b600301805461108b90615ddc565b6000806000806129c785612ed5565b6040805160008152602081018083528b905260ff8316918101919091526060810184905260808101839052929550909350915060019060a0016020604051602081039080840390855afa158015612a22573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b612a3f613f52565b612a48816140f0565b50565b600080836004811115612a6e57634e487b7160e01b600052602160045260246000fd5b148015612a9a57506001826004811115612a9857634e487b7160e01b600052602160045260246000fd5b145b15611e8357506001610993565b612ab0336106a6565b612acc5760405162461bcd60e51b8152600401610a8f90615b40565b80612ad56115a6565b1115612b645760405162461bcd60e51b815260206004820152605260248201527f414e314d696e7461626c653a3a6d696e744c696d69743a20546f74616c20737560448201527f70706c79206d757374206265206c6f776572206f7220657175616c20746f20746064820152713432903732bb9036b4b73a103634b6b4ba1760711b608482015260a401610a8f565b60ca5460408051918252602082018390527fe755e97fecfb948d7a0a599efd6e1a5ebcef4994a73737daad26a22ec8dc54c7910160405180910390a160ca55565b604051633d28d98b60e21b60208201526bffffffffffffffffffffffff19606086901b166024820152603881018490526058810183905260009081906078016040516020818303038152906040528051906020012090506000612c0782613667565b9050876001600160a01b0316612c1d82866129b8565b6001600160a01b03161498975050505050505050565b612c3b613f52565b60005b8151811015611171576000828281518110612c6957634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b038116600081815260659093526040808420805460ff1916600190811790915590519294509290917f1a2c385855a8f638e1b756a8eb477b4af53df30443ec505a9d5f25a0fd3db7709190a35080612cd381615e17565b915050612c3e565b6001600160a01b038216331415612d055760405163b06307db60e01b815260040160405180910390fd5b80612d0e613a01565b336000818152600792909201602090815260408084206001600160a01b03881680865290835293819020805460ff19169515159590951790945592518415158152919290917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b60006001836004811115612da657634e487b7160e01b600052602160045260246000fd5b148015612dd257506002826004811115612dd057634e487b7160e01b600052602160045260246000fd5b145b80612e2657506002836004811115612dfa57634e487b7160e01b600052602160045260246000fd5b148015612e2657506003826004811115612e2457634e487b7160e01b600052602160045260246000fd5b145b80612e7a57506003836004811115612e4e57634e487b7160e01b600052602160045260246000fd5b148015612e7a57506002826004811115612e7857634e487b7160e01b600052602160045260246000fd5b145b80612ece57506004836004811115612ea257634e487b7160e01b600052602160045260246000fd5b148015612ece57506002826004811115612ecc57634e487b7160e01b600052602160045260246000fd5b145b9392505050565b60008060008351604114612f2b5760405162461bcd60e51b815260206004820152601860248201527f696e76616c6964207369676e6174757265206c656e67746800000000000000006044820152606401610a8f565b50505060208101516040820151606090920151909260009190911a90565b612f51613f52565b6001600160a01b038116600081815260656020526040808220805460ff19169055519091907f1a2c385855a8f638e1b756a8eb477b4af53df30443ec505a9d5f25a0fd3db770908390a350565b6000306001600160a01b0383161415612fb957506001919050565b506001600160a01b03166000908152610106602052604090205460ff1690565b919050565b612fe9848484611696565b6001600160a01b0383163b156124a65761300584848484614142565b6124a6576040516368d2bf6b60e11b815260040160405180910390fd5b61304660405180606001604052806000815260200160008152602001600081525090565b5060408051606081018252610103548152610104546020820152610105549181019190915290565b6060613079826136bb565b61309657604051630a14c4b560e41b815260040160405180910390fd5b60006130a0614236565b90508051600014156130c15760405180602001604052806000815250612ece565b806130cb84614245565b6040516020016130dc929190615853565b6040516020818303038152906040529392505050565b6130fb336106a6565b6131175760405162461bcd60e51b8152600401610a8f90615b40565b61312360ff8383614cb2565b507f8abb566e14947ad2961965ff1bdc538748c1e511fb8966fe7c1760d6ded63f6360ff6040516131549190615a23565b60405180910390a15050565b600061316a613a01565b6001600160a01b039384166000908152600791909101602090815260408083209490951682529290925250205460ff1690565b6131a6336106a6565b6131c25760405162461bcd60e51b8152600401610a8f90615b40565b82821161324b5760405162461bcd60e51b815260206004820152604b60248201527f506879676974616c4974656d733a736574526564656d7074696f6e57696e646f60448201527f773a3a2054696d6520746f206d7573742062652067726561746572207468616e60648201526a103a34b6b290333937b69760a91b608482015260a401610a8f565b61010383905561010482905561010581905560408051848152602081018490529081018290527f83460453af3d88e74b8c36a04eb4ce9b23028eff70bfd7755d9659654761a9349060600160405180910390a1505050565b6132ab613f52565b6001600160a01b0381166133105760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a8f565b612a4881613fac565b613322836136bb565b61336e5760405162461bcd60e51b815260206004820152601860248201527f506879676974616c4974656d733a636c61696d4e66743a3a00000000000000006044820152606401610a8f565b30613378846122b2565b6001600160a01b0316146133ec5760405162461bcd60e51b815260206004820152603560248201527f506879676974616c4974656d733a636c61696d4e66743a3a205468697320746f60448201527435b2b71034b9903737ba1031b630b4b6b0b136329760591b6064820152608401610a8f565b8061344c5760405162461bcd60e51b815260206004820152602a60248201527f506879676974616c4974656d733a636c61696d4e66743a3a5369676e6174757260448201526919481c995c5d5a5c995960b21b6064820152608401610a8f565b600080600061349085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061396092505050565b92509250925061349f836106a6565b61350c5760405162461bcd60e51b815260206004820152603860248201527f506879676974616c4974656d733a636c61696d4e66743a3a205369676e65722060448201527734b9903737ba1030903b30b634b21037b832b930ba37b91760411b6064820152608401610a8f565b814211156135725760405162461bcd60e51b815260206004820152602d60248201527f506879676974616c4974656d733a636c61696d4e66743a3a205369676e61747560448201526c1c99481a5cc8195e1c1a5c9959609a1b6064820152608401610a8f565b61357f8333888585612ba5565b6135e45760405162461bcd60e51b815260206004820152603060248201527f506879676974616c4974656d733a636c61696d4e66743a3a205369676e61747560448201526f39329034b9903737ba103b30b634b21760811b6064820152608401610a8f565b336135ed613a01565b60008881526006919091016020526040902080546001600160a01b0319166001600160a01b0392909216919091179055613628303388611696565b6000613632613a01565b6000978852600601602052604090962080546001600160a01b0319166001600160a01b03909716969096179095555050505050565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c015b604051602081830303815290604052805190602001209050919050565b6000816001111580156136d557506136d1613a01565b5482105b80156109935750600160e01b6136e9613a01565b60008481526004919091016020526040902054161592915050565b600061370f82614287565b806109935750506001600160e01b03191663406201e360e11b1490565b806020015142106137975760405162461bcd60e51b815260206004820152602f60248201527f43726564656e7469616c56657269666965723a2043726564656e7469616c206e60448201526e37903637b733b2b9103b30b634b21760891b6064820152608401610a8f565b606081015115806137ba5750806060015181604001516137b79190615d62565b42105b61381e5760405162461bcd60e51b815260206004820152602f60248201527f43726564656e7469616c56657269666965723a20417070726f76616c206e6f7460448201526e103932b1b2b73a1032b737bab3b41760891b6064820152608401610a8f565b6000613829826142d5565b905060fd8160405161383b9190615837565b9081526040519081900360200190205460ff161561389b5760405162461bcd60e51b815260206004820152601e60248201527f43726564656e7469616c56657269666965723a205573656420686173682e00006044820152606401610a8f565b60006138a682614319565b83519091506000906138b9908390614337565b60fe549091506001600160a01b038083169116146139285760405162461bcd60e51b815260206004820152602660248201527f43726564656e7469616c56657269666965723a205369676e617475726520696e6044820152653b30b634b21760d11b6064820152608401610a8f565b600160fd8460405161393a9190615837565b908152604051908190036020019020805491151560ff1990921691909117905550505050565b60008060606040845110156139b75760405162461bcd60e51b815260206004820152601860248201527f73706c6974417574685369675f6f75744f66426f756e647300000000000000006044820152606401610a8f565b602084015160408086015190829082906139d4908990604161435b565b94509450945050509193909250565b600042610103600001541080156139fc57506101045442105b905090565b7f2569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c4090565b6000613a2f613a01565b54905081613a505760405163b562e8dd60e01b815260040160405180910390fd5b613a5d6000848385613c1d565b680100000000000000018202613a71613a01565b6001600160a01b038516600081815260059290920160205260409091208054929092019091554260a01b6001841460e11b1717613aac613a01565b600083815260049190910160205260408120919091556001600160a01b0384169083830190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b818114613b3657808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600101613afe565b5081613b5457604051622e076360e81b815260040160405180910390fd5b80613b5d613a01565b5550611a809050565b60008180600111613bdc57613b79613a01565b54811015613bdc576000613b8b613a01565b600083815260049190910160205260409020549050600160e01b8116613bda575b80612ece57613bb9613a01565b60001990920160008181526004939093016020526040909220549050613bac565b505b604051636f96cda160e11b815260040160405180910390fd5b6000806000613c02613a01565b60009485526006016020525050604090912080549092909150565b613c29848484846143e2565b815b613c358284615d62565b8110156129995760016000828152610100602052604090205460ff166004811115613c7057634e487b7160e01b600052602160045260246000fd5b1415613d0a5760405162461bcd60e51b815260206004820152605860248201527f506879676974616c4974656d733a5f6265666f7265546f6b656e5472616e736660448201527f6572733a20546f6b656e7320696e204d414e55464143545552494e472073746160648201527f74652063616e6e6f74206265207472616e736665727265640000000000000000608482015260a401610a8f565b60026000828152610100602052604090205460ff166004811115613d3e57634e487b7160e01b600052602160045260246000fd5b141580613e3a5750604051632cd90f6f60e21b81526001600160a01b0386166004820152309063b3643dbc9060240160206040518083038186803b158015613d8557600080fd5b505afa158015613d99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dbd919061551b565b80613e3a5750604051632cd90f6f60e21b81526001600160a01b0385166004820152309063b3643dbc9060240160206040518083038186803b158015613e0257600080fd5b505afa158015613e16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e3a919061551b565b613eee5760405162461bcd60e51b815260206004820152607360248201527f506879676974616c4974656d733a5f6265666f7265546f6b656e5472616e736660448201527f6572733a20546f6b656e7320696e2052454445454d454420737461746520636160648201527f6e206f6e6c79206265207472616e7366657272656420746f2f66726f6d2077686084820152726974656c69737465642061646472657373657360681b60a482015260c401610a8f565b80613ef881615e17565b915050613c2b565b613f0861446f565b6098805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6033546001600160a01b03163314611a635760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a8f565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080516020615eb883398151915254610100900460ff166140325760405162461bcd60e51b8152600401610a8f90615b9d565b61117182826144b8565b600054610100900460ff166140635760405162461bcd60e51b8152600401610a8f90615c9c565b61406b61453b565b612a488161456a565b600054610100900460ff1661409b5760405162461bcd60e51b8152600401610a8f90615c9c565b611a6361459a565b60006140ad613a01565b54919050565b6140bb6145cd565b6098805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258613f353390565b6001600160a01b038116600081815260656020526040808220805460ff1916600190811790915590519092917f1a2c385855a8f638e1b756a8eb477b4af53df30443ec505a9d5f25a0fd3db77091a350565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a02906141779033908990889088906004016159aa565b602060405180830381600087803b15801561419157600080fd5b505af19250505080156141c1575060408051601f3d908101601f191682019092526141be918101906155af565b60015b61421c573d8080156141ef576040519150601f19603f3d011682016040523d82523d6000602084013e6141f4565b606091505b508051614214576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061151d565b606060ff805461108b90615ddc565b604080516080019081905280825b600183039250600a81066030018353600a90048061427057614275565b614253565b50819003601f19909101908152919050565b60006301ffc9a760e01b6001600160e01b0319831614806142b857506380ac58cd60e01b6001600160e01b03198316145b806109935750506001600160e01b031916635b5e139f60e01b1490565b606060006142e4326014614613565b90508083608001516142f985604001516147f4565b61430686602001516147f4565b6040516020016130dc9493929190615882565b600061432582516147f4565b8260405160200161369e92919061594f565b60008060006143468585614896565b91509150614353816148dc565b509392505050565b60606143678284615d62565b8451101561437457600080fd5b60608215801561438f576040519150602082016040526143d9565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156143c85780518352602092830192016143b0565b5050858452601f01601f1916604052505b50949350505050565b60985460ff16156124a65760405162461bcd60e51b815260206004820152604b60248201527f414e314d696e7461626c655570677261646561626c653a3a5f6265666f72655460448201527f6f6b656e5472616e73666572733a20746f6b656e207472616e7366657220776860648201526a34b632903830bab9b2b21760a91b608482015260a401610a8f565b60985460ff16611a635760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610a8f565b600080516020615eb883398151915254610100900460ff166144ec5760405162461bcd60e51b8152600401610a8f90615b9d565b816144f5613a01565b600201908051906020019061450b929190614c2e565b5080614515613a01565b600301908051906020019061452b929190614c2e565b506001614536613a01565b555050565b600054610100900460ff166145625760405162461bcd60e51b8152600401610a8f90615c9c565b611a63614a62565b600054610100900460ff166145915760405162461bcd60e51b8152600401610a8f90615c9c565b612a3f81613fac565b600054610100900460ff166145c15760405162461bcd60e51b8152600401610a8f90615c9c565b6098805460ff19169055565b60985460ff1615611a635760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610a8f565b60606000614622836002615d7a565b61462d906002615d62565b6001600160401b0381111561465257634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561467c576020820181803683370190505b509050600360fc1b816000815181106146a557634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106146e257634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506000614706846002615d7a565b614711906001615d62565b90505b60018111156147a5576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061475357634e487b7160e01b600052603260045260246000fd5b1a60f81b82828151811061477757634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c9361479e81615dc5565b9050614714565b508315612ece5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610a8f565b6060600061480183614a92565b60010190506000816001600160401b0381111561482e57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015614858576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461489157614353565b614862565b6000808251604114156148cd5760208301516040840151606085015160001a6148c187828585614b6a565b945094505050506148d5565b506000905060025b9250929050565b60008160048111156148fe57634e487b7160e01b600052602160045260246000fd5b14156149075750565b600181600481111561492957634e487b7160e01b600052602160045260246000fd5b14156149775760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610a8f565b600281600481111561499957634e487b7160e01b600052602160045260246000fd5b14156149e75760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610a8f565b6003816004811115614a0957634e487b7160e01b600052602160045260246000fd5b1415612a485760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610a8f565b600054610100900460ff16614a895760405162461bcd60e51b8152600401610a8f90615c9c565b611a6333613fac565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310614ad15772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310614afd576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310614b1b57662386f26fc10000830492506010015b6305f5e1008310614b33576305f5e100830492506008015b6127108310614b4757612710830492506004015b60648310614b59576064830492506002015b600a83106109935760010192915050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115614ba15750600090506003614c25565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614bf5573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116614c1e57600060019250925050614c25565b9150600090505b94509492505050565b828054614c3a90615ddc565b90600052602060002090601f016020900481019282614c5c5760008555614ca2565b82601f10614c7557805160ff1916838001178555614ca2565b82800160010185558215614ca2579182015b82811115614ca2578251825591602001919060010190614c87565b50614cae929150614d26565b5090565b828054614cbe90615ddc565b90600052602060002090601f016020900481019282614ce05760008555614ca2565b82601f10614cf95782800160ff19823516178555614ca2565b82800160010185558215614ca2579182015b82811115614ca2578235825591602001919060010190614d0b565b5b80821115614cae5760008155600101614d27565b8035612fd981615e5e565b60008083601f840112614d57578182fd5b5081356001600160401b03811115614d6d578182fd5b6020830191508360208260051b85010111156148d557600080fd5b600082601f830112614d98578081fd5b81356020614dad614da883615d3f565b615d0f565b80838252828201915082860187848660051b8901011115614dcc578586fd5b855b85811015614df3578135614de181615e5e565b84529284019290840190600101614dce565b5090979650505050505050565b8035612fd981615e73565b60008083601f840112614e1c578182fd5b5081356001600160401b03811115614e32578182fd5b6020830191508360208285010111156148d557600080fd5b600082601f830112614e5a578081fd5b81356001600160401b03811115614e7357614e73615e48565b614e86601f8201601f1916602001615d0f565b818152846020838601011115614e9a578283fd5b816020850160208301379081016020019190915292915050565b803560058110612fd957600080fd5b600060208284031215614ed4578081fd5b8135612ece81615e5e565b60008060408385031215614ef1578081fd5b8235614efc81615e5e565b91506020830135614f0c81615e5e565b809150509250929050565b6000806000806000806000806000806101408b8d031215614f36578586fd5b614f3f8b614d3b565b9950614f4d60208c01614d3b565b985060408b01356001600160401b0380821115614f68578788fd5b614f748e838f01614e4a565b995060608d0135915080821115614f89578788fd5b614f958e838f01614e4a565b985060808d0135915080821115614faa578788fd5b614fb68e838f01614e4a565b975060a08d0135965060c08d0135915080821115614fd2578586fd5b614fde8e838f01614d88565b955060e08d0135915080821115614ff3578485fd5b506150008d828e01614d88565b9350506150106101008c01614d3b565b915061501f6101208c01614e00565b90509295989b9194979a5092959850565b600080600060608486031215615044578081fd5b833561504f81615e5e565b9250602084013561505f81615e5e565b929592945050506040919091013590565b60008060008060808587031215615085578182fd5b843561509081615e5e565b935060208501356150a081615e5e565b92506040850135915060608501356001600160401b038111156150c1578182fd5b6150cd87828801614e4a565b91505092959194509250565b600080600080600060a086880312156150f0578283fd5b85356150fb81615e5e565b9450602086013561510b81615e5e565b9350604086013592506060860135915060808601356001600160401b03811115615133578182fd5b61513f88828901614e4a565b9150509295509295909350565b60008060008060008060c08789031215615164578384fd5b863561516f81615e5e565b9550602087013561517f81615e5e565b945060408701359350606087013592506080870135915060a08701356001600160401b038111156151ae578182fd5b6151ba89828a01614e4a565b9150509295509295509295565b600080604083850312156151d9578182fd5b82356151e481615e5e565b91506020830135614f0c81615e73565b60008060008060008060c0878903121561520c578384fd5b863561521781615e5e565b955060208701356001600160401b0380821115615232578586fd5b61523e8a838b01614e4a565b96506040890135915080821115615253578586fd5b61525f8a838b01614d88565b95506060890135915080821115615274578384fd5b5061528189828a01614d88565b935050608087013561529281615e5e565b915060a08701356152a281615e73565b809150509295509295509295565b600080600080608085870312156152c5578182fd5b84356152d081615e5e565b935060208501356001600160401b03808211156152eb578384fd5b6152f788838901614e4a565b9450604087013591508082111561530c578384fd5b5061531987828801614e4a565b949793965093946060013593505050565b6000806040838503121561533c578182fd5b823561534781615e5e565b946020939093013593505050565b60008060408385031215615367578182fd5b825161537281615e5e565b6020939093015192949293505050565b60008060008060408587031215615397578182fd5b84356001600160401b03808211156153ad578384fd5b6153b988838901614d46565b909650945060208701359150808211156153d1578384fd5b506153de87828801614d46565b95989497509550505050565b6000602082840312156153fb578081fd5b81356001600160401b03811115615410578182fd5b61151d84828501614d88565b600080600060408486031215615430578081fd5b83356001600160401b03811115615445578182fd5b61545186828701614d46565b9094509250615464905060208501614eb4565b90509250925092565b6000602080838503121561547f578182fd5b82356001600160401b03811115615494578283fd5b8301601f810185136154a4578283fd5b80356154b2614da882615d3f565b80828252848201915084840188868560051b87010111156154d1578687fd5b8694505b838510156154f35780358352600194909401939185019185016154d5565b50979650505050505050565b600060208284031215615510578081fd5b8135612ece81615e73565b60006020828403121561552c578081fd5b8151612ece81615e73565b600060208284031215615548578081fd5b5035919050565b60008060408385031215615561578182fd5b8235915060208301356001600160401b0381111561557d578182fd5b61558985828601614e4a565b9150509250929050565b6000602082840312156155a4578081fd5b8135612ece81615e81565b6000602082840312156155c0578081fd5b8151612ece81615e81565b6000602082840312156155dc578081fd5b81356001600160401b038111156155f1578182fd5b61151d84828501614e4a565b6000806040838503121561560f578182fd5b61561883614eb4565b915061562660208401614eb4565b90509250929050565b60008060208385031215615641578182fd5b82356001600160401b03811115615656578283fd5b61566285828601614e0b565b90969095509350505050565b60006020828403121561567f578081fd5b5051919050565b60008060006040848603121561569a578081fd5b8335925060208401356001600160401b038111156156b6578182fd5b6156c286828701614e0b565b9497909650939450505050565b6000806000806000608086880312156156e6578283fd5b853594506156f660208701614eb4565b935060408601356001600160401b0380821115615711578485fd5b61571d89838a01614e0b565b90955093506060880135915080821115615735578283fd5b9087019060a0828a031215615748578283fd5b615750615ce7565b82358281111561575e578485fd5b61576a8b828601614e4a565b82525060208301356020820152604083013560408201526060830135606082015260808301358281111561579c578485fd5b6157a88b828601614e4a565b6080830152508093505050509295509295909350565b6000806000606084860312156157d2578081fd5b505081359360208301359350604090920135919050565b60008151808452615801816020860160208601615d99565b601f01601f19169290920160200192915050565b6005811061583357634e487b7160e01b600052602160045260246000fd5b9052565b60008251615849818460208701615d99565b9190910192915050565b60008351615865818460208801615d99565b835190830190615879818360208801615d99565b01949350505050565b60008551615894818460208a01615d99565b8083019050603b60f81b80825286516158b4816001850160208b01615d99565b6001920191820181905285516158d1816002850160208a01615d99565b6002920191820181905284516158ee816003850160208901615d99565b60039201918201527f6c6576656c3a62617369632b6c6976656e6573732b756e69712b77616c6c657460048201527f3b636974697a656e736869705f6e6f743a3b7265736964656e63795f6e6f743a60248201526044019695505050505050565b7f19457468657265756d205369676e6564204d6573736167653a0a00000000000081526000835161598781601a850160208801615d99565b83519083019061599e81601a840160208801615d99565b01601a01949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906159dd908301846157e9565b9695505050505050565b602081016109938284615815565b60408101615a038285615815565b612ece6020830184615815565b602081526000612ece60208301846157e9565b6000602080835281845483600182811c915080831680615a4457607f831692505b858310811415615a6257634e487b7160e01b87526022600452602487fd5b878601838152602001818015615a7f5760018114615a9057615aba565b60ff19861682528782019650615aba565b60008b815260209020895b86811015615ab457815484820152908501908901615a9b565b83019750505b50949998505050505050505050565b60208082526051908201527f414e314d696e7461626c653a3a6d696e744c696d69743a204d696e742074686560408201527f20726571756573746564207175616e7469747920776f756c642073757270617360608201527039903a34329036b4b73a103634b6b4ba1760791b608082015260a00190565b6020808252603e908201527f4f70657261746f72416363657373436f6e74726f6c3a3a6f6e6c794f7065726160408201527f746f723a2063616c6c6572206973206e6f742061206f70657261746f722e0000606082015260800190565b60208082526034908201527f455243373231415f5f496e697469616c697a61626c653a20636f6e7472616374604082015273206973206e6f7420696e697469616c697a696e6760601b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60208082526037908201527f455243373231415f5f496e697469616c697a61626c653a20636f6e747261637460408201527f20697320616c726561647920696e697469616c697a6564000000000000000000606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60405160a081016001600160401b0381118282101715615d0957615d09615e48565b60405290565b604051601f8201601f191681016001600160401b0381118282101715615d3757615d37615e48565b604052919050565b60006001600160401b03821115615d5857615d58615e48565b5060051b60200190565b60008219821115615d7557615d75615e32565b500190565b6000816000190483118215151615615d9457615d94615e32565b500290565b60005b83811015615db4578181015183820152602001615d9c565b838111156124a65750506000910152565b600081615dd457615dd4615e32565b506000190190565b600181811c90821680615df057607f821691505b60208210811415615e1157634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415615e2b57615e2b615e32565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114612a4857600080fd5b8015158114612a4857600080fd5b6001600160e01b031981168114612a4857600080fdfe18e785d11512625ba8e5486b7d963f337dfc0a628752fe18e284b0375eefe46cee151c8401928dc223602bb187aff91b9a56c7cae5476ef1b3287b085a16c85fa264697066735822122036bad48bf4a7b579e8aafa8d4837714fa4a0d9f78bea0d9ba19a0db1a8fafb5864736f6c63430008040033