5 txs
12 calls
constructor
constructor(uint8 _decimals)
functions
aliasFor
viewfunction aliasFor(address sourceToken) view returns (uint256)
allMappedTokens
viewfunction allMappedTokens() view returns (address[])
balancerV2BptPrice
viewfunction balancerV2BptPrice(address balancerVault, address bptToken) view returns (uint256)
decimals
viewfunction decimals() view returns (uint8)
div
viewfunction div(bytes numerator, bytes denominator) view returns (uint256)
erc4626TokenPrice
viewfunction erc4626TokenPrice(address vault) view returns (uint256)
kodiakIslandPrice
viewfunction kodiakIslandPrice(address island) view returns (uint256)
kodiakV3Price
viewfunction kodiakV3Price(address pool, bool inQuotedOrder) view returns (uint256)
mappedTokenAt
viewfunction mappedTokenAt(uint256 i) view returns (address token)
mul
viewfunction mul(bytes v1, bytes v2) view returns (uint256)
numMappedTokens
viewfunction numMappedTokens() view returns (uint256)
oraclePrice
viewfunction oraclePrice(address _oracle, uint256 _stalenessThreshold) view returns (uint256 price)
origamiOraclePrice
viewfunction origamiOraclePrice(address origamiOracle, uint8 priceType, uint8 roundingMode) view returns (uint256)
owner
viewfunction owner() view returns (address)
priceFnCalldata
viewfunction priceFnCalldata(address token) view returns (bytes fnCalldata)
repricingTokenPrice
viewfunction repricingTokenPrice(address _repricingToken) view returns (uint256)
scalar
purefunction scalar(uint256 _amount) pure returns (uint256)
tokenizedBalanceSheetTokenPrice
viewfunction tokenizedBalanceSheetTokenPrice(address vault) view returns (uint256)
tokenPrice
viewfunction tokenPrice(address token) view returns (uint256 price)
tokenPrices
viewfunction tokenPrices(address[] tokens) view returns (uint256[] prices)
traderJoeBestPrice
viewfunction traderJoeBestPrice(address joeQuoter, address sellToken, address buyToken) view returns (uint256)
univ3Price
viewfunction univ3Price(address pool, bool inQuotedOrder) view returns (uint256)
wstEthRatio
viewfunction wstEthRatio(address _stEthToken) view returns (uint256 ratio)
renounceOwnership
nonpayablefunction renounceOwnership()
setTokenPriceFunction
nonpayablefunction setTokenPriceFunction(address token, bytes fnCalldata)
setTokenPriceFunctions
nonpayablefunction setTokenPriceFunctions(tuple[] mappings)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
TokenPriceFunctionSet
event TokenPriceFunctionSet(address indexed token, bytes fnCalldata)
errors
FailedPriceLookup
error FailedPriceLookup(bytes fnCalldata)
InvalidPrice
error InvalidPrice(int256)
PRBMath_MulDiv_Overflow
error PRBMath_MulDiv_Overflow(uint256 x, uint256 y, uint256 denominator)
creation bytecode
0x60a06040523480156200001157600080fd5b506040516200341f3803806200341f83398101604081905262000034916200009b565b6200003f336200004b565b60ff16608052620000c7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215620000ae57600080fd5b815160ff81168114620000c057600080fd5b9392505050565b6080516132fd6200012260003960008181610259015281816105b4015281816107c60152818161097c015281816113e001528181611c7701528181611ca501528181611cd601528181611e7a0152611fc101526132fd6000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80637e1ac748116100f9578063a67a684311610097578063cd28308511610071578063cd283085146103bb578063d74385d9146103db578063f2fde38b146103ee578063fd47f60f1461040157600080fd5b8063a67a684314610382578063c02486d014610395578063cbf4f651146103a857600080fd5b806384ba3f69116100d357806384ba3f69146103245780638da5cb5b1461033757806391b694fc1461035c5780639a59b9bd1461036f57600080fd5b80637e1ac748146102e95780637eb11c63146102fe578063843a3b501461031157600080fd5b8063313ce5671161016657806365b4c6e11161014057806365b4c6e1146102a8578063695ee9ae146102bb578063715018a6146102ce5780637b160cf5146102d657600080fd5b8063313ce56714610254578063329aac801461028d57806356cdeb0b1461029557600080fd5b80630983b122116101975780630983b1221461021b5780631f96b34e1461022c5780632b6173b51461024157600080fd5b806304330676146101be578063047d3ee7146101e757806304b3953414610208575b600080fd5b6101d16101cc3660046123a5565b610414565b6040516101de91906123e7565b60405180910390f35b6101fa6101f536600461246d565b61056e565b6040519081526020016101de565b6101fa6102163660046124fb565b610638565b6101fa610229366004612546565b90565b61023f61023a36600461255f565b61071d565b005b6101fa61024f3660046125b4565b61079d565b61027b7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016101de565b6101fa6107ae565b6101fa6102a336600461246d565b6107bf565b6101fa6102b63660046125df565b61082b565b6101fa6102c93660046125b4565b610966565b61023f610a01565b61023f6102e43660046123a5565b610a15565b6102f1610b0e565b6040516101de919061265d565b6101fa61030c3660046125b4565b610b1a565b6101fa61031f366004612670565b610c72565b6101fa6103323660046125b4565b610de4565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016101de565b6101fa61036a3660046125b4565b610e0c565b6101fa61037d3660046125df565b6110f9565b6101fa61039036600461269c565b61115e565b6101fa6103a33660046125b4565b611429565b6101fa6103b63660046126dc565b61164e565b6103ce6103c93660046125b4565b6118aa565b6040516101de919061272e565b6103446103e9366004612546565b611944565b61023f6103fc3660046125b4565b611951565b6101fa61040f3660046125b4565b6119fb565b60608167ffffffffffffffff81111561042f5761042f612761565b604051908082528060200260200182016040528015610458578160200160208202803683370190505b50905060005b82811015610567576105426001600086868581811061047f5761047f612790565b905060200201602081019061049491906125b4565b6001600160a01b03166001600160a01b0316815260200190815260200160002080546104bf906127bf565b80601f01602080910402602001604051908101604052809291908181526020018280546104eb906127bf565b80156105385780601f1061050d57610100808354040283529160200191610538565b820191906000526020600020905b81548152906001019060200180831161051b57829003601f168201915b5050505050611bc3565b82828151811061055457610554612790565b602090810291909101015260010161045e565b5092915050565b60006105af83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611bc392505050565b6105da7f0000000000000000000000000000000000000000000000000000000000000000600a612925565b61061987878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611bc392505050565b6106239190612934565b61062d919061297a565b90505b949350505050565b6000610713846001600160a01b031663c6845a0985856040518363ffffffff1660e01b815260040161066b929190612a1b565b602060405180830381865afa158015610688573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ac9190612a41565b856001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070e9190612a70565b611c73565b90505b9392505050565b610725611d13565b826001600160a01b03167f93fa1ce7e48dfdc05f1ed4d25b05cf97a746916f5b7db908adee4d56082d8fcd8383604051610760929190612a8b565b60405180910390a26001600160a01b038316600090815260016020526040902061078b828483612b0b565b50610797600284611d87565b50505050565b60006107a882610de4565b92915050565b60006107ba6002611d9c565b905090565b60006107ec7f0000000000000000000000000000000000000000000000000000000000000000600a612925565b6105da84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611bc392505050565b600080836001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa15801561086c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108909190612bf0565b50505050505090506106308184866001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ff9190612c88565b876001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561093d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109619190612c88565b611da6565b60006001600160a01b038216637a28fb886109a27f0000000000000000000000000000000000000000000000000000000000000000600a612925565b6040518263ffffffff1660e01b81526004016109c091815260200190565b602060405180830381865afa1580156109dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a89190612a41565b610a09611d13565b610a136000612036565b565b610a1d611d13565b3660005b8281101561079757838382818110610a3b57610a3b612790565b9050602002810190610a4d9190612ca5565b9150610a5c60208301836125b4565b6001600160a01b03167f93fa1ce7e48dfdc05f1ed4d25b05cf97a746916f5b7db908adee4d56082d8fcd610a936020850185612ce3565b604051610aa1929190612a8b565b60405180910390a2610ab66020830183612ce3565b60016000610ac760208701876125b4565b6001600160a01b03168152602081019190915260400160002091610aec919083612b0b565b50610b05610afd60208401846125b4565b600290611d87565b50600101610a21565b60606107ba600261209e565b6000808290506000816001600160a01b031663f4325d676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b849190612c88565b9050806001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be89190612a70565b610bf390600a612925565b826001600160a01b0316631902848a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c559190612a41565b610c5e83610de4565b610c689190612934565b610630919061297a565b600080839050600080600080846001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610cbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce09190612d62565b9450945050935093508369ffffffffffffffffffff168169ffffffffffffffffffff1611158015610d19575086610d178342612db2565b115b15610d58576040517f38ee04a7000000000000000000000000000000000000000000000000000000008152600481018490526024015b60405180910390fd5b6000831215610d96576040517f38ee04a700000000000000000000000000000000000000000000000000000000815260048101849052602401610d4f565b610dd883866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106ea573d6000803e3d6000fd5b98975050505050505050565b6001600160a01b038116600090815260016020526040812080546107a891906104bf906127bf565b600080826001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e719190612c88565b90506000836001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610eb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed79190612c88565b9050600080856001600160a01b0316631322d9546040518163ffffffff1660e01b81526004016040805180830381865afa158015610f19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3d9190612dc5565b915091506000610fc482610f5086610de4565b866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb29190612a70565b610fbd90600a612925565b60006120ab565b61100f84610fd188610de4565b886001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f8e573d6000803e3d6000fd5b6110199190612de9565b90506110ee81886001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561105d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110819190612a70565b61108c90600a612925565b896001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbd9190612a41565b979650505050505050565b600080836001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa15801561113a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108909190612dfc565b60408051600280825260608201835260009283929190602083019080368337019050509050838160008151811061119757611197612790565b60200260200101906001600160a01b031690816001600160a01b03168152505082816001815181106111cb576111cb612790565b60200260200101906001600160a01b031690816001600160a01b0316815250506000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561122b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124f9190612a70565b90506000856001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611291573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b59190612a70565b905060006001600160a01b03881663c1b7687b856112d485600a612925565b6040518363ffffffff1660e01b81526004016112f1929190612e78565b600060405180830381865afa15801561130e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113369190810190612fef565b90506000611362826080015160008151811061135457611354612790565b602002602001015184611c73565b90506000670de0b6b3a76400008360a0015160008151811061138657611386612790565b6020026020010151836113999190612934565b6113a3919061297a565b905060006113cf84608001516001815181106113c1576113c1612790565b602002602001015187611c73565b90506113db8284612db2565b6114067f0000000000000000000000000000000000000000000000000000000000000000600a612925565b6114109083612934565b61141a919061297a565b9b9a5050505050505050505050565b600080826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561146a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148e9190612a70565b9050826000806001600160a01b038316638f39a80b6114ae86600a612925565b6040518263ffffffff1660e01b81526004016114cc91815260200190565b600060405180830381865afa1580156114e9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115119190810190613110565b91509150600080846001600160a01b0316639d63848a6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611556573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261157e9190810190613174565b915091506000805b83518110156115df576115cb8482815181106115a4576115a4612790565b60200260200101518783815181106115be576115be612790565b602002602001015161213e565b6115d590836131ce565b9150600101611586565b5060005b825181101561162f5761161b83828151811061160157611601612790565b60200260200101518683815181106115be576115be612790565b61162590836131f6565b91506001016115e3565b506000811361163f576000611641565b805b9998505050505050505050565b6000806000846001600160a01b031663f94d4668856001600160a01b03166338fff2d06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c49190612a41565b6040518263ffffffff1660e01b81526004016116e291815260200190565b600060405180830381865afa1580156116ff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117279190810190613216565b50915091506000805b83518110156117f057600084828151811061174d5761174d612790565b60200260200101519050866001600160a01b0316816001600160a01b03160361177657506117e8565b6117da84838151811061178b5761178b612790565b602002602001015161179c83610de4565b836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f8e573d6000803e3d6000fd5b6117e49084612de9565b9250505b600101611730565b506118a081866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611833573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118579190612a70565b61186290600a612925565b876001600160a01b031663876f303b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110ca573d6000803e3d6000fd5b9695505050505050565b600160205260009081526040902080546118c3906127bf565b80601f01602080910402602001604051908101604052809291908181526020018280546118ef906127bf565b801561193c5780601f106119115761010080835404028352916020019161193c565b820191906000526020600020905b81548152906001019060200180831161191f57829003601f168201915b505050505081565b60006107a860028361218b565b611959611d13565b6001600160a01b0381166119ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610d4f565b6119f881612036565b50565b600080826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a609190612a70565b905060008390506000816001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611aa7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611acb9190612c88565b90506000816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b319190612a70565b90506118a0611b3f83610de4565b6001600160a01b0385166307a2d13a611b5988600a612925565b6040518263ffffffff1660e01b8152600401611b7791815260200190565b602060405180830381865afa158015611b94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb89190612a41565b610fbd84600a612925565b6000806000306001600160a01b031684604051611be09190613283565b600060405180830381855afa9150503d8060008114611c1b576040519150601f19603f3d011682016040523d82523d6000602084013e611c20565b606091505b50915091508115611c3f57808060200190518101906106309190612a41565b836040517f1d07c994000000000000000000000000000000000000000000000000000000008152600401610d4f919061272e565b60007f000000000000000000000000000000000000000000000000000000000000000060ff168260ff1611611cd457817f00000000000000000000000000000000000000000000000000000000000000000360ff16600a0a830290506107a8565b7f0000000000000000000000000000000000000000000000000000000000000000820360ff16600a0a8381611d0b57611d0b61294b565b0490506107a8565b6000546001600160a01b03163314610a13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d4f565b6000610716836001600160a01b038416612197565b60006107a8825490565b60008315611ef5576000826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e129190612a70565b846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e749190612a70565b611e9e907f0000000000000000000000000000000000000000000000000000000000000000613295565b611ea891906132ae565b611eb390600a612925565b9050611eed611ecb6001600160a01b03881680612934565b82780100000000000000000000000000000000000000000000000060006120ab565b915050610630565b6000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f599190612a70565b836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fbb9190612a70565b611fe5907f0000000000000000000000000000000000000000000000000000000000000000613295565b611fef91906132ae565b611ffa90600a612925565b90506001600160a01b03861661202c7801000000000000000000000000000000000000000000000000838360006120ab565b611eed919061297a565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60606000610716836121e6565b60006120b8858585612242565b905060018260018111156120ce576120ce6129b5565b036106305782806120e1576120e161294b565b84860915610630576000198110156120fb57600101610630565b6040517f63a05778000000000000000000000000000000000000000000000000000000008152600481018690526024810185905260448101849052606401610d4f565b600061071661214c84610de4565b83856001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f8e573d6000803e3d6000fd5b6000610716838361232f565b60008181526001830160205260408120546121de575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556107a8565b5060006107a8565b60608160000180548060200260200160405190810160405280929190818152602001828054801561223657602002820191906000526020600020905b815481526020019060010190808311612222575b50505050509050919050565b600080806000198587098587029250828110838203039150508060000361227c578382816122725761227261294b565b0492505050610716565b8381106122c6576040517f63a05778000000000000000000000000000000000000000000000000000000008152600481018790526024810186905260448101859052606401610d4f565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b600082600001828154811061234657612346612790565b9060005260206000200154905092915050565b60008083601f84011261236b57600080fd5b50813567ffffffffffffffff81111561238357600080fd5b6020830191508360208260051b850101111561239e57600080fd5b9250929050565b600080602083850312156123b857600080fd5b823567ffffffffffffffff8111156123cf57600080fd5b6123db85828601612359565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b8181101561241f57835183529284019291840191600101612403565b50909695505050505050565b60008083601f84011261243d57600080fd5b50813567ffffffffffffffff81111561245557600080fd5b60208301915083602082850101111561239e57600080fd5b6000806000806040858703121561248357600080fd5b843567ffffffffffffffff8082111561249b57600080fd5b6124a78883890161242b565b909650945060208701359150808211156124c057600080fd5b506124cd8782880161242b565b95989497509550505050565b6001600160a01b03811681146119f857600080fd5b600281106119f857600080fd5b60008060006060848603121561251057600080fd5b833561251b816124d9565b9250602084013561252b816124ee565b9150604084013561253b816124ee565b809150509250925092565b60006020828403121561255857600080fd5b5035919050565b60008060006040848603121561257457600080fd5b833561257f816124d9565b9250602084013567ffffffffffffffff81111561259b57600080fd5b6125a78682870161242b565b9497909650939450505050565b6000602082840312156125c657600080fd5b8135610716816124d9565b80151581146119f857600080fd5b600080604083850312156125f257600080fd5b82356125fd816124d9565b9150602083013561260d816125d1565b809150509250929050565b60008151808452602080850194506020840160005b838110156126525781516001600160a01b03168752958201959082019060010161262d565b509495945050505050565b6020815260006107166020830184612618565b6000806040838503121561268357600080fd5b823561268e816124d9565b946020939093013593505050565b6000806000606084860312156126b157600080fd5b83356126bc816124d9565b925060208401356126cc816124d9565b9150604084013561253b816124d9565b600080604083850312156126ef57600080fd5b82356126fa816124d9565b9150602083013561260d816124d9565b60005b8381101561272557818101518382015260200161270d565b50506000910152565b602081526000825180602084015261274d81604085016020870161270a565b601f01601f19169190910160400192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600181811c908216806127d357607f821691505b60208210810361280c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b8085111561287c57816000190482111561286257612862612812565b8085161561286f57918102915b93841c9390800290612846565b509250929050565b600082612893575060016107a8565b816128a0575060006107a8565b81600181146128b657600281146128c0576128dc565b60019150506107a8565b60ff8411156128d1576128d1612812565b50506001821b6107a8565b5060208310610133831016604e8410600b84101617156128ff575081810a6107a8565b6129098383612841565b806000190482111561291d5761291d612812565b029392505050565b600061071660ff841683612884565b80820281158282048414176107a8576107a8612812565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826129b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600281106119f8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60408101612a28846129e4565b838252612a34836129e4565b8260208301529392505050565b600060208284031215612a5357600080fd5b5051919050565b805160ff81168114612a6b57600080fd5b919050565b600060208284031215612a8257600080fd5b61071682612a5a565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b601f821115612b06576000816000526020600020601f850160051c81016020861015612ae35750805b601f850160051c820191505b81811015612b0257828155600101612aef565b5050505b505050565b67ffffffffffffffff831115612b2357612b23612761565b612b3783612b3183546127bf565b83612aba565b6000601f841160018114612b6b5760008515612b535750838201355b600019600387901b1c1916600186901b178355612bc5565b600083815260209020601f19861690835b82811015612b9c5786850135825560209485019460019092019101612b7c565b5086821015612bb95760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8051600281900b8114612a6b57600080fd5b805161ffff81168114612a6b57600080fd5b600080600080600080600060e0888a031215612c0b57600080fd5b8751612c16816124d9565b9650612c2460208901612bcc565b9550612c3260408901612bde565b9450612c4060608901612bde565b9350612c4e60808901612bde565b925060a088015163ffffffff81168114612c6757600080fd5b60c0890151909250612c78816125d1565b8091505092959891949750929550565b600060208284031215612c9a57600080fd5b8151610716816124d9565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112612cd957600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612d1857600080fd5b83018035915067ffffffffffffffff821115612d3357600080fd5b60200191503681900382131561239e57600080fd5b805169ffffffffffffffffffff81168114612a6b57600080fd5b600080600080600060a08688031215612d7a57600080fd5b612d8386612d48565b9450602086015193506040860151925060608601519150612da660808701612d48565b90509295509295909350565b818103818111156107a8576107a8612812565b60008060408385031215612dd857600080fd5b505080516020909101519092909150565b808201808211156107a8576107a8612812565b600080600080600080600060e0888a031215612e1757600080fd5b8751612e22816124d9565b9650612e3060208901612bcc565b9550612e3e60408901612bde565b9450612e4c60608901612bde565b9350612e5a60808901612bde565b9250612e6860a08901612a5a565b915060c0880151612c78816125d1565b604081526000612e8b6040830185612618565b90508260208301529392505050565b60405160c0810167ffffffffffffffff81118282101715612ebd57612ebd612761565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715612eec57612eec612761565b604052919050565b600067ffffffffffffffff821115612f0e57612f0e612761565b5060051b60200190565b600082601f830112612f2957600080fd5b81516020612f3e612f3983612ef4565b612ec3565b8083825260208201915060208460051b870101935086841115612f6057600080fd5b602086015b84811015612f85578051612f78816124d9565b8352918301918301612f65565b509695505050505050565b600082601f830112612fa157600080fd5b81516020612fb1612f3983612ef4565b8083825260208201915060208460051b870101935086841115612fd357600080fd5b602086015b84811015612f855780518352918301918301612fd8565b60006020828403121561300157600080fd5b815167ffffffffffffffff8082111561301957600080fd5b9083019060c0828603121561302d57600080fd5b613035612e9a565b82518281111561304457600080fd5b61305087828601612f18565b82525060208301518281111561306557600080fd5b61307187828601612f18565b60208301525060408301518281111561308957600080fd5b61309587828601612f90565b6040830152506060830151828111156130ad57600080fd5b6130b987828601612f90565b6060830152506080830151828111156130d157600080fd5b6130dd87828601612f90565b60808301525060a0830151828111156130f557600080fd5b61310187828601612f90565b60a08301525095945050505050565b6000806040838503121561312357600080fd5b825167ffffffffffffffff8082111561313b57600080fd5b61314786838701612f90565b9350602085015191508082111561315d57600080fd5b5061316a85828601612f90565b9150509250929050565b6000806040838503121561318757600080fd5b825167ffffffffffffffff8082111561319f57600080fd5b6131ab86838701612f18565b935060208501519150808211156131c157600080fd5b5061316a85828601612f18565b80820182811260008312801582168215821617156131ee576131ee612812565b505092915050565b818103600083128015838313168383128216171561056757610567612812565b60008060006060848603121561322b57600080fd5b835167ffffffffffffffff8082111561324357600080fd5b61324f87838801612f18565b9450602086015191508082111561326557600080fd5b5061327286828701612f90565b925050604084015190509250925092565b60008251612cd981846020870161270a565b60ff81811683821601908111156107a8576107a8612812565b60ff82811682821603908111156107a8576107a861281256fea26469706673582212208ca78b730cb62aeaf41f85f825769b0ffdbf0424198358a963202fe1f636aac164736f6c63430008160033000000000000000000000000000000000000000000000000000000000000001e