UNPKG

@excubiae/contracts

Version:
653 lines (652 loc) 46.7 kB
{ "_format": "hh-sol-artifact-1", "contractName": "SemaphoreMockTest", "sourceName": "contracts/test/extensions/Semaphore.t.sol", "abi": [ { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "", "type": "string" } ], "name": "log", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "", "type": "address" } ], "name": "log_address", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256[]", "name": "val", "type": "uint256[]" } ], "name": "log_array", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "int256[]", "name": "val", "type": "int256[]" } ], "name": "log_array", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address[]", "name": "val", "type": "address[]" } ], "name": "log_array", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "log_bytes", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bytes32", "name": "", "type": "bytes32" } ], "name": "log_bytes32", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "int256", "name": "", "type": "int256" } ], "name": "log_int", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "key", "type": "string" }, { "indexed": false, "internalType": "address", "name": "val", "type": "address" } ], "name": "log_named_address", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "key", "type": "string" }, { "indexed": false, "internalType": "uint256[]", "name": "val", "type": "uint256[]" } ], "name": "log_named_array", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "key", "type": "string" }, { "indexed": false, "internalType": "int256[]", "name": "val", "type": "int256[]" } ], "name": "log_named_array", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "key", "type": "string" }, { "indexed": false, "internalType": "address[]", "name": "val", "type": "address[]" } ], "name": "log_named_array", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "key", "type": "string" }, { "indexed": false, "internalType": "bytes", "name": "val", "type": "bytes" } ], "name": "log_named_bytes", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "key", "type": "string" }, { "indexed": false, "internalType": "bytes32", "name": "val", "type": "bytes32" } ], "name": "log_named_bytes32", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "key", "type": "string" }, { "indexed": false, "internalType": "int256", "name": "val", "type": "int256" }, { "indexed": false, "internalType": "uint256", "name": "decimals", "type": "uint256" } ], "name": "log_named_decimal_int", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "key", "type": "string" }, { "indexed": false, "internalType": "uint256", "name": "val", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "decimals", "type": "uint256" } ], "name": "log_named_decimal_uint", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "key", "type": "string" }, { "indexed": false, "internalType": "int256", "name": "val", "type": "int256" } ], "name": "log_named_int", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "key", "type": "string" }, { "indexed": false, "internalType": "string", "name": "val", "type": "string" } ], "name": "log_named_string", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "key", "type": "string" }, { "indexed": false, "internalType": "uint256", "name": "val", "type": "uint256" } ], "name": "log_named_uint", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "", "type": "string" } ], "name": "log_string", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "log_uint", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "logs", "type": "event" }, { "inputs": [], "name": "IS_TEST", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "deployer", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "excludeArtifacts", "outputs": [ { "internalType": "string[]", "name": "excludedArtifacts_", "type": "string[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "excludeContracts", "outputs": [ { "internalType": "address[]", "name": "excludedContracts_", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "excludeSelectors", "outputs": [ { "components": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "bytes4[]", "name": "selectors", "type": "bytes4[]" } ], "internalType": "struct StdInvariant.FuzzSelector[]", "name": "excludedSelectors_", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "excludeSenders", "outputs": [ { "internalType": "address[]", "name": "excludedSenders_", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "failed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "setUp", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "targetArtifactSelectors", "outputs": [ { "components": [ { "internalType": "string", "name": "artifact", "type": "string" }, { "internalType": "bytes4[]", "name": "selectors", "type": "bytes4[]" } ], "internalType": "struct StdInvariant.FuzzArtifactSelector[]", "name": "targetedArtifactSelectors_", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "targetArtifacts", "outputs": [ { "internalType": "string[]", "name": "targetedArtifacts_", "type": "string[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "targetContracts", "outputs": [ { "internalType": "address[]", "name": "targetedContracts_", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "targetInterfaces", "outputs": [ { "components": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "string[]", "name": "artifacts", "type": "string[]" } ], "internalType": "struct StdInvariant.FuzzInterface[]", "name": "targetedInterfaces_", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "targetSelectors", "outputs": [ { "components": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "bytes4[]", "name": "selectors", "type": "bytes4[]" } ], "internalType": "struct StdInvariant.FuzzSelector[]", "name": "targetedSelectors_", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "targetSenders", "outputs": [ { "internalType": "address[]", "name": "targetedSenders_", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "test_mock_deployAndStubsForCoverage", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "validGroupId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "validProof", "outputs": [ { "internalType": "uint256", "name": "merkleTreeDepth", "type": "uint256" }, { "internalType": "uint256", "name": "merkleTreeRoot", "type": "uint256" }, { "internalType": "uint256", "name": "nullifier", "type": "uint256" }, { "internalType": "uint256", "name": "message", "type": "uint256" }, { "internalType": "uint256", "name": "scope", "type": "uint256" } ], "stateMutability": "view", "type": "function" } ], "bytecode": "0x60806040819052600c8054600160ff199182168117909255601f8054909116821790556001625e79b760e01b0319909152608452737109709ecfa91a80626ff3989d68f67f5b1dd12d63ffa1864960a4602060405180830381865afa15801561006c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061009091906101b1565b602080546001600160a01b0319166001600160a01b03929092169182178155600060218190556040805160c080820183526001825281850184815282840185815260608085019889526080808601888152875161010081018952898152998a01899052968901889052908801879052870186905260a080880187905292870186905260e087019590955290820185905281516022908155905160235592516024559351602555516026559061014990602790600861015e565b50505034801561015857600080fd5b506101e1565b826008810192821561018c579160200282015b8281111561018c578251825591602001919060010190610171565b5061019892915061019c565b5090565b5b80821115610198576000815560010161019d565b6000602082840312156101c357600080fd5b81516001600160a01b03811681146101da57600080fd5b9392505050565b611f0e806101f06000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806385226c81116100a2578063ba414fa611610071578063ba414fa6146101cb578063cee617b4146101e3578063d5f3948814610225578063e20c9f7114610250578063fa7626d41461025857600080fd5b806385226c8114610191578063916a17c6146101a6578063b0464fdc146101bb578063b5508aa9146101c357600080fd5b80633e5e3c23116100de5780633e5e3c23146101555780633f7286f41461015d57806366d9a9a0146101655780637bb29ca91461017a57600080fd5b8063074c194b146101105780630a9254e41461011a5780631ed7831c146101225780632ade388014610140575b600080fd5b610118610265565b005b610118610715565b61012a61094c565b6040516101379190611208565b60405180910390f35b6101486109ae565b604051610137919061129a565b61012a610af0565b61012a610b50565b61016d610bb0565b60405161013791906113ac565b61018360215481565b604051908152602001610137565b610199610d1d565b604051610137919061142c565b6101ae610ded565b6040516101379190611485565b6101ae610ed3565b610199610fb9565b6101d3611089565b6040519015158152602001610137565b6022546023546024546025546026546101fd949392919085565b604080519586526020860194909452928401919091526060830152608082015260a001610137565b602054610238906001600160a01b031681565b6040516001600160a01b039091168152602001610137565b61012a61112d565b601f546101d39060ff1681565b604080516001808252818301909252600091602080830190803683370190505090506021548160008151811061029d5761029d6114fe565b60200260200101818152505061032a601f60019054906101000a90046001600160a01b03166001600160a01b031663575185ed6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103239190611514565b600061118d565b601f546020546040516302e1f9db60e51b81526001600160a01b03918216600482015261038192610100900490911690635c3f3b60906024015b602060405180830381865afa1580156102ff573d6000803e3d6000fd5b601f54602054604051632c88036360e01b81526001600160a01b039182166004820152600060248201526103c692610100900490911690632c88036390604401610364565b601f54602054604051632b47741360e11b8152600060048201526001600160a01b039182166024820152610100909204169063568ee82690604401600060405180830381600087803b15801561041b57600080fd5b505af115801561042f573d6000803e3d6000fd5b5050601f54604051636d1e6d2960e11b8152600060048201526101009091046001600160a01b0316925063da3cda529150602401600060405180830381600087803b15801561047d57600080fd5b505af1158015610491573d6000803e3d6000fd5b5050601f54604051633f3c2dbb60e21b815260006004820181905260248201526101009091046001600160a01b0316925063fcf0b6ec9150604401600060405180830381600087803b1580156104e657600080fd5b505af11580156104fa573d6000803e3d6000fd5b5050601f54604051631783efc360e01b815260006004820181905260248201526101009091046001600160a01b03169250631783efc39150604401600060405180830381600087803b15801561054f57600080fd5b505af1158015610563573d6000803e3d6000fd5b5050601f54604051630424537160e01b81526101009091046001600160a01b031692506304245371915061059e90600090859060040161155f565b600060405180830381600087803b1580156105b857600080fd5b505af11580156105cc573d6000803e3d6000fd5b5050601f54604051634178c4d560e01b81526101009091046001600160a01b03169250634178c4d5915061060b90600090819081908790600401611580565b600060405180830381600087803b15801561062557600080fd5b505af1158015610639573d6000803e3d6000fd5b5050601f5460405163366e997f60e11b81526101009091046001600160a01b03169250636cdd32fe915061067690600090819086906004016115af565b600060405180830381600087803b15801561069057600080fd5b505af11580156106a4573d6000803e3d6000fd5b5050601f5460405163d0d898dd60e01b81526101009091046001600160a01b0316925063d0d898dd91506106e0906000906022906004016115d7565b600060405180830381600087803b1580156106fa57600080fd5b505af115801561070e573d6000803e3d6000fd5b5050505050565b6020546040516303223eab60e11b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b15801561076e57600080fd5b505af1158015610782573d6000803e3d6000fd5b5060009250600191506107929050565b6040519080825280602002602001820160405280156107bb578160200160208202803683370190505b50604080516001808252818301909252919250600091906020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090506021548360008151811061081b5761081b6114fe565b60200260200101818152505060226002015482600081518110610840576108406114fe565b602002602001018181525050600181600081518110610861576108616114fe565b602002602001019015159081151581525050828282604051610882906111fb565b61088e93929190611642565b604051809103906000f0801580156108aa573d6000803e3d6000fd5b50601f60016101000a8154816001600160a01b0302191690836001600160a01b031602179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561092f57600080fd5b505af1158015610943573d6000803e3d6000fd5b50505050505050565b606060168054806020026020016040519081016040528092919081815260200182805480156109a457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610986575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610ae757600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610ad0578382906000526020600020018054610a43906116af565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6f906116af565b8015610abc5780601f10610a9157610100808354040283529160200191610abc565b820191906000526020600020905b815481529060010190602001808311610a9f57829003601f168201915b505050505081526020019060010190610a24565b5050505081525050815260200190600101906109d2565b50505050905090565b606060188054806020026020016040519081016040528092919081815260200182805480156109a4576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610986575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156109a4576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610986575050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610ae75783829060005260206000209060020201604051806040016040529081600082018054610c07906116af565b80601f0160208091040260200160405190810160405280929190818152602001828054610c33906116af565b8015610c805780601f10610c5557610100808354040283529160200191610c80565b820191906000526020600020905b815481529060010190602001808311610c6357829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610d0557602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610cc75790505b50505050508152505081526020019060010190610bd4565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610ae7578382906000526020600020018054610d60906116af565b80601f0160208091040260200160405190810160405280929190818152602001828054610d8c906116af565b8015610dd95780601f10610dae57610100808354040283529160200191610dd9565b820191906000526020600020905b815481529060010190602001808311610dbc57829003601f168201915b505050505081526020019060010190610d41565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610ae75760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610ebb57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610e7d5790505b50505050508152505081526020019060010190610e11565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610ae75760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610fa157602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610f635790505b50505050508152505081526020019060010190610ef7565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610ae7578382906000526020600020018054610ffc906116af565b80601f0160208091040260200160405190810160405280929190818152602001828054611028906116af565b80156110755780601f1061104a57610100808354040283529160200191611075565b820191906000526020600020905b81548152906001019060200180831161105857829003601f168201915b505050505081526020019060010190610fdd565b60085460009060ff16156110a1575060085460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190526519985a5b195960d21b602483015260009163667f9d7090604401602060405180830381865afa158015611102573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111269190611514565b1415905090565b606060158054806020026020016040519081016040528092919081815260200182805480156109a4576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610986575050505050905090565b60405163260a5b1560e21b81526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b1580156111df57600080fd5b505afa1580156111f3573d6000803e3d6000fd5b505050505050565b6107ef806116ea83390190565b602080825282518282018190526000918401906040840190835b818110156112495783516001600160a01b0316835260209384019390920191600101611222565b509095945050505050565b6000815180845260005b8181101561127a5760208185018101518683018201520161125e565b506000602082860101526020601f19601f83011685010191505092915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561135a57603f19878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b8181101561134057605f198a850301835261132a848651611254565b602095860195909450929092019160010161130e565b5091975050506020948501949290920191506001016112c2565b50929695505050505050565b600081518084526020840193506020830160005b828110156113a25781516001600160e01b03191686526020958601959091019060010161137a565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561135a57603f1987860301845281518051604087526113fa6040880182611254565b90506020820151915086810360208801526114158183611366565b9650505060209384019391909101906001016113d4565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561135a57603f19878603018452611470858351611254565b94506020938401939190910190600101611454565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561135a57868503603f19018452815180516001600160a01b031686526020908101516040918701829052906114e890870182611366565b95505060209384019391909101906001016114ad565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561152657600080fd5b5051919050565b600081518084526020840193506020830160005b828110156113a2578151865260209586019590910190600101611541565b828152604060208201526000611578604083018461152d565b949350505050565b8481528360208201528260408201526080606082015260006115a5608083018461152d565b9695505050505050565b8381528260208201526060604082015260006115ce606083018461152d565b95945050505050565b82815281546020820152600182015460408201526002820154606082015260038201546080820152600482015460a08201526101c0810160c082016005840160005b6008811015611638578154835260209092019160019182019101611619565b5050509392505050565b606081526000611655606083018661152d565b8281036020840152611667818661152d565b83810360408501528451808252602080870193509091019060005b818110156116a25783511515835260209384019390920191600101611682565b5090979650505050505050565b600181811c908216806116c357607f821691505b6020821081036116e357634e487b7160e01b600052602260045260246000fd5b5091905056fe608060405234801561001057600080fd5b506040516107ef3803806107ef83398101604081905261002f916101ec565b60005b835181101561009f576001600080868481518110610052576100526102ea565b6020026020010151815260200190815260200160002060006101000a81548160ff0219169083151502179055506002600081548092919061009290610300565b9091555050600101610032565b5060005b825181101561010d578181815181106100be576100be6102ea565b6020026020010151600160008584815181106100dc576100dc6102ea565b6020908102919091018101518252810191909152604001600020805460ff19169115159190911790556001016100a3565b50505050610327565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561015457610154610116565b604052919050565b60006001600160401b0382111561017557610175610116565b5060051b60200190565b600082601f83011261019057600080fd5b81516101a361019e8261015c565b61012c565b8082825260208201915060208360051b8601019250858311156101c557600080fd5b602085015b838110156101e25780518352602092830192016101ca565b5095945050505050565b60008060006060848603121561020157600080fd5b83516001600160401b0381111561021757600080fd5b6102238682870161017f565b602086015190945090506001600160401b0381111561024157600080fd5b61024d8682870161017f565b604086015190935090506001600160401b0381111561026b57600080fd5b8401601f8101861361027c57600080fd5b805161028a61019e8261015c565b8082825260208201915060208360051b8501019250888311156102ac57600080fd5b6020840193505b828410156102dc57835180151581146102cb57600080fd5b8252602093840193909101906102b3565b809450505050509250925092565b634e487b7160e01b600052603260045260246000fd5b60006001820161032057634e487b7160e01b600052601160045260246000fd5b5060010190565b6104b9806103366000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80635c3f3b601161008c578063d24924fe11610066578063d24924fe146101c2578063da3cda52146101cb578063fbad4139146101dc578063fcf0b6ec1461010457600080fd5b80635c3f3b601461018c5780636cdd32fe146101a0578063d0d898dd146101b457600080fd5b80634178c4d5116100c85780634178c4d51461013f578063456f418814610154578063568ee82614610177578063575185ed1461018557600080fd5b806304245371146100ef5780631783efc3146101045780632c88036314610116575b600080fd5b6101026100fd366004610281565b505050565b005b6101026101123660046102cd565b5050565b61012c61012436600461030b565b600092915050565b6040519081526020015b60405180910390f35b61010261014d366004610335565b5050505050565b610167610162366004610396565b6101ff565b6040519015158152602001610136565b6101026101123660046103d0565b600061012c565b61012c61019a3660046103fc565b50600090565b6101026101ae366004610417565b50505050565b610102610112366004610396565b61012c60025481565b6101026101d936600461046a565b50565b6101676101ea36600461046a565b60006020819052908152604090205460ff1681565b60008281526020819052604081205460ff16801561022e575060408083013560009081526001602052205460ff165b9392505050565b60008083601f84011261024757600080fd5b50813567ffffffffffffffff81111561025f57600080fd5b6020830191508360208260051b850101111561027a57600080fd5b9250929050565b60008060006040848603121561029657600080fd5b83359250602084013567ffffffffffffffff8111156102b457600080fd5b6102c086828701610235565b9497909650939450505050565b600080604083850312156102e057600080fd5b50508035926020909101359150565b80356001600160a01b038116811461030657600080fd5b919050565b6000806040838503121561031e57600080fd5b610327836102ef565b946020939093013593505050565b60008060008060006080868803121561034d57600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff81111561037957600080fd5b61038588828901610235565b969995985093965092949392505050565b6000808284036101c08112156103ab57600080fd5b833592506101a0601f19820112156103c257600080fd5b506020830190509250929050565b600080604083850312156103e357600080fd5b823591506103f3602084016102ef565b90509250929050565b60006020828403121561040e57600080fd5b61022e826102ef565b6000806000806060858703121561042d57600080fd5b8435935060208501359250604085013567ffffffffffffffff81111561045257600080fd5b61045e87828801610235565b95989497509550505050565b60006020828403121561047c57600080fd5b503591905056fea26469706673582212202c03fa9ff30274ee74c709d858418446682a5f7f49124fce75cbdc7869f52d3a64736f6c634300081c0033a264697066735822122085b66d2a57d12dc5f1d7b5a2bafec2dec07b55498a6913ca2352a8e5b231d1a764736f6c634300081c0033", "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061010b5760003560e01c806385226c81116100a2578063ba414fa611610071578063ba414fa6146101cb578063cee617b4146101e3578063d5f3948814610225578063e20c9f7114610250578063fa7626d41461025857600080fd5b806385226c8114610191578063916a17c6146101a6578063b0464fdc146101bb578063b5508aa9146101c357600080fd5b80633e5e3c23116100de5780633e5e3c23146101555780633f7286f41461015d57806366d9a9a0146101655780637bb29ca91461017a57600080fd5b8063074c194b146101105780630a9254e41461011a5780631ed7831c146101225780632ade388014610140575b600080fd5b610118610265565b005b610118610715565b61012a61094c565b6040516101379190611208565b60405180910390f35b6101486109ae565b604051610137919061129a565b61012a610af0565b61012a610b50565b61016d610bb0565b60405161013791906113ac565b61018360215481565b604051908152602001610137565b610199610d1d565b604051610137919061142c565b6101ae610ded565b6040516101379190611485565b6101ae610ed3565b610199610fb9565b6101d3611089565b6040519015158152602001610137565b6022546023546024546025546026546101fd949392919085565b604080519586526020860194909452928401919091526060830152608082015260a001610137565b602054610238906001600160a01b031681565b6040516001600160a01b039091168152602001610137565b61012a61112d565b601f546101d39060ff1681565b604080516001808252818301909252600091602080830190803683370190505090506021548160008151811061029d5761029d6114fe565b60200260200101818152505061032a601f60019054906101000a90046001600160a01b03166001600160a01b031663575185ed6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103239190611514565b600061118d565b601f546020546040516302e1f9db60e51b81526001600160a01b03918216600482015261038192610100900490911690635c3f3b60906024015b602060405180830381865afa1580156102ff573d6000803e3d6000fd5b601f54602054604051632c88036360e01b81526001600160a01b039182166004820152600060248201526103c692610100900490911690632c88036390604401610364565b601f54602054604051632b47741360e11b8152600060048201526001600160a01b039182166024820152610100909204169063568ee82690604401600060405180830381600087803b15801561041b57600080fd5b505af115801561042f573d6000803e3d6000fd5b5050601f54604051636d1e6d2960e11b8152600060048201526101009091046001600160a01b0316925063da3cda529150602401600060405180830381600087803b15801561047d57600080fd5b505af1158015610491573d6000803e3d6000fd5b5050601f54604051633f3c2dbb60e21b815260006004820181905260248201526101009091046001600160a01b0316925063fcf0b6ec9150604401600060405180830381600087803b1580156104e657600080fd5b505af11580156104fa573d6000803e3d6000fd5b5050601f54604051631783efc360e01b815260006004820181905260248201526101009091046001600160a01b03169250631783efc39150604401600060405180830381600087803b15801561054f57600080fd5b505af1158015610563573d6000803e3d6000fd5b5050601f54604051630424537160e01b81526101009091046001600160a01b031692506304245371915061059e90600090859060040161155f565b600060405180830381600087803b1580156105b857600080fd5b505af11580156105cc573d6000803e3d6000fd5b5050601f54604051634178c4d560e01b81526101009091046001600160a01b03169250634178c4d5915061060b90600090819081908790600401611580565b600060405180830381600087803b15801561062557600080fd5b505af1158015610639573d6000803e3d6000fd5b5050601f5460405163366e997f60e11b81526101009091046001600160a01b03169250636cdd32fe915061067690600090819086906004016115af565b600060405180830381600087803b15801561069057600080fd5b505af11580156106a4573d6000803e3d6000fd5b5050601f5460405163d0d898dd60e01b81526101009091046001600160a01b0316925063d0d898dd91506106e0906000906022906004016115d7565b600060405180830381600087803b1580156106fa57600080fd5b505af115801561070e573d6000803e3d6000fd5b5050505050565b6020546040516303223eab60e11b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b15801561076e57600080fd5b505af1158015610782573d6000803e3d6000fd5b5060009250600191506107929050565b6040519080825280602002602001820160405280156107bb578160200160208202803683370190505b50604080516001808252818301909252919250600091906020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090506021548360008151811061081b5761081b6114fe565b60200260200101818152505060226002015482600081518110610840576108406114fe565b602002602001018181525050600181600081518110610861576108616114fe565b602002602001019015159081151581525050828282604051610882906111fb565b61088e93929190611642565b604051809103906000f0801580156108aa573d6000803e3d6000fd5b50601f60016101000a8154816001600160a01b0302191690836001600160a01b031602179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561092f57600080fd5b505af1158015610943573d6000803e3d6000fd5b50505050505050565b606060168054806020026020016040519081016040528092919081815260200182805480156109a457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610986575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610ae757600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610ad0578382906000526020600020018054610a43906116af565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6f906116af565b8015610abc5780601f10610a9157610100808354040283529160200191610abc565b820191906000526020600020905b815481529060010190602001808311610a9f57829003601f168201915b505050505081526020019060010190610a24565b5050505081525050815260200190600101906109d2565b50505050905090565b606060188054806020026020016040519081016040528092919081815260200182805480156109a4576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610986575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156109a4576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610986575050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610ae75783829060005260206000209060020201604051806040016040529081600082018054610c07906116af565b80601f0160208091040260200160405190810160405280929190818152602001828054610c33906116af565b8015610c805780601f10610c5557610100808354040283529160200191610c80565b820191906000526020600020905b815481529060010190602001808311610c6357829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610d0557602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610cc75790505b50505050508152505081526020019060010190610bd4565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610ae7578382906000526020600020018054610d60906116af565b80601f0160208091040260200160405190810160405280929190818152602001828054610d8c906116af565b8015610dd95780601f10610dae57610100808354040283529160200191610dd9565b820191906000526020600020905b815481529060010190602001808311610dbc57829003601f168201915b505050505081526020019060010190610d41565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610ae75760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610ebb57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610e7d5790505b50505050508152505081526020019060010190610e11565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610ae75760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610fa157602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610f635790505b50505050508152505081526020019060010190610ef7565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610ae7578382906000526020600020018054610ffc906116af565b80601f0160208091040260200160405190810160405280929190818152602001828054611028906116af565b80156110755780601f1061104a57610100808354040283529160200191611075565b820191906000526020600020905b81548152906001019060200180831161105857829003601f168201915b505050505081526020019060010190610fdd565b60085460009060ff16156110a1575060085460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190526519985a5b195960d21b602483015260009163667f9d7090604401602060405180830381865afa158015611102573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111269190611514565b1415905090565b606060158054806020026020016040519081016040528092919081815260200182805480156109a4576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610986575050505050905090565b60405163260a5b1560e21b81526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b1580156111df57600080fd5b505afa1580156111f3573d6000803e3d6000fd5b505050505050565b6107ef806116ea83390190565b602080825282518282018190526000918401906040840190835b818110156112495783516001600160a01b0316835260209384019390920191600101611222565b509095945050505050565b6000815180845260005b8181101561127a5760208185018101518683018201520161125e565b506000602082860101526020601f19601f83011685010191505092915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561135a57603f19878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b8181101561134057605f198a850301835261132a848651611254565b602095860195909450929092019160010161130e565b5091975050506020948501949290920191506001016112c2565b50929695505050505050565b600081518084526020840193506020830160005b828110156113a25781516001600160e01b03191686526020958601959091019060010161137a565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561135a57603f1987860301845281518051604087526113fa6040880182611254565b90506020820151915086810360208801526114158183611366565b9650505060209384019391909101906001016113d4565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561135a57603f19878603018452611470858351611254565b94506020938401939190910190600101611454565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561135a57868503603f19018452815180516001600160a01b031686526020908101516040918701829052906114e890870182611366565b95505060209384019391909101906001016114ad565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561152657600080fd5b5051919050565b600081518084526020840193506020830160005b828110156113a2578151865260209586019590910190600101611541565b828152604060208201526000611578604083018461152d565b949350505050565b8481528360208201528260408201526080606082015260006115a5608083018461152d565b9695505050505050565b8381528260208201526060604082015260006115ce606083018461152d565b95945050505050565b82815281546020820152600182015460408201526002820154606082015260038201546080820152600482015460a08201526101c0810160c082016005840160005b6008811015611638578154835260209092019160019182019101611619565b5050509392505050565b606081526000611655606083018661152d565b8281036020840152611667818661152d565b83810360408501528451808252602080870193509091019060005b818110156116a25783511515835260209384019390920191600101611682565b5090979650505050505050565b600181811c908216806116c357607f821691505b6020821081036116e357634e487b7160e01b600052602260045260246000fd5b5091905056fe608060405234801561001057600080fd5b506040516107ef3803806107ef83398101604081905261002f916101ec565b60005b835181101561009f576001600080868481518110610052576100526102ea565b6020026020010151815260200190815260200160002060006101000a81548160ff0219169083151502179055506002600081548092919061009290610300565b9091555050600101610032565b5060005b825181101561010d578181815181106100be576100be6102ea565b6020026020010151600160008584815181106100dc576100dc6102ea565b6020908102919091018101518252810191909152604001600020805460ff19169115159190911790556001016100a3565b50505050610327565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561015457610154610116565b604052919050565b60006001600160401b0382111561017557610175610116565b5060051b60200190565b600082601f83011261019057600080fd5b81516101a361019e8261015c565b61012c565b8082825260208201915060208360051b8601019250858311156101c557600080fd5b602085015b838110156101e25780518352602092830192016101ca565b5095945050505050565b60008060006060848603121561020157600080fd5b83516001600160401b0381111561021757600080fd5b6102238682870161017f565b602086015190945090506001600160401b0381111561024157600080fd5b61024d8682870161017f565b604086015190935090506001600160401b0381111561026b57600080fd5b8401601f8101861361027c57600080fd5b805161028a61019e8261015c565b8082825260208201915060208360051b8501019250888311156102ac57600080fd5b6020840193505b828410156102dc57835180151581146102cb57600080fd5b8252602093840193909101906102b3565b809450505050509250925092565b634e487b7160e01b600052603260045260246000fd5b60006001820161032057634e487b7160e01b600052601160045260246000fd5b5060010190565b6104b9806103366000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80635c3f3b601161008c578063d24924fe11610066578063d24924fe146101c2578063da3cda52146101cb578063fbad4139146101dc578063fcf0b6ec1461010457600080fd5b80635c3f3b601461018c5780636cdd32fe146101a0578063d0d898dd146101b457600080fd5b80634178c4d5116100c85780634178c4d51461013f578063456f418814610154578063568ee82614610177578063575185ed1461018557600080fd5b806304245371146100ef5780631783efc3146101045780632c88036314610116575b600080fd5b6101026100fd366004610281565b505050565b005b6101026101123660046102cd565b5050565b61012c61012436600461030b565b600092915050565b6040519081526020015b60405180910390f35b61010261014d366004610335565b5050505050565b610167610162366004610396565b6101ff565b6040519015158152602001610136565b6101026101123660046103d0565b600061012c565b61012c61019a3660046103fc565b50600090565b6101026101ae366004610417565b50505050565b610102610112366004610396565b61012c60025481565b6101026101d936600461046a565b50565b6101676101ea36600461046a565b60006020819052908152604090205460ff1681565b60008281526020819052604081205460ff16801561022e575060408083013560009081526001602052205460ff165b9392505050565b60008083601f84011261024757600080fd5b50813567ffffffffffffffff81111561025f57600080fd5b6020830191508360208260051b850101111561027a57600080fd5b9250929050565b60008060006040848603121561029657600080fd5b83359250602084013567ffffffffffffffff8111156102b457600080fd5b6102c086828701610235565b9497909650939450505050565b600080604083850312156102e057600080fd5b50508035926020909101359150565b80356001600160a01b038116811461030657600080fd5b919050565b6000806040838503121561031e57600080fd5b610327836102ef565b946020939093013593505050565b60008060008060006080868803121561034d57600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff81111561037957600080fd5b61038588828901610235565b969995985093965092949392505050565b6000808284036101c08112156103ab57600080fd5b833592506101a0601f19820112156103c257600080fd5b506020830190509250929050565b600080604083850312156103e357600080fd5b823591506103f3602084016102ef565b90509250929050565b60006020828403121561040e57600080fd5b61022e826102ef565b6000806000806060858703121561042d57600080fd5b8435935060208501359250604085013567ffffffffffffffff81111561045257600080fd5b61045e87828801610235565b95989497509550505050565b60006020828403121561047c57600080fd5b503591905056fea26469706673582212202c03fa9ff30274ee74c709d858418446682a5f7f49124fce75cbdc7869f52d3a64736f6c634300081c0033a264697066735822122085b66d2a57d12dc5f1d7b5a2bafec2dec07b55498a6913ca2352a8e5b231d1a764736f6c634300081c0033", "linkReferences": {}, "deployedLinkReferences": {} }