Data Processor API
Methods
ABI
Bytecode
Source Code

_addDPRequest 3701f582

Adds new Data Processor Request
inputs
0
uint8
_cpuRequest
The number of cpu cores
1
uint8
_memRequest
The amount of ram in GB
2
uint8
_storageRequest
The amount of storage in GB
3
uint8
_bandwidthRequest
The bandwidth amount
4
uint16
_duration
The amount of time the resource can be offered
5
uint8
_minPrice
The minimum price accepted for processing request
6
string
_metadata1
Metadata to store in request
7
string
_metadata2
Metadata to store in request
8
string
_metadata3
Metadata to store in request
9
string
_metadata4
Metadata to store in request
outputs
0
uint256
_rowNumber
Data processor request id

_addProcessorToOrder 4509b7e0

Adds a processor to order
inputs
0
uint256
_orderItem
Order number
1
address
processor
Processor address
outputs
0
bool
success
Status of operation

_addResultToOrder 14e9f384

Adds result to order
inputs
0
uint256
_orderItem
Order number
1
string
_result
processor output after processing
outputs
0
bool
success
Status of operation

_approveOrder efa09d85

Approves order - orders can be processed only after being approved by other part(do/dp)
inputs
0
uint256
_orderItem
the order id
outputs
0
bool
success
Status of operation

_cancelDPRequest 676a96d8

Cancels a data processor request
inputs
0
uint256
_requestListItem
the request id

_getDPRequest 00d74970

Gets details of a specific data processor request
inputs
0
uint256
_requestListItem
the request id
outputs
0
address
dproc
Data processor address
1
uint8
cpuRequest
The number of cpu cores[maximum 255]
2
uint8
memoryRequest
The amount of ram in GB[maximum 255]
3
uint8
storageRequest
The amount of storage in GB[maximum 255]
4
uint8
bandwidthRequest
The bandwidth amount[maximum 255]
5
uint16
duration
The amount of time the resource can be offered
6
uint8
minPrice
The minimum price accepted for processing request
7
uint256
status
The request status [values in Available/Booked/Canceled

_getDPRequestMetadata 98455999

Gets metadata of a data processor request
inputs
0
uint256
_requestListItem
the request id
outputs
0
address
dproc
1
string
metadata1
2
string
metadata2
3
string
metadata3
4
string
metadata4

_getDPRequestsCount e780ada1

Gets total count of Data Processor Requests
outputs
0
uint256
_length
The counter of dp requests

_getMyDOOrders a8203abb

Gets the list of orders
outputs
0
uint256[]
req
Orders list
function, constant

_getMyDPRequests 4c1782e5

Gets all data processor request id list
outputs
0
uint256[]
req
An array containing all data processor requests

_getOrder b3bb3da3

Gets order info
inputs
0
uint256
_orderItem
the order id
outputs
0
address
downer
Data owner address
1
address
dproc
Data processor address
2
uint256
doRequest
Data owner request id
3
uint256
dpRequest
Data processor request id
4
uint256
status
Order status

_getOrdersCount 246439e6

Gets order count
outputs
0
uint256
_length
Order count

_getResultFromOrder 008a81a6

Gets result from order
inputs
0
uint256
_orderItem
Order number
outputs
0
string
_Result
Order Result

_placeOrder 9818e66c

Places new order - this can placed by dp/do
inputs
0
uint256
_doRequestItem
the data owner request id
1
uint256
_dpRequestItem
the data processor request id
outputs
0
uint256
_orderNumber
Order number
1
"[{\"constant\":true,\"inputs\":[{\"name\":\"_orderItem\",\"type\":\"uint256\"}],\"name\":\"_getResultFromOrder\",\"outputs\":[{\"name\":\"_Result\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_requestListItem\",\"type\":\"uint256\"}],\"name\":\"_getDPRequest\",\"outputs\":[{\"name\":\"dproc\",\"type\":\"address\"},{\"name\":\"cpuRequest\",\"type\":\"uint8\"},{\"name\":\"memoryRequest\",\"type\":\"uint8\"},{\"name\":\"storageRequest\",\"type\":\"uint8\"},{\"name\":\"bandwidthRequest\",\"type\":\"uint8\"},{\"name\":\"duration\",\"type\":\"uint16\"},{\"name\":\"minPrice\",\"type\":\"uint8\"},{\"name\":\"status\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"tokens\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orderItem\",\"type\":\"uint256\"},{\"name\":\"_result\",\"type\":\"string\"}],\"name\":\"_addResultToOrder\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_requestListItem\",\"type\":\"uint256\"},{\"name\":\"_metadataItem\",\"type\":\"uint256\"}],\"name\":\"_getMetadataValueForDPRequest\",\"outputs\":[{\"name\":\"key\",\"type\":\"string\"},{\"name\":\"value\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokens\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"_getOrdersCount\",\"outputs\":[{\"name\":\"_length\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_cpuRequest\",\"type\":\"uint8\"},{\"name\":\"_memRequest\",\"type\":\"uint8\"},{\"name\":\"_storageRequest\",\"type\":\"uint8\"},{\"name\":\"_bandwidthRequest\",\"type\":\"uint8\"},{\"name\":\"_duration\",\"type\":\"uint16\"},{\"name\":\"_minPrice\",\"type\":\"uint8\"},{\"name\":\"_metadata1\",\"type\":\"string\"},{\"name\":\"_metadata2\",\"type\":\"string\"},{\"name\":\"_metadata3\",\"type\":\"string\"},{\"name\":\"_metadata4\",\"type\":\"string\"}],\"name\":\"_addDPRequest\",\"outputs\":[{\"name\":\"_rowNumber\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"_totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_newProxy\",\"type\":\"address\"}],\"name\":\"transferProxy\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_requestListItem\",\"type\":\"uint256\"},{\"name\":\"_key\",\"type\":\"string\"},{\"name\":\"_value\",\"type\":\"string\"}],\"name\":\"_addMetadataToRequest\",\"outputs\":[{\"name\":\"_rowNumber\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orderItem\",\"type\":\"uint256\"},{\"name\":\"processor\",\"type\":\"address\"}],\"name\":\"_addProcessorToOrder\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"_getMyDPRequests\",\"outputs\":[{\"name\":\"req\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_requestListItem\",\"type\":\"uint256\"}],\"name\":\"_getDORequest\",\"outputs\":[{\"name\":\"downer\",\"type\":\"address\"},{\"name\":\"cpuRequest\",\"type\":\"uint8\"},{\"name\":\"memoryRequest\",\"type\":\"uint8\"},{\"name\":\"storageRequest\",\"type\":\"uint8\"},{\"name\":\"bandwidthRequest\",\"type\":\"uint8\"},{\"name\":\"duration\",\"type\":\"uint16\"},{\"name\":\"maxPrice\",\"type\":\"uint8\"},{\"name\":\"status\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_requestListItem\",\"type\":\"uint256\"}],\"name\":\"_getMetadataCountForRequest\",\"outputs\":[{\"name\":\"_length\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_requestListItem\",\"type\":\"uint256\"}],\"name\":\"_cancelDPRequest\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenOwner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"implementationPro\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"_getDORequestsCount\",\"outputs\":[{\"name\":\"_length\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_cpuRequest\",\"type\":\"uint8\"},{\"name\":\"_memRequest\",\"type\":\"uint8\"},{\"name\":\"_storageRequest\",\"type\":\"uint8\"},{\"name\":\"_bandwidthRequest\",\"type\":\"uint8\"},{\"name\":\"_duration\",\"type\":\"uint16\"},{\"name\":\"_instances\",\"type\":\"uint8\"},{\"name\":\"_maxPrice\",\"type\":\"uint8\"},{\"name\":\"_metadata1\",\"type\":\"string\"},{\"name\":\"_metadata2\",\"type\":\"string\"},{\"name\":\"_metadata3\",\"type\":\"string\"},{\"name\":\"_metadata4\",\"type\":\"string\"}],\"name\":\"_addDORequest\",\"outputs\":[{\"name\":\"_rowNumber\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"_getMyDORequests\",\"outputs\":[{\"name\":\"req\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_doRequestItem\",\"type\":\"uint256\"},{\"name\":\"_dpRequestItem\",\"type\":\"uint256\"}],\"name\":\"_placeOrder\",\"outputs\":[{\"name\":\"_orderNumber\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_requestListItem\",\"type\":\"uint256\"}],\"name\":\"_getDPRequestMetadata\",\"outputs\":[{\"name\":\"dproc\",\"type\":\"address\"},{\"name\":\"metadata1\",\"type\":\"string\"},{\"name\":\"metadata2\",\"type\":\"string\"},{\"name\":\"metadata3\",\"type\":\"string\"},{\"name\":\"metadata4\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_requestListItem\",\"type\":\"uint256\"}],\"name\":\"_cancelDORequest\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"FixedSupplyToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"_getMyDOOrders\",\"outputs\":[{\"name\":\"req\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokens\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_orderItem\",\"type\":\"uint256\"}],\"name\":\"_getOrder\",\"outputs\":[{\"name\":\"downer\",\"type\":\"address\"},{\"name\":\"dproc\",\"type\":\"address\"},{\"name\":\"doRequest\",\"type\":\"uint256\"},{\"name\":\"dpRequest\",\"type\":\"uint256\"},{\"name\":\"status\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_requestListItem\",\"type\":\"uint256\"},{\"name\":\"_key\",\"type\":\"string\"},{\"name\":\"_value\",\"type\":\"string\"}],\"name\":\"_addMetadataToDPRequest\",\"outputs\":[{\"name\":\"_rowNumber\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"tokens\",\"type\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"newOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_requestListItem\",\"type\":\"uint256\"}],\"name\":\"_getDORequestMetadata\",\"outputs\":[{\"name\":\"downer\",\"type\":\"address\"},{\"name\":\"metadata1\",\"type\":\"string\"},{\"name\":\"metadata2\",\"type\":\"string\"},{\"name\":\"metadata3\",\"type\":\"string\"},{\"name\":\"metadata4\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"tokenAddress\",\"type\":\"address\"},{\"name\":\"tokens\",\"type\":\"uint256\"}],\"name\":\"transferAnyERC20Token\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenOwner\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"remaining\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_requestListItem\",\"type\":\"uint256\"}],\"name\":\"_getMetadataCountForDPRequest\",\"outputs\":[{\"name\":\"_length\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"_getDPRequestsCount\",\"outputs\":[{\"name\":\"_length\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orderItem\",\"type\":\"uint256\"}],\"name\":\"_approveOrder\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_requestListItem\",\"type\":\"uint256\"},{\"name\":\"_metadataItem\",\"type\":\"uint256\"}],\"name\":\"_getMetadataValueForRequest\",\"outputs\":[{\"name\":\"key\",\"type\":\"string\"},{\"name\":\"value\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"caller\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"ProxyTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"tokens\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"tokenOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"tokens\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"}]"
Copied!
1
6080604052336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040805190810160405280600f81526020017f45746865726e69747920546f6b656e000000000000000000000000000000000081525060049080519060200190620000d292919062000255565b506040805190810160405280600481526020017f45544e5900000000000000000000000000000000000000000000000000000000815250600390805190602001906200012092919062000255565b506012600560006101000a81548160ff021916908360ff160217905550600560009054906101000a900460ff1660ff16600a0a633b9aca0002600681905550600654600760008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006546040518082815260200191505060405180910390a362000304565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200029857805160ff1916838001178555620002c9565b82800160010185558215620002c9579182015b82811115620002c8578251825591602001919060010190620002ab565b5b509050620002d89190620002dc565b5090565b6200030191905b80821115620002fd576000816000905550600101620002e3565b5090565b90565b617a6880620003146000396000f300608060405260043610610239576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680628a81a61461023e578062d74970146102e457806306fdde03146103a8578063095ea7b31461043857806314e9f3841461049d57806318160ddd146105285780632118c02c1461055357806323b872dd1461066f578063246439e6146106f4578063313ce5671461071f5780633701f582146107505780633eaaf86b146108ee578063438787d01461091957806344cc3c7f1461095c5780634509b7e014610a295780634c1782e514610a8e5780634f74787b14610afa5780635c60da1b14610bbe5780635d87b6e614610c15578063676a96d814610c5657806370a0823114610c8357806374ed9ae414610cda57806379ba509714610d315780637aed121414610d485780638da5cb5b14610d7357806392b9377414610dca5780639313236614610f7557806395d89b4114610fe15780639818e66c1461107157806398455999146110bc5780639ecbec41146112d9578063a1183d5014611306578063a8203abb1461131d578063a9059cbb14611389578063b3bb3da3146113ee578063b5d11dfa146114a3578063cae9ca5114611570578063d4ee1d901461161b578063d9edc13914611672578063dc39d06d1461188f578063dd62ed3e146118f4578063e2eef9c31461196b578063e780ada1146119ac578063efa09d85146119d7578063f2fde38b14611a1c578063f4de530514611a5f578063fc9c8d3914611b7b575b600080fd5b34801561024a57600080fd5b5061026960048036038101908080359060200190929190505050611bd2565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102a957808201518184015260208101905061028e565b50505050905090810190601f1680156102d65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102f057600080fd5b5061030f60048036038101908080359060200190929190505050611f0b565b604051808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018860ff1660ff1681526020018760ff1660ff1681526020018660ff1660ff1681526020018560ff1660ff1681526020018461ffff1661ffff1681526020018360ff1660ff1681526020018281526020019850505050505050505060405180910390f35b3480156103b457600080fd5b506103bd6121ac565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103fd5780820151818401526020810190506103e2565b50505050905090810190601f16801561042a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561044457600080fd5b50610483600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061224a565b604051808215151515815260200191505060405180910390f35b3480156104a957600080fd5b5061050e60048036038101908080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061233c565b604051808215151515815260200191505060405180910390f35b34801561053457600080fd5b5061053d6125f3565b6040518082815260200191505060405180910390f35b34801561055f57600080fd5b50610588600480360381019080803590602001909291908035906020019092919050505061263e565b604051808060200180602001838103835285818151815260200191508051906020019080838360005b838110156105cc5780820151818401526020810190506105b1565b50505050905090810190601f1680156105f95780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015610632578082015181840152602081019050610617565b50505050905090810190601f16801561065f5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b34801561067b57600080fd5b506106da600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612975565b604051808215151515815260200191505060405180910390f35b34801561070057600080fd5b50610709612c20565b6040518082815260200191505060405180910390f35b34801561072b57600080fd5b50610734612c89565b604051808260ff1660ff16815260200191505060405180910390f35b34801561075c57600080fd5b506108d8600480360381019080803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803561ffff169060200190929190803560ff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050612c9c565b6040518082815260200191505060405180910390f35b3480156108fa57600080fd5b50610903613288565b6040518082815260200191505060405180910390f35b34801561092557600080fd5b5061095a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061328e565b005b34801561096857600080fd5b50610a1360048036038101908080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506133bc565b6040518082815260200191505060405180910390f35b348015610a3557600080fd5b50610a7460048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061362e565b604051808215151515815260200191505060405180910390f35b348015610a9a57600080fd5b50610aa361390f565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610ae6578082015181840152602081019050610acb565b505050509050019250505060405180910390f35b348015610b0657600080fd5b50610b2560048036038101908080359060200190929190505050613a00565b604051808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018860ff1660ff1681526020018760ff1660ff1681526020018660ff1660ff1681526020018560ff1660ff1681526020018461ffff1661ffff1681526020018360ff1660ff1681526020018281526020019850505050505050505060405180910390f35b348015610bca57600080fd5b50610bd3613ca1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c2157600080fd5b50610c4060048036038101908080359060200190929190505050613cc7565b6040518082815260200191505060405180910390f35b348015610c6257600080fd5b50610c8160048036038101908080359060200190929190505050613dd6565b005b348015610c8f57600080fd5b50610cc4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506140d4565b6040518082815260200191505060405180910390f35b348015610ce657600080fd5b50610cef61411d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610d3d57600080fd5b50610d46614143565b005b348015610d5457600080fd5b50610d5d6142e2565b6040518082815260200191505060405180910390f35b348015610d7f57600080fd5b50610d8861434b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610dd657600080fd5b50610f5f600480360381019080803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803561ffff169060200190929190803560ff169060200190929190803560ff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050614370565b6040518082815260200191505060405180910390f35b348015610f8157600080fd5b50610f8a614a55565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610fcd578082015181840152602081019050610fb2565b505050509050019250505060405180910390f35b348015610fed57600080fd5b50610ff6614b46565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561103657808201518184015260208101905061101b565b50505050905090810190601f1680156110635780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561107d57600080fd5b506110a66004803603810190808035906020019092919080359060200190929190505050614be4565b6040518082815260200191505060405180910390f35b3480156110c857600080fd5b506110e76004803603810190808035906020019092919050505061562d565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018060200180602001858103855289818151815260200191508051906020019080838360005b8381101561116557808201518184015260208101905061114a565b50505050905090810190601f1680156111925780820380516001836020036101000a031916815260200191505b50858103845288818151815260200191508051906020019080838360005b838110156111cb5780820151818401526020810190506111b0565b50505050905090810190601f1680156111f85780820380516001836020036101000a031916815260200191505b50858103835287818151815260200191508051906020019080838360005b83811015611231578082015181840152602081019050611216565b50505050905090810190601f16801561125e5780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b8381101561129757808201518184015260208101905061127c565b50505050905090810190601f1680156112c45780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b3480156112e557600080fd5b50611304600480360381019080803590602001909291905050506159f4565b005b34801561131257600080fd5b5061131b615cec565b005b34801561132957600080fd5b50611332615eb3565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561137557808201518184015260208101905061135a565b505050509050019250505060405180910390f35b34801561139557600080fd5b506113d4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050615fa4565b604051808215151515815260200191505060405180910390f35b3480156113fa57600080fd5b506114196004803603810190808035906020019092919050505061613f565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019550505050505060405180910390f35b3480156114af57600080fd5b5061155a60048036038101908080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061633c565b6040518082815260200191505060405180910390f35b34801561157c57600080fd5b50611601600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506165d4565b604051808215151515815260200191505060405180910390f35b34801561162757600080fd5b50611630616823565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561167e57600080fd5b5061169d60048036038101908080359060200190929190505050616849565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018060200180602001858103855289818151815260200191508051906020019080838360005b8381101561171b578082015181840152602081019050611700565b50505050905090810190601f1680156117485780820380516001836020036101000a031916815260200191505b50858103845288818151815260200191508051906020019080838360005b83811015611781578082015181840152602081019050611766565b50505050905090810190601f1680156117ae5780820380516001836020036101000a031916815260200191505b50858103835287818151815260200191508051906020019080838360005b838110156117e75780820151818401526020810190506117cc565b50505050905090810190601f1680156118145780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b8381101561184d578082015181840152602081019050611832565b50505050905090810190601f16801561187a5780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b34801561189b57600080fd5b506118da600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050616c7d565b604051808215151515815260200191505060405180910390f35b34801561190057600080fd5b50611955600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050616e70565b6040518082815260200191505060405180910390f35b34801561197757600080fd5b5061199660048036038101908080359060200190929190505050616ef7565b6040518082815260200191505060405180910390f35b3480156119b857600080fd5b506119c1617006565b6040518082815260200191505060405180910390f35b3480156119e357600080fd5b50611a026004803603810190808035906020019092919050505061706f565b604051808215151515815260200191505060405180910390f35b348015611a2857600080fd5b50611a5d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050617454565b005b348015611a6b57600080fd5b50611a946004803603810190808035906020019092919080359060200190929190505050617582565b604051808060200180602001838103835285818151815260200191508051906020019080838360005b83811015611ad8578082015181840152602081019050611abd565b50505050905090810190601f168015611b055780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015611b3e578082015181840152602081019050611b23565b50505050905090810190601f168015611b6b5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b348015611b8757600080fd5b50611b906178b9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60606000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c3257600080fd5b60008310158015611c47575060108054905083105b1515611cbb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f696e76616c6964206f7264657220696e6465780000000000000000000000000081525060200191505060405180910390fd5b601083815481101515611cca57fe5b90600052602060002090600c020190508060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611da1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f6f6e6c79206f776e65722063616e20726561642074686520726573756c74730081525060200191505060405180910390fd5b60026003811115611dae57fe5b81600b0160009054906101000a900460ff166003811115611dcb57fe5b141515611e66576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f6f6e6c7920636c6f736564206f7264657273206861766520746865207265737581526020017f6c7400000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806009018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611efe5780601f10611ed357610100808354040283529160200191611efe565b820191906000526020600020905b815481529060010190602001808311611ee157829003601f168201915b5050505050915050919050565b600080600080600080600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f7357600080fd5b60008910158015611f885750600f8054905089105b1515611ffc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f496e76616c696420696e6465782070726f76696465642e00000000000000000081525060200191505060405180910390fd5b600f8981548110151561200b57fe5b906000526020600020906008020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169750600f8981548110151561204e57fe5b906000526020600020906008020160070160009054906101000a900460ff16600281111561207857fe5b905087600f8a81548110151561208a57fe5b906000526020600020906008020160000160149054906101000a900460ff16600f8b8154811015156120b857fe5b906000526020600020906008020160000160159054906101000a900460ff16600f8c8154811015156120e657fe5b906000526020600020906008020160000160169054906101000a900460ff16600f8d81548110151561211457fe5b906000526020600020906008020160000160179054906101000a900460ff16600f8e81548110151561214257fe5b906000526020600020906008020160000160189054906101000a900461ffff16600f8f81548110151561217157fe5b9060005260206000209060080201600001601a9054906101000a900460ff168797509750975097509750975097509750919395975091939597565b60048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156122425780601f1061221757610100808354040283529160200191612242565b820191906000526020600020905b81548152906001019060200180831161222557829003601f168201915b505050505081565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561239b57600080fd5b600084101580156123b0575060108054905084105b1515612424576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f696e76616c6964206f7264657220696e6465780000000000000000000000000081525060200191505060405180910390fd5b60108481548110151561243357fe5b90600052602060002090600c020190508060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561250a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f6f6e6c792070726f636573736f722063616e20616464206120726573756c740081525060200191505060405180910390fd5b6001600381111561251757fe5b81600b0160009054906101000a900460ff16600381111561253457fe5b1415156125a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6f6e6c79206f70656e206f72646572732063616e20626520617070726f76656481525060200191505060405180910390fd5b828160090190805190602001906125c1929190617917565b50600281600b0160006101000a81548160ff021916908360038111156125e357fe5b0217905550600191505092915050565b6000600760008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460065403905090565b606080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561269d57600080fd5b600084101580156126b25750600f8054905084105b1515612726576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f696e76616c6964207265717565737420696e646578000000000000000000000081525060200191505060405180910390fd5b600083101580156127565750600f8481548110151561274157fe5b90600052602060002090600802016006015483105b15156127ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f696e76616c6964206d657461646174614974656d20696e64657800000000000081525060200191505060405180910390fd5b600f848154811015156127d957fe5b90600052602060002090600802016005016000848152602001908152602001600020600001600f8581548110151561280d57fe5b90600052602060002090600802016005016000858152602001908152602001600020600101818054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156128c75780601f1061289c576101008083540402835291602001916128c7565b820191906000526020600020905b8154815290600101906020018083116128aa57829003601f168201915b50505050509150808054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156129635780601f1061293857610100808354040283529160200191612963565b820191906000526020600020905b81548152906001019060200180831161294657829003601f168201915b50505050509050915091509250929050565b60006129c982600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546178df90919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a9b82600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546178df90919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b6d82600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546178fb90919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612c7e57600080fd5b601080549050905090565b600560009054906101000a900460ff1681565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612cfa57600080fd5b60008b60ff16118015612d13575060ff80168b60ff1611155b1515612d87576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6370755265717565737420697320696e76616c6964000000000000000000000081525060200191505060405180910390fd5b60008a60ff16118015612da0575060ff80168a60ff1611155b1515612e14576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6d656d5265717565737420697320696e76616c6964000000000000000000000081525060200191505060405180910390fd5b60008860ff16118015612e2d575060ff80168860ff1611155b1515612ea1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f62616e6477696474685265717565737420697320696e76616c6964000000000081525060200191505060405180910390fd5b60008960ff16118015612eba575060ff80168960ff1611155b1515612f2e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f73746f726167655265717565737420697320696e76616c69640000000000000081525060200191505060405180910390fd5b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600f8054905090806001815401808255809150509060018203906000526020600020016000909192909190915055506001600f6101e0604051908101604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018e60ff1681526020018d60ff1681526020018c60ff1681526020018b60ff1681526020018a61ffff1681526020018960ff1681526020014263ffffffff168152602001600060ff168152602001888152602001878152602001868152602001858152602001600081526020016000600281111561304257fe5b8152509080600181540180825580915050906001820390600052602060002090600802016000909192909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548160ff021916908360ff16021790555060408201518160000160156101000a81548160ff021916908360ff16021790555060608201518160000160166101000a81548160ff021916908360ff16021790555060808201518160000160176101000a81548160ff021916908360ff16021790555060a08201518160000160186101000a81548161ffff021916908361ffff16021790555060c082015181600001601a6101000a81548160ff021916908360ff16021790555060e082015181600001601b6101000a81548163ffffffff021916908363ffffffff16021790555061010082015181600001601f6101000a81548160ff021916908360ff1602179055506101208201518160010190805190602001906131e5929190617997565b50610140820151816002019080519060200190613203929190617997565b50610160820151816003019080519060200190613221929190617997565b5061018082015181600401908051906020019061323f929190617997565b506101a082015181600601556101c08201518160070160006101000a81548160ff0219169083600281111561327057fe5b021790555050500390509a9950505050505050505050565b60065481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613378576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f81526020017f6e2e00000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561341b57600080fd5b600085101580156134305750600e8054905085105b15156134a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f696e76616c6964207265717565737420696e646578000000000000000000000081525060200191505060405180910390fd5b600e858154811015156134b357fe5b906000526020600020906009020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613587576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f6f6e6c792064617461206f776e65722063616e206d6f6469667920746869730081525060200191505060405180910390fd5b600e8581548110151561359657fe5b90600052602060002090600902019050838160060160008360070154815260200190815260200160002060000190805190602001906135d6929190617917565b5082816006016000836007015481526020019081526020016000206001019080519060200190613607929190617917565b50806007016000815480929190600101919050555060018160070154039150509392505050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561368d57600080fd5b600084101580156136a2575060108054905084105b1515613716576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f696e76616c6964206f7264657220696e6465780000000000000000000000000081525060200191505060405180910390fd5b60108481548110151561372557fe5b90600052602060002090600c020190508060000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613822576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001807f6f6e6c7920646174612070726f636573736f722063616e20616464206120707281526020017f6f636573736f720000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001600381111561382f57fe5b81600b0160009054906101000a900460ff16600381111561384c57fe5b1415156138c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6f6e6c79206f70656e206f72646572732063616e20626520617070726f76656481525060200191505060405180910390fd5b828160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600191505092915050565b6060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561396d57600080fd5b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156139f657602002820191906000526020600020905b8154815260200190600101908083116139e2575b5050505050905090565b600080600080600080600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613a6857600080fd5b60008910158015613a7d5750600e8054905089105b1515613af1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f696e76616c6964207265717565737420696e646578000000000000000000000081525060200191505060405180910390fd5b600e89815481101515613b0057fe5b906000526020600020906009020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169750600e89815481101515613b4357fe5b906000526020600020906009020160080160009054906101000a900460ff166002811115613b6d57fe5b905087600e8a815481101515613b7f57fe5b906000526020600020906009020160000160149054906101000a900460ff16600e8b815481101515613bad57fe5b906000526020600020906009020160000160159054906101000a900460ff16600e8c815481101515613bdb57fe5b906000526020600020906009020160000160169054906101000a900460ff16600e8d815481101515613c0957fe5b906000526020600020906009020160000160179054906101000a900460ff16600e8e815481101515613c3757fe5b906000526020600020906009020160000160189054906101000a900461ffff16600e8f815481101515613c6657fe5b906000526020600020906009020160010160009054906101000a900460ff168797509750975097509750975097509750919395975091939597565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613d2557600080fd5b60008210158015613d3a5750600e8054905082105b1515613dae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f696e76616c6964207265717565737420696e646578000000000000000000000081525060200191505060405180910390fd5b600e82815481101515613dbd57fe5b9060005260206000209060090201600701549050919050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613e3457600080fd5b60008210158015613e495750600f8054905082105b1515613ebd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f696e76616c6964207265717565737420696e646578000000000000000000000081525060200191505060405180910390fd5b600f82815481101515613ecc57fe5b906000526020600020906008020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613fc6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f6f6e6c792064656c6567617465642070726f636573736f722063616e206d6f6481526020017f696679207468697300000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600f82815481101515613fd557fe5b9060005260206000209060080201905060006002811115613ff257fe5b8160070160009054906101000a900460ff16600281111561400f57fe5b1415156140aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4f6e6c7920617661696c61626c65207374617475732063616e2062652063616e81526020017f63656c656400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60028160070160006101000a81548160ff021916908360028111156140cb57fe5b02179055505050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561419f57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561434057600080fd5b600e80549050905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156143ce57600080fd5b60008760ff161180156143e85750600a60ff168760ff1611155b151561445c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f696e7374616e636520697320696e76616c69640000000000000000000000000081525060200191505060405180910390fd5b60008c60ff16118015614475575060ff80168c60ff1611155b15156144e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6370755265717565737420697320696e76616c6964000000000000000000000081525060200191505060405180910390fd5b60008b60ff16118015614502575060ff80168b60ff1611155b1515614576576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6d656d5265717565737420697320696e76616c6964000000000000000000000081525060200191505060405180910390fd5b60008960ff1611801561458f575060ff80168960ff1611155b1515614603576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f62616e6477696474685265717565737420697320696e76616c6964000000000081525060200191505060405180910390fd5b60008a60ff1611801561461c575060ff80168a60ff1611155b1515614690576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f73746f726167655265717565737420697320696e76616c69640000000000000081525060200191505060405180910390fd5b601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600e8054905090806001815401808255809150509060018203906000526020600020016000909192909190915055506001600e610220604051908101604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018f60ff1681526020018e60ff1681526020018d60ff1681526020018c60ff1681526020018b61ffff1681526020018a60ff168152602001600060ff1681526020014263ffffffff1681526020018960ff1681526020018b8b8b0260ff160261ffff1663ffffffff16815260200188815260200187815260200186815260200185815260200160008152602001600060028111156147c457fe5b8152509080600181540180825580915050906001820390600052602060002090600902016000909192909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548160ff021916908360ff16021790555060408201518160000160156101000a81548160ff021916908360ff16021790555060608201518160000160166101000a81548160ff021916908360ff16021790555060808201518160000160176101000a81548160ff021916908360ff16021790555060a08201518160000160186101000a81548161ffff021916908361ffff16021790555060c082015181600001601a6101000a81548160ff021916908360ff16021790555060e082015181600001601b6101000a81548160ff021916908360ff16021790555061010082015181600001601c6101000a81548163ffffffff021916908363ffffffff1602179055506101208201518160010160006101000a81548160ff021916908360ff1602179055506101408201518160010160016101000a81548163ffffffff021916908363ffffffff1602179055506101608201518160020190805190602001906149b1929190617997565b506101808201518160030190805190602001906149cf929190617997565b506101a08201518160040190805190602001906149ed929190617997565b506101c0820151816005019080519060200190614a0b929190617997565b506101e082015181600701556102008201518160080160006101000a81548160ff02191690836002811115614a3c57fe5b021790555050500390509b9a5050505050505050505050565b6060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515614ab357600080fd5b601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015614b3c57602002820191906000526020600020905b815481526020019060010190808311614b28575b5050505050905090565b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015614bdc5780601f10614bb157610100808354040283529160200191614bdc565b820191906000526020600020905b815481529060010190602001808311614bbf57829003601f168201915b505050505081565b600080600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515614c4657600080fd5b60008610158015614c5b5750600e8054905086105b1515614ccf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f696e76616c696420646f207265717565737420696e646578000000000000000081525060200191505060405180910390fd5b60008510158015614ce45750600f8054905085105b1515614d58576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f696e76616c6964206470207265717565737420696e646578000000000000000081525060200191505060405180910390fd5b600e86815481101515614d6757fe5b9060005260206000209060090201925060006002811115614d8457fe5b8360080160009054906101000a900460ff166002811115614da157fe5b141515614e3c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4f6e6c7920617661696c61626c65207374617475732063616e2062652072657181526020017f756573746564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600f85815481101515614e4b57fe5b9060005260206000209060080201915060006002811115614e6857fe5b8260070160009054906101000a900460ff166002811115614e8557fe5b141515614f20576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4f6e6c7920617661696c61626c65207374617475732063616e2062652072657181526020017f756573746564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480614fcd57503373ffffffffffffffffffffffffffffffffffffffff168360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b151561508d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260448152602001807f4f6e6c7920646174612f70726f63657373206f776e6572206f722064656c656781526020017f617465642070726f63657373736f722063616e20706c6163652074686973206f81526020017f726465720000000000000000000000000000000000000000000000000000000081525060600191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415615111578160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050615139565b8260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600183600001601b9054906101000a900460ff160183600001601b6101000a81548160ff021916908360ff16021790555082600001601a9054906101000a900460ff1660ff1683600001601b9054906101000a900460ff1660ff1614156151c15760018360080160006101000a81548160ff021916908360028111156151bb57fe5b02179055505b60018260070160006101000a81548160ff021916908360028111156151e257fe5b0217905550601360008360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206010805490509080600181540180825580915050906001820390600052602060002001600090919290919091505550601360008460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206010805490509080600181540180825580915050906001820390600052602060002001600090919290919091505550600160106101806040519081016040528086600001601b9054906101000a900460ff1660ff1681526020018560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018660000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018881526020018981526020014263ffffffff1681526020016000815260200160206040519081016040528060008152508152602001600081526020016000600381111561543857fe5b8152509080600181540180825580915050906001820390600052602060002090600c02016000909192909190915060008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060808201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a0820151816004015560c0820151816005015560e0820151816006015561010082015181600801556101208201518160090190805190602001906155e9929190617997565b5061014082015181600a015561016082015181600b0160006101000a81548160ff0219169083600381111561561a57fe5b0217905550505003935050505092915050565b60006060806060806000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561569357600080fd5b600087101580156156a85750600f8054905087105b151561571c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f696e76616c6964207265717565737420696e646578000000000000000000000081525060200191505060405180910390fd5b600f8781548110151561572b57fe5b906000526020600020906008020190508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600101826002018360030184600401838054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156158055780601f106157da57610100808354040283529160200191615805565b820191906000526020600020905b8154815290600101906020018083116157e857829003601f168201915b50505050509350828054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156158a15780601f10615876576101008083540402835291602001916158a1565b820191906000526020600020905b81548152906001019060200180831161588457829003601f168201915b50505050509250818054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561593d5780601f106159125761010080835404028352916020019161593d565b820191906000526020600020905b81548152906001019060200180831161592057829003601f168201915b50505050509150808054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156159d95780601f106159ae576101008083540402835291602001916159d9565b820191906000526020600020905b8154815290600101906020018083116159bc57829003601f168201915b50505050509050955095509550955095505091939590929450565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515615a5257600080fd5b60008210158015615a675750600e8054905082105b1515615adb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f696e76616c6964207265717565737420696e646578000000000000000000000081525060200191505060405180910390fd5b600e82815481101515615aea57fe5b906000526020600020906009020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515615bbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f6f6e6c792064617461206f776e65722063616e206d6f6469667920746869730081525060200191505060405180910390fd5b600e82815481101515615bcd57fe5b9060005260206000209060090201905060006002811115615bea57fe5b8160080160009054906101000a900460ff166002811115615c0757fe5b148015615c285750600081600001601b9054906101000a900460ff1660ff16145b1515615cc2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4f6e6c7920617661696c61626c65207374617475732063616e2062652063616e81526020017f63656c656400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60028160080160006101000a81548160ff02191690836002811115615ce357fe5b02179055505050565b6040805190810160405280600581526020017f464958454400000000000000000000000000000000000000000000000000000081525060039080519060200190615d37929190617917565b506040805190810160405280601a81526020017f4578616d706c6520466978656420537570706c7920546f6b656e00000000000081525060049080519060200190615d83929190617917565b506012600560006101000a81548160ff021916908360ff160217905550600560009054906101000a900460ff1660ff16600a0a620f424002600681905550600654600760008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006546040518082815260200191505060405180910390a3565b6060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515615f1157600080fd5b601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015615f9a57602002820191906000526020600020905b815481526020019060010190808311615f86575b5050505050905090565b6000615ff882600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546178df90919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061608d82600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546178fb90919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000806000806000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156161a357600080fd5b600086101580156161b85750600e8054905086105b151561622c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f696e76616c6964207265717565737420696e646578000000000000000000000081525060200191505060405180910390fd5b60108681548110151561623b57fe5b90600052602060002090600c020160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660108781548110151561627c57fe5b90600052602060002090600c020160000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166010888154811015156162bd57fe5b90600052602060002090600c0201600501546010898154811015156162de57fe5b90600052602060002090600c02016004015460108a8154811015156162ff57fe5b90600052602060002090600c0201600b0160009054906101000a900460ff16600381111561632957fe5b9450945094509450945091939590929450565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561639b57600080fd5b600085101580156163b05750600f8054905085105b1515616424576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f696e76616c6964207265717565737420696e646578000000000000000000000081525060200191505060405180910390fd5b600f8581548110151561643357fe5b906000526020600020906008020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561652d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f6f6e6c79207468652064656c6567617465642070726f636573736f722063616e81526020017f206d6f646966792074686973000000000000000000000000000000000000000081525060400191505060405180910390fd5b600f8581548110151561653c57fe5b906000526020600020906008020190508381600501600083600601548152602001908152602001600020600001908051906020019061657c929190617917565b50828160050160008360060154815260200190815260200160002060010190805190602001906165ad929190617917565b50806006016000815480929190600101919050555060018160060154039150509392505050565b600082600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156167b1578082015181840152602081019050616796565b50505050905090810190601f1680156167de5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561680057600080fd5b505af1158015616814573d6000803e3d6000fd5b50505050600190509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000606080606080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156168ad57600080fd5b600086101580156168c25750600e8054905086105b1515616936576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f696e76616c6964207265717565737420696e646578000000000000000000000081525060200191505060405180910390fd5b600e8681548110151561694557fe5b906000526020600020906009020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945084600e8781548110151561698957fe5b9060005260206000209060090201600201600e888154811015156169a957fe5b9060005260206000209060090201600301600e898154811015156169c957fe5b9060005260206000209060090201600401600e8a8154811015156169e957fe5b9060005260206000209060090201600501838054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015616a8f5780601f10616a6457610100808354040283529160200191616a8f565b820191906000526020600020905b815481529060010190602001808311616a7257829003601f168201915b50505050509350828054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015616b2b5780601f10616b0057610100808354040283529160200191616b2b565b820191906000526020600020905b815481529060010190602001808311616b0e57829003601f168201915b50505050509250818054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015616bc75780601f10616b9c57610100808354040283529160200191616bc7565b820191906000526020600020905b815481529060010190602001808311616baa57829003601f168201915b50505050509150808054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015616c635780601f10616c3857610100808354040283529160200191616c63565b820191906000526020600020905b815481529060010190602001808311616c4657829003601f168201915b505050505090509450945094509450945091939590929450565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515616d69576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f81526020017f6e2e00000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015616e2d57600080fd5b505af1158015616e41573d6000803e3d6000fd5b505050506040513d6020811015616e5757600080fd5b8101908080519060200190929190505050905092915050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515616f5557600080fd5b60008210158015616f6a5750600f8054905082105b1515616fde576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f696e76616c6964207265717565737420696e646578000000000000000000000081525060200191505060405180910390fd5b600f82815481101515616fed57fe5b9060005260206000209060080201600601549050919050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561706457600080fd5b600f80549050905090565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156170ce57600080fd5b600083101580156170e3575060108054905083105b1515617157576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f696e76616c6964206f7264657220696e6465780000000000000000000000000081525060200191505060405180910390fd5b60108381548110151561716657fe5b90600052602060002090600c020190508060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061722357508060000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156172bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001807f6f6e6c792064617461206f776e6572206f7220646174612070726f636573736f81526020017f722063616e20617070726f76652074686973000000000000000000000000000081525060400191505060405180910390fd5b8060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151515617385576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f746865206f746865722070617274792073686f756c6420617070726f7665000081525060200191505060405180910390fd5b6000600381111561739257fe5b81600b0160009054906101000a900460ff1660038111156173af57fe5b141515617424576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6f6e6c79206f70656e206f72646572732063616e20626520617070726f76656481525060200191505060405180910390fd5b600181600b0160006101000a81548160ff0219169083600381111561744557fe5b02179055506001915050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561753e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f81526020017f6e2e00000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156175e157600080fd5b600084101580156175f65750600e8054905084105b151561766a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f696e76616c6964207265717565737420696e646578000000000000000000000081525060200191505060405180910390fd5b6000831015801561769a5750600e8481548110151561768557fe5b90600052602060002090600902016007015483105b151561770e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f696e76616c6964206d657461646174614974656d20696e64657800000000000081525060200191505060405180910390fd5b600e8481548110151561771d57fe5b90600052602060002090600902016006016000848152602001908152602001600020600001600e8581548110151561775157fe5b90600052602060002090600902016006016000858152602001908152602001600020600101818054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561780b5780601f106177e05761010080835404028352916020019161780b565b820191906000526020600020905b8154815290600101906020018083116177ee57829003601f168201915b50505050509150808054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156178a75780601f1061787c576101008083540402835291602001916178a7565b820191906000526020600020905b81548152906001019060200180831161788a57829003601f168201915b50505050509050915091509250929050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008282111515156178f057600080fd5b818303905092915050565b6000818301905082811015151561791157600080fd5b92915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061795857805160ff1916838001178555617986565b82800160010185558215617986579182015b8281111561798557825182559160200191906001019061796a565b5b5090506179939190617a17565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106179d857805160ff1916838001178555617a06565b82800160010185558215617a06579182015b82811115617a055782518255916020019190600101906179ea565b5b509050617a139190617a17565b5090565b617a3991905b80821115617a35576000816000905550600101617a1d565b5090565b905600a165627a7a72305820c83b839f50fbb3be3d13b774e7febbe3c68cc931ddf606430b3e0bf9963fe4df0029
2
3
Opcodes
4
5
PUSH1 0x80 PUSH1 0x40 MSTORE CALLER PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP CALLER PUSH1 0x2 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xF DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x45746865726E69747920546F6B656E0000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x4 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0xD2 SWAP3 SWAP2 SWAP1 PUSH3 0x255 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x45544E5900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x3 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x120 SWAP3 SWAP2 SWAP1 PUSH3 0x255 JUMP JUMPDEST POP PUSH1 0x12 PUSH1 0x5 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0xFF AND PUSH1 0xA EXP PUSH4 0x3B9ACA00 MUL PUSH1 0x6 DUP2 SWAP1 SSTORE POP PUSH1 0x6 SLOAD PUSH1 0x7 PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH3 0x304 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x298 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x2C9 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x2C9 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x2C8 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x2AB JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH3 0x2D8 SWAP2 SWAP1 PUSH3 0x2DC JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH3 0x301 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x2FD JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH3 0x2E3 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7A68 DUP1 PUSH3 0x314 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x239 JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 PUSH3 0x8A81A6 EQ PUSH2 0x23E JUMPI DUP1 PUSH3 0xD74970 EQ PUSH2 0x2E4 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x3A8 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x438 JUMPI DUP1 PUSH4 0x14E9F384 EQ PUSH2 0x49D JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x528 JUMPI DUP1 PUSH4 0x2118C02C EQ PUSH2 0x553 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x66F JUMPI DUP1 PUSH4 0x246439E6 EQ PUSH2 0x6F4 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x71F JUMPI DUP1 PUSH4 0x3701F582 EQ PUSH2 0x750 JUMPI DUP1 PUSH4 0x3EAAF86B EQ PUSH2 0x8EE JUMPI DUP1 PUSH4 0x438787D0 EQ PUSH2 0x919 JUMPI DUP1 PUSH4 0x44CC3C7F EQ PUSH2 0x95C JUMPI DUP1 PUSH4 0x4509B7E0 EQ PUSH2 0xA29 JUMPI DUP1 PUSH4 0x4C1782E5 EQ PUSH2 0xA8E JUMPI DUP1 PUSH4 0x4F74787B EQ PUSH2 0xAFA JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0xBBE JUMPI DUP1 PUSH4 0x5D87B6E6 EQ PUSH2 0xC15 JUMPI DUP1 PUSH4 0x676A96D8 EQ PUSH2 0xC56 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0xC83 JUMPI DUP1 PUSH4 0x74ED9AE4 EQ PUSH2 0xCDA JUMPI DUP1 PUSH4 0x79BA5097 EQ PUSH2 0xD31 JUMPI DUP1 PUSH4 0x7AED1214 EQ PUSH2 0xD48 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xD73 JUMPI DUP1 PUSH4 0x92B93774 EQ PUSH2 0xDCA JUMPI DUP1 PUSH4 0x93132366 EQ PUSH2 0xF75 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0xFE1 JUMPI DUP1 PUSH4 0x9818E66C EQ PUSH2 0x1071 JUMPI DUP1 PUSH4 0x98455999 EQ PUSH2 0x10BC JUMPI DUP1 PUSH4 0x9ECBEC41 EQ PUSH2 0x12D9 JUMPI DUP1 PUSH4 0xA1183D50 EQ PUSH2 0x1306 JUMPI DUP1 PUSH4 0xA8203ABB EQ PUSH2 0x131D JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1389 JUMPI DUP1 PUSH4 0xB3BB3DA3 EQ PUSH2 0x13EE JUMPI DUP1 PUSH4 0xB5D11DFA EQ PUSH2 0x14A3 JUMPI DUP1 PUSH4 0xCAE9CA51 EQ PUSH2 0x1570 JUMPI DUP1 PUSH4 0xD4EE1D90 EQ PUSH2 0x161B JUMPI DUP1 PUSH4 0xD9EDC139 EQ PUSH2 0x1672 JUMPI DUP1 PUSH4 0xDC39D06D EQ PUSH2 0x188F JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x18F4 JUMPI DUP1 PUSH4 0xE2EEF9C3 EQ PUSH2 0x196B JUMPI DUP1 PUSH4 0xE780ADA1 EQ PUSH2 0x19AC JUMPI DUP1 PUSH4 0xEFA09D85 EQ PUSH2 0x19D7 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x1A1C JUMPI DUP1 PUSH4 0xF4DE5305 EQ PUSH2 0x1A5F JUMPI DUP1 PUSH4 0xFC9C8D39 EQ PUSH2 0x1B7B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x269 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1BD2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2A9 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x28E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2D6 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1F0B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0xFFFF AND PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3BD PUSH2 0x21AC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3FD JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x3E2 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x42A JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x444 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x483 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x224A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x50E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP3 ADD DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP3 ADD SWAP2 POP POP POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 POP POP POP PUSH2 0x233C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x534 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x53D PUSH2 0x25F3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x55F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x588 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x263E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5CC JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x5B1 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x5F9 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x632 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x617 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x65F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x67B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6DA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x2975 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x700 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x709 PUSH2 0x2C20 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x72B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x734 PUSH2 0x2C89 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x75C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8D8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH1 0xFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH1 0xFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH1 0xFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH1 0xFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH2 0xFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH1 0xFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP3 ADD DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP3 ADD SWAP2 POP POP POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP3 ADD DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP3 ADD SWAP2 POP POP POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP3 ADD DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP3 ADD SWAP2 POP POP POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP3 ADD DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP3 ADD SWAP2 POP POP POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 POP POP POP PUSH2 0x2C9C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x903 PUSH2 0x3288 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x925 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x95A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x328E JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x968 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA13 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP3 ADD DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP3 ADD SWAP2 POP POP POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP3 ADD DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP3 ADD SWAP2 POP POP POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 POP POP POP PUSH2 0x33BC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA74 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x362E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xAA3 PUSH2 0x390F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xAE6 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xACB JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB25 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x3A00 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0xFFFF AND PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBCA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBD3 PUSH2 0x3CA1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD