0 txs
0 calls
constructor
constructor()
functions
decimals
viewfunction decimals(address base, address quote) view returns (uint8)
decimalsByName
viewfunction decimalsByName(string base, string quote) view returns (uint8)
description
viewfunction description(address base, address quote) view returns (string)
descriptionByName
viewfunction descriptionByName(string base, string quote) view returns (string)
getAccessController
viewfunction getAccessController() view returns (address)
getAllPairs
viewfunction getAllPairs() view returns (tuple[])
getAnswer
viewfunction getAnswer(address base, address quote, uint256 roundId) view returns (int256 answer)
getCurrentPhaseId
viewfunction getCurrentPhaseId(address base, address quote) view returns (uint16 currentPhaseId)
getFeed
viewfunction getFeed(address base, address quote) view returns (address aggregator)
getMultipleLatestRoundData
viewfunction getMultipleLatestRoundData(string[] bases, string[] quotes) view returns (tuple[])
getNextRoundId
viewfunction getNextRoundId(address base, address quote, uint80 roundId) view returns (uint80 nextRoundId)
getPhase
viewfunction getPhase(address base, address quote, uint16 phaseId) view returns (tuple phase)
getPhaseFeed
viewfunction getPhaseFeed(address base, address quote, uint16 phaseId) view returns (address aggregator)
getPhaseRange
viewfunction getPhaseRange(address base, address quote, uint16 phaseId) view returns (uint80 startingRoundId, uint80 endingRoundId)
getPreviousRoundId
viewfunction getPreviousRoundId(address base, address quote, uint80 roundId) view returns (uint80 previousRoundId)
getProposedFeed
viewfunction getProposedFeed(address base, address quote) view returns (address proposedAggregator)
getRoundData
viewfunction getRoundData(address base, address quote, uint80 _roundId) view returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound)
getRoundFeed
viewfunction getRoundFeed(address base, address quote, uint80 roundId) view returns (address aggregator)
getTimestamp
viewfunction getTimestamp(address base, address quote, uint256 roundId) view returns (uint256 timestamp)
getTradingPairDetails
viewfunction getTradingPairDetails(string base, string quote) view returns (address, address, address)
isFeedEnabled
viewfunction isFeedEnabled(address aggregator) view returns (bool)
latestAnswer
viewfunction latestAnswer(address base, address quote) view returns (int256 answer)
latestRound
viewfunction latestRound(address base, address quote) view returns (uint256 roundId)
latestRoundData
viewfunction latestRoundData(address base, address quote) view returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound)
latestRoundDataByName
viewfunction latestRoundDataByName(string base, string quote) view returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound)
latestTimestamp
viewfunction latestTimestamp(address base, address quote) view returns (uint256 timestamp)
owner
viewfunction owner() view returns (address)
proposedGetRoundData
viewfunction proposedGetRoundData(address base, address quote, uint80 roundId) view returns (uint80 id, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound)
proposedLatestRoundData
viewfunction proposedLatestRoundData(address base, address quote) view returns (uint80 id, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound)
totalPairsAvailable
viewfunction totalPairsAvailable() view returns (uint256)
typeAndVersion
purefunction typeAndVersion() pure returns (string)
version
viewfunction version(address base, address quote) view returns (uint256)
versionByName
viewfunction versionByName(string base, string quote) view returns (uint256)
acceptOwnership
nonpayablefunction acceptOwnership()
confirmFeed
nonpayablefunction confirmFeed(address base, address quote, address aggregator)
insertPair
nonpayablefunction insertPair(string base, string quote, address baseAssetAddress, address quoteAssetAddress, address feedAdapterAddress)
proposeFeed
nonpayablefunction proposeFeed(address base, address quote, address aggregator)
removePair
nonpayablefunction removePair(string base, string quote)
setAccessController
nonpayablefunction setAccessController(address _accessController)
transferOwnership
nonpayablefunction transferOwnership(address to)
events
FeedConfirmed
event FeedConfirmed(address indexed asset, address indexed denomination, address indexed latestAggregator, address previousAggregator, uint16 nextPhaseId, address sender)
FeedProposed
event FeedProposed(address indexed asset, address indexed denomination, address indexed proposedAggregator, address currentAggregator, address sender)
OwnershipTransferred
event OwnershipTransferred(address indexed from, address indexed to)
OwnershipTransferRequested
event OwnershipTransferRequested(address indexed from, address indexed to)
PairAccessControllerSet
event PairAccessControllerSet(address indexed accessController, address indexed sender)
errors
No errors.
creation bytecode
0x60806040523480156200001157600080fd5b5033806000816200003f5760405162461bcd60e51b8152600401620000369062000152565b60405180910390fd5b600080546001600160a01b0319166001600160a01b038481169190911790915581161562000072576200007281620000c7565b505050604051620000839062000144565b604051809103906000f080158015620000a0573d6000803e3d6000fd5b50600880546001600160a01b0319166001600160a01b0392909216919091179055620001c0565b6001600160a01b038116331415620000f35760405162461bcd60e51b8152600401620000369062000189565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6118d980620040bd83390190565b60208082526018908201527f43616e6e6f7420736574206f776e657220746f207a65726f0000000000000000604082015260600190565b60208082526017908201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604082015260600190565b613eed80620001d06000396000f3fe608060405234801561001057600080fd5b50600436106102c85760003560e01c8063a051538e1161017b578063d4c282a3116100d8578063f800ece91161008c578063fc58749e11610071578063fc58749e146105f8578063ff0601c01461060b578063ff2ed6e01461062b576102c8565b8063f800ece9146105d0578063fa820de9146105e5576102c8565b8063f08391d8116100bd578063f08391d814610597578063f2fde38b146105aa578063f7d69091146105bd576102c8565b8063d4c282a314610571578063ec62f44b14610584576102c8565b8063bfda5e711161012f578063c639cd9111610114578063c639cd9114610538578063d0188fc61461054b578063d2edb6dd1461055e576102c8565b8063bfda5e7114610504578063c1ce86fc14610517576102c8565b8063af34b03a11610160578063af34b03a146104be578063b099d43b146104d1578063bcfd032d146104f1576102c8565b8063a051538e146104a3578063ad3fdee5146104b6576102c8565b806358e2d3a8116102295780638916524a116101dd57806391624c95116101c257806391624c951461045d5780639e3ff6fd146104705780639eed82b014610490576102c8565b80638916524a146104315780638da5cb5b14610455576102c8565b8063672ff44f1161020e578063672ff44f146104035780636e91995a1461041657806379ba509714610429576102c8565b806358e2d3a8146103d05780635ad9d9df146103f0576102c8565b8063218936fc116102805780634e74197b116102655780634e74197b1461038a57806352dbeb8b146103aa578063573a23af146103bd576102c8565b8063218936fc14610348578063303228181461036a576102c8565b806315cd4ad2116102b157806315cd4ad21461030b57806316d6b5f61461032b578063181f5a7714610340576102c8565b8063045abf4b146102cd57806304737f8e146102e2575b600080fd5b6102e06102db366004612f87565b61063e565b005b6102f56102f03660046133a9565b610701565b60405161030291906136dc565b60405180910390f35b61031e610319366004613057565b61084a565b604051610302919061364d565b610333610971565b60405161030291906134ce565b6102f5610980565b61035b610356366004613267565b6109b7565b604051610302939291906134fc565b61037d610378366004612f21565b610a6b565b6040516103029190613b02565b61039d6103983660046130d6565b610a9a565b60405161030291906135c8565b6103336103b8366004613012565b610e36565b6102e06103cb3660046132d0565b610e72565b6103e36103de366004612f21565b610f0a565b6040516103029190613b84565b6103336103fe366004612f21565b610fb8565b61031e610411366004612f21565b610fc4565b6103e36104243660046133a9565b611080565b6102e06111af565b61044461043f366004613097565b611230565b604051610302959493929190613b3a565b610333611334565b61031e61046b366004613057565b611343565b61048361047e366004613097565b61140b565b6040516103029190613b26565b6102e061049e366004612f87565b611430565b6104836104b1366004613097565b611516565b61031e611532565b61031e6104cc366004612f21565b6115cd565b6104e46104df366004612f05565b611673565b6040516103029190613642565b6104446104ff366004612f21565b611695565b6104446105123660046133a9565b6117b3565b61052a610525366004613012565b611947565b604051610302929190613b6a565b610333610546366004613097565b6119e4565b610444610559366004612f21565b611a27565b61033361056c366004612f21565b611b3b565b61031e61057f366004612f21565b611b6f565b61031e610592366004612f21565b611bf3565b6102e06105a5366004612f05565b611cf7565b6102e06105b8366004612f05565b611d7a565b61031e6105cb3660046133a9565b611db4565b6105d8611eab565b6040516103029190613546565b6102f56105f3366004612f21565b611f45565b610444610606366004613097565b611ff0565b61061e610619366004613012565b61210b565b6040516103029190613ace565b6102e0610639366004613267565b612145565b6106466121d4565b600080610654858585612200565b6001600160a01b0380881660008181526004602090815260408083208b861680855290835281842080546001600160a01b03191690558a86168085526003909352818420805460ff199081166001179091559587168452928190208054909516909455925194965092945090927f27a180c70f2642f63d1694eb252b7df52e7ab2565e3f67adf7748acb7d82b9bc906106f29086908890339061351f565b60405180910390a45050505050565b6008546040516316e3539360e11b815260609160009182916001600160a01b031690632dc6a7269061073990889088906004016136ef565b604080518083038186803b15801561075057600080fd5b505afa158015610764573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107889190612f59565b915091506000610798838361249e565b90506001600160a01b0381166107c95760405162461bcd60e51b81526004016107c090613a03565b60405180910390fd5b806001600160a01b0316637284e4166040518163ffffffff1660e01b815260040160006040518083038186803b15801561080257600080fd5b505afa158015610816573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261083e9190810190613376565b93505050505b92915050565b6000838361085882826124d7565b61086157600080fd5b600161086f60106040613c2e565b61087a906002613cae565b6108849190613d9f565b8411156108945760009250610968565b6000806108a086612635565b9150915060006108b189898561263d565b90506001600160a01b0381166108cd5760009550505050610968565b6040517fb5ab58dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063b5ab58dc90610912908590600401613b11565b60206040518083038186803b15801561092a57600080fd5b505afa15801561093e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610962919061324f565b95505050505b50509392505050565b6002546001600160a01b031690565b60408051808201909152601781527f42696e616e636546656564526567697374727920312e30000000000000000000602082015290565b6008546040517f218936fc000000000000000000000000000000000000000000000000000000008152600091829182916001600160a01b03169063218936fc90610a0b908a908a908a908a90600401613656565b60606040518083038186803b158015610a2357600080fd5b505afa158015610a37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5b9190612fd1565b9250925092509450945094915050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205461ffff1690565b6002546060906001600160a01b03161580610b3057506002546040516304e162b360e41b81526001600160a01b0390911690634e162b3090610ae09033906004016134ce565b60206040518083038186803b158015610af857600080fd5b505afa158015610b0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b30919061322f565b610b4c5760405162461bcd60e51b81526004016107c0906138f2565b8151835114610b6d5760405162461bcd60e51b81526004016107c090613714565b6000835167ffffffffffffffff811115610b9757634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610bd057816020015b610bbd612d67565b815260200190600190039081610bb55790505b50905060005b8451811015610e2e57600854855160009182916001600160a01b0390911690632dc6a72690899086908110610c1b57634e487b7160e01b600052603260045260246000fd5b6020026020010151888681518110610c4357634e487b7160e01b600052603260045260246000fd5b60200260200101516040518363ffffffff1660e01b8152600401610c689291906136ef565b604080518083038186803b158015610c7f57600080fd5b505afa158015610c93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb79190612f59565b6001600160a01b03808316600090815260056020908152604080832093851683529290529081205492945090925061ffff90911690610cf6848461249e565b90506001600160a01b038116610d1e5760405162461bcd60e51b81526004016107c090613a03565b6000806000806000856001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b158015610d5f57600080fd5b505afa158015610d73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d979190613400565b94509450945094509450610da9612d67565b610db786868686868d612677565b6001600160501b0390811660808701526060860191909152604085019190915260208401919091521681528b5181908d908d908110610e0657634e487b7160e01b600052603260045260246000fd5b6020026020010181905250505050505050505050508080610e2690613e46565b915050610bd6565b509392505050565b6000610e4384848461263d565b90506001600160a01b038116610e6b5760405162461bcd60e51b81526004016107c09061395e565b9392505050565b610e7a6121d4565b6008546040517f573a23af0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063573a23af90610ecf908a908a908a908a908a908a908a90600401613688565b600060405180830381600087803b158015610ee957600080fd5b505af1158015610efd573d6000803e3d6000fd5b5050505050505050505050565b600080610f17848461249e565b90506001600160a01b038116610f3f5760405162461bcd60e51b81526004016107c090613a03565b806001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610f7857600080fd5b505afa158015610f8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb09190613457565b949350505050565b6000610e6b8383612696565b60008282610fd282826124d7565b610fdb57600080fd5b6000610fe7868661249e565b90506001600160a01b03811661100f5760405162461bcd60e51b81526004016107c090613a03565b806001600160a01b0316638205bf6a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561104857600080fd5b505afa15801561105c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083e919061324f565b6008546040516316e3539360e11b8152600091829182916001600160a01b031690632dc6a726906110b790889088906004016136ef565b604080518083038186803b1580156110ce57600080fd5b505afa1580156110e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111069190612f59565b915091506000611116838361249e565b90506001600160a01b03811661113e5760405162461bcd60e51b81526004016107c090613a03565b806001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561117757600080fd5b505afa15801561118b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083e9190613457565b6001546001600160a01b031633146111d95760405162461bcd60e51b81526004016107c090613771565b60008054336001600160a01b0319808316821784556001805490911690556040516001600160a01b0390921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b6001600160a01b03808416600090815260046020908152604080832084871684529091528120549091829182918291829189918991166112825760405162461bcd60e51b81526004016107c09061384d565b6001600160a01b03808b1660009081526004602081815260408084208e8616855290915291829020549151639a6fc8f560e01b81529190921691639a6fc8f5916112ce918c9101613b26565b60a06040518083038186803b1580156112e657600080fd5b505afa1580156112fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131e9190613400565b939e929d50909b50995090975095505050505050565b6000546001600160a01b031690565b6000838361135182826124d7565b61135a57600080fd5b600161136860106040613c2e565b611373906002613cae565b61137d9190613d9f565b84111561138d5760009250610968565b60008061139986612635565b9150915060006113aa89898561263d565b90506001600160a01b0381166113c65760009550505050610968565b6040517fb633620c0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063b633620c90610912908590600401613b11565b6000806114198585856126c0565b90506114278585838661285e565b95945050505050565b6114386121d4565b6000611444848461249e565b9050806001600160a01b0316826001600160a01b031614156114785760405162461bcd60e51b81526004016107c090613a71565b60006114848585612696565b9050826001600160a01b0316816001600160a01b03161461150f576001600160a01b03858116600081815260046020908152604080832089861680855292529182902080546001600160a01b031916948816948517905590519091907fb56c4f88c3e344891ef92e51f036d7116e886f4ea57f5ba93e28b5f44925b9ce906106f290879033906134e2565b5050505050565b6000806115248585856126c0565b90506114278585838661295a565b600854604080517fad3fdee500000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163ad3fdee5916004808301926020929190829003018186803b15801561159057600080fd5b505afa1580156115a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c8919061324f565b905090565b6000806115da848461249e565b90506001600160a01b0381166116025760405162461bcd60e51b81526004016107c090613a03565b806001600160a01b03166354fd4d506040518163ffffffff1660e01b815260040160206040518083038186803b15801561163b57600080fd5b505afa15801561164f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb0919061324f565b6001600160a01b03811660009081526003602052604090205460ff165b919050565b600080600080600086866116a982826124d7565b6116b257600080fd5b6001600160a01b03808a166000908152600560209081526040808320938c1683529290529081205461ffff16906116e98b8b61249e565b90506001600160a01b0381166117115760405162461bcd60e51b81526004016107c090613a03565b806001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b15801561174a57600080fd5b505afa15801561175e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117829190613400565b939c50919a5098509650945061179c898989898987612677565b939f929e50909c509a509098509650505050505050565b6008546040516316e3539360e11b81526000918291829182918291829182916001600160a01b031690632dc6a726906117f2908c908c906004016136ef565b604080518083038186803b15801561180957600080fd5b505afa15801561181d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118419190612f59565b9150915061184f82826124d7565b61185857600080fd5b6000611864838361249e565b90506001600160a01b03811661188c5760405162461bcd60e51b81526004016107c090613a03565b806001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b1580156118c557600080fd5b505afa1580156118d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118fd9190613400565b6001600160a01b038089166000908152600560209081526040808320938b1683529290522054949c50929a509098509650945061131e908990899089908990899061ffff16612677565b6000806000611957868686612aa7565b905061196281612b29565b61197e5760405162461bcd60e51b81526004016107c0906139cc565b6001600160a01b0380871660009081526005602090815260408083209389168352929052205461ffff9081169085168114156119ca576119bf878783612b33565b9350935050506119dc565b6119d5878787612bce565b9350935050505b935093915050565b6000806119f28585856126c0565b90506119ff85858361263d565b91506001600160a01b038216610e2e5760405162461bcd60e51b81526004016107c090613884565b6001600160a01b0380831660009081526004602090815260408083208486168452909152812054909182918291829182918891889116611a795760405162461bcd60e51b81526004016107c09061384d565b6001600160a01b03808a1660009081526004602081815260408084208d86168552909152918290205482517ffeaf968c000000000000000000000000000000000000000000000000000000008152925193169263feaf968c928083019260a09291829003018186803b158015611aee57600080fd5b505afa158015611b02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b269190613400565b939d929c50909a509850909650945050505050565b6000611b47838361249e565b90506001600160a01b0381166108445760405162461bcd60e51b81526004016107c090613a03565b60008282611b7d82826124d7565b611b8657600080fd5b6000611b92868661249e565b90506001600160a01b038116611bba5760405162461bcd60e51b81526004016107c090613a03565b806001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561104857600080fd5b60008282611c0182826124d7565b611c0a57600080fd5b6001600160a01b03808616600090815260056020908152604080832093881683529290529081205461ffff1690611c41878761249e565b90506001600160a01b038116611c695760405162461bcd60e51b81526004016107c090613a03565b611ce382826001600160a01b031663668a0f026040518163ffffffff1660e01b815260040160206040518083038186803b158015611ca657600080fd5b505afa158015611cba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cde919061324f565b612bf4565b6001600160501b0316979650505050505050565b611cff6121d4565b6002546001600160a01b0382811691161415611d2d5760405162461bcd60e51b81526004016107c090613929565b600280546001600160a01b0319166001600160a01b0383169081179091556040513391907fcfa989179aa1c36c00d3edadf67bcb4f35d9516f4951d34f527ed93957adfbeb90600090a350565b611d826121d4565b6001600160a01b038116611da85760405162461bcd60e51b81526004016107c0906138bb565b611db181612c14565b50565b6008546040516316e3539360e11b8152600091829182916001600160a01b031690632dc6a72690611deb90889088906004016136ef565b604080518083038186803b158015611e0257600080fd5b505afa158015611e16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3a9190612f59565b915091506000611e4a838361249e565b90506001600160a01b038116611e725760405162461bcd60e51b81526004016107c090613a03565b806001600160a01b03166354fd4d506040518163ffffffff1660e01b815260040160206040518083038186803b15801561104857600080fd5b600854604080517ff800ece900000000000000000000000000000000000000000000000000000000815290516060926001600160a01b03169163f800ece9916004808301926000929190829003018186803b158015611f0957600080fd5b505afa158015611f1d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115c89190810190613137565b60606000611f53848461249e565b90506001600160a01b038116611f7b5760405162461bcd60e51b81526004016107c090613a03565b806001600160a01b0316637284e4166040518163ffffffff1660e01b815260040160006040518083038186803b158015611fb457600080fd5b505afa158015611fc8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fb09190810190613376565b6000806000806000878761200482826124d7565b61200d57600080fd5b6000806120228a6001600160501b0316612635565b9150915060006120338d8d8561263d565b90506001600160a01b03811661205b5760405162461bcd60e51b81526004016107c090613a03565b604051639a6fc8f560e01b81526001600160a01b03821690639a6fc8f590612087908590600401613b11565b60a06040518083038186803b15801561209f57600080fd5b505afa1580156120b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d79190613400565b939d50919b509950975095506120f18a8a8a8a8a88612677565b995099509950995099505050505050939792965093509350565b612113612da8565b61211e848484612aa7565b905061212981612b29565b610e6b5760405162461bcd60e51b81526004016107c0906139cc565b61214d6121d4565b6008546040517fff2ed6e00000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063ff2ed6e09061219c908790879087908790600401613656565b600060405180830381600087803b1580156121b657600080fd5b505af11580156121ca573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b031633146121fe5760405162461bcd60e51b81526004016107c0906137df565b565b6001600160a01b03808416600090815260046020908152604080832086851684529091528120549091829184821691161461224d5760405162461bcd60e51b81526004016107c090613995565b6000612259868661249e565b9050600061226682612c8e565b6001600160a01b038881166000818152600560209081526040808320948c16808452948252808320549383526007825280832094835293815283822061ffff9093168083529290529190912080547fffffffffffffffffffff00000000000000000000ffffffffffffffffffffffff166c010000000000000000000000006001600160501b03851602179055909150612300816001613c08565b6001600160a01b0389811660008181526005602090815260408083208d8616808552908352818420805461ffff191661ffff891690811790915594845260068352818420908452825280832093835292905290812080546001600160a01b031916928a169290921790915590955061237787612c8e565b905060405180606001604052808761ffff168152602001826001600160501b0316815260200160006001600160501b0316815250600760008b6001600160a01b03166001600160a01b0316815260200190815260200160002060008a6001600160a01b03166001600160a01b0316815260200190815260200160002060008861ffff1661ffff16815260200190815260200160002060008201518160000160006101000a81548161ffff021916908361ffff16021790555060208201518160000160026101000a8154816001600160501b0302191690836001600160501b03160217905550604082015181600001600c6101000a8154816001600160501b0302191690836001600160501b0316021790555090505085849550955050505050935093915050565b6001600160a01b038083166000908152600560209081526040808320938516835292905290812054610e6b908490849061ffff1661263d565b6002546000906001600160a01b0316158061256d57506002546040516304e162b360e41b81526001600160a01b0390911690634e162b309061251d9033906004016134ce565b60206040518083038186803b15801561253557600080fd5b505afa158015612549573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061256d919061322f565b8061261057506002546040517f1f5d2cc10000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690631f5d2cc1906125c0903390879087906004016134fc565b60206040518083038186803b1580156125d857600080fd5b505afa1580156125ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612610919061322f565b61262c5760405162461bcd60e51b81526004016107c0906137a8565b50600192915050565b604081901c91565b6001600160a01b039283166000908152600660209081526040808320948616835293815283822061ffff9390931682529190915220541690565b6000806000806000612689868c612bf4565b8a8a8a61179c8a8c612bf4565b6001600160a01b039182166000908152600460209081526040808320938516835292905220541690565b6001600160a01b03808416600090815260056020908152604080832093861683529290529081205461ffff1681806126f9878785612b33565b91509150816001600160501b0316856001600160501b0316101580156127315750806001600160501b0316856001600160501b031611155b1561274157829350505050610e6b565b60008361ffff16116127655760405162461bcd60e51b81526004016107c090613816565b6000612772600185613d7c565b90505b61ffff811615612850576001600160a01b0380891660009081526006602090815260408083208b85168452825280832061ffff8616845290915290205416806127be575061283e565b6000806127cc8b8b86612bce565b91509150816001600160501b0316896001600160501b0316101580156128045750806001600160501b0316896001600160501b031611155b156128185783975050505050505050610e6b565b806001600160501b0316896001600160501b0316111561283a57505050612850565b5050505b8061284881613e06565b915050612775565b506000979650505050505050565b6000825b61ffff81161561294e57600061287987878461263d565b9050600080612889898986612bce565b90925090506001600160a01b0383166128a45750505061293c565b816001600160501b0316866001600160501b0316116128c55750505061293c565b816001600160501b0316866001600160501b03161180156128f85750806001600160501b0316866001600160501b031611155b1561291357612908600187613db6565b945050505050610fb0565b806001600160501b0316866001600160501b03161115612938579350610fb092505050565b5050505b8061294681613e06565b915050612862565b50600095945050505050565b6001600160a01b03808516600090815260056020908152604080832093871683529290529081205461ffff16835b8161ffff168161ffff1611612a9a5760006129a488888461263d565b90506000808461ffff168461ffff16146129c8576129c38a8a86612bce565b6129d3565b6129d38a8a86612b33565b90925090506001600160a01b0383166129ee57505050612a88565b806001600160501b0316876001600160501b031610612a0f57505050612a88565b816001600160501b0316876001600160501b031610158015612a425750806001600160501b0316876001600160501b0316105b15612a5e57612a52876001613c46565b95505050505050610fb0565b816001600160501b0316876001600160501b03161015612a8457509350610fb092505050565b5050505b80612a9281613e24565b915050612988565b5060009695505050505050565b612aaf612da8565b506001600160a01b03928316600090815260076020908152604080832094909516825292835283812061ffff928316825283528390208351606081018552905491821681526001600160501b036201000083048116938201939093526c010000000000000000000000009091049091169181019190915290565b5161ffff16151590565b6001600160a01b038084166000908152600760209081526040808320938616835292815282822061ffff80861684529082528383208451606081018652905491821681526001600160501b036201000083048116938201939093526c0100000000000000000000000090910490911692810192909252908190612bb68482612d17565b612bc1878787612d27565b9250925050935093915050565b6000806000612bde868686612aa7565b9050612bea8482612d17565b612bc18583612d57565b67ffffffffffffffff1660409190911b69ffff0000000000000000161790565b6001600160a01b038116331415612c3d5760405162461bcd60e51b81526004016107c090613a3a565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b60006001600160a01b038216612ca657506000611690565b816001600160a01b031663668a0f026040518163ffffffff1660e01b815260040160206040518083038186803b158015612cdf57600080fd5b505afa158015612cf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610844919061324f565b6000610e6b838360200151612bf4565b600080612d34858561249e565b90506000612d4182612c8e565b9050612d4d8482612bf4565b9695505050505050565b6000610e6b838360400151612bf4565b6040518060a0016040528060006001600160501b0316815260200160008152602001600081526020016000815260200160006001600160501b031681525090565b604080516060810182526000808252602082018190529181019190915290565b600082601f830112612dd8578081fd5b81356020612ded612de883613bbc565b613b92565b82815281810190858301855b85811015612e2257612e10898684358b0101612e76565b84529284019290840190600101612df9565b5090979650505050505050565b60008083601f840112612e40578182fd5b50813567ffffffffffffffff811115612e57578182fd5b602083019150836020828501011115612e6f57600080fd5b9250929050565b600082601f830112612e86578081fd5b8135612e94612de882613be0565b818152846020838601011115612ea8578283fd5b816020850160208301379081016020019190915292915050565b600082601f830112612ed2578081fd5b8151612ee0612de882613be0565b818152846020838601011115612ef4578283fd5b610fb0826020830160208701613dd6565b600060208284031215612f16578081fd5b8135610e6b81613e8d565b60008060408385031215612f33578081fd5b8235612f3e81613e8d565b91506020830135612f4e81613e8d565b809150509250929050565b60008060408385031215612f6b578182fd5b8251612f7681613e8d565b6020840151909250612f4e81613e8d565b600080600060608486031215612f9b578081fd5b8335612fa681613e8d565b92506020840135612fb681613e8d565b91506040840135612fc681613e8d565b809150509250925092565b600080600060608486031215612fe5578283fd5b8351612ff081613e8d565b602085015190935061300181613e8d565b6040850151909250612fc681613e8d565b600080600060608486031215613026578081fd5b833561303181613e8d565b9250602084013561304181613e8d565b9150604084013561ffff81168114612fc6578182fd5b60008060006060848603121561306b578081fd5b833561307681613e8d565b9250602084013561308681613e8d565b929592945050506040919091013590565b6000806000606084860312156130ab578081fd5b83356130b681613e8d565b925060208401356130c681613e8d565b91506040840135612fc681613ea2565b600080604083850312156130e8578182fd5b823567ffffffffffffffff808211156130ff578384fd5b61310b86838701612dc8565b93506020850135915080821115613120578283fd5b5061312d85828601612dc8565b9150509250929050565b60006020808385031215613149578182fd5b825167ffffffffffffffff80821115613160578384fd5b818501915085601f830112613173578384fd5b8151613181612de882613bbc565b81815284810190848601875b848110156132205781518701604080601f19838f030112156131ad578a8bfd5b80518181018181108a821117156131c6576131c6613e77565b8252828b0151898111156131d8578c8dfd5b6131e68f8d83870101612ec2565b8252509082015190888211156131fa578b8cfd5b6132088e8c84860101612ec2565b818c015286525050928701929087019060010161318d565b50909998505050505050505050565b600060208284031215613240578081fd5b81518015158114610e6b578182fd5b600060208284031215613260578081fd5b5051919050565b6000806000806040858703121561327c578182fd5b843567ffffffffffffffff80821115613293578384fd5b61329f88838901612e2f565b909650945060208701359150808211156132b7578384fd5b506132c487828801612e2f565b95989497509550505050565b600080600080600080600060a0888a0312156132ea578485fd5b873567ffffffffffffffff80821115613301578687fd5b61330d8b838c01612e2f565b909950975060208a0135915080821115613325578687fd5b506133328a828b01612e2f565b909650945050604088013561334681613e8d565b9250606088013561335681613e8d565b9150608088013561336681613e8d565b8091505092959891949750929550565b600060208284031215613387578081fd5b815167ffffffffffffffff81111561339d578182fd5b610fb084828501612ec2565b600080604083850312156133bb578182fd5b823567ffffffffffffffff808211156133d2578384fd5b6133de86838701612e76565b935060208501359150808211156133f3578283fd5b5061312d85828601612e76565b600080600080600060a08688031215613417578283fd5b855161342281613ea2565b80955050602086015193506040860151925060608601519150608086015161344981613ea2565b809150509295509295909350565b600060208284031215613468578081fd5b815160ff81168114610e6b578182fd5b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b600081518084526134ba816020860160208601613dd6565b601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0393841681529183166020830152909116604082015260600190565b6001600160a01b03938416815261ffff929092166020830152909116604082015260600190565b60208082528251828201819052600091906040908185019080840286018301878501865b838110156135ba57888303603f190185528151805187855261358e888601826134a2565b91890151858303868b01529190506135a681836134a2565b96890196945050509086019060010161356a565b509098975050505050505050565b602080825282518282018190526000919060409081850190868401855b8281101561363557815180516001600160501b0390811686528782015188870152868201518787015260608083015190870152608091820151169085015260a090930192908501906001016135e5565b5091979650505050505050565b901515815260200190565b90815260200190565b60006040825261366a604083018688613478565b828103602084015261367d818587613478565b979650505050505050565b600060a0825261369c60a08301898b613478565b82810360208401526136af81888a613478565b6001600160a01b039687166040850152948616606084015250509216608090920191909152949350505050565b600060208252610e6b60208301846134a2565b60006040825261370260408301856134a2565b828103602084015261142781856134a2565b60208082526021908201527f4261736520616e642071756f746520636f756e74732061726520756e6571756160408201527f6c00000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526016908201527f4d7573742062652070726f706f736564206f776e657200000000000000000000604082015260600190565b6020808252600e908201527f4e6f207061697220616363657373000000000000000000000000000000000000604082015260600190565b60208082526016908201527f4f6e6c792063616c6c61626c65206279206f776e657200000000000000000000604082015260600190565b6020808252600d908201527f496e76616c696420706861736500000000000000000000000000000000000000604082015260600190565b6020808252601e908201527f4e6f2070726f706f7365642061676772656761746f722070726573656e740000604082015260600190565b60208082526018908201527f46656564206e6f7420666f756e6420666f7220726f756e640000000000000000604082015260600190565b60208082526018908201527f43616e6e6f7420736574206f776e657220746f207a65726f0000000000000000604082015260600190565b60208082526009908201527f4e6f206163636573730000000000000000000000000000000000000000000000604082015260600190565b6020808252818101527f41636365737320636f6e74726f6c6c657220697320616c726561647920736574604082015260600190565b60208082526018908201527f46656564206e6f7420666f756e6420666f722070686173650000000000000000604082015260600190565b6020808252601b908201527f496e76616c69642070726f706f7365642061676772656761746f720000000000604082015260600190565b60208082526014908201527f506861736520646f6573206e6f74206578697374000000000000000000000000604082015260600190565b6020808252600e908201527f46656564206e6f7420666f756e64000000000000000000000000000000000000604082015260600190565b60208082526017908201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604082015260600190565b60208082526021908201527f43616e6e6f742070726f706f73652063757272656e742061676772656761746f60408201527f7200000000000000000000000000000000000000000000000000000000000000606082015260800190565b815161ffff1681526020808301516001600160501b0390811691830191909152604092830151169181019190915260600190565b61ffff91909116815260200190565b67ffffffffffffffff91909116815260200190565b6001600160501b0391909116815260200190565b6001600160501b039586168152602081019490945260408401929092526060830152909116608082015260a00190565b6001600160501b0392831681529116602082015260400190565b60ff91909116815260200190565b60405181810167ffffffffffffffff81118282101715613bb457613bb4613e77565b604052919050565b600067ffffffffffffffff821115613bd657613bd6613e77565b5060209081020190565b600067ffffffffffffffff821115613bfa57613bfa613e77565b50601f01601f191660200190565b600061ffff808316818516808303821115613c2557613c25613e61565b01949350505050565b60008219821115613c4157613c41613e61565b500190565b60006001600160501b03808316818516808303821115613c2557613c25613e61565b80825b6001808611613c7a5750613ca5565b818704821115613c8c57613c8c613e61565b80861615613c9957918102915b9490941c938002613c6b565b94509492505050565b6000610e6b6000198484600082613cc757506001610e6b565b81613cd457506000610e6b565b8160018114613cea5760028114613cf457613d21565b6001915050610e6b565b60ff841115613d0557613d05613e61565b6001841b915084821115613d1b57613d1b613e61565b50610e6b565b5060208310610133831016604e8410600b8410161715613d54575081810a83811115613d4f57613d4f613e61565b610e6b565b613d618484846001613c68565b808604821115613d7357613d73613e61565b02949350505050565b600061ffff83811690831681811015613d9757613d97613e61565b039392505050565b600082821015613db157613db1613e61565b500390565b60006001600160501b0383811690831681811015613d9757613d97613e61565b60005b83811015613df1578181015183820152602001613dd9565b83811115613e00576000848401525b50505050565b600061ffff821680613e1a57613e1a613e61565b6000190192915050565b600061ffff80831681811415613e3c57613e3c613e61565b6001019392505050565b6000600019821415613e5a57613e5a613e61565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114611db157600080fd5b6001600160501b0381168114611db157600080fdfea2646970667358221220f3c0294c4b940421609ad52859ddbef5030d87bc6f57b1ade5a116e8d27ed98b64736f6c6343000800003360806040523480156200001157600080fd5b5033806000816200003f5760405162461bcd60e51b81526004016200003690620000f8565b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000725762000072816200007b565b50505062000166565b6001600160a01b038116331415620000a75760405162461bcd60e51b815260040162000036906200012f565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b60208082526018908201527f43616e6e6f7420736574206f776e657220746f207a65726f0000000000000000604082015260600190565b60208082526017908201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604082015260600190565b61176380620001766000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80638da5cb5b11610076578063f2fde38b1161005b578063f2fde38b1461013b578063f800ece91461014e578063ff2ed6e014610163576100a3565b80638da5cb5b14610111578063ad3fdee514610126576100a3565b8063218936fc146100a85780632dc6a726146100d3578063573a23af146100f457806379ba509714610109575b600080fd5b6100bb6100b636600461109a565b610176565b6040516100ca939291906112ff565b60405180910390f35b6100e66100e13660046111a9565b610229565b6040516100ca9291906112e5565b610107610102366004611103565b6102d0565b005b6101076103ec565b61011961047a565b6040516100ca91906112d1565b61012e610489565b6040516100ca91906115af565b610107610149366004610f75565b61049a565b6101566104d4565b6040516100ca9190611322565b61010761017136600461109a565b61057c565b600080600080730110f598b9c244947a9275f30ed2e8b84c0c7082638b0846f660028a8a8a8a6040518663ffffffff1660e01b81526004016101bc9594939291906115b8565b60606040518083038186803b1580156101d457600080fd5b505af41580156101e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020c919061120a565b80516020820151604090920151909a919950975095505050505050565b6000806000730110f598b9c244947a9275f30ed2e8b84c0c7082638b0846f6600287876040518463ffffffff1660e01b815260040161026a939291906115f1565b60606040518083038186803b15801561028257600080fd5b505af4158015610296573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ba919061120a565b80516020909101519093509150505b9250929050565b6102d86105ff565b6001600160a01b038316158015906102f857506001600160a01b03821615155b801561030c57506001600160a01b03811615155b6103315760405162461bcd60e51b8152600401610328906114c1565b60405180910390fd5b60006040518060600160405280856001600160a01b03168152602001846001600160a01b03168152602001836001600160a01b031681525090506103e2600289898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a908190840183828082843760009201919091525087925061062b915050565b5050505050505050565b6001546001600160a01b031633146104165760405162461bcd60e51b815260040161032890611453565b600080543373ffffffffffffffffffffffffffffffffffffffff19808316821784556001805490911690556040516001600160a01b0390921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b6000546001600160a01b031690565b60006104956002610790565b905090565b6104a26105ff565b6001600160a01b0381166104c85760405162461bcd60e51b8152600401610328906114f8565b6104d181610794565b50565b6040517f63b3a308000000000000000000000000000000000000000000000000000000008152606090730110f598b9c244947a9275f30ed2e8b84c0c7082906363b3a30890610528906002906004016115af565b60006040518083038186803b15801561054057600080fd5b505af4158015610554573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104959190810190610f91565b6105846105ff565b6105f9600285858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8901819004810282018101909252878152925087915086908190840183828082843760009201919091525061081b92505050565b50505050565b6000546001600160a01b031633146106295760405162461bcd60e51b81526004016103289061148a565b565b610636848484610baf565b156106535760405162461bcd60e51b81526004016103289061140a565b604080518082019091528381526020808201849052855460018101875560008781528290208351805160029093029091019261069492849290910190610dc8565b5060208281015180516106ad9260018501920190610dc8565b505084546106be9150600190611678565b8460010160006106cd86610d83565b815260200190815260200160002060006106e685610d83565b8152602001908152602001600020819055508084600201600061070886610d83565b8152602001908152602001600020600061072185610d83565b81526020808201929092526040908101600020835181546001600160a01b0391821673ffffffffffffffffffffffffffffffffffffffff199182161783559385015160018301805491831691861691909117905593909101516002909101805491909316911617905550505050565b5490565b6001600160a01b0381163314156107bd5760405162461bcd60e51b815260040161032890611578565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b610826838383610baf565b6108425760405162461bcd60e51b81526004016103289061152f565b6000600161084f85610790565b6108599190611678565b9050600084600101600061086c86610d83565b8152602001908152602001600020600061088585610d83565b8152602001908152602001600020549050818114610ab05760008560000183815481106108c257634e487b7160e01b600052603260045260246000fd5b90600052602060002090600202016040518060400160405290816000820180546108eb906116c7565b80601f0160208091040260200160405190810160405280929190818152602001828054610917906116c7565b80156109645780601f1061093957610100808354040283529160200191610964565b820191906000526020600020905b81548152906001019060200180831161094757829003601f168201915b5050505050815260200160018201805461097d906116c7565b80601f01602080910402602001604051908101604052809291908181526020018280546109a9906116c7565b80156109f65780601f106109cb576101008083540402835291602001916109f6565b820191906000526020600020905b8154815290600101906020018083116109d957829003601f168201915b505050505081525050905081866001016000610a158460000151610d83565b81526020019081526020016000206000610a328460200151610d83565b81526020019081526020016000208190555080866000018381548110610a6857634e487b7160e01b600052603260045260246000fd5b90600052602060002090600202016000820151816000019080519060200190610a92929190610dc8565b506020828101518051610aab9260018501920190610dc8565b505050505b846001016000610abf86610d83565b81526020019081526020016000206000610ad885610d83565b81526020019081526020016000206000905584600001805480610b0b57634e487b7160e01b600052603160045260246000fd5b60008281526020812060001990920191600283020190610b2b8282610e4c565b610b39600183016000610e4c565b50509055846002016000610b4c86610d83565b81526020019081526020016000206000610b6585610d83565b81526020810191909152604001600020805473ffffffffffffffffffffffffffffffffffffffff199081168255600182018054821690556002909101805490911690555050505050565b8254600090610bc057506000610d7c565b610bdd604051806040016040528085815260200184815250610d8e565b610d7885600181016000610bf088610d83565b81526020019081526020016000206000610c0987610d83565b81526020019081526020016000205481548110610c3657634e487b7160e01b600052603260045260246000fd5b9060005260206000209060020201604051806040016040529081600082018054610c5f906116c7565b80601f0160208091040260200160405190810160405280929190818152602001828054610c8b906116c7565b8015610cd85780601f10610cad57610100808354040283529160200191610cd8565b820191906000526020600020905b815481529060010190602001808311610cbb57829003601f168201915b50505050508152602001600182018054610cf1906116c7565b80601f0160208091040260200160405190810160405280929190818152602001828054610d1d906116c7565b8015610d6a5780601f10610d3f57610100808354040283529160200191610d6a565b820191906000526020600020905b815481529060010190602001808311610d4d57829003601f168201915b505050505081525050610d8e565b1490505b9392505050565b805160209091012090565b600081600001518260200151604051602001610dab9291906113a4565b604051602081830303815290604052805190602001209050919050565b828054610dd4906116c7565b90600052602060002090601f016020900481019282610df65760008555610e3c565b82601f10610e0f57805160ff1916838001178555610e3c565b82800160010185558215610e3c579182015b82811115610e3c578251825591602001919060010190610e21565b50610e48929150610e84565b5090565b508054610e58906116c7565b6000825580601f10610e6a57506104d1565b601f0160209004906000526020600020908101906104d191905b5b80821115610e485760008155600101610e85565b60008083601f840112610eaa578182fd5b50813567ffffffffffffffff811115610ec1578182fd5b6020830191508360208285010111156102c957600080fd5b600082601f830112610ee9578081fd5b8135610efc610ef782611650565b611626565b818152846020838601011115610f10578283fd5b816020850160208301379081016020019190915292915050565b600082601f830112610f3a578081fd5b8151610f48610ef782611650565b818152846020838601011115610f5c578283fd5b610f6d82602083016020870161169b565b949350505050565b600060208284031215610f86578081fd5b8135610d7c81611718565b60006020808385031215610fa3578182fd5b825167ffffffffffffffff80821115610fba578384fd5b818501915085601f830112610fcd578384fd5b815181811115610fdf57610fdf611702565b610fec8485830201611626565b81815284810190848601875b8481101561108b5781518701604080601f19838f03011215611018578a8bfd5b80518181018181108a8211171561103157611031611702565b8252828b015189811115611043578c8dfd5b6110518f8d83870101610f2a565b825250908201519088821115611065578b8cfd5b6110738e8c84860101610f2a565b818c0152865250509287019290870190600101610ff8565b50909998505050505050505050565b600080600080604085870312156110af578283fd5b843567ffffffffffffffff808211156110c6578485fd5b6110d288838901610e99565b909650945060208701359150808211156110ea578384fd5b506110f787828801610e99565b95989497509550505050565b600080600080600080600060a0888a03121561111d578283fd5b873567ffffffffffffffff80821115611134578485fd5b6111408b838c01610e99565b909950975060208a0135915080821115611158578485fd5b506111658a828b01610e99565b909650945050604088013561117981611718565b9250606088013561118981611718565b9150608088013561119981611718565b8091505092959891949750929550565b600080604083850312156111bb578182fd5b823567ffffffffffffffff808211156111d2578384fd5b6111de86838701610ed9565b935060208501359150808211156111f3578283fd5b5061120085828601610ed9565b9150509250929050565b60006060828403121561121b578081fd5b6040516060810181811067ffffffffffffffff8211171561123e5761123e611702565b604052825161124c81611718565b8152602083015161125c81611718565b6020820152604083015161126f81611718565b60408201529392505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b600081518084526112bd81602086016020860161169b565b601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0393841681529183166020830152909116604082015260600190565b60208082528251828201819052600091906040908185019080840286018301878501865b8381101561139657888303603f190185528151805187855261136a888601826112a5565b91890151858303868b015291905061138281836112a5565b968901969450505090860190600101611346565b509098975050505050505050565b6000606082526113b760608301856112a5565b828103806020850152600182527f2f0000000000000000000000000000000000000000000000000000000000000060208301526040810160408501525061140160408201856112a5565b95945050505050565b60208082526029908201527f496e736572743a204b657920616c72656164792065786973747320696e20746860408201526865206d617070696e6760b81b606082015260800190565b60208082526016908201527f4d7573742062652070726f706f736564206f776e657200000000000000000000604082015260600190565b60208082526016908201527f4f6e6c792063616c6c61626c65206279206f776e657200000000000000000000604082015260600190565b6020808252601c908201527f4164647265737365732073686f756c64206e6f74206265206e756c6c00000000604082015260600190565b60208082526018908201527f43616e6e6f7420736574206f776e657220746f207a65726f0000000000000000604082015260600190565b60208082526029908201527f52656d6f76653a204b657920646f6573206e6f7420657869737420696e20746860408201526865206d617070696e6760b81b606082015260800190565b60208082526017908201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604082015260600190565b90815260200190565b6000868252606060208301526115d260608301868861127b565b82810360408401526115e581858761127b565b98975050505050505050565b60008482526060602083015261160a60608301856112a5565b828103604084015261161c81856112a5565b9695505050505050565b60405181810167ffffffffffffffff8111828210171561164857611648611702565b604052919050565b600067ffffffffffffffff82111561166a5761166a611702565b50601f01601f191660200190565b60008282101561169657634e487b7160e01b81526011600452602481fd5b500390565b60005b838110156116b657818101518382015260200161169e565b838111156105f95750506000910152565b6002810460018216806116db57607f821691505b602082108114156116fc57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146104d157600080fdfea2646970667358221220b52f62638afc0b593b41addf91f85c38d1e1257abd4498be4d6c36a9073dcff564736f6c63430008000033