0 txs
0 calls
constructor
No constructor.
functions
calculateAssetIdWithTokenId
viewfunction calculateAssetIdWithTokenId(uint256 assetType, uint256 tokenId) view returns (uint256)
calculateMintableAssetId
purefunction calculateMintableAssetId(uint256 assetType, bytes mintingBlob) pure returns (uint256 assetId)
defaultVaultWithdrawalLock
viewfunction defaultVaultWithdrawalLock() view returns (uint256)
DEPOSIT_CANCEL_DELAY
viewfunction DEPOSIT_CANCEL_DELAY() view returns (uint256)
FREEZE_GRACE_PERIOD
viewfunction FREEZE_GRACE_PERIOD() view returns (uint256)
getActionCount
viewfunction getActionCount() view returns (uint256)
getActionHashByIndex
viewfunction getActionHashByIndex(uint256 actionIndex) view returns (bytes32)
getAssetInfo
viewfunction getAssetInfo(uint256 assetType) view returns (bytes assetInfo)
getCancellationRequest
viewfunction getCancellationRequest(uint256 starkKey, uint256 assetId, uint256 vaultId) view returns (uint256 request)
getDepositBalance
viewfunction getDepositBalance(uint256 starkKey, uint256 assetId, uint256 vaultId) view returns (uint256)
getEthKey
viewfunction getEthKey(uint256 ownerKey) view returns (address)
getFullWithdrawalRequest
viewfunction getFullWithdrawalRequest(uint256 ownerKey, uint256 vaultId) view returns (uint256)
getQuantizedDepositBalance
viewfunction getQuantizedDepositBalance(uint256 starkKey, uint256 assetId, uint256 vaultId) view returns (uint256)
getQuantum
viewfunction getQuantum(uint256 presumedAssetType) view returns (uint256 quantum)
getWithdrawalBalance
viewfunction getWithdrawalBalance(uint256 ownerKey, uint256 assetId) view returns (uint256)
identify
purefunction identify() pure returns (string)
initializerSize
viewfunction initializerSize() view returns (uint256)
isAssetRegistered
viewfunction isAssetRegistered(uint256 assetType) view returns (bool)
isBlockListed
viewfunction isBlockListed(uint256 ownerKey) view returns (bool)
isFrozen
viewfunction isFrozen() view returns (bool)
isTokenAdmin
viewfunction isTokenAdmin(address testedAdmin) view returns (bool)
MAIN_GOVERNANCE_INFO_TAG
viewfunction MAIN_GOVERNANCE_INFO_TAG() view returns (string)
mainIsGovernor
viewfunction mainIsGovernor(address testGovernor) view returns (bool)
MAX_FORCED_ACTIONS_REQS_PER_BLOCK
viewfunction MAX_FORCED_ACTIONS_REQS_PER_BLOCK() view returns (uint256)
MAX_VERIFIER_COUNT
viewfunction MAX_VERIFIER_COUNT() view returns (uint256)
orderRegistryAddress
viewfunction orderRegistryAddress() view returns (address)
readyForClearance
viewfunction readyForClearance(uint256 ownerKey) view returns (bool)
UNFREEZE_DELAY
viewfunction UNFREEZE_DELAY() view returns (uint256)
validatedSelectors
purefunction validatedSelectors() pure returns (bytes4[] selectors)
VERIFIER_REMOVAL_DELAY
viewfunction VERIFIER_REMOVAL_DELAY() view returns (uint256)
addToBlockedList
nonpayablefunction addToBlockedList(uint256 ownerKey)
adminForcedWithdraw
nonpayablefunction adminForcedWithdraw(uint256 ownerKey, uint256 assetType, address destination)
adminForcedWithdrawAndMint
nonpayablefunction adminForcedWithdrawAndMint(uint256 ownerKey, uint256 assetType, bytes mintingBlob, address destination)
adminForcedWithdrawWithTokenId
nonpayablefunction adminForcedWithdrawWithTokenId(uint256 ownerKey, uint256 assetType, uint256 tokenId, address destination)
deposit
nonpayablefunction deposit(uint256 starkKey, uint256 assetType, uint256 vaultId, uint256 quantizedAmount)
deposit
payablefunction deposit(uint256 starkKey, uint256 assetType, uint256 vaultId) payable
depositCancel
nonpayablefunction depositCancel(uint256 starkKey, uint256 assetId, uint256 vaultId)
depositERC1155
nonpayablefunction depositERC1155(uint256 starkKey, uint256 assetType, uint256 tokenId, uint256 vaultId, uint256 quantizedAmount)
depositERC20
nonpayablefunction depositERC20(uint256 starkKey, uint256 assetType, uint256 vaultId, uint256 quantizedAmount)
depositEth
payablefunction depositEth(uint256 starkKey, uint256 assetType, uint256 vaultId) payable
depositNft
nonpayablefunction depositNft(uint256 starkKey, uint256 assetType, uint256 vaultId, uint256 tokenId)
depositNftReclaim
nonpayablefunction depositNftReclaim(uint256 starkKey, uint256 assetType, uint256 vaultId, uint256 tokenId)
depositReclaim
nonpayablefunction depositReclaim(uint256 starkKey, uint256 assetType, uint256 vaultId)
depositWithTokenId
nonpayablefunction depositWithTokenId(uint256 starkKey, uint256 assetType, uint256 tokenId, uint256 vaultId, uint256 quantizedAmount)
depositWithTokenIdReclaim
nonpayablefunction depositWithTokenIdReclaim(uint256 starkKey, uint256 assetType, uint256 tokenId, uint256 vaultId)
initialize
nonpayablefunction initialize(bytes)
mainAcceptGovernance
nonpayablefunction mainAcceptGovernance()
mainCancelNomination
nonpayablefunction mainCancelNomination()
mainNominateNewGovernor
nonpayablefunction mainNominateNewGovernor(address newGovernor)
mainRemoveGovernor
nonpayablefunction mainRemoveGovernor(address governorForRemoval)
onERC1155BatchReceived
nonpayablefunction onERC1155BatchReceived(address operator, address, uint256[], uint256[], bytes) returns (bytes4)
onERC1155Received
nonpayablefunction onERC1155Received(address operator, address, uint256, uint256, bytes) returns (bytes4)
onERC721Received
nonpayablefunction onERC721Received(address operator, address, uint256, bytes) returns (bytes4)
registerToken
nonpayablefunction registerToken(uint256 assetType, bytes assetInfo, uint256 quantum)
registerToken
nonpayablefunction registerToken(uint256 assetType, bytes assetInfo)
registerTokenAdmin
nonpayablefunction registerTokenAdmin(address newAdmin)
removeFromBlockedList
nonpayablefunction removeFromBlockedList(uint256 ownerKey)
unFreeze
nonpayablefunction unFreeze()
unregisterTokenAdmin
nonpayablefunction unregisterTokenAdmin(address oldAdmin)
withdraw
nonpayablefunction withdraw(uint256 ownerKey, uint256 assetType)
withdrawAndMint
nonpayablefunction withdrawAndMint(uint256 ownerKey, uint256 assetType, bytes mintingBlob)
withdrawNft
nonpayablefunction withdrawNft(uint256 ownerKey, uint256 assetType, uint256 tokenId)
withdrawWithTokenId
nonpayablefunction withdrawWithTokenId(uint256 ownerKey, uint256 assetType, uint256 tokenId)
events
AdminForcedWithdrawal
event AdminForcedWithdrawal(uint256 indexed ownerKey, address indexed destination)
BlockPlaced
event BlockPlaced(uint256 indexed ownerKey)
BlockReleased
event BlockReleased(uint256 indexed ownerKey)
LogAssetWithdrawalAllowed
event LogAssetWithdrawalAllowed(uint256 ownerKey, uint256 assetId, uint256 quantizedAmount)
LogDeposit
event LogDeposit(address depositorEthKey, uint256 starkKey, uint256 vaultId, uint256 assetType, uint256 nonQuantizedAmount, uint256 quantizedAmount)
LogDepositCancel
event LogDepositCancel(uint256 starkKey, uint256 vaultId, uint256 assetId)
LogDepositCancelReclaimed
event LogDepositCancelReclaimed(uint256 starkKey, uint256 vaultId, uint256 assetType, uint256 nonQuantizedAmount, uint256 quantizedAmount)
LogDepositNftCancelReclaimed
event LogDepositNftCancelReclaimed(uint256 starkKey, uint256 vaultId, uint256 assetType, uint256 tokenId, uint256 assetId)
LogDepositWithTokenId
event LogDepositWithTokenId(address depositorEthKey, uint256 starkKey, uint256 vaultId, uint256 assetType, uint256 tokenId, uint256 assetId, uint256 nonQuantizedAmount, uint256 quantizedAmount)
LogDepositWithTokenIdCancelReclaimed
event LogDepositWithTokenIdCancelReclaimed(uint256 starkKey, uint256 vaultId, uint256 assetType, uint256 tokenId, uint256 assetId, uint256 nonQuantizedAmount, uint256 quantizedAmount)
LogFrozen
event LogFrozen()
LogMintableWithdrawalAllowed
event LogMintableWithdrawalAllowed(uint256 ownerKey, uint256 assetId, uint256 quantizedAmount)
LogMintWithdrawalPerformed
event LogMintWithdrawalPerformed(uint256 ownerKey, uint256 assetType, uint256 nonQuantizedAmount, uint256 quantizedAmount, uint256 assetId)
LogNewGovernorAccepted
event LogNewGovernorAccepted(address acceptedGovernor)
LogNftDeposit
event LogNftDeposit(address depositorEthKey, uint256 starkKey, uint256 vaultId, uint256 assetType, uint256 tokenId, uint256 assetId)
LogNftWithdrawalAllowed
event LogNftWithdrawalAllowed(uint256 ownerKey, uint256 assetId)
LogNftWithdrawalPerformed
event LogNftWithdrawalPerformed(uint256 ownerKey, uint256 assetType, uint256 tokenId, uint256 assetId, address recipient)
LogNominatedGovernor
event LogNominatedGovernor(address nominatedGovernor)
LogNominationCancelled
event LogNominationCancelled()
LogRemovedGovernor
event LogRemovedGovernor(address removedGovernor)
LogTokenAdminAdded
event LogTokenAdminAdded(address tokenAdmin)
LogTokenAdminRemoved
event LogTokenAdminRemoved(address tokenAdmin)
LogTokenRegistered
event LogTokenRegistered(uint256 assetType, bytes assetInfo, uint256 quantum)
LogUnFrozen
event LogUnFrozen()
LogWithdrawalAllowed
event LogWithdrawalAllowed(uint256 ownerKey, uint256 assetType, uint256 nonQuantizedAmount, uint256 quantizedAmount)
LogWithdrawalPerformed
event LogWithdrawalPerformed(uint256 ownerKey, uint256 assetType, uint256 nonQuantizedAmount, uint256 quantizedAmount, address recipient)
LogWithdrawalWithTokenIdPerformed
event LogWithdrawalWithTokenIdPerformed(uint256 ownerKey, uint256 assetType, uint256 tokenId, uint256 assetId, uint256 nonQuantizedAmount, uint256 quantizedAmount, address recipient)
errors
No errors.
creation bytecode
0x608060405234801561001057600080fd5b506156db80620000216000396000f3fe6080604052600436106103365760003560e01c806377e84e0d116101b2578063b7663112116100ed578063e30a5cff11610090578063e30a5cff14611127578063e6de62821461113c578063ec3161b014611151578063eeb7286614611181578063f23a6e6114611196578063f637d95014611236578063fb0fb4a714611260578063fcb058221461128a57610336565b8063b766311214610d63578063bc197c8114610d78578063be2b110514610eac578063c23b60ef14610ee8578063c8b1031a14610f72578063d88d8b3814610ff4578063d91443b714611076578063dd7202d8146110fd57610336565b8063a1cc921e11610155578063a1cc921e14610b55578063a2bdde3d14610b88578063a45d784114610bbb578063a6fa6e9014610bd0578063abf98fe114610c03578063ae1cdde614610c39578063ae87381614610c75578063b12773fb14610cab57610336565b806377e84e0d14610a2c5780637cf12b9014610a415780637df7dc0414610a565780638c4bce1c14610a8c578063993f363914610abf5780639c6a283714610ad45780639ed1708414610ae9578063a1cc5e1314610b2557610336565b8063381baf6f116102825780634fd00214116102255780634fd00214146108a35780635e586cd1146109335780635eecd2181461095d57806364d848421461097257806369de5046146109a85780636ce5d9571461036257806372eb3688146109d257806376333aa1146109e757610336565b8063381baf6f146106cf5780633cc660ad146106f957806340b29b461461070e578063439fab911461074d578063441a3e70146107c857806345f5cd97146107f857806349325bac1461082b5780634e8912da1461086d57610336565b80631dbd1da7116102ea5780631dbd1da7146105515780632505c3d91461059757806328700a15146105d3578063296e2f37146105e857806329e411ac14610618578063333ac20b1461065a57806333eeb14714610690578063345385ac146106a557610336565b80627175421461033b578062aeef8a14610362578063019b417a1461038d578063049f5ade146103c35780630b3a2d21146104015780630ebdac0314610434578063150b7a0214610499575b600080fd5b34801561034757600080fd5b506103506112c6565b60408051918252519081900360200190f35b61038b6004803603606081101561037857600080fd5b50803590602081013590604001356112cd565b005b34801561039957600080fd5b5061038b600480360360608110156103b057600080fd5b5080359060208101359060400135611336565b3480156103cf57600080fd5b506103ed600480360360208110156103e657600080fd5b5035611341565b604080519115158252519081900360200190f35b34801561040d57600080fd5b5061038b6004803603602081101561042457600080fd5b50356001600160a01b0316611359565b34801561044057600080fd5b50610449611400565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561048557818101518382015260200161046d565b505050509050019250505060405180910390f35b3480156104a557600080fd5b50610534600480360360808110156104bc57600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b8111156104f657600080fd5b82018360208201111561050857600080fd5b803590602001918460018302840111600160201b8311171561052957600080fd5b509092509050611623565b604080516001600160e01b03199092168252519081900360200190f35b34801561055d57600080fd5b5061057b6004803603602081101561057457600080fd5b503561164f565b604080516001600160a01b039092168252519081900360200190f35b3480156105a357600080fd5b5061038b600480360360808110156105ba57600080fd5b5080359060208101359060408101359060600135611694565b3480156105df57600080fd5b5061038b61180e565b3480156105f457600080fd5b506103506004803603604081101561060b57600080fd5b5080359060200135611818565b34801561062457600080fd5b5061038b600480360360a081101561063b57600080fd5b508035906020810135906040810135906060810135906080013561183f565b34801561066657600080fd5b506103506004803603606081101561067d57600080fd5b5080359060208101359060400135611a38565b34801561069c57600080fd5b506103ed611a5c565b3480156106b157600080fd5b5061038b600480360360208110156106c857600080fd5b5035611a6c565b3480156106db57600080fd5b5061038b600480360360208110156106f257600080fd5b5035611b12565b34801561070557600080fd5b50610350611bbe565b34801561071a57600080fd5b5061038b6004803603606081101561073157600080fd5b50803590602081013590604001356001600160a01b0316611bc3565b34801561075957600080fd5b5061038b6004803603602081101561077057600080fd5b810190602081018135600160201b81111561078a57600080fd5b82018360208201111561079c57600080fd5b803590602001918460018302840111600160201b831117156107bd57600080fd5b509092509050611c95565b3480156107d457600080fd5b5061038b600480360360408110156107eb57600080fd5b5080359060200135611cd4565b34801561080457600080fd5b506103ed6004803603602081101561081b57600080fd5b50356001600160a01b0316611d42565b34801561083757600080fd5b5061038b600480360360a081101561084e57600080fd5b5080359060208101359060408101359060608101359060800135611d53565b34801561087957600080fd5b506103506004803603606081101561089057600080fd5b5080359060208101359060400135611e01565b3480156108af57600080fd5b5061038b600480360360808110156108c657600080fd5b813591602081013591810190606081016040820135600160201b8111156108ec57600080fd5b8201836020820111156108fe57600080fd5b803590602001918460018302840111600160201b8311171561091f57600080fd5b9193509150356001600160a01b0316611e25565b34801561093f57600080fd5b506103506004803603602081101561095657600080fd5b5035611ef9565b34801561096957600080fd5b50610350611f69565b34801561097e57600080fd5b5061038b6004803603606081101561099557600080fd5b5080359060208101359060400135611f6f565b3480156109b457600080fd5b506103ed600480360360208110156109cb57600080fd5b5035611fd8565b3480156109de57600080fd5b5061038b611fec565b3480156109f357600080fd5b5061038b60048036036080811015610a0a57600080fd5b50803590602081013590604081013590606001356001600160a01b0316611ff4565b348015610a3857600080fd5b506103506120c7565b348015610a4d57600080fd5b5061038b6120ce565b348015610a6257600080fd5b5061038b60048036036060811015610a7957600080fd5b508035906020810135906040013561220d565b348015610a9857600080fd5b5061038b60048036036020811015610aaf57600080fd5b50356001600160a01b031661233c565b348015610acb57600080fd5b50610350612348565b348015610ae057600080fd5b5061057b612350565b348015610af557600080fd5b5061038b60048036036080811015610b0c57600080fd5b5080359060208101359060408101359060600135612367565b348015610b3157600080fd5b5061035060048036036040811015610b4857600080fd5b5080359060200135612373565b348015610b6157600080fd5b5061038b60048036036020811015610b7857600080fd5b50356001600160a01b031661249a565b348015610b9457600080fd5b506103ed60048036036020811015610bab57600080fd5b50356001600160a01b03166124a3565b348015610bc757600080fd5b506103506124c1565b348015610bdc57600080fd5b5061038b60048036036020811015610bf357600080fd5b50356001600160a01b03166124cf565b348015610c0f57600080fd5b5061035060048036036060811015610c2657600080fd5b5080359060208101359060400135612573565b348015610c4557600080fd5b5061038b60048036036080811015610c5c57600080fd5b50803590602081013590604081013590606001356125ab565b348015610c8157600080fd5b5061038b60048036036060811015610c9857600080fd5b5080359060208101359060400135612652565b348015610cb757600080fd5b5061035060048036036040811015610cce57600080fd5b81359190810190604081016020820135600160201b811115610cef57600080fd5b820183602082011115610d0157600080fd5b803590602001918460018302840111600160201b83111715610d2257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612780945050505050565b348015610d6f57600080fd5b50610350612841565b348015610d8457600080fd5b50610534600480360360a0811015610d9b57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b811115610dce57600080fd5b820183602082011115610de057600080fd5b803590602001918460208302840111600160201b83111715610e0157600080fd5b919390929091602081019035600160201b811115610e1e57600080fd5b820183602082011115610e3057600080fd5b803590602001918460208302840111600160201b83111715610e5157600080fd5b919390929091602081019035600160201b811115610e6e57600080fd5b820183602082011115610e8057600080fd5b803590602001918460018302840111600160201b83111715610ea157600080fd5b509092509050612848565b348015610eb857600080fd5b5061038b60048036036080811015610ecf57600080fd5b5080359060208101359060408101359060600135612877565b348015610ef457600080fd5b50610efd612a21565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610f37578181015183820152602001610f1f565b50505050905090810190601f168015610f645780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610f7e57600080fd5b5061038b60048036036040811015610f9557600080fd5b81359190810190604081016020820135600160201b811115610fb657600080fd5b820183602082011115610fc857600080fd5b803590602001918460018302840111600160201b83111715610fe957600080fd5b509092509050612a3d565b34801561100057600080fd5b5061038b6004803603606081101561101757600080fd5b81359190810190604081016020820135600160201b81111561103857600080fd5b82018360208201111561104a57600080fd5b803590602001918460018302840111600160201b8311171561106b57600080fd5b919350915035612a46565b34801561108257600080fd5b5061038b6004803603606081101561109957600080fd5b813591602081013591810190606081016040820135600160201b8111156110bf57600080fd5b8201836020820111156110d157600080fd5b803590602001918460018302840111600160201b831117156110f257600080fd5b509092509050612de8565b34801561110957600080fd5b506103506004803603602081101561112057600080fd5b5035612e5a565b34801561113357600080fd5b50610350612e8b565b34801561114857600080fd5b50610350612e90565b34801561115d57600080fd5b506103506004803603604081101561117457600080fd5b5080359060200135612e95565b34801561118d57600080fd5b50610efd612ec4565b3480156111a257600080fd5b50610534600480360360a08110156111b957600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b8111156111f857600080fd5b82018360208201111561120a57600080fd5b803590602001918460018302840111600160201b8311171561122b57600080fd5b509092509050612ee4565b34801561124257600080fd5b50610efd6004803603602081101561125957600080fd5b5035612f11565b34801561126c57600080fd5b506103ed6004803603602081101561128357600080fd5b5035613012565b34801561129657600080fd5b5061038b600480360360808110156112ad57600080fd5b508035906020810135906040810135906060013561303a565b62093a8081565b6112d6826130a3565b61131c576040805162461bcd60e51b8152602060048201526012602482015271494e56414c49445f41535345545f5459504560701b604482015290519081900360640190fd5b61133183838361132c86346130c7565b611694565b505050565b611331838383611f6f565b60008181526015602052604090205460ff165b919050565b61136233613134565b6113a5576040805162461bcd60e51b815260206004820152600f60248201526e4f4e4c595f474f5645524e414e434560881b604482015290519081900360640190fd5b6001600160a01b038116600081815260116020908152604091829020805460ff19166001179055815192835290517f9085a9044aeb6daeeb5b4bf84af42b1a1613d4056f503c4e992b6396c16bd52f9281900390910190a150565b60408051600880825261012082019092526060919060009082602082016101008036833750508151919450506001820191631f7df70160e21b91859190811061144557fe5b6001600160e01b0319909216602092830291909101909101528251600182019163be2b110560e01b91859190811061147957fe5b6001600160e01b031990921660209283029190910190910152825160018201916357439c0b60e11b9185919081106114ad57fe5b6001600160e01b03199092166020928302919091019091015282516001820191630441a3e760e41b9185919081106114e157fe5b6001600160e01b0319909216602092830291909101909101528251600182019163d91443b760e01b91859190811061151557fe5b6001600160e01b0319909216602092830291909101909101528251600182019163326c242160e11b91859190811061154957fe5b6001600160e01b031990921660209283029190910190910152825160018201916320594da360e11b91859190811061157d57fe5b6001600160e01b0319909216602092830291909101909101528251600182019163381baf6f60e01b9185919081106115b157fe5b6001600160e01b03199092166020928302919091019091015280821461161e576040805162461bcd60e51b815260206004820181905260248201527f494e434f52524543545f53454c4543544f52535f41525241595f4c454e475448604482015290519081900360640190fd5b505090565b60006001600160a01b038616301461163c576000611645565b630a85bd0160e11b5b9695505050505050565b6000818152601860205260408120546001600160a01b03168015611674579050611354565b6001600160a01b038316831461168b57600061168d565b825b9392505050565b61169c611a5c565b156116e0576040805162461bcd60e51b815260206004820152600f60248201526e29aa20aa22afa4a9afa32927ad22a760891b604482015290519081900360640190fd5b6116e983613163565b15611731576040805162461bcd60e51b81526020600482015260136024820152724d494e5441424c455f41535345545f5459504560681b604482015290519081900360640190fd5b61173a836131a7565b611785576040805162461bcd60e51b81526020600482015260176024820152764e4f4e5f46554e4749424c455f41535345545f5459504560481b604482015290519081900360640190fd5b8261179285828585613206565b5061179d84836132fb565b7f06724742ccc8c330a39a641ef02a0b419bd09248360680bb38159b0a8c2635d6338685876117cc89886135c0565b604080516001600160a01b0390961686526020860194909452848401929092526060840152608083015260a08201859052519081900360c00190a15050505050565b611816613631565b565b60006022600061182885856136f8565b815260200190815260200160002054905092915050565b611847611a5c565b1561188b576040805162461bcd60e51b815260206004820152600f60248201526e29aa20aa22afa4a9afa32927ad22a760891b604482015290519081900360640190fd5b61189484613752565b6118da576040805162461bcd60e51b8152602060048201526012602482015271494e56414c49445f41535345545f5459504560701b604482015290519081900360640190fd5b60006118e68585612373565b905060006118f687838686613206565b905061190186613796565b156119aa576001811115611954576040805162461bcd60e51b81526020600482015260156024820152741253131151d05317d15490cdcc8c57d05353d55395605a1b604482015290519081900360640190fd5b6040805133815260208101899052808201869052606081018890526080810187905260a0810184905290517f0fcf2162832b2d6033d4d34d2f45a28d9cfee523f1899945bbdd32529cfda67b9181900360c00190a15b6119b58686856137a9565b7fed94dc026fa9364c53bc0af51cde7f54f3109b3f31fceb26d01396d80e20453b3388868989876119e68d8b6135c0565b604080516001600160a01b0390981688526020880196909652868601949094526060860192909252608085015260a084015260c083015260e0820186905251908190036101000190a150505050505050565b60009283526007602090815260408085209385529281528284209184525290205490565b600454600160a01b900460ff1690565b3373520cf70a2d0b3dfb7386a2bc9f800321f62a5c3a14611ac7576040805162461bcd60e51b815260206004820152601060248201526f27a7262cafa12627a1a5afa0a226a4a760811b604482015290519081900360640190fd5b611ad081611fd8565b15611b015760405181907fc5c4ee30d6cb77d673bd39088a871847fe5d6939fc472c5e0a70e0cca6dd10dc90600090a25b600090815260286020526040812055565b3373520cf70a2d0b3dfb7386a2bc9f800321f62a5c3a14611b6d576040805162461bcd60e51b815260206004820152601060248201526f27a7262cafa12627a1a5afa0a226a4a760811b604482015290519081900360640190fd5b611b7681611fd8565b611ba65760405181907f9ff85bce88647ea2dd40dc32cdf6d3207cb8bdf6e7d1b3d3ac50222d3d1d582490600090a25b60009081526028602052604090204262127500019055565b600090565b3373520cf70a2d0b3dfb7386a2bc9f800321f62a5c3a14611c1e576040805162461bcd60e51b815260206004820152601060248201526f27a7262cafa12627a1a5afa0a226a4a760811b604482015290519081900360640190fd5b611c2783613012565b611c66576040805162461bcd60e51b815260206004820152601b602482015260008051602061561e833981519152604482015290519081900360640190fd5b6040516001600160a01b0382169084906000805160206155be83398151915290600090a361133183838361386d565b6040805162461bcd60e51b815260206004820152600f60248201526e1393d517d253541311535153951151608a1b604482015290519081900360640190fd5b81611cde81611fd8565b15611d24576040805162461bcd60e51b81526020600482015260116024820152701554d15497d09313d0d2d7d31254d51151607a1b604482015290519081900360640190fd5b6000611d2f846139a4565b9050611d3c84848361386d565b50505050565b6000611d4d82613134565b92915050565b611d5b611a5c565b15611d9f576040805162461bcd60e51b815260206004820152600f60248201526e29aa20aa22afa4a9afa32927ad22a760891b604482015290519081900360640190fd5b611da884613a00565b611ded576040805162461bcd60e51b81526020600482015260116024820152702727aa2fa2a92198989a9aafaa27a5a2a760791b604482015290519081900360640190fd5b611dfa858585858561183f565b5050505050565b60009283526006602090815260408085209385529281528284209184525290205490565b3373520cf70a2d0b3dfb7386a2bc9f800321f62a5c3a14611e80576040805162461bcd60e51b815260206004820152601060248201526f27a7262cafa12627a1a5afa0a226a4a760811b604482015290519081900360640190fd5b611e8985613012565b611ec8576040805162461bcd60e51b815260206004820152601b602482015260008051602061561e833981519152604482015290519081900360640190fd5b6040516001600160a01b0382169086906000805160206155be83398151915290600090a3611dfa8585858585613a13565b6024546000908210611f4a576040805162461bcd60e51b815260206004820152601560248201527408286a8929e9cbe929c888ab0bea89e9ebe90928e9605b1b604482015290519081900360640190fd5b60248281548110611f5757fe5b90600052602060002001549050919050565b60245490565b82611f7981611fd8565b15611fbf576040805162461bcd60e51b81526020600482015260116024820152701554d15497d09313d0d2d7d31254d51151607a1b604482015290519081900360640190fd5b6000611fca856139a4565b9050611dfa85858584613bfb565b600090815260286020526040902054151590565b611816613d5f565b3373520cf70a2d0b3dfb7386a2bc9f800321f62a5c3a1461204f576040805162461bcd60e51b815260206004820152601060248201526f27a7262cafa12627a1a5afa0a226a4a760811b604482015290519081900360640190fd5b61205884613012565b612097576040805162461bcd60e51b815260206004820152601b602482015260008051602061561e833981519152604482015290519081900360640190fd5b6040516001600160a01b0382169085906000805160206155be83398151915290600090a3611d3c84848484613bfb565b6202a30081565b6120d6611a5c565b61211a576040805162461bcd60e51b815260206004820152601060248201526f29aa20aa22afa727aa2fa32927ad22a760811b604482015290519081900360640190fd5b61212333613134565b612166576040805162461bcd60e51b815260206004820152600f60248201526e4f4e4c595f474f5645524e414e434560881b604482015290519081900360640190fd5b6005544210156121b8576040805162461bcd60e51b8152602060048201526018602482015277155391949151569157d393d517d0531313d5d15117d6515560421b604482015290519081900360640190fd5b6004805460ff60a01b19169055600d805460019081019091556025805482019055600f805490910190556040517f07017fe9180629cfffba412f65a9affcf9a121de02294179f5c058f881dcc9f890600090a1565b82612217816139a4565b6001600160a01b0316336001600160a01b03161461226a576040805162461bcd60e51b815260206004820152601a60248201526000805160206155fe833981519152604482015290519081900360640190fd5b600084815260066020908152604080832086845282528083208584529091529020546122d4576040805162461bcd60e51b815260206004820152601460248201527311115413d4d25517d113d154d39517d1561254d560621b604482015290519081900360640190fd5b60008481526007602090815260408083208684528252808320858452825291829020429055815186815290810184905280820185905290517f0bc1df35228095c37da66a6ffcc755ea79dfc437345685f618e05fafad6b445e9181900360600190a150505050565b61234581613df6565b50565b6301e1338081565b68010000000000000004546001600160a01b031681565b611d3c84848484611694565b600061237e83613752565b6123b95760405162461bcd60e51b815260040180806020018281038252602181526020018061563e6021913960400191505060405180910390fd5b60606123c484613796565b6123f3576040518060400160405280600d81526020016c2727a72fa6a4a72a20a126229d60991b815250612411565b6040518060400160405280600481526020016327232a1d60e11b8152505b90506001600160fa1b038185856040516020018084805190602001908083835b602083106124505780518252601f199092019160209182019101612431565b51815160209384036101000a600019018019909216911617905292019485525083810192909252506040805180840383018152928101905281519101209190911695945050505050565b61234581613ef3565b6001600160a01b031660009081526011602052604090205460ff1690565b680100000000000000035481565b6124d833613134565b61251b576040805162461bcd60e51b815260206004820152600f60248201526e4f4e4c595f474f5645524e414e434560881b604482015290519081900360640190fd5b6001600160a01b038116600081815260116020908152604091829020805460ff19169055815192835290517ffa49aecb996ea8d99950bb051552dfcc0b5460a0bb209867a1ed8067c32c21779281900390910190a150565b6000838152600660209081526040808320858452825280832084845290915281205483906125a29082906135c0565b95945050505050565b6125b3611a5c565b156125f7576040805162461bcd60e51b815260206004820152600f60248201526e29aa20aa22afa4a9afa32927ad22a760891b604482015290519081900360640190fd5b61260083613796565b612644576040805162461bcd60e51b815260206004820152601060248201526f2727aa2fa2a9219b9918afaa27a5a2a760811b604482015290519081900360640190fd5b611d3c84848385600161183f565b8261265c816139a4565b6001600160a01b0316336001600160a01b0316146126af576040805162461bcd60e51b815260206004820152601a60248201526000805160206155fe833981519152604482015290519081900360640190fd5b6126b8836131a7565b612703576040805162461bcd60e51b81526020600482015260176024820152764e4f4e5f46554e4749424c455f41535345545f5459504560481b604482015290519081900360640190fd5b826000612711868386614040565b905061271e33868361414d565b7fe3e46ecf1138180bf93cba62a0b7e661d976a8ab3d40243f7b082667d8f500af86858761274c89866135c0565b60408051948552602085019390935283830191909152606083015260808201849052519081900360a00190a1505050505050565b600080828051906020012060001c9050600160fa1b6001600160f01b036040518060400160405280600981526020016826a4a72a20a126229d60b91b81525086846040516020018084805190602001908083835b602083106127f35780518252601f1990920191602091820191016127d4565b51815160209384036101000a60001901801990921691161790529201948552508381019290925250604080518084038301815292810190528151910120919091169190911795945050505050565b6224ea0081565b60006001600160a01b038916301461286157600061286a565b63bc197c8160e01b5b9998505050505050505050565b83612881816139a4565b6001600160a01b0316336001600160a01b0316146128d4576040805162461bcd60e51b815260206004820152601a60248201526000805160206155fe833981519152604482015290519081900360640190fd5b6128dd84613752565b612923576040805162461bcd60e51b8152602060048201526012602482015271494e56414c49445f41535345545f5459504560701b604482015290519081900360640190fd5b600061292f8585612373565b9050600061293e878386614040565b9050801561295257612952338787846143e4565b61295b86613796565b156129af576040805188815260208101869052808201889052606081018790526080810184905290517ff00c0c1a754f6df7545d96a7e12aad552728b94ca6aa94f81e297bdbcf1dab9c9181900360a00190a15b7fcc00f2179d127845242252f3c3b6b238c5ed33c2e933179f09653cfb1cdee7ca87858888866129df8c886135c0565b604080519687526020870195909552858501939093526060850191909152608084015260a083015260c08201849052519081900360e00190a150505050505050565b60405180606001604052806026815260200161565f6026913981565b61133183838360015b612a4f336124a3565b612a94576040805162461bcd60e51b815260206004820152601160248201527027a7262cafaa27a5a2a729afa0a226a4a760791b604482015290519081900360640190fd5b612a9d84611341565b15612aea576040805162461bcd60e51b81526020600482015260186024820152771054d4d15517d053149150511657d49151d254d51154915160421b604482015290519081900360640190fd5b600167080000000000001160c01b018410612b41576040805162461bcd60e51b8152602060048201526012602482015271494e56414c49445f41535345545f5459504560701b604482015290519081900360640190fd5b60008111612b88576040805162461bcd60e51b815260206004820152600f60248201526e494e56414c49445f5155414e54554d60881b604482015290519081900360640190fd5b600160801b8110612bd2576040805162461bcd60e51b815260206004820152600f60248201526e494e56414c49445f5155414e54554d60881b604482015290519081900360640190fd5b60006001600160fa1b0384848460405160200180848480828437919091019283525050604080518083038152602092830190915280519101209290921692505050848114612c5c576040805162461bcd60e51b8152602060048201526012602482015271494e56414c49445f41535345545f5459504560701b604482015290519081900360640190fd5b612c9b84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506144aa92505050565b612cda84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061462692505050565b15612d2a5781600114612d2a576040805162461bcd60e51b8152602060048201526013602482015272494e56414c49445f4e46545f5155414e54554d60681b604482015290519081900360640190fd5b6000858152601560209081526040808320805460ff1916600117905560149091529020612d5890858561552a565b508160166000878152602001908152602001600020819055507f7a0efbc885500f3b4a895231945be4520e4c0ba5ef7274a225a0272c81ccbcb78585858560405180858152602001806020018381526020018281038252858582818152602001925080828437600083820152604051601f909101601f191690920182900397509095505050505050a15050505050565b83612df281611fd8565b15612e38576040805162461bcd60e51b81526020600482015260116024820152701554d15497d09313d0d2d7d31254d51151607a1b604482015290519081900360640190fd5b6000612e43866139a4565b9050612e528686868685613a13565b505050505050565b60008181526015602052604081205460ff16612e7857506001611354565b5060009081526016602052604090205490565b600a81565b604081565b60008281526008602090815260408083208484529091528120548290612ebc9082906135c0565b949350505050565b606060405180606001604052806021815260200161568560219139905090565b60006001600160a01b0387163014612efd576000612f06565b63f23a6e6160e01b5b979650505050505050565b60008181526015602052604090205460609060ff16612f73576040805162461bcd60e51b81526020600482015260196024820152781054d4d15517d516541157d393d517d49151d254d511549151603a1b604482015290519081900360640190fd5b60008281526014602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156130065780601f10612fdb57610100808354040283529160200191613006565b820191906000526020600020905b815481529060010190602001808311612fe957829003601f168201915b50505050509050919050565b600061301d82611fd8565b8015611d4d57505060009081526028602052604090205442101590565b83613044816139a4565b6001600160a01b0316336001600160a01b031614613097576040805162461bcd60e51b815260206004820152601a60248201526000805160206155fe833981519152604482015290519081900360640190fd5b611dfa85858486612877565b60006341917ff960e11b6130b68361466a565b6001600160e01b0319161492915050565b6000806130d384612e5a565b90508083816130de57fe5b0615613122576040805162461bcd60e51b815260206004820152600e60248201526d1253959053125117d05353d5539560921b604482015290519081900360640190fd5b80838161312b57fe5b04949350505050565b60008061313f61467d565b6001600160a01b039390931660009081526020939093525050604090205460ff1690565b60008061316f8361466a565b90506001600160e01b031981166368646e2d60e01b148061168d57506001600160e01b03198116635c5c333960e11b14915050919050565b6000806131b38361466a565b90506001600160e01b031981166341917ff960e11b14806131e457506001600160e01b03198116630f47261b60e41b145b8061168d57506001600160e01b031981166368646e2d60e01b14915050919050565b60008481526006602090815260408083208684528252808320858452909152812054820182811015613272576040805162461bcd60e51b815260206004820152601060248201526f4445504f5349545f4f564552464c4f5760801b604482015290519081900360640190fd5b60008681526006602090815260408083208884528252808320878452909152902081905561329f866146fa565b80156132cb57506000868152600760209081526040808320888452825280832087845290915290205415155b156125a2576000868152600760209081526040808320888452825280832087845290915281205595945050505050565b600061330783836135c0565b905061331283614720565b15613514578161332257506135bc565b600061332d84614733565b905060008190506000816001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561338357600080fd5b505afa158015613397573d6000803e3d6000fd5b505050506040513d60208110156133ad57600080fd5b50516040805133602482015230604482015260648082018890528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790529091506134096001600160a01b03851682614746565b6000836001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561345857600080fd5b505afa15801561346c573d6000803e3d6000fd5b505050506040513d602081101561348257600080fd5b50519050828110156134c6576040805162461bcd60e51b81526020600482015260086024820152674f564552464c4f5760c01b604482015290519081900360640190fd5b858301811461350a576040805162461bcd60e51b815260206004820152601c60248201526000805160206155de833981519152604482015290519081900360640190fd5b5050505050611331565b61351d836130a3565b1561357657803414613571576040805162461bcd60e51b8152602060048201526018602482015277125390d3d4949150d517d1115413d4d25517d05353d5539560421b604482015290519081900360640190fd5b611331565b6040805162461bcd60e51b8152602060048201526016602482015275554e535550504f525445445f544f4b454e5f5459504560501b604482015290519081900360640190fd5b5050565b6000806135cc84612e5a565b90508083029150828183816135dd57fe5b041461362a576040805162461bcd60e51b815260206004820152601760248201527644455155414e54495a4154494f4e5f4f564552464c4f5760481b604482015290519081900360640190fd5b5092915050565b600061363b61467d565b60018101549091506001600160a01b03163314613699576040805162461bcd60e51b815260206004820152601760248201527627a7262cafa1a0a72224a220aa22afa3a7ab22a92727a960491b604482015290519081900360640190fd5b60018101546136b0906001600160a01b0316614932565b6001810180546001600160a01b03191690556040805133815290517fcfb473e6c03f9a29ddaf990e736fa3de5188a0bd85d684f5b6e164ebfbfff5d29181900360200190a150565b600061168d6040518060400160405280600f81526020016e1195531317d5d2551211149055d053608a1b815250848460405160200180838152602001828152602001925050506040516020818303038152906040526149b2565b60008061375e8361466a565b90506001600160e01b0319811663012b8bc960e11b148061168d57506001600160e01b03198116633348691d60e01b14915050919050565b600063012b8bc960e11b6130b68361466a565b6137b283613752565b6137f9576040805162461bcd60e51b815260206004820152601360248201527246554e4749424c455f41535345545f5459504560681b604482015290519081900360640190fd5b61380283613796565b1561385c5780600114613852576040805162461bcd60e51b8152602060048201526013602482015272494c4c4547414c5f4e46545f42414c414e434560681b604482015290519081900360640190fd5b6135718383614a74565b801561133157611331838383614b27565b61387682613163565b156138be576040805162461bcd60e51b81526020600482015260136024820152724d494e5441424c455f41535345545f5459504560681b604482015290519081900360640190fd5b6138c7826131a7565b613912576040805162461bcd60e51b81526020600482015260176024820152764e4f4e5f46554e4749424c455f41535345545f5459504560481b604482015290519081900360640190fd5b600083815260086020908152604080832085845290915281208054919055829061393d83838361414d565b7fb7477a7b93b2addc5272bbd7ad0986ef1c0d0bd265f26c3dc4bbe42727c2ac0c858561396a87856135c0565b60408051938452602084019290925282820152606082018490526001600160a01b0386166080830152519081900360a00190a15050505050565b60006139af8261164f565b90506001600160a01b038116611354576040805162461bcd60e51b81526020600482015260116024820152701554d15497d553949151d254d511549151607a1b604482015290519081900360640190fd5b6000633348691d60e01b6130b68361466a565b60008481526015602052604090205460ff16613a6b576040805162461bcd60e51b8152602060048201526012602482015271494e56414c49445f41535345545f5459504560701b604482015290519081900360640190fd5b613a7484613163565b613abf576040805162461bcd60e51b81526020600482015260176024820152764e4f4e5f4d494e5441424c455f41535345545f5459504560481b604482015290519081900360640190fd5b6000613b018585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278092505050565b6000878152600860209081526040808320848452909152902054909150613b6f576040805162461bcd60e51b815260206004820152601d60248201527f4e4f5f50454e44494e475f5749544844524157414c5f42414c414e4345000000604482015290519081900360640190fd5b600086815260086020908152604080832084845290915281208054919055613b9a8682858888614e3d565b7f7e6e15df814c1a309a57686de672b2bedd128eacde35c5370c36d6840d4e9a928787613bc789856135c0565b604080519384526020840192909252828201526060820184905260808201859052519081900360a00190a150505050505050565b613c0483613752565b613c4a576040805162461bcd60e51b8152602060048201526012602482015271494e56414c49445f41535345545f5459504560701b604482015290519081900360640190fd5b6000613c568484612373565b600086815260086020908152604080832084845290915281208054919055909150613c83838686846143e4565b613c8c85613796565b15613ce8576040805187815260208101879052808201869052606081018490526001600160a01b038516608082015290517fa5cfa8e2199ec5b8ca319288bcab72734207d30569756ee594a74b4df7abbf419181900360a00190a15b7fc6ba68235f3229e53f3a95cda25543ad54c0f6df2493a06c05fb930bea7966fe86868685613d178a876135c0565b604080519586526020860194909452848401929092526060840152608083015260a082018490526001600160a01b03861660c0830152519081900360e00190a1505050505050565b613d6833613134565b613dab576040805162461bcd60e51b815260206004820152600f60248201526e4f4e4c595f474f5645524e414e434560881b604482015290519081900360640190fd5b6000613db561467d565b6001810180546001600160a01b03191690556040519091507f7a8dc7dd7fffb43c4807438fa62729225156941e641fd877938f4edade3429f590600090a150565b613dff33613134565b613e42576040805162461bcd60e51b815260206004820152600f60248201526e4f4e4c595f474f5645524e414e434560881b604482015290519081900360640190fd5b6000613e4c61467d565b9050613e5782613134565b15613e9c576040805162461bcd60e51b815260206004820152601060248201526f20a62922a0a22cafa3a7ab22a92727a960811b604482015290519081900360640190fd5b6001810180546001600160a01b0384166001600160a01b0319909116811790915560408051918252517f6166272c8d3f5f579082f2827532732f97195007983bb5b83ac12c56700b01a69181900360200190a15050565b613efc33613134565b613f3f576040805162461bcd60e51b815260206004820152600f60248201526e4f4e4c595f474f5645524e414e434560881b604482015290519081900360640190fd5b336001600160a01b0382161415613f94576040805162461bcd60e51b8152602060048201526014602482015273474f5645524e4f525f53454c465f52454d4f564560601b604482015290519081900360640190fd5b6000613f9e61467d565b9050613fa982613134565b613fe9576040805162461bcd60e51b815260206004820152600c60248201526b2727aa2fa3a7ab22a92727a960a11b604482015290519081900360640190fd5b6001600160a01b03821660008181526020838152604091829020805460ff19169055815192835290517fd75f94825e770b8b512be8e74759e252ad00e102e38f50cce2f7c6f868a295999281900390910190a15050565b60008381526007602090815260408083208584528252808320848452909152812054806140ab576040805162461bcd60e51b815260206004820152601460248201527311115413d4d25517d393d517d0d05390d153115160621b604482015290519081900360640190fd5b6202a300818101908110156140bc57fe5b80421015614102576040805162461bcd60e51b815260206004820152600e60248201526d11115413d4d25517d313d0d2d15160921b604482015290519081900360640190fd5b50505060008381526006602090815260408083208584528252808320848452825280832080549084905595835260078252808320948352938152838220928252919091529081205590565b6001600160a01b03831661419c576040805162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b604482015290519081900360640190fd5b60006141a883836135c0565b90506141b383614720565b156143b357816141c35750611331565b60006141ce84614733565b905060008190506000816001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561422457600080fd5b505afa158015614238573d6000803e3d6000fd5b505050506040513d602081101561424e57600080fd5b5051604080516001600160a01b03808b16602483015260448083018990528351808403909101815260649092019092526020810180516001600160e01b031663a9059cbb60e01b1790529192506142a790851682614746565b6000836001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156142f657600080fd5b505afa15801561430a573d6000803e3d6000fd5b505050506040513d602081101561432057600080fd5b5051905082811115614365576040805162461bcd60e51b8152602060048201526009602482015268554e444552464c4f5760b81b604482015290519081900360640190fd5b85830381146143a9576040805162461bcd60e51b815260206004820152601c60248201526000805160206155de833981519152604482015290519081900360640190fd5b5050505050611d3c565b6143bc836130a3565b1561357657816143cc5750611331565b6143df6001600160a01b03851682614fdf565b611d3c565b6143ed83613752565b614434576040805162461bcd60e51b815260206004820152601360248201527246554e4749424c455f41535345545f5459504560681b604482015290519081900360640190fd5b61443d83613796565b15614498578060011461448d576040805162461bcd60e51b8152602060048201526013602482015272494c4c4547414c5f4e46545f42414c414e434560681b604482015290519081900360640190fd5b6143df84848461507b565b8015611d3c57611d3c84848484615180565b60006144b58261546d565b90506144c08161547e565b61450a576040805162461bcd60e51b8152602060048201526016602482015275554e535550504f525445445f544f4b454e5f5459504560501b604482015290519081900360640190fd5b6001600160e01b031981166341917ff960e11b1415614575578151600414614570576040805162461bcd60e51b8152602060048201526014602482015273494e56414c49445f41535345545f535452494e4760601b604482015290519081900360640190fd5b6135bc565b81516024146145c2576040805162461bcd60e51b8152602060048201526014602482015273494e56414c49445f41535345545f535452494e4760601b604482015290519081900360640190fd5b60006145cd8361551d565b90506145e1816001600160a01b0316615524565b611331576040805162461bcd60e51b81526020600482015260116024820152704241445f544f4b454e5f4144445245535360781b604482015290519081900360640190fd5b6000806146328361546d565b90506001600160e01b0319811663012b8bc960e11b148061168d57506001600160e01b03198116635c5c333960e11b14915050919050565b6000611d4d61467883612f11565b61546d565b60008060405180606001604052806026815260200161565f602691396040518082805190602001908083835b602083106146c85780518252601f1990920191602091820191016146a9565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092209392505050565b60006147058261164f565b6001600160a01b0316336001600160a01b0316149050919050565b6000630f47261b60e41b6130b68361466a565b6000611d4d61474183612f11565b61551d565b61474f82615524565b614794576040805162461bcd60e51b81526020600482015260116024820152704241445f544f4b454e5f4144445245535360781b604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106147d25780518252601f1990920191602091820191016147b3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614834576040519150601f19603f3d011682016040523d82523d6000602084013e614839565b606091505b50915091508181906148c95760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561488e578181015183820152602001614876565b50505050905090810190601f1680156148bb5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50805115611d3c578080602001905160208110156148e657600080fd5b5051611d3c576040805162461bcd60e51b81526020600482015260166024820152751513d2d15397d3d4115490551253d397d1905253115160521b604482015290519081900360640190fd5b61493b81613134565b15614980576040805162461bcd60e51b815260206004820152601060248201526f20a62922a0a22cafa3a7ab22a92727a960811b604482015290519081900360640190fd5b600061498a61467d565b6001600160a01b0390921660009081526020929092525060409020805460ff19166001179055565b600082826040516020018083805190602001908083835b602083106149e85780518252601f1990920191602091820191016149c9565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310614a305780518252601f199092019160209182019101614a11565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405280519060200120905092915050565b614a7d82613796565b614ac1576040805162461bcd60e51b815260206004820152601060248201526f2727aa2fa2a9219b9918afaa27a5a2a760811b604482015290519081900360640190fd5b6000614acc83614733565b6040805133602482015230604482015260648082018690528251808303909101815260849091019091526020810180516001600160e01b0316632142170760e11b179052909150611331906001600160a01b03831690614746565b614b3083613a00565b614b75576040805162461bcd60e51b81526020600482015260116024820152702727aa2fa2a92198989a9aafaa27a5a2a760791b604482015290519081900360640190fd5b80614b7f57611331565b6000614b8b84836135c0565b90506000614b9885614733565b60408051627eeac760e11b815230600482015260248101879052905191925082916000916001600160a01b0384169162fdd58e91604480820192602092909190829003018186803b158015614bec57600080fd5b505afa158015614c00573d6000803e3d6000fd5b505050506040513d6020811015614c1657600080fd5b81019080805190602001909291905050509050614d2b63f242432a60e01b333089886040518060200160405280600081525060405160240180866001600160a01b03168152602001856001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614cb2578181015183820152602001614c9a565b50505050905090810190601f168015614cdf5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909a169990991790985250506001600160a01b038a169594505061474692505050565b6000826001600160a01b031662fdd58e30896040518363ffffffff1660e01b815260040180836001600160a01b031681526020018281526020019250505060206040518083038186803b158015614d8157600080fd5b505afa158015614d95573d6000803e3d6000fd5b505050506040513d6020811015614dab57600080fd5b5051905081811015614def576040805162461bcd60e51b81526020600482015260086024820152674f564552464c4f5760c01b604482015290519081900360640190fd5b8482018114614e33576040805162461bcd60e51b815260206004820152601c60248201526000805160206155de833981519152604482015290519081900360640190fd5b5050505050505050565b6001600160a01b038316614e8c576040805162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b604482015290519081900360640190fd5b614e9585613163565b614ee0576040805162461bcd60e51b81526020600482015260176024820152764e4f4e5f4d494e5441424c455f41535345545f5459504560481b604482015290519081900360640190fd5b60008411614f2b576040805162461bcd60e51b81526020600482015260136024820152721253959053125117d352539517d05353d55395606a1b604482015290519081900360640190fd5b6000614f3786866135c0565b90506000614f4487614733565b9050614fd68583868660405160240180856001600160a01b0316815260200184815260200180602001828103825284848281815260200192508082843760008184015260408051601f19601f9093018316909401848103909201845252506020810180516319ee6e3f60e01b6001600160e01b039091161790526001600160a01b038916965094506147469350505050565b50505050505050565b6040516000906001600160a01b0384169083908381818185875af1925050503d806000811461502a576040519150601f19603f3d011682016040523d82523d6000602084013e61502f565b606091505b5050905080611331576040805162461bcd60e51b815260206004820152601360248201527211551217d514905394d1915497d19052531151606a1b604482015290519081900360640190fd5b6001600160a01b0383166150ca576040805162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b604482015290519081900360640190fd5b6150d382613796565b615117576040805162461bcd60e51b815260206004820152601060248201526f2727aa2fa2a9219b9918afaa27a5a2a760811b604482015290519081900360640190fd5b600061512283614733565b604080513060248201526001600160a01b03808816604483015260648083018790528351808403909101815260849092019092526020810180516001600160e01b0316632142170760e11b179052919250611d3c9190831690614746565b6001600160a01b0384166151cf576040805162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b604482015290519081900360640190fd5b6151d883613a00565b61521d576040805162461bcd60e51b81526020600482015260116024820152702727aa2fa2a92198989a9aafaa27a5a2a760791b604482015290519081900360640190fd5b8061522757611d3c565b600061523384836135c0565b9050600061524085614733565b60408051627eeac760e11b815230600482015260248101879052905191925082916000916001600160a01b0384169162fdd58e91604480820192602092909190829003018186803b15801561529457600080fd5b505afa1580156152a8573d6000803e3d6000fd5b505050506040513d60208110156152be57600080fd5b8101908080519060200190929190505050905061535963f242432a60e01b308a89886040518060200160405280600081525060405160240180866001600160a01b03168152602001856001600160a01b03168152602001848152602001838152602001806020018281038252838181518152602001915080519060200190808383600083811015614cb2578181015183820152602001614c9a565b6000826001600160a01b031662fdd58e30896040518363ffffffff1660e01b815260040180836001600160a01b031681526020018281526020019250505060206040518083038186803b1580156153af57600080fd5b505afa1580156153c3573d6000803e3d6000fd5b505050506040513d60208110156153d957600080fd5b505190508181111561541e576040805162461bcd60e51b8152602060048201526009602482015268554e444552464c4f5760b81b604482015290519081900360640190fd5b8482038114615462576040805162461bcd60e51b815260206004820152601c60248201526000805160206155de833981519152604482015290519081900360640190fd5b505050505050505050565b602001516001600160e01b03191690565b60006001600160e01b031982166341917ff960e11b14806154af57506001600160e01b03198216630f47261b60e41b145b806154ca57506001600160e01b0319821663012b8bc960e11b145b806154e557506001600160e01b031982166368646e2d60e01b145b8061550057506001600160e01b03198216635c5c333960e11b145b80611d4d5750506001600160e01b031916633348691d60e01b1490565b6024015190565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061556b5782800160ff19823516178555615598565b82800160010185558215615598579182015b8281111561559857823582559160200191906001019061557d565b506155a49291506155a8565b5090565b5b808211156155a457600081556001016155a956fe114cb0e9c5cc308eb81f0f30f0fd6348a5feb49e11d4437c22daeefb355094b0494e434f52524543545f414d4f554e545f5452414e53464552524544000000004d49534d41544348494e475f535441524b5f4554485f4b45595300000000000043414e4e4f545f41444d494e5f464f5243455f5749544844524157000000000041535345545f545950455f444f45535f4e4f545f54414b455f544f4b454e5f4944537461726b45782e4d61696e2e323031392e476f7665726e6f7273496e666f726d6174696f6e537461726b576172655f546f6b656e73416e6452616d70696e675f323032345f34a26469706673582212205901062cff23a087dac55bcbd8f3460a20ca2e069150cf57fd665cbf220a93dc64736f6c634300060c0033