0 txs
0 calls
constructor
constructor(address _predictionContract, uint256 _maxAheadTime, uint256 _aheadTimeForCheckUpkeep, uint256 _aheadTimeForPerformUpkeep, string _feedID, address _forwarder, address _verifierProxy)
functions
aheadTimeForCheckUpkeep
viewfunction aheadTimeForCheckUpkeep() view returns (uint256)
aheadTimeForPerformUpkeep
viewfunction aheadTimeForPerformUpkeep() view returns (uint256)
checkCallback
viewfunction checkCallback(bytes[] values, bytes extraData) view returns (bool upkeepNeeded, bytes performData)
checkUpkeep
viewfunction checkUpkeep(bytes checkData) view returns (bool upkeepNeeded, bytes performData)
feedID
viewfunction feedID() view returns (string)
forwarder
viewfunction forwarder() view returns (address)
maxAheadTime
viewfunction maxAheadTime() view returns (uint256)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
predictionContract
viewfunction predictionContract() view returns (address)
verifierProxy
viewfunction verifierProxy() view returns (address)
approveToken
nonpayablefunction approveToken(address _token, address _spender, uint256 _amount)
pause
nonpayablefunction pause()
performUpkeep
nonpayablefunction performUpkeep(bytes performData)
renounceOwnership
nonpayablefunction renounceOwnership()
setAheadTimeForCheckUpkeep
nonpayablefunction setAheadTimeForCheckUpkeep(uint256 _time)
setAheadTimeForPerformUpkeep
nonpayablefunction setAheadTimeForPerformUpkeep(uint256 _time)
setFeedID
nonpayablefunction setFeedID(string _feedID)
setForwarder
nonpayablefunction setForwarder(address _forwarder)
setMaxAheadTime
nonpayablefunction setMaxAheadTime(uint256 _time)
setPredictionContract
nonpayablefunction setPredictionContract(address _predictionContract)
setVerifierProxy
nonpayablefunction setVerifierProxy(address _verifierProxy)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
transferToken
nonpayablefunction transferToken(address _token, address _recipient, uint256 _amount)
unpause
nonpayablefunction unpause()
events
NewAheadTimeForCheckUpkeep
event NewAheadTimeForCheckUpkeep(uint256 time)
NewAheadTimeForPerformUpkeep
event NewAheadTimeForPerformUpkeep(uint256 time)
NewFeedID
event NewFeedID(string feedID)
NewForwarder
event NewForwarder(address indexed forwarder)
NewMaxAheadTime
event NewMaxAheadTime(uint256 time)
NewPredictionContract
event NewPredictionContract(address indexed predictionContract)
NewVerifierProxy
event NewVerifierProxy(address indexed verifierProxy)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
Unpaused
event Unpaused(address account)
errors
StreamsLookup
error StreamsLookup(string feedParamKey, string[] feeds, string timeParamKey, uint256 time, bytes extraData)
creation bytecode
0x60806040523480156200001157600080fd5b50604051620039ad380380620039ad833981016040819052620000349162000249565b6200003f3362000136565b6000805460ff60a01b191690556001600160a01b038716158015906200006d57506001600160a01b03811615155b620000be5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f74206265207a65726f206164647265737365730000000000000000604482015260640160405180910390fd5b600180546001600160a01b0319166001600160a01b0389161790556002869055600385905560048490558251620000fd90600590602086019062000186565b50600680546001600160a01b039384166001600160a01b0319918216179091556007805492909316911617905550620003cc9350505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054620001949062000379565b90600052602060002090601f016020900481019282620001b8576000855562000203565b82601f10620001d357805160ff191683800117855562000203565b8280016001018555821562000203579182015b8281111562000203578251825591602001919060010190620001e6565b506200021192915062000215565b5090565b5b8082111562000211576000815560010162000216565b80516001600160a01b03811681146200024457600080fd5b919050565b600080600080600080600060e0888a03121562000264578283fd5b6200026f886200022c565b60208981015160408b015160608c015160808d0151949b5091995097509550906001600160401b0380821115620002a4578586fd5b818b0191508b601f830112620002b8578586fd5b815181811115620002cd57620002cd620003b6565b604051601f8201601f19908116603f01168101908382118183101715620002f857620002f8620003b6565b816040528281528e8684870101111562000310578889fd5b8893505b8284101562000333578484018601518185018701529285019262000314565b828411156200034457888684830101525b8098505050505050506200035b60a089016200022c565b91506200036b60c089016200022c565b905092959891949750929550565b600181811c908216806200038e57607f821691505b60208210811415620003b057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b6135d180620003dc6000396000f3fe60806040526004361061019a5760003560e01c80638456cb59116100e1578063b4880e2b1161008a578063da3e339711610064578063da3e33971461049b578063f2fde38b146104bb578063f5537ede146104db578063f645d4f9146104fb576101a1565b8063b4880e2b1461043b578063b9998a241461045b578063c6bbcaa51461047b576101a1565b80639997d09f116100bb5780639997d09f146103d8578063a094dc4114610405578063a83c97b31461041b576101a1565b80638456cb59146103765780638da5cb5b1461038b578063967a572f146103b6576101a1565b806358d07f96116101435780635d5238891161011d5780635d523889146103215780636e04ff0d14610341578063715018a614610361576101a1565b806358d07f96146102a65780635bbbd133146102c65780635c975abb146102e6576101a1565b80634585e33b116101745780634585e33b1461020657806347f77bc0146102265780634b56a42e14610278576101a1565b8063060e89a0146101b05780630927b000146101d95780633f4ba83a146101ef576101a1565b366101a157005b3480156101ad57600080fd5b50005b3480156101bc57600080fd5b506101c660035481565b6040519081526020015b60405180910390f35b3480156101e557600080fd5b506101c660045481565b3480156101fb57600080fd5b50610204610528565b005b34801561021257600080fd5b50610204610221366004612e05565b61053a565b34801561023257600080fd5b506007546102539073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d0565b34801561028457600080fd5b50610298610293366004612d36565b610db8565b6040516101d09291906131fa565b3480156102b257600080fd5b506102046102c1366004612c69565b610dec565b3480156102d257600080fd5b506102046102e1366004613046565b610ee0565b3480156102f257600080fd5b5060005474010000000000000000000000000000000000000000900460ff1660405190151581526020016101d0565b34801561032d57600080fd5b5061020461033c366004613046565b610fb6565b34801561034d57600080fd5b5061029861035c366004612e05565b610ff3565b34801561036d57600080fd5b5061020461163d565b34801561038257600080fd5b5061020461164f565b34801561039757600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610253565b3480156103c257600080fd5b506103cb61165f565b6040516101d0919061324e565b3480156103e457600080fd5b506001546102539073ffffffffffffffffffffffffffffffffffffffff1681565b34801561041157600080fd5b506101c660025481565b34801561042757600080fd5b50610204610436366004613046565b6116ed565b34801561044757600080fd5b50610204610456366004612e05565b6117bc565b34801561046757600080fd5b50610204610476366004612c69565b61180e565b34801561048757600080fd5b50610204610496366004612c69565b611885565b3480156104a757600080fd5b506102046104b6366004612e78565b611979565b3480156104c757600080fd5b506102046104d6366004612c69565b611a2f565b3480156104e757600080fd5b506102046104f6366004612e78565b611ae6565b34801561050757600080fd5b506006546102539073ffffffffffffffffffffffffffffffffffffffff1681565b610530611bbd565b610538611c3e565b565b60065473ffffffffffffffffffffffffffffffffffffffff16331480610576575060065473ffffffffffffffffffffffffffffffffffffffff16155b6105e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4e6f7420666f727761726465720000000000000000000000000000000000000060448201526064015b60405180910390fd5b6105e9611cbb565b600154604080517ff7fdec28000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163f7fdec28916004808301926020929190829003018186803b15801561065457600080fd5b505afa158015610668573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068c9190612deb565b90506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630f74174f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156106f857600080fd5b505afa15801561070c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107309190612deb565b90506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561079c57600080fd5b505afa1580156107b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d49190612deb565b90506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663766718086040518163ffffffff1660e01b815260040160206040518083038186803b15801561084057600080fd5b505afa158015610854573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610878919061305e565b90506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663eaba23616040518163ffffffff1660e01b815260040160206040518083038186803b1580156108e457600080fd5b505afa1580156108f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091c919061305e565b6001546040517f8c65c81f0000000000000000000000000000000000000000000000000000000081526004810185905291925060009173ffffffffffffffffffffffffffffffffffffffff90911690638c65c81f906024016101c06040518083038186803b15801561098d57600080fd5b505afa1580156109a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c59190612f8d565b60408101519091508415610a5a57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a3d57600080fd5b505af1158015610a51573d6000803e3d6000fd5b50505050610dad565b86610ac957600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663452fd75a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a3d57600080fd5b85610c3557801580610ae757508060045442610ae5919061346c565b105b15610af157610dad565b8015801590610b085750610b05838261346c565b42115b15610b7757600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a3d57600080fd5b600080610b868a8c018c612d8d565b915091506000610b968383611d40565b6001546040517fa1d2f6ea00000000000000000000000000000000000000000000000000000000815269ffffffffffffffffffff851660048201526024810183905291925073ffffffffffffffffffffffffffffffffffffffff169063a1d2f6ea90604401600060405180830381600087803b158015610c1557600080fd5b505af1158015610c29573d6000803e3d6000fd5b50505050505050610dad565b8060045442610c44919061346c565b1115610dad57801580610c6357508060045442610c61919061346c565b105b15610c6d57610dad565b8015801590610c845750610c81838261346c565b42115b15610cf357600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a3d57600080fd5b600080610d028a8c018c612d8d565b915091506000610d128383611d40565b6001546040517f740e104700000000000000000000000000000000000000000000000000000000815269ffffffffffffffffffff851660048201526024810183905291925073ffffffffffffffffffffffffffffffffffffffff169063740e104790604401600060405180830381600087803b158015610d9157600080fd5b505af1158015610da5573d6000803e3d6000fd5b505050505050505b505050505050505050565b6000606060018484604051602001610dd1929190613167565b604051602081830303815290604052915091505b9250929050565b610df4611bbd565b73ffffffffffffffffffffffffffffffffffffffff8116610e71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f43616e6e6f74206265207a65726f20616464726573730000000000000000000060448201526064016105d8565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f303c1bce4d3c37479e2b23d6c3338a50bedc1909ce558a88f92f8e6782f4de5f90600090a250565b610ee8611bbd565b600254811115610f7a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f616865616454696d65466f72506572666f726d55706b6565702063616e6e6f7460448201527f206265206d6f7265207468616e204d6178416865616454696d6500000000000060648201526084016105d8565b60048190556040518181527fee3c43946327f1f066dfe4a6d9fef20fdfafc416fcf4069f31ddb4fdfd6b776b906020015b60405180910390a150565b610fbe611bbd565b60028190556040518181527f117f69102ac350c84f55466aca170711c064f3fddbf43d0898380f012c6e8b1c90602001610fab565b6000805460609074010000000000000000000000000000000000000000900460ff16610de55783838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250600154604080517ff7fdec280000000000000000000000000000000000000000000000000000000081529051969750919573ffffffffffffffffffffffffffffffffffffffff909116945063f7fdec28935060048083019350602092829003018186803b1580156110bb57600080fd5b505afa1580156110cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f39190612deb565b90506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630f74174f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561115f57600080fd5b505afa158015611173573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111979190612deb565b90506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561120357600080fd5b505afa158015611217573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123b9190612deb565b90506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663766718086040518163ffffffff1660e01b815260040160206040518083038186803b1580156112a757600080fd5b505afa1580156112bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112df919061305e565b90506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663eaba23616040518163ffffffff1660e01b815260040160206040518083038186803b15801561134b57600080fd5b505afa15801561135f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611383919061305e565b6001546040517f8c65c81f0000000000000000000000000000000000000000000000000000000081526004810185905291925060009173ffffffffffffffffffffffffffffffffffffffff90911690638c65c81f906024016101c06040518083038186803b1580156113f457600080fd5b505afa158015611408573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142c9190612f8d565b60408101519091508415611443576001985061162f565b86611451576001985061162f565b856115d65780158061146f5750806003544261146d919061346c565b105b156114795761162f565b8015801590611490575061148d838261346c565b42115b1561149e576001985061162f565b604080516001808252818301909252600091816020015b60608152602001906001900390816114b5579050509050600580546114d9906134c7565b80601f0160208091040260200160405190810160405280929190818152602001828054611505906134c7565b80156115525780601f1061152757610100808354040283529160200191611552565b820191906000526020600020905b81548152906001019060200180831161153557829003601f168201915b505050505081600081518110611591577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001018190525080428d8d6040517ff055e4a20000000000000000000000000000000000000000000000000000000081526004016105d89493929190613261565b80600354426115e5919061346c565b111561162f5780158061160457508060035442611602919061346c565b105b1561160e5761162f565b80158015906116255750611622838261346c565b42115b1561149e57600198505b505050505050509250929050565b611645611bbd565b610538600061246c565b611657611bbd565b6105386124e1565b6005805461166c906134c7565b80601f0160208091040260200160405190810160405280929190818152602001828054611698906134c7565b80156116e55780601f106116ba576101008083540402835291602001916116e5565b820191906000526020600020905b8154815290600101906020018083116116c857829003601f168201915b505050505081565b6116f5611bbd565b600254811115611787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f616865616454696d65466f72436865636b55706b6565702063616e6e6f74206260448201527f65206d6f7265207468616e204d6178416865616454696d65000000000000000060648201526084016105d8565b60038190556040518181527ffcf8adcabbe015bf29555d1162dbbf64d6b8631cbfa0973cc0ac058ee250938290602001610fab565b6117c4611bbd565b6117d060058383612981565b507fdb1665581817c1455ca4915bc39e78992cdb42b0d5975112049a5f6804f297c8828260405161180292919061323a565b60405180910390a15050565b611816611bbd565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f75a4ce37b5b180b327c7beb0e7f03b1df4a327bb8c2bd30b4dcaf5d79e0586af90600090a250565b61188d611bbd565b73ffffffffffffffffffffffffffffffffffffffff811661190a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f43616e6e6f74206265207a65726f20616464726573730000000000000000000060448201526064016105d8565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f84671be6bbfae8584f3eac047acd13c3c089ce73c58c2814a5b11308ade0f7a290600090a250565b611981611bbd565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820183905284169063095ea7b390604401602060405180830381600087803b1580156119f157600080fd5b505af1158015611a05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a299190612deb565b50505050565b611a37611bbd565b73ffffffffffffffffffffffffffffffffffffffff8116611ada576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016105d8565b611ae38161246c565b50565b611aee611bbd565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8516906370a082319060240160206040518083038186803b158015611b5657600080fd5b505afa158015611b6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8e919061305e565b905081811015611b9c578091505b611a2973ffffffffffffffffffffffffffffffffffffffff85168484612550565b60005473ffffffffffffffffffffffffffffffffffffffff163314610538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105d8565b611c466125e2565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b60005474010000000000000000000000000000000000000000900460ff1615610538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016105d8565b600154604080517fec324703000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163ec324703916004808301926020929190829003018186803b158015611dab57600080fd5b505afa158015611dbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de3919061305e565b8269ffffffffffffffffffff1611611e7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f4f7261636c652075706461746520726f756e644964206d757374206265206c6160448201527f72676572207468616e206f7261636c654c6174657374526f756e64496400000060648201526084016105d8565b600754604080517f38416b5b000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff16916338416b5b91600480830192602092919082900301818787803b158015611ee957600080fd5b505af1158015611efd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f219190612c8c565b905060008173ffffffffffffffffffffffffffffffffffffffff16633aa5ac076040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611f6d57600080fd5b505af1158015611f81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa59190612c8c565b905060008273ffffffffffffffffffffffffffffffffffffffff1663638786686040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611ff157600080fd5b505af1158015612005573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120299190612c8c565b9050600086600081518110612067577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101518060200190518101906120829190612ca8565b91505060008473ffffffffffffffffffffffffffffffffffffffff1663e03dab1a3084866040518463ffffffff1660e01b81526004016120c493929190613124565b60a060405180830381600087803b1580156120de57600080fd5b505af11580156120f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121169190612eb8565b505060208101516040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152602482019290925291925084169063095ea7b390604401602060405180830381600087803b15801561219157600080fd5b505af11580156121a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c99190612deb565b50600754885160009173ffffffffffffffffffffffffffffffffffffffff169063f7e83aee908b908490612226577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101518660405160200161225b919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401612287929190613215565b600060405180830381600087803b1580156122a157600080fd5b505af11580156122b5573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526122fb9190810190612e45565b90506000818060200190518101906123139190612ef5565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663605540116040518163ffffffff1660e01b815260040160206040518083038186803b15801561237d57600080fd5b505afa158015612391573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b5919061305e565b6123bf9042613484565b816040015163ffffffff161015612458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4f7261636c6520757064617465206578636565646564206d61782074696d657360448201527f74616d7020616c6c6f77616e636500000000000000000000000000000000000060648201526084016105d8565b60c0015160170b9998505050505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6124e9611cbb565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611c913390565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526125dd908490612666565b505050565b60005474010000000000000000000000000000000000000000900460ff16610538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f742070617573656400000000000000000000000060448201526064016105d8565b60006126c8826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166127759092919063ffffffff16565b90508051600014806126e95750808060200190518101906126e99190612deb565b6125dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016105d8565b6060612784848460008561278c565b949350505050565b60608247101561281e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016105d8565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516128479190613108565b60006040518083038185875af1925050503d8060008114612884576040519150601f19603f3d011682016040523d82523d6000602084013e612889565b606091505b509150915061289a878383876128a5565b979650505050505050565b606083156129385782516129315773ffffffffffffffffffffffffffffffffffffffff85163b612931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105d8565b5081612784565b612784838381511561294d5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d8919061324e565b82805461298d906134c7565b90600052602060002090601f0160209004810192826129af5760008555612a13565b82601f106129e6578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00823516178555612a13565b82800160010185558215612a13579182015b82811115612a135782358255916020019190600101906129f8565b50612a1f929150612a23565b5090565b5b80821115612a1f5760008155600101612a24565b600082601f830112612a48578081fd5b8135602067ffffffffffffffff80831115612a6557612a6561354a565b8260051b612a748382016133d7565b8481528381019087850183890186018a1015612a8e578788fd5b8793505b86841015612acb57803585811115612aa8578889fd5b612ab68b88838d0101612b2d565b84525060019390930192918501918501612a92565b5098975050505050505050565b80518015158114612ae857600080fd5b919050565b60008083601f840112612afe578182fd5b50813567ffffffffffffffff811115612b15578182fd5b602083019150836020828501011115610de557600080fd5b600082601f830112612b3d578081fd5b8135612b50612b4b82613426565b6133d7565b818152846020838601011115612b64578283fd5b816020850160208301379081016020019190915292915050565b600082601f830112612b8e578081fd5b8151612b9c612b4b82613426565b818152846020838601011115612bb0578283fd5b61278482602083016020870161349b565b8051601781900b8114612ae857600080fd5b600060408284031215612be4578081fd5b6040516040810181811067ffffffffffffffff82111715612c0757612c0761354a565b80604052508091508251612c1a81613579565b8152602092830151920191909152919050565b805177ffffffffffffffffffffffffffffffffffffffffffffffff81168114612ae857600080fd5b805163ffffffff81168114612ae857600080fd5b600060208284031215612c7a578081fd5b8135612c8581613579565b9392505050565b600060208284031215612c9d578081fd5b8151612c8581613579565b60008060808385031215612cba578081fd5b83601f840112612cc8578081fd5b612cd0613367565b80846060860187811115612ce2578485fd5b845b6003811015612d03578251855260209485019490920191600101612ce4565b50519194509091505067ffffffffffffffff811115612d20578182fd5b612d2c85828601612b7e565b9150509250929050565b60008060408385031215612d48578182fd5b823567ffffffffffffffff80821115612d5f578384fd5b612d6b86838701612a38565b93506020850135915080821115612d80578283fd5b50612d2c85828601612b2d565b60008060408385031215612d9f578182fd5b823567ffffffffffffffff811115612db5578283fd5b612dc185828601612a38565b925050602083013569ffffffffffffffffffff81168114612de0578182fd5b809150509250929050565b600060208284031215612dfc578081fd5b612c8582612ad8565b60008060208385031215612e17578182fd5b823567ffffffffffffffff811115612e2d578283fd5b612e3985828601612aed565b90969095509350505050565b600060208284031215612e56578081fd5b815167ffffffffffffffff811115612e6c578182fd5b61278484828501612b7e565b600080600060608486031215612e8c578081fd5b8335612e9781613579565b92506020840135612ea781613579565b929592945050506040919091013590565b600080600060a08486031215612ecc578081fd5b612ed68585612bd3565b9250612ee58560408601612bd3565b9150608084015190509250925092565b600060e08284031215612f06578081fd5b612f0e613390565b82518152612f1e60208401612c55565b6020820152612f2f60408401612c55565b6040820152612f4060608401612c2d565b6060820152612f5160808401612c2d565b608082015260a083015167ffffffffffffffff81168114612f70578283fd5b60a0820152612f8160c08401612bc1565b60c08201529392505050565b60006101c08284031215612f9f578081fd5b612fa76133b3565b825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152506101208084015181830152506101408084015181830152506101608084015181830152506101808084015181830152506101a061303b818501612ad8565b908201529392505050565b600060208284031215613057578081fd5b5035919050565b60006020828403121561306f578081fd5b5051919050565b81835281816020850137506000806020838501015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600081518084526130d681602086016020860161349b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000825161311a81846020870161349b565b9190910192915050565b600073ffffffffffffffffffffffffffffffffffffffff80861683526060602084015261315460608401866130be565b9150808416604084015250949350505050565b6000604082016040835280855180835260608501915060608160051b86010192506020808801855b838110156131db577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526131c98683516130be565b9550938201939082019060010161318f565b5050858403818701525050506131f181856130be565b95945050505050565b821515815260406020820152600061278460408301846130be565b60408152600061322860408301856130be565b82810360208401526131f181856130be565b602081526000612784602083018486613076565b602081526000612c8560208301846130be565b60a08152600760a08201527f666565644944730000000000000000000000000000000000000000000000000060c0820152600060e08201602060e08185015281885180845261010093508386019150838160051b8701019350828a01855b8281101561330b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008887030184526132f98683516130be565b955092840192908401906001016132bf565b5050505050828103604084015261334c81600981527f74696d657374616d700000000000000000000000000000000000000000000000602082015260400190565b9050856060840152828103608084015261289a818587613076565b6040516060810167ffffffffffffffff8111828210171561338a5761338a61354a565b60405290565b60405160e0810167ffffffffffffffff8111828210171561338a5761338a61354a565b6040516101c0810167ffffffffffffffff8111828210171561338a5761338a61354a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561341e5761341e61354a565b604052919050565b600067ffffffffffffffff8211156134405761344061354a565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6000821982111561347f5761347f61351b565b500190565b6000828210156134965761349661351b565b500390565b60005b838110156134b657818101518382015260200161349e565b83811115611a295750506000910152565b600181811c908216806134db57607f821691505b60208210811415613515577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81168114611ae357600080fdfea264697066735822122070e1035dab8127310733da833c960663ea07a65e686c19b744f7fe16708d79f664736f6c63430008040033000000000000000000000000f2f90e718a3bfacb430c1818cb962f05a2631998000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000a4c0028748d8f534e6d7bab20d9b696f750f114d000000000000000000000000478aa2ac9f6d65f84e09d9185d126c3a17c2a93c0000000000000000000000000000000000000000000000000000000000000042307830303032356465393231656661386538366636373765343763663331356362636631616334323238316564393434323334356232363730616532393232316362000000000000000000000000000000000000000000000000000000000000