0 txs
0 calls
constructor
constructor(address _itemsContract, address _tokiemonNFT, address _randomnessHandler, address _oracle, address _manaSystem)
functions
backupItemId
viewfunction backupItemId() view returns (uint256)
bulkPendingLootboxes
viewfunction bulkPendingLootboxes(address) view returns (bool)
bulkPendingTiers
viewfunction bulkPendingTiers(address, uint256) view returns (uint256)
calculateTokenAmount
viewfunction calculateTokenAmount(address paymentToken, uint256 packId) view returns (uint256 tokenPriceNative, uint256 tokenAmount)
canOpenLootbox
viewfunction canOpenLootbox(uint256 _tokenId) view returns (bool)
getItemRarity
viewfunction getItemRarity(uint256 _itemId) view returns (uint8)
getItemsByRarity
viewfunction getItemsByRarity(uint8 _rarity) view returns (uint256[])
getNextOpenTimestamp
viewfunction getNextOpenTimestamp(uint256 _tokenId) view returns (uint256)
getRarityWeightFromTier
viewfunction getRarityWeightFromTier(uint256 _tier, uint8 _rarity) view returns (uint256)
isRandomnessFulfilled
viewfunction isRandomnessFulfilled(address user) view returns (bool)
itemRarities
viewfunction itemRarities(uint256) view returns (uint8)
itemsContract
viewfunction itemsContract() view returns (address)
lastOpenTimestamp
viewfunction lastOpenTimestamp(uint256) view returns (uint256)
lootboxPacks
viewfunction lootboxPacks(uint256) view returns (uint256 tier, uint256 quantity, uint256 price, bool active)
manaMintingEnabled
viewfunction manaMintingEnabled() view returns (bool)
manaSystem
viewfunction manaSystem() view returns (address)
maxBulkOperations
viewfunction maxBulkOperations() view returns (uint256)
MULTI_ITEM_PRECISION
viewfunction MULTI_ITEM_PRECISION() view returns (uint16)
nextLootboxPackId
viewfunction nextLootboxPackId() view returns (uint256)
oracle
viewfunction oracle() view returns (address)
owner
viewfunction owner() view returns (address)
pendingLootboxes
viewfunction pendingLootboxes(address) view returns (bool)
pendingTiers
viewfunction pendingTiers(address) view returns (uint256)
randomnessHandler
viewfunction randomnessHandler() view returns (address)
RARITY_PRECISION
viewfunction RARITY_PRECISION() view returns (uint16)
supportsPermissionedCallSelector
purefunction supportsPermissionedCallSelector(bytes4) pure returns (bool)
tokiemonNFT
viewfunction tokiemonNFT() view returns (address)
addLootboxPack
nonpayablefunction addLootboxPack(uint256 tier, uint256 quantity, uint256 price)
bulkSetItemRarities
nonpayablefunction bulkSetItemRarities(uint256[] _itemIds, uint8[] _rarities)
buyLootboxPack
payablefunction buyLootboxPack(uint256 packId) payable
buyLootboxPackWithERC20
nonpayablefunction buyLootboxPackWithERC20(uint256 packId, address paymentToken, uint256 maxPaymentTokenAmount)
claimBulkLootboxes
nonpayablefunction claimBulkLootboxes()
claimLootbox
nonpayablefunction claimLootbox()
permissionedCall
payablefunction permissionedCall(bytes call) payable returns (bytes res)
removeItemFromRarity
nonpayablefunction removeItemFromRarity(uint256 _itemId, uint8 _rarity)
removeLootboxPack
nonpayablefunction removeLootboxPack(uint256 packId)
renounceOwnership
nonpayablefunction renounceOwnership()
setBackupItemId
nonpayablefunction setBackupItemId(uint256 _itemId)
setItemRarity
nonpayablefunction setItemRarity(uint256 _itemId, uint8 _rarity)
setManaMintingEnabled
nonpayablefunction setManaMintingEnabled(bool _enabled)
setManaSystem
nonpayablefunction setManaSystem(address _manaSystem)
setMaxBulkOperations
nonpayablefunction setMaxBulkOperations(uint256 _max)
setMaxManaTier
nonpayablefunction setMaxManaTier(uint256 _tier, uint256 _maxMana)
setRandomnessHandler
nonpayablefunction setRandomnessHandler(address _randomnessHandler)
startBulkFreeLootboxes
nonpayablefunction startBulkFreeLootboxes(uint256[] tokenIds)
startBulkLootboxesWithKeys
nonpayablefunction startBulkLootboxesWithKeys(uint256 tier, uint256 amount)
startFreeLootbox
nonpayablefunction startFreeLootbox(uint256 tokenId)
startLootboxWithKey
nonpayablefunction startLootboxWithKey(uint256 tier)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateLootboxPack
nonpayablefunction updateLootboxPack(uint256 packId, uint256 tier, uint256 quantity, uint256 price, bool active)
updateRarityTierWeights
nonpayablefunction updateRarityTierWeights(uint256 _tier, tuple _probabilities, uint256 _maxMana)
withdrawFunds
nonpayablefunction withdrawFunds()
events
BulkLootboxOpened
event BulkLootboxOpened(address indexed user, uint256[] itemIds, uint256[] tiers)
ItemRarityRemoved
event ItemRarityRemoved(uint256 indexed itemId, uint8 indexed rarity)
ItemRaritySet
event ItemRaritySet(uint256 indexed itemId, uint8 indexed rarity)
LootboxOpened
event LootboxOpened(address indexed user, uint256[] itemIds, uint256 tier)
LootboxPackPurchased
event LootboxPackPurchased(address indexed buyer, uint256 packId, uint256 tier, uint256 quantity)
LootboxStarted
event LootboxStarted(address indexed user, uint256 indexed tokenId, uint256 tier)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
RarityWeightsUpdated
event RarityWeightsUpdated(uint256 tier, (uint16 common, uint16 uncommon, uint16 rare, uint16 epic, uint16 legendary) probabilities, uint256 maxMana)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
FailedInnerCall
error FailedInnerCall()
FailedInnerCall
error FailedInnerCall()
NotPermissionCallable
error NotPermissionCallable(bytes4 selector)
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x60806040523480156200001157600080fd5b5060405162004cb138038062004cb1833981016040819052620000349162000595565b33806200005c57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000678162000295565b506001808055600280546001600160a01b03199081166001600160a01b0389811691909117909255600380548216888416179055600480548216878416179055600580548216868416179055600680549091169184169190911790556008819055606460098190556040805160a081018252612134815261047e602082015261012c9181019190915260326060820152600060808201526200010a9291620002e5565b6040805160a081018252611f408152610640602082015261014591810191909152604b606082015260006080820152620001499060029060fa620002e5565b6040805160a081018252611b5881526107d0602082015261037091810191909152606460608201526014608082015262000189906003906101f4620002e5565b6040805160a08101825261271081526000602082018190529181018290526060810182905260808101829052620001c49160049190620002e5565b620001da600160056602f59bed19100062000479565b620001f06001600a6605543df729c00062000479565b6200020660016019660bd7588909500062000479565b6200021c60026005660bd7588909500062000479565b620002326002600a661550f7dca7000062000479565b6200024860026019662f5e4af8ca500062000479565b6200025e60036005661d9ad1c0e9d00062000479565b620002746003600a66354a6ba7a1800062000479565b6200028a6003601966766c2fd84c500062000479565b50505050506200065c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b620002ef62000547565b608082015160608301516040840151602085015185516127109493929162000317916200061b565b6200032391906200061b565b6200032f91906200061b565b6200033b91906200061b565b61ffff16146200038e5760405162461bcd60e51b815260206004820152601f60248201527f50726f626162696c6974696573206d7573742073756d20746f20313030303000604482015260640162000053565b8151600084815260106020818152604080842084805280835281852061ffff968716905582880180516001808852848820918916909155838a01805160028952858920908a1690556060808c01805160038b52878b20908c1690556080808e01805160048d52898d20908e1690559a8f9052988852929094018a905584518c81528b518a16968101969096529151881685850152905187169184019190915251851692820192909252915190921660a082015260c0810183905290517fd452daeb59d309a2d8d30f4d2aa38c05f721b3e6b5cc57f9537d7fdd3857fb239181900360e00190a1505050565b6200048362000547565b6001831015801562000496575060038311155b620004d35760405162461bcd60e51b815260206004820152600c60248201526b24b73b30b634b2103a34b2b960a11b604482015260640162000053565b604080516080810182528481526020808201858152828401858152600160608501818152600780546000908152601290965296852095518655925190850155516002840155516003909201805460ff191692151592909217909155815491906200053d8362000640565b9190505550505050565b6000546001600160a01b03163314620005765760405163118cdaa760e01b815233600482015260240162000053565b565b80516001600160a01b03811681146200059057600080fd5b919050565b600080600080600060a08688031215620005ae57600080fd5b620005b98662000578565b9450620005c96020870162000578565b9350620005d96040870162000578565b9250620005e96060870162000578565b9150620005f96080870162000578565b90509295509295909350565b634e487b7160e01b600052601160045260246000fd5b61ffff81811683821601908082111562000639576200063962000605565b5092915050565b60006001820162000655576200065562000605565b5060010190565b614645806200066c6000396000f3fe6080604052600436106103035760003560e01c80638da5cb5b11610190578063ce693b71116100dc578063e33a87b711610095578063ec89b19c1161006f578063ec89b19c146109ba578063f2fde38b146109da578063f5224e11146109fa578063fe072f8514610a1a57600080fd5b8063e33a87b71461095a578063e33c71e01461097a578063e98a3ff51461099a57600080fd5b8063ce693b71146108a1578063d24bdb2a146108c2578063d3fc1d36146108d7578063d6143adb146108f7578063d7afb9c214610924578063dc884bdc1461094457600080fd5b8063abfbbef111610149578063bfbd989911610123578063bfbd98991461081f578063c32a26891461083f578063c60ee82d1461085f578063cad1fba11461088c57600080fd5b8063abfbbef1146107bf578063bab8e54f146107df578063bb6fa160146107ff57600080fd5b80638da5cb5b146106af5780639338a439146106cd578063a8e138e914610734578063a971e84214610754578063aac61a1f14610774578063ab1363d7146107a957600080fd5b806349ad12a51161024f57806376682f9f116102085780637dc0d1d0116101e25780637dc0d1d01461061f578063807a23df1461063f5780638a1633851461065f5780638d7851441461067f57600080fd5b806376682f9f146105af5780637a047438146105df5780637ae79dd6146105ff57600080fd5b806349ad12a5146104f75780634ae57d37146105275780634c9fb4451461053a5780634d2220b81461055a5780634d5af54e1461057a578063715018a61461059a57600080fd5b80633bf5290c116102bc57806343ac84241161029657806343ac8424146104685780634483d7a31461047e57806347ad697f146104a6578063491e3f5e146104d757600080fd5b80633bf5290c146103e75780633d829b3f14610407578063400e396a1461044457600080fd5b8063149ea8c21461030f57806324600fc3146103315780632bd1b86d14610346578063334a104c1461036f5780633357b0e8146103a75780633b91cf2b146103c757600080fd5b3661030a57005b600080fd5b34801561031b57600080fd5b5061032f61032a366004613bff565b610a47565b005b34801561033d57600080fd5b5061032f610c65565b610359610354366004613c18565b610d18565b6040516103669190613cad565b60405180910390f35b34801561037b57600080fd5b5060035461038f906001600160a01b031681565b6040516001600160a01b039091168152602001610366565b3480156103b357600080fd5b5060045461038f906001600160a01b031681565b3480156103d357600080fd5b5061032f6103e2366004613cf5565b610da4565b3480156103f357600080fd5b5061032f610402366004613d8a565b6110f0565b34801561041357600080fd5b50610437610422366004613bff565b600e6020526000908152604090205460ff1681565b6040516103669190613e55565b34801561045057600080fd5b5061045a60075481565b604051908152602001610366565b34801561047457600080fd5b5061045a60095481565b34801561048a57600080fd5b50610493606481565b60405161ffff9091168152602001610366565b3480156104b257600080fd5b506104c76104c1366004613e7d565b50600190565b6040519015158152602001610366565b3480156104e357600080fd5b5061045a6104f2366004613eb4565b611278565b34801561050357600080fd5b50610437610512366004613bff565b6000908152600e602052604090205460ff1690565b61032f610535366004613bff565b6112c1565b34801561054657600080fd5b506104c7610555366004613bff565b611434565b34801561056657600080fd5b5061045a610575366004613ee4565b611459565b34801561058657600080fd5b5061032f610595366004613f10565b61148a565b3480156105a657600080fd5b5061032f611761565b3480156105bb57600080fd5b506104c76105ca366004613f32565b600c6020526000908152604090205460ff1681565b3480156105eb57600080fd5b5061032f6105fa366004613f93565b611775565b34801561060b57600080fd5b5061032f61061a366004613bff565b611a03565b34801561062b57600080fd5b5060055461038f906001600160a01b031681565b34801561064b57600080fd5b5061032f61065a366004613f10565b611c20565b34801561066b57600080fd5b5061045a61067a366004613bff565b611c6b565b34801561068b57600080fd5b506104c761069a366004613f32565b600a6020526000908152604090205460ff1681565b3480156106bb57600080fd5b506000546001600160a01b031661038f565b3480156106d957600080fd5b506107126106e8366004613bff565b60126020526000908152604090208054600182015460028301546003909301549192909160ff1684565b6040805194855260208501939093529183015215156060820152608001610366565b34801561074057600080fd5b5060065461038f906001600160a01b031681565b34801561076057600080fd5b5060025461038f906001600160a01b031681565b34801561078057600080fd5b5061079461078f366004613ee4565b611c9e565b60408051928352602083019190915201610366565b3480156107b557600080fd5b5061045a60085481565b3480156107cb57600080fd5b5061032f6107da366004613f32565b611e10565b3480156107eb57600080fd5b5061032f6107fa366004613eb4565b611e82565b34801561080b57600080fd5b5061032f61081a36600461400c565b611fb1565b34801561082b57600080fd5b5061032f61083a366004613bff565b611fd7565b34801561084b57600080fd5b506104c761085a366004613f32565b61204e565b34801561086b57600080fd5b5061045a61087a366004613f32565b600b6020526000908152604090205481565b34801561089857600080fd5b5061032f61212e565b3480156108ad57600080fd5b506006546104c790600160a01b900460ff1681565b3480156108ce57600080fd5b5061032f612339565b3480156108e357600080fd5b5061032f6108f2366004614029565b61248d565b34801561090357600080fd5b506109176109123660046140ce565b612801565b6040516103669190614127565b34801561093057600080fd5b5061032f61093f366004613eb4565b61288e565b34801561095057600080fd5b5061049361271081565b34801561096657600080fd5b5061032f61097536600461413a565b612a63565b34801561098657600080fd5b5061032f610995366004614187565b612b48565b3480156109a657600080fd5b5061032f6109b5366004613bff565b612bf0565b3480156109c657600080fd5b5061032f6109d5366004613bff565b612bfd565b3480156109e657600080fd5b5061032f6109f5366004613f32565b612c56565b348015610a0657600080fd5b5061032f610a15366004613f32565b612c91565b348015610a2657600080fd5b5061045a610a35366004613bff565b60116020526000908152604090205481565b610a4f612cbb565b60018110158015610a61575060038111155b610a865760405162461bcd60e51b8152600401610a7d906141b3565b60405180910390fd5b600254604051627eeac760e11b8152336004820152602481018390526000916001600160a01b03169062fdd58e90604401602060405180830381865afa158015610ad4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af891906141d9565b11610b455760405162461bcd60e51b815260206004820152601960248201527f4d75737420686176652074686520636f7272656374206b6579000000000000006044820152606401610a7d565b336000908152600c602052604090205460ff16158015610b755750336000908152600a602052604090205460ff16155b610be75760405162461bcd60e51b815260206004820152603860248201527f73746172744c6f6f74626f78576974684b65793a20596f7520616c726561647960448201527f206861766520612070656e64696e67206c6f6f74626f782100000000000000006064820152608401610a7d565b60025460405163325e7d4f60e01b81526001600160a01b039091169063325e7d4f90610c1c90339085906001906004016141f2565b600060405180830381600087803b158015610c3657600080fd5b505af1158015610c4a573d6000803e3d6000fd5b50505050610c59600082612ce5565b610c6260018055565b50565b610c6d612e0b565b476000610c826000546001600160a01b031690565b6001600160a01b03168260405160006040518083038185875af1925050503d8060008114610ccc576040519150601f19603f3d011682016040523d82523d6000602084013e610cd1565b606091505b5050905080610d145760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610a7d565b5050565b6060610d276104c18385614213565b610d5b57610d358284614213565b6040516368f7a3d160e11b81526001600160e01b03199091166004820152602401610a7d565b610d9b3084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612e3892505050565b90505b92915050565b610dac612cbb565b60008381526012602090815260409182902082516080810184528154815260018201549281019290925260028101549282019290925260039091015460ff16151560608201819052610e105760405162461bcd60e51b8152600401610a7d90614243565b60055460405163b5af090f60e01b81526001600160a01b0385811660048301529091169063b5af090f90602401602060405180830381865afa158015610e5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7e919061427a565b610eca5760405162461bcd60e51b815260206004820152601d60248201527f5061796d656e7420746f6b656e206e6f742077686974656c69737465640000006044820152606401610a7d565b6005546040808301516020840151915163f1958d8960e01b81526000936001600160a01b03169263f1958d8992610f06928992906004016141f2565b6040805180830381865afa158015610f22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f469190614297565b91505082811115610f995760405162461bcd60e51b815260206004820181905260248201527f536c6970706167653a20616d6f756e742065786365656473206d6178696d756d6044820152606401610a7d565b600554604051634ec4224d60e11b81526001600160a01b038681166004830152602482018490526000928392839283921690639d88449a90604401608060405180830381865afa158015610ff1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101591906142bb565b935093509350935061102a8885858585612eae565b6002548651602088015160405163731133e960e01b81526001600160a01b039093169263731133e9926110619233926004016142fc565b600060405180830381600087803b15801561107b57600080fd5b505af115801561108f573d6000803e3d6000fd5b505087516020808a0151604080518f8152928301939093528183015290513393507f6e779719423abf0180d82611895181159de28594fa52f07aee0eb89de20aae1192509081900360600190a25050505050506110eb60018055565b505050565b6110f8612e0b565b608082015160608301516040840151602085015185516127109493929161111e91614342565b6111289190614342565b6111329190614342565b61113c9190614342565b61ffff161461118d5760405162461bcd60e51b815260206004820152601f60248201527f50726f626162696c6974696573206d7573742073756d20746f203130303030006044820152606401610a7d565b8151600084815260106020818152604080842084805280835281852061ffff968716905582880180516001808852848820918916909155838a01805160028952858920908a1690556060808c01805160038b52878b20908c1690556080808e01805160048d52898d20908e1690559a8f9052988852929094018a905584518c81528b518a16968101969096529151881685850152905187169184019190915251851692820192909252915190921660a082015260c0810183905290517fd452daeb59d309a2d8d30f4d2aa38c05f721b3e6b5cc57f9537d7fdd3857fb239181900360e00190a1505050565b60008281526010602052604081208183600481111561129957611299613e3f565b60048111156112aa576112aa613e3f565b815260200190815260200160002054905092915050565b6112c9612cbb565b60008181526012602090815260409182902082516080810184528154815260018201549281019290925260028101549282019290925260039091015460ff1615156060820181905261132d5760405162461bcd60e51b8152600401610a7d90614243565b80604001513410156113785760405162461bcd60e51b8152602060048201526014602482015273125b9cdd59999a58da595b9d081c185e5b595b9d60621b6044820152606401610a7d565b6002548151602083015160405163731133e960e01b81526001600160a01b039093169263731133e9926113af9233926004016142fc565b600060405180830381600087803b1580156113c957600080fd5b505af11580156113dd573d6000803e3d6000fd5b5050825160208085015160408051888152928301939093528183015290513393507f6e779719423abf0180d82611895181159de28594fa52f07aee0eb89de20aae1192509081900360600190a250610c6260018055565b600081815260116020526040812054611450906201518061435d565b42101592915050565b600d602052816000526040600020818154811061147557600080fd5b90600052602060002001600091509150505481565b611492612cbb565b6000811180156114a457506009548111155b6114e15760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908185b5bdd5b9d60921b6044820152606401610a7d565b600182101580156114f3575060038211155b61150f5760405162461bcd60e51b8152600401610a7d906141b3565b600254604051627eeac760e11b81523360048201526024810184905282916001600160a01b03169062fdd58e90604401602060405180830381865afa15801561155c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158091906141d9565b10156115ce5760405162461bcd60e51b815260206004820152601960248201527f4d75737420686176652073756666696369656e74206b657973000000000000006044820152606401610a7d565b336000908152600c602052604090205460ff161580156115fe5750336000908152600a602052604090205460ff16155b6116705760405162461bcd60e51b815260206004820152603f60248201527f737461727442756c6b4c6f6f74626f786573576974684b6579733a20596f752060448201527f616c7265616479206861766520612070656e64696e67206c6f6f74626f7821006064820152608401610a7d565b60025460405163325e7d4f60e01b81526001600160a01b039091169063325e7d4f906116a4903390869086906004016141f2565b600060405180830381600087803b1580156116be57600080fd5b505af11580156116d2573d6000803e3d6000fd5b505050506000816001600160401b038111156116f0576116f0613d2d565b604051908082528060200260200182016040528015611719578160200160208202803683370190505b50905060005b8281101561174d578382828151811061173a5761173a614370565b602090810291909101015260010161171f565b5061175781613006565b50610d1460018055565b611769612e0b565b61177360006130fe565b565b61177d612e0b565b8281146117db5760405162461bcd60e51b815260206004820152602660248201527f496e70757420617272617973206d7573742068617665207468652073616d65206044820152650d8cadccee8d60d31b6064820152608401610a7d565b60005b838110156119fc576000600e60008787858181106117fe576117fe614370565b602090810292909201358352508101919091526040016000205460ff16600481111561182c5761182c613e3f565b146118735760405162461bcd60e51b8152602060048201526017602482015276125d195b481c985c9a5d1e48185b1c9958591e481cd95d604a1b6044820152606401610a7d565b82828281811061188557611885614370565b905060200201602081019061189a91906140ce565b600e60008787858181106118b0576118b0614370565b60209081029290920135835250810191909152604001600020805460ff191660018360048111156118e3576118e3613e3f565b0217905550600f60008484848181106118fe576118fe614370565b905060200201602081019061191391906140ce565b600481111561192457611924613e3f565b600481111561193557611935613e3f565b815260200190815260200160002085858381811061195557611955614370565b8354600181018555600094855260209485902091909402929092013591909201555082828281811061198957611989614370565b905060200201602081019061199e91906140ce565b60048111156119af576119af613e3f565b8585838181106119c1576119c1614370565b905060200201357fa0aba5f1889f8df7596d9c1fbf081196204196dbc4fbb094a6b21169dca451c860405160405180910390a36001016117de565b5050505050565b611a0b612cbb565b6003546040516331a9108f60e11b81526004810183905233916001600160a01b031690636352211e90602401602060405180830381865afa158015611a54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a789190614386565b6001600160a01b031614611ac65760405162461bcd60e51b815260206004820152601560248201527426bab9ba1037bbb7103a3432902a37b5b4b2b6b7b760591b6044820152606401610a7d565b611acf81611434565b611aeb5760405162461bcd60e51b8152600401610a7d906143a3565b336000908152600c602052604090205460ff16158015611b1b5750336000908152600a602052604090205460ff16155b611b855760405162461bcd60e51b815260206004820152603560248201527f7374617274467265654c6f6f74626f783a20596f7520616c7265616479206861604482015274766520612070656e64696e67206c6f6f74626f782160581b6064820152608401610a7d565b6000818152601160205260408082204290556003549051632e2349af60e11b8152600481018490526001600160a01b0390911690635c46935e90602401600060405180830381865afa158015611bdf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c07919081019061446b565b5092505050611c168282612ce5565b50610c6260018055565b611c28612e0b565b60018210158015611c3a575060048211155b611c565760405162461bcd60e51b8152600401610a7d906141b3565b60009182526010602052604090912060010155565b600081815260116020526040812054808203611c8a5750600092915050565b611c97816201518061435d565b9392505050565b60008181526012602090815260408083208151608081018352815481526001820154938101939093526002810154918301919091526003015460ff16151560608201819052829190611d025760405162461bcd60e51b8152600401610a7d90614243565b8051600111801590611d1657508051600310155b611d325760405162461bcd60e51b8152600401610a7d906141b3565b6000816020015111611d865760405162461bcd60e51b815260206004820152601f60248201527f5175616e74697479206d7573742062652067726561746572207468616e2030006044820152606401610a7d565b6005546040808301516020840151915163f1958d8960e01b81526001600160a01b039093169263f1958d8992611dc3928a929091906004016141f2565b6040805180830381865afa158015611ddf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e039190614297565b92509250505b9250929050565b611e18612e0b565b6001600160a01b038116611e605760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610a7d565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b611e8a612e0b565b6000828152600e602052604081205460ff166004811115611ead57611ead613e3f565b14611ef45760405162461bcd60e51b8152602060048201526017602482015276125d195b481c985c9a5d1e48185b1c9958591e481cd95d604a1b6044820152606401610a7d565b6000828152600e60205260409020805482919060ff19166001836004811115611f1f57611f1f613e3f565b0217905550600f6000826004811115611f3a57611f3a613e3f565b6004811115611f4b57611f4b613e3f565b81526020808201929092526040016000908120805460018101825590825291902001829055806004811115611f8257611f82613e3f565b60405183907fa0aba5f1889f8df7596d9c1fbf081196204196dbc4fbb094a6b21169dca451c890600090a35050565b611fb9612e0b565b60068054911515600160a01b0260ff60a01b19909216919091179055565b611fdf612e0b565b6000818152601260205260409020600201546120335760405162461bcd60e51b8152602060048201526013602482015272141858dac8191bd95cc81b9bdd08195e1a5cdd606a1b6044820152606401610a7d565b6000908152601260205260409020600301805460ff19169055565b6001600160a01b0381166000908152600a602052604081205460ff166120b65760405162461bcd60e51b815260206004820181905260248201527f4e6f2070656e64696e67206c6f6f74626f7820666f72207468697320757365726044820152606401610a7d565b600480546040516338bf633360e11b81526001600160a01b038581169382019390935291169063717ec66690602401602060405180830381865afa158015612102573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061212691906141d9565b151592915050565b612136612cbb565b336000908152600c602052604090205460ff166121955760405162461bcd60e51b815260206004820152601960248201527f4e6f2070656e64696e672062756c6b206c6f6f74626f786573000000000000006044820152606401610a7d565b600480546040516338bf633360e11b815233928101929092526000916001600160a01b039091169063717ec66690602401602060405180830381865afa1580156121e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061220791906141d9565b9050806000036122595760405162461bcd60e51b815260206004820152601c60248201527f52616e646f6d6e657373206e6f742066756c66696c6c656420796574000000006044820152606401610a7d565b336000908152600d60209081526040808320805482518185028101850190935280835291929091908301828280156122b057602002820191906000526020600020905b81548152602001906001019080831161229c575b5050336000908152600c60205260408120805460ff191690559394506122d592505050565b6040519080825280602002602001820160405280156122fe578160200160208202803683370190505b50336000908152600d6020908152604090912082516123239391929190910190613b9f565b5061232e818361314e565b505061177360018055565b612341612cbb565b336000908152600a602052604090205460ff166123955760405162461bcd60e51b815260206004820152601260248201527109cde40e0cadcc8d2dcce40d8dedee8c4def60731b6044820152606401610a7d565b600480546040516338bf633360e11b815233928101929092526000916001600160a01b039091169063717ec66690602401602060405180830381865afa1580156123e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061240791906141d9565b9050806000036124595760405162461bcd60e51b815260206004820152601c60248201527f52616e646f6d6e657373206e6f742066756c66696c6c656420796574000000006044820152606401610a7d565b336000908152600b602081815260408084208054600a8452918520805460ff191690559290915291905561232e8183613443565b612495612cbb565b600081511180156124a95750600954815111155b6124e65760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908185b5bdd5b9d60921b6044820152606401610a7d565b336000908152600c602052604090205460ff161580156125165750336000908152600a602052604090205460ff16155b6125885760405162461bcd60e51b815260206004820152603b60248201527f737461727442756c6b467265654c6f6f74626f7865733a20596f7520616c726560448201527f616479206861766520612070656e64696e67206c6f6f74626f782100000000006064820152608401610a7d565b600081516001600160401b038111156125a3576125a3613d2d565b6040519080825280602002602001820160405280156125cc578160200160208202803683370190505b50905060005b82518110156127f757600354835133916001600160a01b031690636352211e9086908590811061260457612604614370565b60200260200101516040518263ffffffff1660e01b815260040161262a91815260200190565b602060405180830381865afa158015612647573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266b9190614386565b6001600160a01b0316146126b95760405162461bcd60e51b815260206004820152601560248201527426bab9ba1037bbb7103a3432902a37b5b4b2b6b7b760591b6044820152606401610a7d565b6126db8382815181106126ce576126ce614370565b6020026020010151611434565b6126f75760405162461bcd60e51b8152600401610a7d906143a3565b426011600085848151811061270e5761270e614370565b60200260200101518152602001908152602001600020819055506000600360009054906101000a90046001600160a01b03166001600160a01b0316635c46935e85848151811061276057612760614370565b60200260200101516040518263ffffffff1660e01b815260040161278691815260200190565b600060405180830381865afa1580156127a3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127cb919081019061446b565b5092505050808383815181106127e3576127e3614370565b6020908102919091010152506001016125d2565b50611c1681613006565b6060600f600083600481111561281957612819613e3f565b600481111561282a5761282a613e3f565b815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561288257602002820191906000526020600020905b81548152602001906001019080831161286e575b50505050509050919050565b612896612e0b565b8060048111156128a8576128a8613e3f565b6000838152600e602052604090205460ff1660048111156128cb576128cb613e3f565b146129245760405162461bcd60e51b815260206004820152602360248201527f4974656d20646f6573206e6f742062656c6f6e6720746f20746869732072617260448201526269747960e81b6064820152608401610a7d565b6000600f600083600481111561293c5761293c613e3f565b600481111561294d5761294d613e3f565b8152602001908152602001600020905060005b8154811015612a0a578382828154811061297c5761297c614370565b906000526020600020015403612a02578154829061299c906001906144df565b815481106129ac576129ac614370565b90600052602060002001548282815481106129c9576129c9614370565b9060005260206000200181905550818054806129e7576129e76144f2565b60019003818190600052602060002001600090559055612a0a565b600101612960565b506000838152600e60205260409020805460ff19169055816004811115612a3357612a33613e3f565b60405184907f748d6b95ead977f23611802b6f0d727b419fdda5b15d39ffe9d5295e46d2566090600090a3505050565b612a6b612e0b565b60018410158015612a7d575060038411155b612a995760405162461bcd60e51b8152600401610a7d906141b3565b600085815260126020526040902060020154612aed5760405162461bcd60e51b8152602060048201526013602482015272141858dac8191bd95cc81b9bdd08195e1a5cdd606a1b6044820152606401610a7d565b6040805160808101825294855260208086019485528582019384529115156060860190815260009687526012909252909420925183559051600183015551600282015590516003909101805460ff1916911515919091179055565b612b50612e0b565b60018310158015612b62575060038311155b612b7e5760405162461bcd60e51b8152600401610a7d906141b3565b604080516080810182528481526020808201858152828401858152600160608501818152600780546000908152601290965296852095518655925190850155516002840155516003909201805460ff19169215159290921790915581549190612be683614508565b9190505550505050565b612bf8612e0b565b600855565b612c05612e0b565b600081118015612c1757506103e88111155b612c515760405162461bcd60e51b815260206004820152600b60248201526a092dcecc2d8d2c840dac2f60ab1b6044820152606401610a7d565b600955565b612c5e612e0b565b6001600160a01b038116612c8857604051631e4fbdf760e01b815260006004820152602401610a7d565b610c62816130fe565b612c99612e0b565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b600260015403612cde57604051633ee5aeb560e01b815260040160405180910390fd5b6002600155565b6004805460405163ead073c760e01b815233928101929092526000916001600160a01b039091169063ead073c7906024016020604051808303816000875af1158015612d35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d5991906141d9565b905080600003612dab5760405162461bcd60e51b815260206004820152601c60248201527f4661696c656420746f20726571756573742072616e646f6d6e657373000000006044820152606401610a7d565b336000818152600a60209081526040808320805460ff19166001179055600b82529182902085905590518481528592917fa9a3d6cddd10439b5eec42abc3b838b729b722f9e8ac6136de3f17a635964b17910160405180910390a3505050565b6000546001600160a01b031633146117735760405163118cdaa760e01b8152336004820152602401610a7d565b6060600080846001600160a01b031684604051612e559190614521565b600060405180830381855af49150503d8060008114612e90576040519150601f19603f3d011682016040523d82523d6000602084013e612e95565b606091505b5091509150612ea58583836137b2565b95945050505050565b8315612f4157612f4133600560009054906101000a90046001600160a01b03166001600160a01b0316634e6fd6c46040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f2f9190614386565b6001600160a01b03881691908761380e565b8215612fd457612fd433600560009054906101000a90046001600160a01b03166001600160a01b0316632131c68c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fc29190614386565b6001600160a01b03881691908661380e565b600082118015612fec57506001600160a01b03811615155b156119fc576119fc6001600160a01b03861633838561380e565b6004805460405163ead073c760e01b815233928101929092526000916001600160a01b039091169063ead073c7906024016020604051808303816000875af1158015613056573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061307a91906141d9565b9050806000036130cc5760405162461bcd60e51b815260206004820152601c60248201527f4661696c656420746f20726571756573742072616e646f6d6e657373000000006044820152606401610a7d565b336000908152600c60209081526040808320805460ff19166001179055600d825290912083516110eb92850190613b9f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b81516000816001600160401b0381111561316a5761316a613d2d565b604051908082528060200260200182016040528015613193578160200160208202803683370190505b5090506000826001600160401b038111156131b0576131b0613d2d565b6040519080825280602002602001820160405280156131d9578160200160208202803683370190505b50905060005b838110156133925760006132408783815181106131fe576131fe614370565b60200260200101518784604051602001613222929190918252602082015260400190565b6040516020818303038152906040528051906020012060001c61386e565b604080516020810189905290810184905260608082015260046080820152636974656d60e01b60a082015290915061329690829060c0015b6040516020818303038152906040528051906020012060001c613969565b8483815181106132a8576132a8614370565b60200260200101818152505060018383815181106132c8576132c8614370565b602090810291909101015260025484516001600160a01b0390911690633a178d99908690859081106132fc576132fc614370565b60200260200101516040518263ffffffff1660e01b815260040161332291815260200190565b602060405180830381865afa15801561333f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613363919061427a565b6133895760085484838151811061337c5761337c614370565b6020026020010181815250505b506001016131df565b50600254604051630fbfeffd60e11b81526001600160a01b0390911690631f7fdffa906133c79033908690869060040161453d565b600060405180830381600087803b1580156133e157600080fd5b505af11580156133f5573d6000803e3d6000fd5b50505050336001600160a01b03167fc7119e9126731aaaadd345a571394fbaaf57ee5c6c7faa37322f825a975895ac838760405161343492919061458f565b60405180910390a25050505050565b600061344e826139de565b90506000816001600160401b0381111561346a5761346a613d2d565b604051908082528060200260200182016040528015613493578160200160208202803683370190505b50905060005b828110156135255760006134c3868684604051602001613222929190918252602082015260400190565b604080516020810188905290810184905260608082015260046080820152636974656d60e01b60a08201529091506134ff90829060c001613278565b83838151811061351157613511614370565b602090810291909101015250600101613499565b5060005b828110156136e35760025482516001600160a01b0390911690633a178d999084908490811061355a5761355a614370565b60200260200101516040518263ffffffff1660e01b815260040161358091815260200190565b602060405180830381865afa15801561359d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135c1919061427a565b156136505760025482516001600160a01b039091169063731133e99033908590859081106135f1576135f1614370565b602002602001015160016040518463ffffffff1660e01b8152600401613619939291906142fc565b600060405180830381600087803b15801561363357600080fd5b505af1158015613647573d6000803e3d6000fd5b505050506136db565b60025460085460405163731133e960e01b81526001600160a01b039092169163731133e991613687913391906001906004016142fc565b600060405180830381600087803b1580156136a157600080fd5b505af11580156136b5573d6000803e3d6000fd5b505050506008548282815181106136ce576136ce614370565b6020026020010181815250505b600101613529565b50600654600160a01b900460ff16156137695760006137028585613a1b565b600654604051632884a08960e11b8152336004820152602481018390529192506001600160a01b031690635109411290604401600060405180830381600087803b15801561374f57600080fd5b505af1158015613763573d6000803e3d6000fd5b50505050505b336001600160a01b03167fd965459918d5add0e6b5916b5626da1be5e1afe2a142b78585df2429994726c482866040516137a49291906145b4565b60405180910390a250505050565b6060826137c7576137c282613a91565b611c97565b81511580156137de57506001600160a01b0384163b155b1561380757604051639996b31560e01b81526001600160a01b0385166004820152602401610a7d565b5092915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052613868908590613aba565b50505050565b60008061387d612710846145d6565b90506000805b60048111613920576000868152601060205260408120908260048111156138ac576138ac613e3f565b60048111156138bd576138bd613e3f565b60048111156138ce576138ce613e3f565b815260200190815260200160002054826138e8919061435d565b91508183101561390e5780600481111561390457613904613e3f565b9350505050610d9e565b8061391881614508565b915050613883565b5060405162461bcd60e51b815260206004820152601860248201527f496e76616c6964207261726974792073656c656374696f6e00000000000000006044820152606401610a7d565b600080600f600085600481111561398257613982613e3f565b600481111561399357613993613e3f565b8152602001908152602001600020905060008180549050846139b591906145d6565b90508181815481106139c9576139c9614370565b90600052602060002001549250505092915050565b6000806139ec6064846145d6565b90506050811015613a005750600192915050565b605f811015613a125750600292915050565b50600392915050565b6000828152601060205260408120600101548190613a3990846145d6565b613a4490600161435d565b9050613a516064846145d6565b600003610d9b57600084815260106020526040902060010154613a759060046145f8565b613a7f90846145d6565b613a89908261435d565b915050610d9e565b805115613aa15780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6000613acf6001600160a01b03841683613b1d565b90508051600014158015613af4575080806020019051810190613af2919061427a565b155b156110eb57604051635274afe760e01b81526001600160a01b0384166004820152602401610a7d565b6060610d9b8383600084600080856001600160a01b03168486604051613b439190614521565b60006040518083038185875af1925050503d8060008114613b80576040519150601f19603f3d011682016040523d82523d6000602084013e613b85565b606091505b5091509150613b958683836137b2565b9695505050505050565b828054828255906000526020600020908101928215613bda579160200282015b82811115613bda578251825591602001919060010190613bbf565b50613be6929150613bea565b5090565b5b80821115613be65760008155600101613beb565b600060208284031215613c1157600080fd5b5035919050565b60008060208385031215613c2b57600080fd5b82356001600160401b0380821115613c4257600080fd5b818501915085601f830112613c5657600080fd5b813581811115613c6557600080fd5b866020828501011115613c7757600080fd5b60209290920196919550909350505050565b60005b83811015613ca4578181015183820152602001613c8c565b50506000910152565b6020815260008251806020840152613ccc816040850160208701613c89565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610c6257600080fd5b600080600060608486031215613d0a57600080fd5b833592506020840135613d1c81613ce0565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613d6b57613d6b613d2d565b604052919050565b803561ffff81168114613d8557600080fd5b919050565b600080600083850360e0811215613da057600080fd5b8435935060a0601f1982011215613db657600080fd5b5060405160a081018181106001600160401b0382111715613dd957613dd9613d2d565b604052613de860208601613d73565b8152613df660408601613d73565b6020820152613e0760608601613d73565b6040820152613e1860808601613d73565b6060820152613e2960a08601613d73565b60808201529295929450505060c0919091013590565b634e487b7160e01b600052602160045260246000fd5b6020810160058310613e7757634e487b7160e01b600052602160045260246000fd5b91905290565b600060208284031215613e8f57600080fd5b81356001600160e01b031981168114610d9b57600080fd5b60058110610c6257600080fd5b60008060408385031215613ec757600080fd5b823591506020830135613ed981613ea7565b809150509250929050565b60008060408385031215613ef757600080fd5b8235613f0281613ce0565b946020939093013593505050565b60008060408385031215613f2357600080fd5b50508035926020909101359150565b600060208284031215613f4457600080fd5b8135610d9b81613ce0565b60008083601f840112613f6157600080fd5b5081356001600160401b03811115613f7857600080fd5b6020830191508360208260051b8501011115611e0957600080fd5b60008060008060408587031215613fa957600080fd5b84356001600160401b0380821115613fc057600080fd5b613fcc88838901613f4f565b90965094506020870135915080821115613fe557600080fd5b50613ff287828801613f4f565b95989497509550505050565b8015158114610c6257600080fd5b60006020828403121561401e57600080fd5b8135610d9b81613ffe565b6000602080838503121561403c57600080fd5b82356001600160401b038082111561405357600080fd5b818501915085601f83011261406757600080fd5b81358181111561407957614079613d2d565b8060051b915061408a848301613d43565b81815291830184019184810190888411156140a457600080fd5b938501935b838510156140c2578435825293850193908501906140a9565b98975050505050505050565b6000602082840312156140e057600080fd5b8135610d9b81613ea7565b60008151808452602080850194506020840160005b8381101561411c57815187529582019590820190600101614100565b509495945050505050565b602081526000610d9b60208301846140eb565b600080600080600060a0868803121561415257600080fd5b85359450602086013593506040860135925060608601359150608086013561417981613ffe565b809150509295509295909350565b60008060006060848603121561419c57600080fd5b505081359360208301359350604090920135919050565b6020808252600c908201526b24b73b30b634b2103a34b2b960a11b604082015260600190565b6000602082840312156141eb57600080fd5b5051919050565b6001600160a01b039390931683526020830191909152604082015260600190565b6001600160e01b0319813581811691600485101561423b5780818660040360031b1b83161692505b505092915050565b6020808252601a908201527f4c6f6f74626f78207061636b206973206e6f7420616374697665000000000000604082015260600190565b60006020828403121561428c57600080fd5b8151610d9b81613ffe565b600080604083850312156142aa57600080fd5b505080516020909101519092909150565b600080600080608085870312156142d157600080fd5b84519350602085015192506040850151915060608501516142f181613ce0565b939692955090935050565b6001600160a01b039390931683526020830191909152604082015260806060820181905260009082015260a00190565b634e487b7160e01b600052601160045260246000fd5b61ffff8181168382160190808211156138075761380761432c565b80820180821115610d9e57610d9e61432c565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561439857600080fd5b8151610d9b81613ce0565b60208082526037908201527f596f752063616e206f6e6c79206f70656e206f6e65206c6f6f74626f7820706560408201527f722064617920666f72207468697320546f6b69656d6f6e000000000000000000606082015260800190565b600082601f83011261441157600080fd5b81516001600160401b0381111561442a5761442a613d2d565b61443d601f8201601f1916602001613d43565b81815284602083860101111561445257600080fd5b614463826020830160208701613c89565b949350505050565b6000806000806080858703121561448157600080fd5b84516001600160401b038082111561449857600080fd5b6144a488838901614400565b955060208701519150808211156144ba57600080fd5b506144c787828801614400565b9350506040850151915060608501516142f181613ea7565b81810381811115610d9e57610d9e61432c565b634e487b7160e01b600052603160045260246000fd5b60006001820161451a5761451a61432c565b5060010190565b60008251614533818460208701613c89565b9190910192915050565b6001600160a01b0384168152608060208201819052600090614561908301856140eb565b828103604084015261457381856140eb565b8381036060909401939093525050600081526020019392505050565b6040815260006145a260408301856140eb565b8281036020840152612ea581856140eb565b6040815260006145c760408301856140eb565b90508260208301529392505050565b6000826145f357634e487b7160e01b600052601260045260246000fd5b500690565b8082028115828204841417610d9e57610d9e61432c56fea26469706673582212204a3a9547ee05ab9af003494fe3be9906dda5ae01ab5440d4fee36fff372ee7e864736f6c63430008180033000000000000000000000000ad574f7f4eb563b0ccdcca0d7d7628aeaf071d65000000000000000000000000802187c392b15cdc8df8aa05bfef314df1f65c620000000000000000000000001b2233fc66501fd686ec9e5b51ac92201995a1eb000000000000000000000000fb63ff06b4203e450a626e264f7702be9d148fd7000000000000000000000000901a60c22ebf6b3799bb0d14d97a1908bbc0e7a9