@nikiswap/governance
Version:
🏛 Governance contracts for the NikiSwap protocol
650 lines • 275 kB
JSON
{
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "timelock_",
"type": "address"
},
{
"internalType": "address",
"name": "Niki_",
"type": "address"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "ProposalCanceled",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"indexed": false,
"internalType": "address",
"name": "proposer",
"type": "address"
},
{
"indexed": false,
"internalType": "address[]",
"name": "targets",
"type": "address[]"
},
{
"indexed": false,
"internalType": "uint256[]",
"name": "values",
"type": "uint256[]"
},
{
"indexed": false,
"internalType": "string[]",
"name": "signatures",
"type": "string[]"
},
{
"indexed": false,
"internalType": "bytes[]",
"name": "calldatas",
"type": "bytes[]"
},
{
"indexed": false,
"internalType": "uint256",
"name": "startBlock",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "endBlock",
"type": "uint256"
},
{
"indexed": false,
"internalType": "string",
"name": "description",
"type": "string"
}
],
"name": "ProposalCreated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "ProposalExecuted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "eta",
"type": "uint256"
}
],
"name": "ProposalQueued",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "voter",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "bool",
"name": "support",
"type": "bool"
},
{
"indexed": false,
"internalType": "uint256",
"name": "votes",
"type": "uint256"
}
],
"name": "VoteCast",
"type": "event"
},
{
"constant": true,
"inputs": [],
"name": "BALLOT_TYPEHASH",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "DOMAIN_TYPEHASH",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "Niki",
"outputs": [
{
"internalType": "contract NikiInterface",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "cancel",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "bool",
"name": "support",
"type": "bool"
}
],
"name": "castVote",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "bool",
"name": "support",
"type": "bool"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"name": "castVoteBySig",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "execute",
"outputs": [],
"payable": true,
"stateMutability": "payable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "getActions",
"outputs": [
{
"internalType": "address[]",
"name": "targets",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "values",
"type": "uint256[]"
},
{
"internalType": "string[]",
"name": "signatures",
"type": "string[]"
},
{
"internalType": "bytes[]",
"name": "calldatas",
"type": "bytes[]"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "address",
"name": "voter",
"type": "address"
}
],
"name": "getReceipt",
"outputs": [
{
"components": [
{
"internalType": "bool",
"name": "hasVoted",
"type": "bool"
},
{
"internalType": "bool",
"name": "support",
"type": "bool"
},
{
"internalType": "uint96",
"name": "votes",
"type": "uint96"
}
],
"internalType": "struct NikiGovernorAlpha.Receipt",
"name": "",
"type": "tuple"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "latestProposalIds",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "proposalCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "proposalMaxOperations",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "pure",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "proposalThreshold",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "pure",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "proposals",
"outputs": [
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"internalType": "address",
"name": "proposer",
"type": "address"
},
{
"internalType": "uint256",
"name": "eta",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "startBlock",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "endBlock",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "forVotes",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "againstVotes",
"type": "uint256"
},
{
"internalType": "bool",
"name": "canceled",
"type": "bool"
},
{
"internalType": "bool",
"name": "executed",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address[]",
"name": "targets",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "values",
"type": "uint256[]"
},
{
"internalType": "string[]",
"name": "signatures",
"type": "string[]"
},
{
"internalType": "bytes[]",
"name": "calldatas",
"type": "bytes[]"
},
{
"internalType": "string",
"name": "description",
"type": "string"
}
],
"name": "propose",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "queue",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "quorumVotes",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "pure",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "state",
"outputs": [
{
"internalType": "enum NikiGovernorAlpha.ProposalState",
"name": "",
"type": "uint8"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "timelock",
"outputs": [
{
"internalType": "contract NikiTimelockInterface",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "votingDelay",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "pure",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "votingPeriod",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "pure",
"type": "function"
}
],
"evm": {
"bytecode": {
"linkReferences": {},
"object": "60806040523480156200001157600080fd5b50604051620039db380380620039db833981016040819052620000349162000079565b600080546001600160a01b039384166001600160a01b03199182161790915560018054929093169116179055620000e4565b80516200007381620000ca565b92915050565b600080604083850312156200008d57600080fd5b60006200009b858562000066565b9250506020620000ae8582860162000066565b9150509250929050565b60006001600160a01b03821662000073565b620000d581620000b8565b8114620000e157600080fd5b50565b6138e780620000f46000396000f3fe6080604052600436106101755760003560e01c80634634c61f116100cb578063da35c6641161007f578063deaaa7cc11610059578063deaaa7cc146103d0578063e23a9a52146103e5578063fe0d94c11461041257610175565b8063da35c6641461037b578063da95691a14610390578063ddf0b009146103b057610175565b8063b58131b0116100b0578063b58131b01461032f578063d30c0b9114610344578063d33219b41461036657610175565b80634634c61f146102fa5780637bdbe4d01461031a57610175565b806320606b701161012d5780633932abb1116101075780633932abb1146102985780633e4f49e6146102ad57806340e58ee5146102da57610175565b806320606b701461023e57806324bc1a6414610253578063328dd9821461026857610175565b806306fdde031161015e57806306fdde03146101da57806315373e3d146101fc57806317977c611461021e57610175565b8063013cf08b1461017a57806302a251a3146101b8575b600080fd5b34801561018657600080fd5b5061019a6101953660046125d0565b610425565b6040516101af9998979695949392919061364f565b60405180910390f35b3480156101c457600080fd5b506101cd61048b565b6040516101af91906133bc565b3480156101e657600080fd5b506101ef610492565b6040516101af9190613478565b34801561020857600080fd5b5061021c610217366004612628565b6104cb565b005b34801561022a57600080fd5b506101cd61023936600461244d565b6104da565b34801561024a57600080fd5b506101cd6104ec565b34801561025f57600080fd5b506101cd610503565b34801561027457600080fd5b506102886102833660046125d0565b610513565b6040516101af949392919061336f565b3480156102a457600080fd5b506101cd6107eb565b3480156102b957600080fd5b506102cd6102c83660046125d0565b6107f0565b6040516101af919061346a565b3480156102e657600080fd5b5061021c6102f53660046125d0565b6109bb565b34801561030657600080fd5b5061021c610315366004612658565b610c8d565b34801561032657600080fd5b506101cd610e6f565b34801561033b57600080fd5b506101cd610e74565b34801561035057600080fd5b50610359610e83565b6040516101af919061345c565b34801561037257600080fd5b50610359610e9f565b34801561038757600080fd5b506101cd610ebb565b34801561039c57600080fd5b506101cd6103ab366004612473565b610ec1565b3480156103bc57600080fd5b5061021c6103cb3660046125d0565b6113d2565b3480156103dc57600080fd5b506101cd6116c9565b3480156103f157600080fd5b506104056104003660046125ee565b6116d5565b6040516101af9190613599565b61021c6104203660046125d0565b611756565b6003602052600090815260409020805460018201546002830154600784015460088501546009860154600a870154600b90970154959673ffffffffffffffffffffffffffffffffffffffff90951695939492939192909160ff8082169161010090041689565b619d805b90565b6040518060400160405280601381526020017f4e696b6920476f7665726e6f7220416c7068610000000000000000000000000081525081565b6104d633838361198a565b5050565b60046020526000908152604090205481565b6040516104f890613260565b604051809103902081565b6b014adf4b7320334b9000000090565b606080606080600060036000878152602001908152602001600020905080600301816004018260050183600601838054806020026020016040519081016040528092919081815260200182805480156105a257602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610577575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156105f457602002820191906000526020600020905b8154815260200190600101908083116105e0575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b828210156106e55760008481526020908190208301805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156106d15780601f106106a6576101008083540402835291602001916106d1565b820191906000526020600020905b8154815290600101906020018083116106b457829003601f168201915b50505050508152602001906001019061061c565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156107d55760008481526020908190208301805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156107c15780601f10610796576101008083540402835291602001916107c1565b820191906000526020600020905b8154815290600101906020018083116107a457829003601f168201915b50505050508152602001906001019061070c565b5050505090509450945094509450509193509193565b600190565b600081600254101580156108045750600082115b610843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083a90613489565b60405180910390fd5b6000828152600360205260409020600b81015460ff16156108685760029150506109b6565b8060070154431161087d5760009150506109b6565b806008015443116108925760019150506109b6565b80600a015481600901541115806108b357506108ac610503565b8160090154105b156108c25760039150506109b6565b60028101546108d55760049150506109b6565b600b810154610100900460ff16156108f15760079150506109b6565b6002810154600054604080517fc1a287e200000000000000000000000000000000000000000000000000000000815290516109a0939273ffffffffffffffffffffffffffffffffffffffff169163c1a287e2916004808301926020929190829003018186803b15801561096357600080fd5b505afa158015610977573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061099b919081019061257d565b611c15565b42106109b05760069150506109b6565b60059150505b919050565b60006109c6826107f0565b905060078160078111156109d657fe5b1415610a0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083a906134c9565b6000828152600360205260409020610a24610e74565b600180548382015473ffffffffffffffffffffffffffffffffffffffff9182169263782d6fe19290911690610a5a904390611c5b565b6040518363ffffffff1660e01b8152600401610a77929190613291565b60206040518083038186803b158015610a8f57600080fd5b505afa158015610aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ac791908101906126c0565b6bffffffffffffffffffffffff1610610b0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083a90613519565b600b810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560005b6003820154811015610c505760005460038301805473ffffffffffffffffffffffffffffffffffffffff9092169163591fcdfe919084908110610b7b57fe5b60009182526020909120015460048501805473ffffffffffffffffffffffffffffffffffffffff9092169185908110610bb057fe5b9060005260206000200154856005018581548110610bca57fe5b90600052602060002001866006018681548110610be357fe5b9060005260206000200187600201546040518663ffffffff1660e01b8152600401610c1295949392919061332e565b600060405180830381600087803b158015610c2c57600080fd5b505af1158015610c40573d6000803e3d6000fd5b505060019092019150610b3c9050565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c83604051610c8091906133bc565b60405180910390a1505050565b6000604051610c9b90613260565b60408051918290038220828201909152601382527f4e696b6920476f7665726e6f7220416c706861000000000000000000000000006020909201919091527f6e37ab6475f317f9f1cafc4afcfeceff7e1542bf3094de735be15e5010a79207610d02611c9d565b30604051602001610d1694939291906133ca565b6040516020818303038152906040528051906020012090506000604051610d3c9061326b565b604051908190038120610d5591899089906020016133ff565b60405160208183030381529060405280519060200120905060008282604051602001610d8292919061322f565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610dbf9493929190613427565b6020604051602081039080840390855afa158015610de1573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116610e59576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083a906134a9565b610e64818a8a61198a565b505050505050505050565b600a90565b6a52b7d2dcc80cd2e400000090565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b6000610ecb610e74565b6001805473ffffffffffffffffffffffffffffffffffffffff169063782d6fe1903390610ef9904390611c5b565b6040518363ffffffff1660e01b8152600401610f16929190613276565b60206040518083038186803b158015610f2e57600080fd5b505afa158015610f42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f6691908101906126c0565b6bffffffffffffffffffffffff1611610fab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083a906134b9565b84518651148015610fbd575083518651145b8015610fca575082518651145b611000576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083a90613579565b8551611038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083a906134f9565b611040610e6f565b8651111561107a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083a90613569565b33600090815260046020526040902054801561112b57600061109b826107f0565b905060018160078111156110ab57fe5b14156110e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083a906134e9565b60008160078111156110f157fe5b1415611129576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083a906134d9565b505b60006111394361099b6107eb565b905060006111498261099b61048b565b600280546001019055905061115c611e4d565b604051806101a0016040528060025481526020013373ffffffffffffffffffffffffffffffffffffffff168152602001600081526020018b81526020018a815260200189815260200188815260200184815260200183815260200160008152602001600081526020016000151581526020016000151581525090508060036000836000015181526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003019080519060200190611266929190611ecf565b5060808201518051611282916004840191602090910190611f59565b5060a0820151805161129e916005840191602090910190611fa0565b5060c082015180516112ba916006840191602090910190611ff9565b5060e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b0160006101000a81548160ff02191690831515021790555061018082015181600b0160016101000a81548160ff021916908315150217905550905050806000015160046000836020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e08160000151338c8c8c8c89898e6040516113ba999897969594939291906135a7565b60405180910390a15193505050505b95945050505050565b60046113dd826107f0565b60078111156113e857fe5b1461141f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083a90613559565b6000818152600360209081526040808320835482517f6a42b8f8000000000000000000000000000000000000000000000000000000008152925191949361149e93429373ffffffffffffffffffffffffffffffffffffffff90931692636a42b8f892600480840193919291829003018186803b15801561096357600080fd5b905060005b600383015481101561168f576116878360030182815481106114c157fe5b60009182526020909120015460048501805473ffffffffffffffffffffffffffffffffffffffff90921691849081106114f657fe5b906000526020600020015485600501848154811061151057fe5b600091825260209182902001805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156115bc5780601f10611591576101008083540402835291602001916115bc565b820191906000526020600020905b81548152906001019060200180831161159f57829003601f168201915b50505050508660060185815481106115d057fe5b600091825260209182902001805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018716150201909416939093049283018590048502810185019091528181529283018282801561167c5780601f106116515761010080835404028352916020019161167c565b820191906000526020600020905b81548152906001019060200180831161165f57829003601f168201915b505050505086611ca1565b6001016114a3565b50600282018190556040517f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289290610c8090859084906136d5565b6040516104f89061326b565b6116dd612052565b50600082815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452600c018252918290208251606081018452905460ff80821615158352610100820416151592820192909252620100009091046bffffffffffffffffffffffff16918101919091525b92915050565b6005611761826107f0565b600781111561176c57fe5b146117a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083a90613499565b6000818152600360205260408120600b810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055905b600382015481101561194e5760005460048301805473ffffffffffffffffffffffffffffffffffffffff90921691630825f38f91908490811061182057fe5b906000526020600020015484600301848154811061183a57fe5b60009182526020909120015460048601805473ffffffffffffffffffffffffffffffffffffffff909216918690811061186f57fe5b906000526020600020015486600501868154811061188957fe5b906000526020600020018760060187815481106118a257fe5b9060005260206000200188600201546040518763ffffffff1660e01b81526004016118d195949392919061332e565b6000604051808303818588803b1580156118ea57600080fd5b505af11580156118fe573d6000803e3d6000fd5b50505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611945919081019061259b565b506001016117e1565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f8260405161197e91906133bc565b60405180910390a15050565b6001611995836107f0565b60078111156119a057fe5b146119d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083a90613539565b600082815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452600c8101909252909120805460ff1615611a47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083a90613549565b60015460078301546040517f782d6fe100000000000000000000000000000000000000000000000000000000815260009273ffffffffffffffffffffffffffffffffffffffff169163782d6fe191611aa3918a91600401613291565b60206040518083038186803b158015611abb57600080fd5b505afa158015611acf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611af391908101906126c0565b90508315611b2157611b178360090154826bffffffffffffffffffffffff16611c15565b6009840155611b43565b611b3d83600a0154826bffffffffffffffffffffffff16611c15565b600a8401555b815460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909116177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010085151502177fffffffffffffffffffffffffffffffffffff000000000000000000000000ffff16620100006bffffffffffffffffffffffff8316021782556040517f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c4690611c0590889088908890869061329f565b60405180910390a1505050505050565b600082820183811015611c54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083a90613509565b9392505050565b600082821115611c97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083a90613589565b50900390565b4690565b60005460405173ffffffffffffffffffffffffffffffffffffffff9091169063f2b0653790611cdc90889088908890889088906020016132d4565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401611d0e91906133bc565b60206040518083038186803b158015611d2657600080fd5b505afa158015611d3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611d5e919081019061255f565b15611d95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083a90613529565b6000546040517f3a66f90100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633a66f90190611df390889088908890889088906004016132d4565b602060405180830381600087803b158015611e0d57600080fd5b505af1158015611e21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e45919081019061257d565b505050505050565b604051806101a0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160608152602001606081526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b828054828255906000526020600020908101928215611f49579160200282015b82811115611f4957825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190611eef565b50611f55929150612072565b5090565b828054828255906000526020600020908101928215611f94579160200282015b82811115611f94578251825591602001919060010190611f79565b50611f559291506120ae565b828054828255906000526020600020908101928215611fed579160200282015b82811115611fed5782518051611fdd9184916020909101906120c8565b5091602001919060010190611fc0565b50611f55929150612135565b828054828255906000526020600020908101928215612046579160200282015b8281111561204657825180516120369184916020909101906120c8565b5091602001919060010190612019565b50611f55929150612158565b604080516060810182526000808252602082018190529181019190915290565b61048f91905b80821115611f555780547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600101612078565b61048f91905b80821115611f5557600081556001016120b4565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061210957805160ff1916838001178555611f94565b82800160010185558215611f945791820182811115611f94578251825591602001919060010190611f79565b61048f91905b80821115611f5557600061214f828261217b565b5060010161213b565b61048f91905b80821115611f55576000612172828261217b565b5060010161215e565b50805460018160011615610100020316600290046000825580601f106121a157506121bf565b601f0160209004906000526020600020908101906121bf91906120ae565b50565b80356117508161386c565b600082601f8301126121de57600080fd5b81356121f16121ec8261370a565b6136e3565b9150818183526020840193506020810190508385602084028201111561221657600080fd5b60005b83811015612242578161222c88826121c2565b8452506020928301929190910190600101612219565b5050505092915050565b600082601f83011261225d57600080fd5b813561226b6121ec8261370a565b81815260209384019390925082018360005b83811015612242578135860161229388826123a2565b845250602092830192919091019060010161227d565b600082601f8301126122ba57600080fd5b81356122c86121ec8261370a565b81815260209384019390925082018360005b8381101561224257813586016122f088826123a2565b84525060209283019291909101906001016122da565b600082601f83011261231757600080fd5b81356123256121ec8261370a565b9150818183526020840193506020810190508385602084028201111561234a57600080fd5b60005b838110156122425781612360888261238c565b845250602092830192919091019060010161234d565b803561175081613880565b805161175081613880565b803561175081613889565b805161175081613889565b600082601f8301126123b357600080fd5b81356123c16121ec8261372b565b915080825260208301602083018583830111156123dd57600080fd5b6123e8838284613802565b50505092915050565b600082601f83011261240257600080fd5b81516124106121ec8261372b565b9150808252602083016020830185838301111561242c57600080fd5b6123e883828461380e565b803561175081613892565b80516117508161389b565b60006020828403121561245f57600080fd5b600061246b84846121c2565b949350505050565b600080600080600060a0868803121561248b57600080fd5b853567ffffffffffffffff8111156124a257600080fd5b6124ae888289016121cd565b955050602086013567ffffffffffffffff8111156124cb57600080fd5b6124d788828901612306565b945050604086013567ffffffffffffffff8111156124f457600080fd5b612500888289016122a9565b935050606086013567ffffffffffffffff81111561251d57600080fd5b6125298882890161224c565b925050608086013567ffffffffffffffff81111561254657600080fd5b612552888289016123a2565b9150509295509295909350565b60006020828403121561257157600080fd5b600061246b8484612381565b60006020828403121561258f57600080fd5b600061246b8484612397565b6000602082840312156125ad57600080fd5b815167ffffffffffffffff8111156125c457600080fd5b61246b848285016123f1565b6000602082840312156125e257600080fd5b600061246b848461238c565b6000806040838503121561260157600080fd5b600061260d858561238c565b925050602061261e858286016121c2565b9150509250929050565b6000806040838503121561263b57600080fd5b6000612647858561238c565b925050602061261e85828601612376565b600080600080600060a0868803121561267057600080fd5b600061267c888861238c565b955050602061268d88828901612376565b945050604061269e88828901612437565b93505060606126af8882890161238c565b92505060806125528882890161238c565b6000602082840312156126d257600080fd5b600061246b8484612442565b60006126ea8383612719565b505060200190565b6000611c5483836128bb565b60006126ea83836128a1565b612713816137da565b82525050565b61271381613790565b600061272d82613783565b6127378185613787565b935061274283613771565b8060005b8381101561277057815161275a88826126de565b975061276583613771565b925050600101612746565b509495945050505050565b600061278682613783565b6127908185613787565b9350836020820285016127a285613771565b8060005b858110156127dc57848403895281516127bf85826126f2565b94506127ca83613771565b60209a909a01999250506001016127a6565b5091979650505050505050565b60006127f482613783565b6127fe8185613787565b93508360208202850161281085613771565b8060005b858110156127dc578484038952815161282d85826126f2565b945061283883613771565b60209a909a0199925050600101612814565b600061285582613783565b61285f8185613787565b935061286a83613771565b8060005b8381101561277057815161288288826126fe565b975061288d83613771565b92505060010161286e565b6127138161379b565b6127138161048f565b6127136128b68261048f565b61048f565b60006128c682613783565b6128d08185613787565b93506128e081856020860161380e565b6128e98161383a565b9093019392505050565b600081546001811660008114612910576001811461295457612993565b607f60028304166129218187613787565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168152955050602085019250612993565b600282046129628187613787565b955061296d85613777565b60005b8281101561298c57815488820152600190910190602001612970565b8701945050505b505092915050565b612713816137e1565b612713816137ec565b60006129ba602d83613787565b7f4e696b69476f7665726e6f72416c7068613a3a73746174653a20696e76616c6981527f642070726f706f73616c20696400000000000000000000000000000000000000602082015260400192915050565b6000612a19604983613787565b7f4e696b69476f7665726e6f72416c7068613a3a657865637574653a2070726f7081527f6f73616c2063616e206f6e6c792062652065786563757465642069662069742060208201527f6973207175657565640000000000000000000000000000000000000000000000604082015260600192915050565b6000612a9e6002836109b6565b7f1901000000000000000000000000000000000000000000000000000000000000815260020192915050565b6000612ad7603383613787565b7f4e696b69476f7665726e6f72416c7068613a3a63617374566f7465427953696781527f3a20696e76616c6964207369676e617475726500000000000000000000000000602082015260400192915050565b6000612b36604383613787565b7f4e696b69476f7665726e6f72416c7068613a3a70726f706f73653a2070726f7081527f6f73657220766f7465732062656c6f772070726f706f73616c2074687265736860208201527f6f6c640000000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612bbb603a83613787565b7f4e696b69476f7665726e6f72416c7068613a3a63616e63656c3a2063616e6e6f81527f742063616e63656c2065786563757465642070726f706f73616c000000000000602082015260400192915050565b6000612c1a605d83613787565b7f4e696b69476f7665726e6f72416c7068613a3a70726f706f73653a206f6e652081527f6c6976652070726f706f73616c207065722070726f706f7365722c20666f756e60208201527f6420616e20616c72656164792070656e64696e672070726f706f73616c000000604082015260600192915050565b6000612c9f605c83613787565b7f4e696b69476f7665726e6f72416c7068613a3a70726f706f73653a206f6e652081527f6c6976652070726f706f73616c207065722070726f706f7365722c20666f756e60208201527f6420616e20616c7265616479206163746976652070726f706f73616c00000000604082015260600192915050565b6000612d24603083613787565b7f4e696b69476f7665726e6f72416c7068613a3a70726f706f73653a206d75737481527f2070726f7669646520616374696f6e7300000000000000000000000000000000602082015260400192915050565b6000612d83601183613787565b7f6164646974696f6e206f766572666c6f77000000000000000000000000000000815260200192915050565b6000612dbc6043836109b6565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201527f6374290000000000000000000000000000000000000000000000000000000000604082015260430192915050565b6000612e416027836109b6565b7f42616c6c6f742875696e743235362070726f706f73616c49642c626f6f6c207381527f7570706f72742900000000000000000000000000000000000000000000000000602082015260270192915050565b6000612ea0603383613787565b7f4e696b69476f7665726e6f72416c7068613a3a63616e63656c3a2070726f706f81527f7365722061626f7665207468726573686f6c6400000000000000000000000000602082015260400192915050565b6000612eff604883613787565b7f4e696b69476f7665726e6f72416c7068613a3a5f71756575654f72526576657281527f743a2070726f706f73616c20616374696f6e20616c726561647920717565756560208201527f6420617420657461000000000000000000000000000000000000000000000000604082015260600192915050565b6000612f84602e83613787565b7f4e696b69476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f81527f74696e6720697320636c6f736564000000000000000000000000000000000000602082015260400192915050565b6000612fe3603183613787565b7f4e696b69476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f81527f74657220616c726561647920766f746564000000000000000000000000000000602082015260400192915050565b6000613042604883613787565b7f4e696b69476f7665726e6f72416c7068613a3a71756575653a2070726f706f7381527f616c2063616e206f6e6c7920626520717565756564206966206974206973207360208201527f7563636565646564000000000000000000000000000000000000000000000000604082015260600192915050565b60006130c7602c83613787565b7f4e696b69476f7665726e6f72416c7068613a3a70726f706f73653a20746f6f2081527f6d616e7920616374696f6e730000000000000000000000000000000000000000602082015260400192915050565b6000613126604883613787565b7f4e696b69476f7665726e6f72416c7068613a3a70726f706f73653a2070726f7081527f6f73616c2066756e6374696f6e20696e666f726d6174696f6e2061726974792060208201527f6d69736d61746368000000000000000000000000000000000000000000000000604082015260600192915050565b60006131ab601583613787565b7f7375627472616374696f6e20756e646572666c6f770000000000000000000000815260200192915050565b805160608301906131e88482612898565b5060208201516131fb6020850182612898565b50604082015161320e6040850182613226565b50505050565b612713816137c3565b612713816137f7565b612713816137c9565b600061323a82612a91565b915061324682856128aa565b60208201915061325682846128aa565b5060200192915050565b600061175082612daf565b600061175082612e34565b60408101613284828561270a565b611c5460208301846128a1565b604081016132848285612719565b608081016132ad8287612719565b6132ba60208301866128a1565b6132c76040830185612898565b6113c9606083018461321d565b60a081016132e28288612719565b6132ef60208301876128a1565b818103604083015261330181866128bb565b9050818103606083015261331581856128bb565b905061332460808301846128a1565b9695505050505050565b60a0810161333c8288612719565b61334960208301876128a1565b818103604083015261335b81866128f3565b9050818103606083015261331581856128f3565b608080825281016133808187612722565b90508181036020830152613394818661284a565b905081810360408301526133a881856127e9565b90508181036060830152613324818461277b565b6020810161175082846128a1565b608081016133d882876128a1565b6133e560208301866128a1565b6133f260408301856128a1565b6113c96060830184612719565b6060810161340d82866128a1565b61341a60208301856128a1565b61246b6040830184612898565b6080810161343582876128a1565b6134426020830186613214565b61344f60408301856128a1565b6113c960608301846128a1565b60208101611750828461299b565b6020810161175082846129a4565b60208082528101611c5481846128bb565b60208082528101611750816129ad565b6020808252810161175081612a0c565b6020808252810161175081612aca565b6020808252810161175081612b29565b6020808252810161175081612bae565b6020808252810161175081612c0d565b6020808252810161175081612c92565b6020808252810161175081612d17565b6020808252810161175081612d76565b6020808252810161175081612e93565b6020808252810161175081612ef2565b6020808252810161175081612f77565b6020808252810161175081612fd6565b6020808252810161175081613035565b60208082528101611750816130ba565b6020808252810161175081613119565b602080825281016117508161319e565b6060810161175082846131d7565b61012081016135b6828c6128a1565b6135c3602083018b61270a565b81810360408301526135d5818a612722565b905081810360608301526135e9818961284a565b905081810360808301526135fd81886127e9565b905081810360a0830152613611818761277b565b905061362060c08301866128a1565b61362d60e08301856128a1565b81810361010083015261364081846128bb565b9b9a5050505050505050505050565b610120810161365e828c6128a1565b61366b602083018b612719565b613678604083018a6128a1565b61368560608301896128a1565b61369260808301886128a1565b61369f60a08301876128a1565b6136ac60c08301866128a1565b6136b960e0830185612898565b6136c7610100830184612898565b9a9950505050505050505050565b6040810161328482856128a1565b60405181810167ffffffffffffffff8111828210171561370257600080fd5b604052919050565b600067ffffffffffffffff82111561372157600080fd5b5060209081020190565b600067ffffffffffffffff82111561374257600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b60009081526020902090565b5190565b90815260200190565b6000611750826137aa565b151590565b806109b681613862565b73ffffffffffffffffffffffffffffffffffffffff1690565b60ff1690565b6bffffffffffffffffffffffff1690565b6000611750825b600061175082613790565b6000611750826137a0565b6000611750826137c9565b82818337506000910152565b60005b83811015613829578181015183820152602001613811565b8381111561320e5750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b600881106121bf57fe5b61387581613790565b81146121bf57600080fd5b6138758161379b565b6138758161048f565b613875816137c3565b613875816137c956fea365627a7a72315820026155fc5544e5f2875e2770628649b0cd78acc52d27edfc6cc12407af0d88c46c6578706572696d656e74616cf564736f6c63430005100040",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x39DB CODESIZE SUB DUP1 PUSH3 0x39DB DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x79 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP3 SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE PUSH3 0xE4 JUMP JUMPDEST DUP1 MLOAD PUSH3 0x73 DUP2 PUSH3 0xCA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x9B DUP6 DUP6 PUSH3 0x66 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH3 0xAE DUP6 DUP3 DUP7 ADD PUSH3 0x66 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0x73 JUMP JUMPDEST PUSH3 0xD5 DUP2 PUSH3 0xB8 JUMP JUMPDEST DUP2 EQ PUSH3 0xE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x38E7 DUP1 PUSH3 0xF4 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x175 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4634C61F GT PUSH2 0xCB JUMPI DUP1 PUSH4 0xDA35C664 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xDEAAA7CC GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xDEAAA7CC EQ PUSH2 0x3D0 JUMPI DUP1 PUSH4 0xE23A9A52 EQ PUSH2 0x3E5 JUMPI DUP1 PUSH4 0xFE0D94C1 EQ PUSH2 0x412 JUMPI PUSH2 0x175 JUMP JUMPDEST DUP1 PUSH4 0xDA35C664 EQ PUSH2 0x37B JUMPI DUP1 PUSH4 0xDA95691A EQ PUSH2 0x390 JUMPI DUP1 PUSH4 0xDDF0B009 EQ PUSH2 0x3B0 JUMPI PUSH2 0x175 JUMP JUMPDEST DUP1 PUSH4 0xB58131B0 GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0xB58131B0 EQ PUSH2 0x32F JUMPI DUP1 PUSH4 0xD30C0B91 EQ PUSH2 0x344 JUMPI DUP1 PUSH4 0xD33219B4 EQ PUSH2 0x366 JUMPI PUSH2 0x175 JUMP JUMPDEST DUP1 PUSH4 0x4634C61F EQ PUSH2 0x2FA JUMPI DUP1 PUSH4 0x7BDBE4D0 EQ PUSH2 0x31A JUMPI PUSH2 0x175 JUMP JUMPDEST DUP1 PUSH4 0x20606B70 GT PUSH2 0x12D JUMPI DUP1 PUSH4 0x3932ABB1 GT PUSH2 0x107 JUMPI DUP1 PUSH4 0x3932ABB1 EQ PUSH2 0x298 JUMPI DUP1 PUSH4 0x3E4F49E6 EQ PUSH2 0x2AD JUMPI DUP1 PUSH4 0x40E58EE5 EQ PUSH2 0x2DA JUMPI PUSH2 0x175 JUMP JUMPDEST DUP1 PUSH4 0x20606B70 EQ PUSH2 0x23E JUMPI DUP1 PUSH4 0x24BC1A64 EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0x328DD982 EQ PUSH2 0x268 JUMPI PUSH2 0x175 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 GT PUSH2 0x15E JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1DA JUMPI DUP1 PUSH4 0x15373E3D EQ PUSH2 0x1FC JUMPI DUP1 PUSH4 0x17977C61 EQ PUSH2 0x21E JUMPI PUSH2 0x175 JUMP JUMPDEST DUP1 PUSH4 0x13CF08B EQ PUSH2 0x17A JUMPI DUP1 PUSH4 0x2A251A3 EQ PUSH2 0x1B8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x186 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19A PUSH2 0x195 CALLDATASIZE PUSH1 0x4 PUSH2 0x25D0 JUMP JUMPDEST PUSH2 0x425 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1AF SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x364F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CD PUSH2 0x48B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1AF SWAP2 SWAP1 PUSH2 0x33BC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1EF PUSH2 0x492 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1AF SWAP2 SWAP1 PUSH2 0x3478 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x208 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21C PUSH2 0x217 CALLDATASIZE PUSH1 0x4 PUSH2 0x2628 JUMP JUMPDEST PUSH2 0x4CB JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CD PUSH2 0x239 CALLDATASIZE PUSH1 0x4 PUSH2 0x244D JUMP JUMPDEST PUSH2 0x4DA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CD PUSH2 0x4EC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CD PUSH2 0x503 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x274 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x288 PUSH2 0x283 CALLDATASIZE PUSH1 0x4 PUSH2 0x25D0 JUMP JUMPDEST PUSH2 0x513 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1AF SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x336F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CD PUSH2 0x7EB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CD PUSH2 0x2C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x25D0 JUMP JUMPDEST PUSH2 0x7F0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1AF SWAP2 SWAP1 PUSH2 0x346A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21C PUSH2 0x2F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x25D0 JUMP JUMPDEST PUSH2 0x9BB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x306 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21C PUSH2 0x315 CALLDATASIZE PUSH1 0x4 PUSH2 0x2658 JUMP JUMPDEST PUSH2 0xC8D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x326 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CD PUSH2 0xE6F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x33B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CD PUSH2 0xE74 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x350 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x359 PUSH2 0xE83 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1AF SWAP2 SWAP1 PUSH2 0x345C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x372 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x359 PUSH2 0xE9F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x387 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CD PUSH2 0xEBB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CD PUSH2 0x3AB CALLDATASIZE PUSH1 0x4 PUSH2 0x2473 JUMP JUMPDEST PUSH2 0xEC1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21C PUSH2 0x3CB CALLDATASIZE PUSH1 0x4 PUSH2 0x25D0 JUMP JUMPDEST PUSH2 0x13D2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CD PUSH2 0x16C9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x405 PUSH2 0x400 CALLDATASIZE PUSH1 0x4 PUSH2 0x25EE JUMP JUMPDEST PUSH2 0x16D5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1AF SWAP2 SWAP1 PUSH2 0x3599 JUMP JUMPDEST PUSH2 0x21C PUSH2 0x420 CALLDATASIZE PUSH1 0x4 PUSH2 0x25D0 JUMP JUMPDEST PUSH2 0x1756 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 S