{
"schemaVersion": "2.0.0",
"contractName": "TestLibs",
"compilerOutput": {
"abi": [
{
"constant": true,
"inputs": [
{
"name": "numerator",
"type": "uint256"
},
{
"name": "denominator",
"type": "uint256"
},
{
"name": "target",
"type": "uint256"
}
],
"name": "publicGetPartialAmount",
"outputs": [
{
"name": "partialAmount",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "pure",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"components": [
{
"name": "makerAssetFilledAmount",
"type": "uint256"
},
{
"name": "takerAssetFilledAmount",
"type": "uint256"
},
{
"name": "makerFeePaid",
"type": "uint256"
},
{
"name": "takerFeePaid",
"type": "uint256"
}
],
"name": "totalFillResults",
"type": "tuple"
},
{
"components": [
{
"name": "makerAssetFilledAmount",
"type": "uint256"
},
{
"name": "takerAssetFilledAmount",
"type": "uint256"
},
{
"name": "makerFeePaid",
"type": "uint256"
},
{
"name": "takerFeePaid",
"type": "uint256"
}
],
"name": "singleFillResults",
"type": "tuple"
}
],
"name": "publicAddFillResults",
"outputs": [
{
"components": [
{
"name": "makerAssetFilledAmount",
"type": "uint256"
},
{
"name": "takerAssetFilledAmount",
"type": "uint256"
},
{
"name": "makerFeePaid",
"type": "uint256"
},
{
"name": "takerFeePaid",
"type": "uint256"
}
],
"name": "",
"type": "tuple"
}
],
"payable": false,
"stateMutability": "pure",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "numerator",
"type": "uint256"
},
{
"name": "denominator",
"type": "uint256"
},
{
"name": "target",
"type": "uint256"
}
],
"name": "publicIsRoundingError",
"outputs": [
{
"name": "isError",
"type": "bool"
}
],
"payable": false,
"stateMutability": "pure",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"components": [
{
"name": "makerAddress",
"type": "address"
},
{
"name": "takerAddress",
"type": "address"
},
{
"name": "feeRecipientAddress",
"type": "address"
},
{
"name": "senderAddress",
"type": "address"
},
{
"name": "makerAssetAmount",
"type": "uint256"
},
{
"name": "takerAssetAmount",
"type": "uint256"
},
{
"name": "makerFee",
"type": "uint256"
},
{
"name": "takerFee",
"type": "uint256"
},
{
"name": "expirationTimeSeconds",
"type": "uint256"
},
{
"name": "salt",
"type": "uint256"
},
{
"name": "makerAssetData",
"type": "bytes"
},
{
"name": "takerAssetData",
"type": "bytes"
}
],
"name": "order",
"type": "tuple"
}
],
"name": "publicGetOrderHash",
"outputs": [
{
"name": "orderHash",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
}
],
"evm": {
"bytecode": {
"linkReferences": {},
"object":
"0x608060405234801561001057600080fd5b50610ae7806100206000396000f3006080604052600436106100615763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663041e63fe811461006657806366758d7b1461009c5780638ae63316146100c9578063d9802088146100f6575b600080fd5b34801561007257600080fd5b5061008661008136600461095f565b610116565b6040516100939190610a22565b60405180910390f35b3480156100a857600080fd5b506100bc6100b73660046108ef565b61012b565b6040516100939190610a30565b3480156100d557600080fd5b506100e96100e436600461095f565b610146565b6040516100939190610a14565b34801561010257600080fd5b5061008661011136600461092a565b610153565b600061012384848461015e565b949350505050565b6101336106a2565b61013d8383610173565b50815b92915050565b60006101238484846101d5565b60006101408261022b565b600061012361016d8584610651565b8461067c565b815181516101819190610693565b8252602080830151908201516101979190610693565b6020830152604080830151908201516101b09190610693565b6040830152606080830151908201516101c99190610693565b60609092019190915250565b6000806000848015156101e457fe5b86850991508115156101f95760009250610222565b61021861020983620f4240610651565b6102138887610651565b61067c565b6103e88111935090505b50509392505050565b600060405180807f616464726573732065786368616e676541646472657373000000000000000000815250601701807f61646472657373206d616b657241646472657373000000000000000000000000815250601401807f616464726573732074616b657241646472657373000000000000000000000000815250601401807f6164647265737320666565526563697069656e74416464726573730000000000815250601b01807f616464726573732073656e646572416464726573730000000000000000000000815250601501807f75696e74323536206d616b65724173736574416d6f756e740000000000000000815250601801807f75696e743235362074616b65724173736574416d6f756e740000000000000000815250601801807f75696e74323536206d616b657246656500000000000000000000000000000000815250601001807f75696e743235362074616b657246656500000000000000000000000000000000815250601001807f75696e743235362065787069726174696f6e54696d655365636f6e6473000000815250601d01807f75696e743235362073616c740000000000000000000000000000000000000000815250600c01807f6279746573206d616b6572417373657444617461000000000000000000000000815250601401807f62797465732074616b65724173736574446174610000000000000000000000008152506014019050604051809103902030836000015184602001518560400151866060015187608001518860a001518960c001518a60e001518b61010001518c61012001518d61014001518e6101600151604051808e600160a060020a0316600160a060020a03166c010000000000000000000000000281526014018d600160a060020a0316600160a060020a03166c010000000000000000000000000281526014018c600160a060020a0316600160a060020a03166c010000000000000000000000000281526014018b600160a060020a0316600160a060020a03166c010000000000000000000000000281526014018a600160a060020a0316600160a060020a03166c0100000000000000000000000002815260140189815260200188815260200187815260200186815260200185815260200184815260200183805190602001908083835b6020831061059a5780518252601f19909201916020918201910161057b565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b602083106105e25780518252601f1990920191602091820191016105c3565b6001836020036101000a0380198251168184511680821785525050505050509050019d5050505050505050505050505050604051809103902060405180836000191660001916815260200182600019166000191681526020019250505060405180910390209050809050919050565b600082820283158061066d575082848281151561066a57fe5b04145b151561067557fe5b9392505050565b600080828481151561068a57fe5b04949350505050565b60008282018381101561067557fe5b608060405190810160405280600081526020016000815260200160008152602001600081525090565b60006106758235610a95565b6000601f820183136106e857600080fd5b81356106fb6106f682610a65565b610a3e565b9150808252602083016020830185838301111561071757600080fd5b610722838284610aa1565b50505092915050565b60006080828403121561073d57600080fd5b6107476080610a3e565b9050600061075584846108e3565b8252506020610766848483016108e3565b602083015250604061077a848285016108e3565b604083015250606061078e848285016108e3565b60608301525092915050565b600061018082840312156107ad57600080fd5b6107b8610180610a3e565b905060006107c684846106cb565b82525060206107d7848483016106cb565b60208301525060406107eb848285016106cb565b60408301525060606107ff848285016106cb565b6060830152506080610813848285016108e3565b60808301525060a0610827848285016108e3565b60a08301525060c061083b848285016108e3565b60c08301525060e061084f848285016108e3565b60e083015250610100610864848285016108e3565b6101008301525061012061087a848285016108e3565b6101208301525061014082013567ffffffffffffffff81111561089c57600080fd5b6108a8848285016106d7565b6101408301525061016082013567ffffffffffffffff8111156108ca57600080fd5b6108d6848285016106d7565b6101608301525092915050565b60006106758235610a92565b600080610100838503121561090357600080fd5b600061090f858561072b565b92505060806109208582860161072b565b9150509250929050565b60006020828403121561093c57600080fd5b813567ffffffffffffffff81111561095357600080fd5b6101238482850161079a565b60008060006060848603121561097457600080fd5b600061098086866108e3565b9350506020610991868287016108e3565b92505060406109a2868287016108e3565b9150509250925092565b6109b581610a8d565b82525050565b6109b581610a92565b805160808301906109d584826109bb565b5060208201516109e860208501826109bb565b5060408201516109fb60408501826109bb565b506060820151610a0e60608501826109bb565b50505050565b6020810161014082846109ac565b6020810161014082846109bb565b6080810161014082846109c4565b60405181810167ffffffffffffffff81118282101715610a5d57600080fd5b604052919050565b600067ffffffffffffffff821115610a7c57600080fd5b506020601f91909101601f19160190565b151590565b90565b600160a060020a031690565b828183375060009101525600a265627a7a723058200a3ad8e915b246b8a5a0aace056dc2c0e16a8f2b7b09f9a854dc2602ecbe779e6c6578706572696d656e74616cf50037",
"opcodes":
"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xAE7 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x61 JUMPI PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0x41E63FE DUP2 EQ PUSH2 0x66 JUMPI DUP1 PUSH4 0x66758D7B EQ PUSH2 0x9C JUMPI DUP1 PUSH4 0x8AE63316 EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0xD9802088 EQ PUSH2 0xF6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x86 PUSH2 0x81 CALLDATASIZE PUSH1 0x4 PUSH2 0x95F JUMP JUMPDEST PUSH2 0x116 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x93 SWAP2 SWAP1 PUSH2 0xA22 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBC PUSH2 0xB7 CALLDATASIZE PUSH1 0x4 PUSH2 0x8EF JUMP JUMPDEST PUSH2 0x12B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x93 SWAP2 SWAP1 PUSH2 0xA30 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE9 PUSH2 0xE4 CALLDATASIZE PUSH1 0x4 PUSH2 0x95F JUMP JUMPDEST PUSH2 0x146 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x93 SWAP2 SWAP1 PUSH2 0xA14 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x86 PUSH2 0x111 CALLDATASIZE PUSH1 0x4 PUSH2 0x92A JUMP JUMPDEST PUSH2 0x153 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x123 DUP5 DUP5 DUP5 PUSH2 0x15E JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x133 PUSH2 0x6A2 JUMP JUMPDEST PUSH2 0x13D DUP4 DUP4 PUSH2 0x173 JUMP JUMPDEST POP DUP2 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x123 DUP5 DUP5 DUP5 PUSH2 0x1D5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x140 DUP3 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x123 PUSH2 0x16D DUP6 DUP5 PUSH2 0x651 JUMP JUMPDEST DUP5 PUSH2 0x67C JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD PUSH2 0x181 SWAP2 SWAP1 PUSH2 0x693 JUMP JUMPDEST DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MLOAD PUSH2 0x197 SWAP2 SWAP1 PUSH2 0x693 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MLOAD PUSH2 0x1B0 SWAP2 SWAP1 PUSH2 0x693 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MLOAD PUSH2 0x1C9 SWAP2 SWAP1 PUSH2 0x693 JUMP JUMPDEST PUSH1 0x60 SWAP1 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 DUP1 ISZERO ISZERO PUSH2 0x1E4 JUMPI INVALID JUMPDEST DUP7 DUP6 MULMOD SWAP2 POP DUP2 ISZERO ISZERO PUSH2 0x1F9 JUMPI PUSH1 0x0 SWAP3 POP PUSH2 0x222 JUMP JUMPDEST PUSH2 0x218 PUSH2 0x209 DUP4 PUSH3 0xF4240 PUSH2 0x651 JUMP JUMPDEST PUSH2 0x213 DUP9 DUP8 PUSH2 0x651 JUMP JUMPDEST PUSH2 0x67C JUMP JUMPDEST PUSH2 0x3E8 DUP2 GT SWAP4 POP SWAP1 POP JUMPDEST POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH32 0x616464726573732065786368616E676541646472657373000000000000000000 DUP2 MSTORE POP PUSH1 0x17 ADD DUP1 PUSH32 0x61646472657373206D616B657241646472657373000000000000000000000000 DUP2 MSTORE POP PUSH1 0x14 ADD DUP1 PUSH32 0x616464726573732074616B657241646472657373000000000000000000000000 DUP2 MSTORE POP PUSH1 0x14 ADD DUP1 PUSH32 0x6164647265737320666565526563697069656E74416464726573730000000000 DUP2 MSTORE POP PUSH1 0x1B ADD DUP1 PUSH32 0x616464726573732073656E646572416464726573730000000000000000000000 DUP2 MSTORE POP PUSH1 0x15 ADD DUP1 PUSH32 0x75696E74323536206D616B65724173736574416D6F756E740000000000000000 DUP2 MSTORE POP PUSH1 0x18 ADD DUP1 PUSH32 0x75696E743235362074616B65724173736574416D6F756E740000000000000000 DUP2 MSTORE POP PUSH1 0x18 ADD DUP1 PUSH32 0x75696E74323536206D616B657246656500000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x10 ADD DUP1 PUSH32 0x75696E743235362074616B657246656500000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x10 ADD DUP1 PUSH32 0x75696E743235362065787069726174696F6E54696D655365636F6E6473000000 DUP2 MSTORE POP PUSH1 0x1D ADD DUP1 PUSH32 0x75696E743235362073616C740000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0xC ADD DUP1 PUSH32 0x6279746573206D616B6572417373657444617461000000000000000000000000 DUP2 MSTORE POP PUSH1 0x14 ADD DUP1 PUSH32 0x62797465732074616B6572417373657444617461000000000000000000000000 DUP2 MSTORE POP PUSH1 0x14 ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 ADDRESS DUP4 PUSH1 0x0 ADD MLOAD DUP5 PUSH1 0x20 ADD MLOAD DUP6 PUSH1 0x40 ADD MLOAD DUP7 PUSH1 0x60 ADD MLOAD DUP8 PUSH1 0x80 ADD MLOAD DUP9 PUSH1 0xA0 ADD MLOAD DUP10 PUSH1 0xC0 ADD MLOAD DUP11 PUSH1 0xE0 ADD MLOAD DUP12 PUSH2 0x100 ADD MLOAD DUP13 PUSH2 0x120 ADD MLOAD DUP14 PUSH2 0x140 ADD MLOAD DUP15 PUSH2 0x160 ADD MLOAD PUSH1 0x40 MLOAD DUP1 DUP15 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH13 0x1000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x14 ADD DUP14 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH13 0x1000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x14 ADD DUP13 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH13 0x1000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x14 ADD DUP12 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH13 0x1000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x14 ADD DUP11 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH13 0x1000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x14 ADD DUP10 DUP2 MSTORE PUSH1 0x20 ADD DUP9 DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x59A JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x57B JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR SWAP1 MSTORE DUP6 MLOAD SWAP2 SWAP1 SWAP4 ADD SWAP3 DUP6 ADD SWAP2 POP DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x5E2 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x5C3 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP14 POP POP POP POP POP POP POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x40 MLOAD DUP1 DUP4 PUSH1 0x0 NOT AND PUSH1 0x0 NOT AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x0 NOT AND PUSH1 0x0 NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP DUP1 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MUL DUP4 ISZERO DUP1 PUSH2 0x66D JUMPI POP DUP3 DUP5 DUP3 DUP2 ISZERO ISZERO PUSH2 0x66A JUMPI INVALID JUMPDEST DIV EQ JUMPDEST ISZERO ISZERO PUSH2 0x675 JUMPI INVALID JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 DUP2 ISZERO ISZERO PUSH2 0x68A JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x675 JUMPI INVALID JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x675 DUP3 CALLDATALOAD PUSH2 0xA95 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 ADD DUP4 SGT PUSH2 0x6E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x6FB PUSH2 0x6F6 DUP3 PUSH2 0xA65 JUMP JUMPDEST PUSH2 0xA3E JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x717 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x722 DUP4 DUP3 DUP5 PUSH2 0xAA1 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x73D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x747 PUSH1 0x80 PUSH2 0xA3E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x755 DUP5 DUP5 PUSH2 0x8E3 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x766 DUP5 DUP5 DUP4 ADD PUSH2 0x8E3 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x77A DUP5 DUP3 DUP6 ADD PUSH2 0x8E3 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x78E DUP5 DUP3 DUP6 ADD PUSH2 0x8E3 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x180 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7B8 PUSH2 0x180 PUSH2 0xA3E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x7C6 DUP5 DUP5 PUSH2 0x6CB JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x7D7 DUP5 DUP5 DUP4 ADD PUSH2 0x6CB JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x7EB DUP5 DUP3 DUP6 ADD PUSH2 0x6CB JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x7FF DUP5 DUP3 DUP6 ADD PUSH2 0x6CB JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0x813 DUP5 DUP3 DUP6 ADD PUSH2 0x8E3 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP PUSH1 0xA0 PUSH2 0x827 DUP5 DUP3 DUP6 ADD PUSH2 0x8E3 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP PUSH1 0xC0 PUSH2 0x83B DUP5 DUP3 DUP6 ADD PUSH2 0x8E3 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE POP PUSH1 0xE0 PUSH2 0x84F DUP5 DUP3 DUP6 ADD PUSH2 0x8E3 JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE POP PUSH2 0x100 PUSH2 0x864 DUP5 DUP3 DUP6 ADD PUSH2 0x8E3 JUMP JUMPDEST PUSH2 0x100 DUP4 ADD MSTORE POP PUSH2 0x120 PUSH2 0x87A DUP5 DUP3 DUP6 ADD PUSH2 0x8E3 JUMP JUMPDEST PUSH2 0x120 DUP4 ADD MSTORE POP PUSH2 0x140 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x89C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A8 DUP5 DUP3 DUP6 ADD PUSH2 0x6D7 JUMP JUMPDEST PUSH2 0x140 DUP4 ADD MSTORE POP PUSH2 0x160 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x8CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8D6 DUP5 DUP3 DUP6 ADD PUSH2 0x6D7 JUMP JUMPDEST PUSH2 0x160 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x675 DUP3 CALLDATALOAD PUSH2 0xA92 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x100 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x903 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x90F DUP6 DUP6 PUSH2 0x72B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x920 DUP6 DUP3 DUP7 ADD PUSH2 0x72B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x93C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x953 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x123 DUP5 DUP3 DUP6 ADD PUSH2 0x79A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x974 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x980 DUP7 DUP7 PUSH2 0x8E3 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x991 DUP7 DUP3 DUP8 ADD PUSH2 0x8E3 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x9A2 DUP7 DUP3 DUP8 ADD PUSH2 0x8E3 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x9B5 DUP2 PUSH2 0xA8D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x9B5 DUP2 PUSH2 0xA92 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x80 DUP4 ADD SWAP1 PUSH2 0x9D5 DUP5 DUP3 PUSH2 0x9BB JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x9E8 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x9BB JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x9FB PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x9BB JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0xA0E PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x9BB JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x140 DUP3 DUP5 PUSH2 0x9AC JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x140 DUP3 DUP5 PUSH2 0x9BB JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x140 DUP3 DUP5 PUSH2 0x9C4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xA5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xA7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD SWAP1 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP1 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP STOP LOG2 PUSH6 0x627A7A723058 KECCAK256 EXP GASPRICE 0xd8 0xe9 ISZERO 0xb2 0x46 0xb8 0xa5 LOG0 0xaa 0xce SDIV PUSH14 0xC2C0E16A8F2B7B09F9A854DC2602 0xec 0xbe PUSH24 0x9E6C6578706572696D656E74616CF5003700000000000000 ",
"sourceMap": "802:1220:3:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;802:1220:3;;;;;;;"
},
"deployedBytecode": {
"linkReferences": {},
"object":
"0x6080604052600436106100615763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663041e63fe811461006657806366758d7b1461009c5780638ae63316146100c9578063d9802088146100f6575b600080fd5b34801561007257600080fd5b5061008661008136600461095f565b610116565b6040516100939190610a22565b60405180910390f35b3480156100a857600080fd5b506100bc6100b73660046108ef565b61012b565b6040516100939190610a30565b3480156100d557600080fd5b506100e96100e436600461095f565b610146565b6040516100939190610a14565b34801561010257600080fd5b5061008661011136600461092a565b610153565b600061012384848461015e565b949350505050565b6101336106a2565b61013d8383610173565b50815b92915050565b60006101238484846101d5565b60006101408261022b565b600061012361016d8584610651565b8461067c565b815181516101819190610693565b8252602080830151908201516101979190610693565b6020830152604080830151908201516101b09190610693565b6040830152606080830151908201516101c99190610693565b60609092019190915250565b6000806000848015156101e457fe5b86850991508115156101f95760009250610222565b61021861020983620f4240610651565b6102138887610651565b61067c565b6103e88111935090505b50509392505050565b600060405180807f616464726573732065786368616e676541646472657373000000000000000000815250601701807f61646472657373206d616b657241646472657373000000000000000000000000815250601401807f616464726573732074616b657241646472657373000000000000000000000000815250601401807f6164647265737320666565526563697069656e74416464726573730000000000815250601b01807f616464726573732073656e646572416464726573730000000000000000000000815250601501807f75696e74323536206d616b65724173736574416d6f756e740000000000000000815250601801807f75696e743235362074616b65724173736574416d6f756e740000000000000000815250601801807f75696e74323536206d616b657246656500000000000000000000000000000000815250601001807f75696e743235362074616b657246656500000000000000000000000000000000815250601001807f75696e743235362065787069726174696f6e54696d655365636f6e6473000000815250601d01807f75696e743235362073616c740000000000000000000000000000000000000000815250600c01807f6279746573206d616b6572417373657444617461000000000000000000000000815250601401807f62797465732074616b65724173736574446174610000000000000000000000008152506014019050604051809103902030836000015184602001518560400151866060015187608001518860a001518960c001518a60e001518b61010001518c61012001518d61014001518e6101600151604051808e600160a060020a0316600160a060020a03166c010000000000000000000000000281526014018d600160a060020a0316600160a060020a03166c010000000000000000000000000281526014018c600160a060020a0316600160a060020a03166c010000000000000000000000000281526014018b600160a060020a0316600160a060020a03166c010000000000000000000000000281526014018a600160a060020a0316600160a060020a03166c0100000000000000000000000002815260140189815260200188815260200187815260200186815260200185815260200184815260200183805190602001908083835b6020831061059a5780518252601f19909201916020918201910161057b565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b602083106105e25780518252601f1990920191602091820191016105c3565b6001836020036101000a0380198251168184511680821785525050505050509050019d5050505050505050505050505050604051809103902060405180836000191660001916815260200182600019166000191681526020019250505060405180910390209050809050919050565b600082820283158061066d575082848281151561066a57fe5b04145b151561067557fe5b9392505050565b600080828481151561068a57fe5b04949350505050565b60008282018381101561067557fe5b608060405190810160405280600081526020016000815260200160008152602001600081525090565b60006106758235610a95565b6000601f820183136106e857600080fd5b81356106fb6106f682610a65565b610a3e565b9150808252602083016020830185838301111561071757600080fd5b610722838284610aa1565b50505092915050565b60006080828403121561073d57600080fd5b6107476080610a3e565b9050600061075584846108e3565b8252506020610766848483016108e3565b602083015250604061077a848285016108e3565b604083015250606061078e848285016108e3565b60608301525092915050565b600061018082840312156107ad57600080fd5b6107b8610180610a3e565b905060006107c684846106cb565b82525060206107d7848483016106cb565b60208301525060406107eb848285016106cb565b60408301525060606107ff848285016106cb565b6060830152506080610813848285016108e3565b60808301525060a0610827848285016108e3565b60a08301525060c061083b848285016108e3565b60c08301525060e061084f848285016108e3565b60e083015250610100610864848285016108e3565b6101008301525061012061087a848285016108e3565b6101208301525061014082013567ffffffffffffffff81111561089c57600080fd5b6108a8848285016106d7565b6101408301525061016082013567ffffffffffffffff8111156108ca57600080fd5b6108d6848285016106d7565b6101608301525092915050565b60006106758235610a92565b600080610100838503121561090357600080fd5b600061090f858561072b565b92505060806109208582860161072b565b9150509250929050565b60006020828403121561093c57600080fd5b813567ffffffffffffffff81111561095357600080fd5b6101238482850161079a565b60008060006060848603121561097457600080fd5b600061098086866108e3565b9350506020610991868287016108e3565b92505060406109a2868287016108e3565b9150509250925092565b6109b581610a8d565b82525050565b6109b581610a92565b805160808301906109d584826109bb565b5060208201516109e860208501826109bb565b5060408201516109fb60408501826109bb565b506060820151610a0e60608501826109bb565b50505050565b6020810161014082846109ac565b6020810161014082846109bb565b6080810161014082846109c4565b60405181810167ffffffffffffffff81118282101715610a5d57600080fd5b604052919050565b600067ffffffffffffffff821115610a7c57600080fd5b506020601f91909101601f19160190565b151590565b90565b600160a060020a031690565b828183375060009101525600a265627a7a723058200a3ad8e915b246b8a5a0aace056dc2c0e16a8f2b7b09f9a854dc2602ecbe779e6c6578706572696d656e74616cf50037",
"opcodes":
"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x61 JUMPI PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0x41E63FE DUP2 EQ PUSH2 0x66 JUMPI DUP1 PUSH4 0x66758D7B EQ PUSH2 0x9C JUMPI DUP1 PUSH4 0x8AE63316 EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0xD9802088 EQ PUSH2 0xF6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x86 PUSH2 0x81 CALLDATASIZE PUSH1 0x4 PUSH2 0x95F JUMP JUMPDEST PUSH2 0x116 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x93 SWAP2 SWAP1 PUSH2 0xA22 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBC PUSH2 0xB7 CALLDATASIZE PUSH1 0x4 PUSH2 0x8EF JUMP JUMPDEST PUSH2 0x12B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x93 SWAP2 SWAP1 PUSH2 0xA30 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE9 PUSH2 0xE4 CALLDATASIZE PUSH1 0x4 PUSH2 0x95F JUMP JUMPDEST PUSH2 0x146 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x93 SWAP2 SWAP1 PUSH2 0xA14 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x86 PUSH2 0x111 CALLDATASIZE PUSH1 0x4 PUSH2 0x92A JUMP JUMPDEST PUSH2 0x153 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x123 DUP5 DUP5 DUP5 PUSH2 0x15E JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x133 PUSH2 0x6A2 JUMP JUMPDEST PUSH2 0x13D DUP4 DUP4 PUSH2 0x173 JUMP JUMPDEST POP DUP2 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x123 DUP5 DUP5 DUP5 PUSH2 0x1D5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x140 DUP3 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x123 PUSH2 0x16D DUP6 DUP5 PUSH2 0x651 JUMP JUMPDEST DUP5 PUSH2 0x67C JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD PUSH2 0x181 SWAP2 SWAP1 PUSH2 0x693 JUMP JUMPDEST DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MLOAD PUSH2 0x197 SWAP2 SWAP1 PUSH2 0x693 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MLOAD PUSH2 0x1B0 SWAP2 SWAP1 PUSH2 0x693 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MLOAD PUSH2 0x1C9 SWAP2 SWAP1 PUSH2 0x693 JUMP JUMPDEST PUSH1 0x60 SWAP1 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 DUP1 ISZERO ISZERO PUSH2 0x1E4 JUMPI INVALID JUMPDEST DUP7 DUP6 MULMOD SWAP2 POP DUP2 ISZERO ISZERO PUSH2 0x1F9 JUMPI PUSH1 0x0 SWAP3 POP PUSH2 0x222 JUMP JUMPDEST PUSH2 0x218 PUSH2 0x209 DUP4 PUSH3 0xF4240 PUSH2 0x651 JUMP JUMPDEST PUSH2 0x213 DUP9 DUP8 PUSH2 0x651 JUMP JUMPDEST PUSH2 0x67C JUMP JUMPDEST PUSH2 0x3E8 DUP2 GT SWAP4 POP SWAP1 POP JUMPDEST POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH32 0x616464726573732065786368616E676541646472657373000000000000000000 DUP2 MSTORE POP PUSH1 0x17 ADD DUP1 PUSH32 0x61646472657373206D616B657241646472657373000000000000000000000000 DUP2 MSTORE POP PUSH1 0x14 ADD DUP1 PUSH32 0x616464726573732074616B657241646472657373000000000000000000000000 DUP2 MSTORE POP PUSH1 0x14 ADD DUP1 PUSH32 0x6164647265737320666565526563697069656E74416464726573730000000000 DUP2 MSTORE POP PUSH1 0x1B ADD DUP1 PUSH32 0x616464726573732073656E646572416464726573730000000000000000000000 DUP2 MSTORE POP PUSH1 0x15 ADD DUP1 PUSH32 0x75696E74323536206D616B65724173736574416D6F756E740000000000000000 DUP2 MSTORE POP PUSH1 0x18 ADD DUP1 PUSH32 0x75696E743235362074616B65724173736574416D6F756E740000000000000000 DUP2 MSTORE POP PUSH1 0x18 ADD DUP1 PUSH32 0x75696E74323536206D616B657246656500000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x10 ADD DUP1 PUSH32 0x75696E743235362074616B657246656500000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x10 ADD DUP1 PUSH32 0x75696E743235362065787069726174696F6E54696D655365636F6E6473000000 DUP2 MSTORE POP PUSH1 0x1D ADD DUP1 PUSH32 0x75696E743235362073616C740000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0xC ADD DUP1 PUSH32 0x6279746573206D616B6572417373657444617461000000000000000000000000 DUP2 MSTORE POP PUSH1 0x14 ADD DUP1 PUSH32 0x62797465732074616B6572417373657444617461000000000000000000000000 DUP2 MSTORE POP PUSH1 0x14 ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 ADDRESS DUP4 PUSH1 0x0 ADD MLOAD DUP5 PUSH1 0x20 ADD MLOAD DUP6 PUSH1 0x40 ADD MLOAD DUP7 PUSH1 0x60 ADD MLOAD DUP8 PUSH1 0x80 ADD MLOAD DUP9 PUSH1 0xA0 ADD MLOAD DUP10 PUSH1 0xC0 ADD MLOAD DUP11 PUSH1 0xE0 ADD MLOAD DUP12 PUSH2 0x100 ADD MLOAD DUP13 PUSH2 0x120 ADD MLOAD DUP14 PUSH2 0x140 ADD MLOAD DUP15 PUSH2 0x160 ADD MLOAD PUSH1 0x40 MLOAD DUP1 DUP15 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH13 0x1000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x14 ADD DUP14 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH13 0x1000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x14 ADD DUP13 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH13 0x1000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x14 ADD DUP12 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH13 0x1000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x14 ADD DUP11 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH13 0x1000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x14 ADD DUP10 DUP2 MSTORE PUSH1 0x20 ADD DUP9 DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x59A JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x57B JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR SWAP1 MSTORE DUP6 MLOAD SWAP2 SWAP1 SWAP4 ADD SWAP3 DUP6 ADD SWAP2 POP DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x5E2 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x5C3 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP14 POP POP POP POP POP POP POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x40 MLOAD DUP1 DUP4 PUSH1 0x0 NOT AND PUSH1 0x0 NOT AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x0 NOT AND PUSH1 0x0 NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP DUP1 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MUL DUP4 ISZERO DUP1 PUSH2 0x66D JUMPI POP DUP3 DUP5 DUP3 DUP2 ISZERO ISZERO PUSH2 0x66A JUMPI INVALID JUMPDEST DIV EQ JUMPDEST ISZERO ISZERO PUSH2 0x675 JUMPI INVALID JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 DUP2 ISZERO ISZERO PUSH2 0x68A JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x675 JUMPI INVALID JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x675 DUP3 CALLDATALOAD PUSH2 0xA95 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 ADD DUP4 SGT PUSH2 0x6E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x6FB PUSH2 0x6F6 DUP3 PUSH2 0xA65 JUMP JUMPDEST PUSH2 0xA3E JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x717 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x722 DUP4 DUP3 DUP5 PUSH2 0xAA1 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x73D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x747 PUSH1 0x80 PUSH2 0xA3E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x755 DUP5 DUP5 PUSH2 0x8E3 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x766 DUP5 DUP5 DUP4 ADD PUSH2 0x8E3 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x77A DUP5 DUP3 DUP6 ADD PUSH2 0x8E3 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x78E DUP5 DUP3 DUP6 ADD PUSH2 0x8E3 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x180 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7B8 PUSH2 0x180 PUSH2 0xA3E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x7C6 DUP5 DUP5 PUSH2 0x6CB JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x7D7 DUP5 DUP5 DUP4 ADD PUSH2 0x6CB JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x7EB DUP5 DUP3 DUP6 ADD PUSH2 0x6CB JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x7FF DUP5 DUP3 DUP6 ADD PUSH2 0x6CB JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0x813 DUP5 DUP3 DUP6 ADD PUSH2 0x8E3 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP PUSH1 0xA0 PUSH2 0x827 DUP5 DUP3 DUP6 ADD PUSH2 0x8E3 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP PUSH1 0xC0 PUSH2 0x83B DUP5 DUP3 DUP6 ADD PUSH2 0x8E3 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE POP PUSH1 0xE0 PUSH2 0x84F DUP5 DUP3 DUP6 ADD PUSH2 0x8E3 JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE POP PUSH2 0x100 PUSH2 0x864 DUP5 DUP3 DUP6 ADD PUSH2 0x8E3 JUMP JUMPDEST PUSH2 0x100 DUP4 ADD MSTORE POP PUSH2 0x120 PUSH2 0x87A DUP5 DUP3 DUP6 ADD PUSH2 0x8E3 JUMP JUMPDEST PUSH2 0x120 DUP4 ADD MSTORE POP PUSH2 0x140 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x89C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A8 DUP5 DUP3 DUP6 ADD PUSH2 0x6D7 JUMP JUMPDEST PUSH2 0x140 DUP4 ADD MSTORE POP PUSH2 0x160 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x8CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8D6 DUP5 DUP3 DUP6 ADD PUSH2 0x6D7 JUMP JUMPDEST PUSH2 0x160 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x675 DUP3 CALLDATALOAD PUSH2 0xA92 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x100 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x903 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x90F DUP6 DUP6 PUSH2 0x72B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x920 DUP6 DUP3 DUP7 ADD PUSH2 0x72B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x93C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x953 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x123 DUP5 DUP3 DUP6 ADD PUSH2 0x79A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x974 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x980 DUP7 DUP7 PUSH2 0x8E3 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x991 DUP7 DUP3 DUP8 ADD PUSH2 0x8E3 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x9A2 DUP7 DUP3 DUP8 ADD PUSH2 0x8E3 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x9B5 DUP2 PUSH2 0xA8D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x9B5 DUP2 PUSH2 0xA92 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x80 DUP4 ADD SWAP1 PUSH2 0x9D5 DUP5 DUP3 PUSH2 0x9BB JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x9E8 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x9BB JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x9FB PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x9BB JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0xA0E PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x9BB JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x140 DUP3 DUP5 PUSH2 0x9AC JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x140 DUP3 DUP5 PUSH2 0x9BB JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x140 DUP3 DUP5 PUSH2 0x9C4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xA5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xA7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD SWAP1 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP1 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP STOP LOG2 PUSH6 0x627A7A723058 KECCAK256 EXP GASPRICE 0xd8 0xe9 ISZERO 0xb2 0x46 0xb8 0xa5 LOG0 0xaa 0xce SDIV PUSH14 0xC2C0E16A8F2B7B09F9A854DC2602 0xec 0xbe PUSH24 0x9E6C6578706572696D656E74616CF5003700000000000000 ",
"sourceMap":
"802:1220:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;876:342;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;876:342:3;;;;;;;;;;;;;;;;;;;;;;;;;1745:275;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1745:275:3;;;;;;;;;;;;;;;;;1224:319;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1224:319:3;;;;;;;;;;;;;;;;;1549:190;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1549:190:3;;;;;;;;;876:342;1034:21;1087:94;1117:9;1140:11;1165:6;1087:16;:94::i;:::-;1071:110;876:342;-1:-1:-1;;;;876:342:3:o;1745:275::-;1895:11;;:::i;:::-;1929:51;1944:16;1962:17;1929:14;:51::i;:::-;-1:-1:-1;1997:16:3;1745:275;;;;;:::o;1224:319::-;1381:12;1419:93;1448:9;1471:11;1496:6;1419:15;:93::i;1549:190::-;1642:17;1687:19;1700:5;1687:12;:19::i;937:326:1:-;1091:21;1144:82;1165:26;1173:9;1184:6;1165:7;:26::i;:::-;1205:11;1144:7;:82::i;1171:648:0:-;1364:39;;1405:40;;1356:90;;1364:39;1356:7;:90::i;:::-;1314:132;;1506:39;;;;;1547:40;;;;1498:90;;1506:39;1498:7;:90::i;:::-;1456:39;;;:132;1638:29;;;;;1669:30;;;;1630:70;;1638:29;1630:7;:70::i;:::-;1598:29;;;:102;1750:29;;;;;1781:30;;;;1742:70;;1750:29;1742:7;:70::i;:::-;1710:29;;;;:102;;;;-1:-1:-1;1171:648:0:o;1502:555:1:-;1655:12;1683:17;1840:33;1729:11;1703:38;;;;;;;1718:9;1710:6;1703:38;1683:58;-1:-1:-1;1755:14:1;;1751:79;;;1792:5;1785:12;;;;1751:79;1876:98;1897:27;1905:9;1916:7;1897;:27::i;:::-;1938:26;1946:9;1957:6;1938:7;:26::i;:::-;1876:7;:98::i;:::-;2022:4;1994:32;;;-1:-1:-1;1840:134:1;-1:-1:-1;1502:555:1;;;;;;;;:::o;1662:836:2:-;1751:17;668:443;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1991:4;2014:5;:18;;;2050:5;:18;;;2086:5;:25;;;2129:5;:19;;;2166:5;:22;;;2206:5;:22;;;2246:5;:14;;;2278:5;:14;;;2310:5;:27;;;2355:5;:10;;;2383:5;:20;;;2421:5;:20;;;1956:499;;;;-1:-1:-1;;;;;1956:499:2;-1:-1:-1;;;;;1956:499:2;;;;;;;;-1:-1:-1;;;;;1956:499:2;-1:-1:-1;;;;;1956:499:2;;;;;;;;-1:-1:-1;;;;;1956:499:2;-1:-1:-1;;;;;1956:499:2;;;;;;;;-1:-1:-1;;;;;1956:499:2;-1:-1:-1;;;;;1956:499:2;;;;;;;;-1:-1:-1;;;;;1956:499:2;-1:-1:-1;;;;;1956:499:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;1956:499:2;;;;;;;;;;-1:-1:-1;1956:499:2;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1956:499:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;1902:563;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1890:575;;2482:9;2475:16;;1662:836;;;:::o;84:180:4:-;164:7;196:5;;;218:6;;;:20;;;237:1;232;228;:5;;;;;;;;:10;218:20;211:28;;;;;;256:1;84:180;-1:-1:-1;;;84:180:4:o;270:142::-;350:7;373:6;386:1;382;:5;;;;;;;;;270:142;-1:-1:-1;;;;270:142:4:o;570:166::-;650:7;682:5;;;704:6;;;;697:14;;;802:1220:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:118:-1:-;;72:46;110:6;97:20;72:46;;131:432;;221:4;209:17;;205:27;-1:-1;195:2;;246:1;243;236:12;195:2;283:6;270:20;305:60;320:44;357:6;320:44;;;305:60;;;296:69;;385:6;378:5;371:21;421:4;413:6;409:17;454:4;447:5;443:16;489:3;480:6;475:3;471:16;468:25;465:2;;;506:1;503;496:12;465:2;516:41;550:6;545:3;540;516:41;;;188:375;;;;;;;;611:809;;728:4;716:9;711:3;707:19;703:30;700:2;;;746:1;743;736:12;700:2;764:20;779:4;764:20;;;755:29;-1:-1;852:1;883:49;928:3;908:9;883:49;;;859:74;;-1:-1;1012:2;1045:49;1090:3;1066:22;;;1045:49;;;1038:4;1031:5;1027:16;1020:75;954:152;1164:2;1197:49;1242:3;1233:6;1222:9;1218:22;1197:49;;;1190:4;1183:5;1179:16;1172:75;1116:142;1316:2;1349:49;1394:3;1385:6;1374:9;1370:22;1349:49;;;1342:4;1335:5;1331:16;1324:75;1268:142;694:726;;;;;1455:2208;;1566:5;1554:9;1549:3;1545:19;1541:31;1538:2;;;1585:1;1582;1575:12;1538:2;1603:21;1618:5;1603:21;;;1594:30;-1:-1;1682:1;1713:49;1758:3;1738:9;1713:49;;;1689:74;;-1:-1;1832:2;1865:49;1910:3;1886:22;;;1865:49;;;1858:4;1851:5;1847:16;1840:75;1784:142;1991:2;2024:49;2069:3;2060:6;2049:9;2045:22;2024:49;;;2017:4;2010:5;2006:16;1999:75;1936:149;2144:2;2177:49;2222:3;2213:6;2202:9;2198:22;2177:49;;;2170:4;2163:5;2159:16;2152:75;2095:143;2300:3;2334:49;2379:3;2370:6;2359:9;2355:22;2334:49;;;2327:4;2320:5;2316:16;2309:75;2248:147;2457:3;2491:49;2536:3;2527:6;2516:9;2512:22;2491:49;;;2484:4;2477:5;2473:16;2466:75;2405:147;2606:3;2640:49;2685:3;2676:6;2665:9;2661:22;2640:49;;;2633:4;2626:5;2622:16;2615:75;2562:139;2755:3;2789:49;2834:3;2825:6;2814:9;2810:22;2789:49;;;2782:4;2775:5;2771:16;2764:75;2711:139;2917:3;2952:49;2997:3;2988:6;2977:9;2973:22;2952:49;;;2944:5;2937;2933:17;2926:76;2860:153;3063:3;3098:49;3143:3;3134:6;3123:9;3119:22;3098:49;;;3090:5;3083;3079:17;3072:76;3023:136;3247:3;3236:9;3232:19;3219:33;3272:18;3264:6;3261:30;3258:2;;;3304:1;3301;3294:12;3258:2;3340:54;3390:3;3381:6;3370:9;3366:22;3340:54;;;3332:5;3325;3321:17;3314:81;3169:237;3494:3;3483:9;3479:19;3466:33;3519:18;3511:6;3508:30;3505:2;;;3551:1;3548;3541:12;3505:2;3587:54;3637:3;3628:6;3617:9;3613:22;3587:54;;;3579:5;3572;3568:17;3561:81;3416:237;1532:2131;;;;;3670:118;;3737:46;3775:6;3762:20;3737:46;;3795:480;;;3972:3;3960:9;3951:7;3947:23;3943:33;3940:2;;;3989:1;3986;3979:12;3940:2;4024:1;4041:81;4114:7;4094:9;4041:81;;;4031:91;;4003:125;4159:3;4178:81;4251:7;4242:6;4231:9;4227:22;4178:81;;;4168:91;;4138:127;3934:341;;;;;;4282:371;;4408:2;4396:9;4387:7;4383:23;4379:32;4376:2;;;4424:1;4421;4414:12;4376:2;4459:31;;4510:18;4499:30;;4496:2;;;4542:1;4539;4532:12;4496:2;4562:75;4629:7;4620:6;4609:9;4605:22;4562:75;;4660:491;;;;4798:2;4786:9;4777:7;4773:23;4769:32;4766:2;;;4814:1;4811;4804:12;4766:2;4849:1;4866:53;4911:7;4891:9;4866:53;;;4856:63;;4828:97;4956:2;4974:53;5019:7;5010:6;4999:9;4995:22;4974:53;;;4964:63;;4935:98;5064:2;5082:53;5127:7;5118:6;5107:9;5103:22;5082:53;;;5072:63;;5043:98;4760:391;;;;;;5158:101;5225:28;5247:5;5225:28;;;5220:3;5213:41;5207:52;;;5266:110;5339:31;5364:5;5339:31;;5460:886;5686:22;;5599:4;5590:14;;;5720:61;5594:3;5686:22;5720:61;;;5619:174;5887:4;5880:5;5876:16;5870:23;5905:62;5961:4;5956:3;5952:14;5939:11;5905:62;;;5803:176;6063:4;6056:5;6052:16;6046:23;6081:62;6137:4;6132:3;6128:14;6115:11;6081:62;;;5989:166;6239:4;6232:5;6228:16;6222:23;6257:62;6313:4;6308:3;6304:14;6291:11;6257:62;;;6165:166;5572:774;;;;6470:181;6572:2;6557:18;;6586:55;6561:9;6614:6;6586:55;;6658:193;6766:2;6751:18;;6780:61;6755:9;6814:6;6780:61;;6858:306;7022:3;7007:19;;7037:117;7011:9;7127:6;7037:117;;7371:256;7433:2;7427:9;7459:17;;;7534:18;7519:34;;7555:22;;;7516:62;7513:2;;;7591:1;7588;7581:12;7513:2;7607;7600:22;7411:216;;-1:-1;7411:216;7634:254;;7773:18;7765:6;7762:30;7759:2;;;7805:1;7802;7795:12;7759:2;-1:-1;7878:4;7849;7826:17;;;;-1:-1;;7822:33;7868:15;;7696:192;7895:92;7968:13;7961:21;;7944:43;7994:79;8063:5;8046:27;8166:128;-1:-1;;;;;8235:54;;8218:76;8388:145;8469:6;8464:3;8459;8446:30;-1:-1;8525:1;8507:16;;8500:27;8439:94"
}
}
},
"sources": {
"current/protocol/Exchange/libs/LibFillResults.sol": {
"id": 0
},
"current/protocol/Exchange/libs/LibMath.sol": {
"id": 1
},
"current/protocol/Exchange/libs/LibOrder.sol": {
"id": 2
},
"current/test/TestLibs/TestLibs.sol": {
"id": 3
},
"current/utils/SafeMath/SafeMath.sol": {
"id": 4
}
},
"sourceCodes": {
"current/protocol/Exchange/libs/LibFillResults.sol":
"/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.4.23;\n\nimport \"../../../utils/SafeMath/SafeMath.sol\";\n\ncontract LibFillResults is\n SafeMath\n{\n\n struct FillResults {\n uint256 makerAssetFilledAmount;\n uint256 takerAssetFilledAmount;\n uint256 makerFeePaid;\n uint256 takerFeePaid;\n }\n\n /// @dev Adds properties of both FillResults instances.\n /// Modifies the first FillResults instance specified.\n /// @param totalFillResults Fill results instance that will be added onto.\n /// @param singleFillResults Fill results instance that will be added to totalFillResults.\n function addFillResults(FillResults memory totalFillResults, FillResults memory singleFillResults)\n internal\n pure\n {\n totalFillResults.makerAssetFilledAmount = safeAdd(totalFillResults.makerAssetFilledAmount, singleFillResults.makerAssetFilledAmount);\n totalFillResults.takerAssetFilledAmount = safeAdd(totalFillResults.takerAssetFilledAmount, singleFillResults.takerAssetFilledAmount);\n totalFillResults.makerFeePaid = safeAdd(totalFillResults.makerFeePaid, singleFillResults.makerFeePaid);\n totalFillResults.takerFeePaid = safeAdd(totalFillResults.takerFeePaid, singleFillResults.takerFeePaid);\n }\n}",
"current/protocol/Exchange/libs/LibMath.sol":
"/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.4.23;\n\nimport \"../../../utils/SafeMath/SafeMath.sol\";\n\ncontract LibMath is\n SafeMath\n{\n\n /// @dev Calculates partial value given a numerator and denominator.\n /// @param numerator Numerator.\n /// @param denominator Denominator.\n /// @param target Value to calculate partial of.\n /// @return Partial value of target.\n function getPartialAmount(\n uint256 numerator,\n uint256 denominator,\n uint256 target)\n internal\n pure\n returns (uint256 partialAmount)\n {\n partialAmount = safeDiv(\n safeMul(numerator, target),\n denominator\n );\n return partialAmount;\n }\n\n /// @dev Checks if rounding error > 0.1%.\n /// @param numerator Numerator.\n /// @param denominator Denominator.\n /// @param target Value to multiply with numerator/denominator.\n /// @return Rounding error is present.\n function isRoundingError(\n uint256 numerator,\n uint256 denominator,\n uint256 target)\n internal\n pure\n returns (bool isError)\n {\n uint256 remainder = mulmod(target, numerator, denominator);\n if (remainder == 0) {\n return false; // No rounding error.\n }\n\n uint256 errPercentageTimes1000000 = safeDiv(\n safeMul(remainder, 1000000),\n safeMul(numerator, target)\n );\n isError = errPercentageTimes1000000 > 1000;\n return isError;\n }\n}\n",
"current/protocol/Exchange/libs/LibOrder.sol":
"/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.4.23;\n\ncontract LibOrder {\n\n bytes32 constant ORDER_SCHEMA_HASH = keccak256(\n \"address exchangeAddress\",\n \"address makerAddress\",\n \"address takerAddress\",\n \"address feeRecipientAddress\",\n \"address senderAddress\",\n \"uint256 makerAssetAmount\",\n \"uint256 takerAssetAmount\",\n \"uint256 makerFee\",\n \"uint256 takerFee\",\n \"uint256 expirationTimeSeconds\",\n \"uint256 salt\",\n \"bytes makerAssetData\",\n \"bytes takerAssetData\"\n );\n\n struct Order {\n address makerAddress;\n address takerAddress;\n address feeRecipientAddress;\n address senderAddress;\n uint256 makerAssetAmount;\n uint256 takerAssetAmount;\n uint256 makerFee;\n uint256 takerFee;\n uint256 expirationTimeSeconds;\n uint256 salt;\n bytes makerAssetData;\n bytes takerAssetData;\n }\n\n /// @dev Calculates Keccak-256 hash of the order.\n /// @param order The order structure.\n /// @return Keccak-256 EIP712 hash of the order.\n function getOrderHash(Order memory order)\n internal\n view\n returns (bytes32 orderHash)\n {\n // TODO: EIP712 is not finalized yet\n // Source: https://github.com/ethereum/EIPs/pull/712\n orderHash = keccak256(\n ORDER_SCHEMA_HASH,\n keccak256(\n address(this),\n order.makerAddress,\n order.takerAddress,\n order.feeRecipientAddress,\n order.senderAddress,\n order.makerAssetAmount,\n order.takerAssetAmount,\n order.makerFee,\n order.takerFee,\n order.expirationTimeSeconds,\n order.salt,\n order.makerAssetData,\n order.takerAssetData\n )\n );\n return orderHash;\n }\n}\n",
"current/test/TestLibs/TestLibs.sol":
"/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.4.23;\npragma experimental ABIEncoderV2;\n\nimport \"../../protocol/Exchange/libs/LibMath.sol\";\nimport \"../../protocol/Exchange/libs/LibOrder.sol\";\nimport \"../../protocol/Exchange/libs/LibFillResults.sol\";\n\ncontract TestLibs is \n LibMath,\n LibOrder,\n LibFillResults\n{\n function publicGetPartialAmount(\n uint256 numerator,\n uint256 denominator,\n uint256 target)\n public\n pure\n returns (uint256 partialAmount)\n {\n partialAmount = getPartialAmount(\n numerator,\n denominator,\n target\n );\n return partialAmount;\n }\n\n function publicIsRoundingError(\n uint256 numerator,\n uint256 denominator,\n uint256 target)\n public\n pure\n returns (bool isError)\n {\n isError = isRoundingError(\n numerator,\n denominator,\n target\n );\n return isError;\n }\n\n function publicGetOrderHash(Order memory order)\n public\n view\n returns (bytes32 orderHash)\n {\n orderHash = getOrderHash(order);\n return orderHash;\n }\n\n function publicAddFillResults(FillResults memory totalFillResults, FillResults memory singleFillResults)\n public\n pure\n returns (FillResults memory)\n {\n addFillResults(totalFillResults, singleFillResults);\n return totalFillResults;\n }\n}",
"current/utils/SafeMath/SafeMath.sol":
"pragma solidity ^0.4.23;\npragma experimental ABIEncoderV2;\n\ncontract SafeMath {\n function safeMul(uint a, uint b)\n internal\n pure\n returns (uint256)\n {\n uint c = a * b;\n assert(a == 0 || c / a == b);\n return c;\n }\n\n function safeDiv(uint a, uint b)\n internal\n pure\n returns (uint256)\n {\n uint c = a / b;\n return c;\n }\n\n function safeSub(uint a, uint b)\n internal\n pure\n returns (uint256)\n {\n assert(b <= a);\n return a - b;\n }\n\n function safeAdd(uint a, uint b)\n internal\n pure\n returns (uint256)\n {\n uint c = a + b;\n assert(c >= a);\n return c;\n }\n\n function max64(uint64 a, uint64 b)\n internal\n pure\n returns (uint256)\n {\n return a >= b ? a : b;\n }\n\n function min64(uint64 a, uint64 b)\n internal\n pure\n returns (uint256)\n {\n return a < b ? a : b;\n }\n\n function max256(uint256 a, uint256 b)\n internal\n pure\n returns (uint256)\n {\n return a >= b ? a : b;\n }\n\n function min256(uint256 a, uint256 b)\n internal\n pure\n returns (uint256)\n {\n return a < b ? a : b;\n }\n}\n"
},
"sourceTreeHashHex": "0xe9abe18b62f2b1719bb99411fca8ecc1eec2b2e19b39769783260e89d3002891",
"compiler": {
"name": "solc",
"version": "0.4.23",
"settings": {
"optimizer": {
"enabled": true,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"abi",
"evm.bytecode.object",
"evm.bytecode.sourceMap",
"evm.deployedBytecode.object",
"evm.deployedBytecode.sourceMap"
]
}
}
}
},
"networks": {}
}