0 txs
0 calls
constructor
constructor((address timelockAddress, address frxEthEthCurveLp, (address uniswapV3PairAddress, uint32 twapDuration, address baseToken, address quoteToken) frxEthFraxUniswapV3SingleTwapOracleParams, (address ethUsdChainlinkFeedAddress, uint256 maxEthUsdOracleDelay) ethUsdChainlinkOracleWithMaxDelayParams, (address curvePoolEmaPriceOracleAddress, uint256 minimumCurvePoolEma, uint256 maximumCurvePoolEma) frxEthEthCurvePoolEmaPriceOracleWithMinMaxParams, (address curvePoolVirtualPriceAddress, uint256 minimumCurvePoolVirtualPrice, uint256 maximumCurvePoolVirtualPrice) frxEthEthCurvePoolVirtualPriceOracleWithMinMaxParams, (address chainlinkFeedAddress, uint256 maximumOracleDelay) fraxUsdChainlinkOracleWithMaxDelayParams) _params)
functions
BASE_TOKEN_0_DECIMALS
viewfunction BASE_TOKEN_0_DECIMALS() view returns (uint256)
BASE_TOKEN_0
viewfunction BASE_TOKEN_0() view returns (address)
BASE_TOKEN_1_DECIMALS
viewfunction BASE_TOKEN_1_DECIMALS() view returns (uint256)
BASE_TOKEN_1
viewfunction BASE_TOKEN_1() view returns (address)
CHAINLINK_FEED_ADDRESS
viewfunction CHAINLINK_FEED_ADDRESS() view returns (address)
CHAINLINK_FEED_DECIMALS
viewfunction CHAINLINK_FEED_DECIMALS() view returns (uint8)
CHAINLINK_FEED_PRECISION
viewfunction CHAINLINK_FEED_PRECISION() view returns (uint256)
CURVE_POOL_EMA_PRICE_ORACLE_PRECISION
viewfunction CURVE_POOL_EMA_PRICE_ORACLE_PRECISION() view returns (uint256)
CURVE_POOL_EMA_PRICE_ORACLE
viewfunction CURVE_POOL_EMA_PRICE_ORACLE() view returns (address)
CURVE_POOL_VIRTUAL_PRICE_PRECISION
viewfunction CURVE_POOL_VIRTUAL_PRICE_PRECISION() view returns (uint256)
CURVE_POOL_VIRTUAL_PRICE
viewfunction CURVE_POOL_VIRTUAL_PRICE() view returns (address)
decimals
purefunction decimals() pure returns (uint8)
ETH_USD_CHAINLINK_FEED_ADDRESS
viewfunction ETH_USD_CHAINLINK_FEED_ADDRESS() view returns (address)
ETH_USD_CHAINLINK_FEED_DECIMALS
viewfunction ETH_USD_CHAINLINK_FEED_DECIMALS() view returns (uint8)
ETH_USD_CHAINLINK_FEED_PRECISION
viewfunction ETH_USD_CHAINLINK_FEED_PRECISION() view returns (uint256)
FRAX_ERC20
viewfunction FRAX_ERC20() view returns (address)
FRXETH_ERC20
viewfunction FRXETH_ERC20() view returns (address)
getChainlinkPrice
viewfunction getChainlinkPrice() view returns (bool _isBadData, uint256 _updatedAt, uint256 _price)
getCurvePoolToken1EmaPrice
viewfunction getCurvePoolToken1EmaPrice() view returns (uint256 _emaPrice)
getCurvePoolVirtualPrice
viewfunction getCurvePoolVirtualPrice() view returns (uint256 _virtualPrice)
getEthPerFrxEth
viewfunction getEthPerFrxEth() view returns (uint256 _ethPerFrxEth)
getEthUsdChainlinkPrice
viewfunction getEthUsdChainlinkPrice() view returns (bool _isBadData, uint256 _updatedAt, uint256 _usdPerEth)
getFrxEthPerUsd
viewfunction getFrxEthPerUsd() view returns (bool _isBadData, uint256 _frxEthPerUsd)
getLpTokenPerFrax
viewfunction getLpTokenPerFrax(uint256 _virtualPrice) view returns (uint256 _lpTokenPerFrax)
getLpTokenPerUsd
viewfunction getLpTokenPerUsd(uint256 _virtualPrice) view returns (bool _isBadData, uint256 _lpTokenPerUsd)
getPrices
viewfunction getPrices() view returns (bool _isBadData, uint256 _priceLow, uint256 _priceHigh)
getPricesNormalized
viewfunction getPricesNormalized() view returns (bool _isBadDataNormal, uint256 _priceLowNormal, uint256 _priceHighNormal)
getTwapFrxEthPerUsd
viewfunction getTwapFrxEthPerUsd() view returns (uint256 _fraxPerFrxEth)
getUniswapV3Twap
viewfunction getUniswapV3Twap() view returns (uint256 _twap)
getUsdPerEth
viewfunction getUsdPerEth() view returns (bool _isBadData, uint256 _usdPerEth)
maximumCurvePoolEma
viewfunction maximumCurvePoolEma() view returns (uint256)
maximumCurvePoolVirtualPrice
viewfunction maximumCurvePoolVirtualPrice() view returns (uint256)
maximumEthUsdOracleDelay
viewfunction maximumEthUsdOracleDelay() view returns (uint256)
maximumOracleDelay
viewfunction maximumOracleDelay() view returns (uint256)
minimumCurvePoolEma
viewfunction minimumCurvePoolEma() view returns (uint256)
minimumCurvePoolVirtualPrice
viewfunction minimumCurvePoolVirtualPrice() view returns (uint256)
name
purefunction name() pure returns (string)
NORMALIZATION_0
viewfunction NORMALIZATION_0() view returns (int256)
NORMALIZATION_1
viewfunction NORMALIZATION_1() view returns (int256)
ORACLE_PRECISION
viewfunction ORACLE_PRECISION() view returns (uint256)
pendingTimelockAddress
viewfunction pendingTimelockAddress() view returns (address)
QUOTE_TOKEN_0_DECIMALS
viewfunction QUOTE_TOKEN_0_DECIMALS() view returns (uint256)
QUOTE_TOKEN_0
viewfunction QUOTE_TOKEN_0() view returns (address)
QUOTE_TOKEN_1_DECIMALS
viewfunction QUOTE_TOKEN_1_DECIMALS() view returns (uint256)
QUOTE_TOKEN_1
viewfunction QUOTE_TOKEN_1() view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
timelockAddress
viewfunction timelockAddress() view returns (address)
TWAP_PRECISION
viewfunction TWAP_PRECISION() view returns (uint128)
twapDuration
viewfunction twapDuration() view returns (uint32)
UNI_V3_PAIR_ADDRESS
viewfunction UNI_V3_PAIR_ADDRESS() view returns (address)
UNISWAP_V3_TWAP_BASE_TOKEN
viewfunction UNISWAP_V3_TWAP_BASE_TOKEN() view returns (address)
UNISWAP_V3_TWAP_QUOTE_TOKEN
viewfunction UNISWAP_V3_TWAP_QUOTE_TOKEN() view returns (address)
acceptTransferTimelock
nonpayablefunction acceptTransferTimelock()
renounceTimelock
nonpayablefunction renounceTimelock()
setMaximumCurvePoolEma
nonpayablefunction setMaximumCurvePoolEma(uint256 _maximumPrice)
setMaximumCurvePoolVirtualPrice
nonpayablefunction setMaximumCurvePoolVirtualPrice(uint256 _newMaximum)
setMaximumEthUsdOracleDelay
nonpayablefunction setMaximumEthUsdOracleDelay(uint256 _newMaxOracleDelay)
setMaximumOracleDelay
nonpayablefunction setMaximumOracleDelay(uint256 _newMaxOracleDelay)
setMinimumCurvePoolEma
nonpayablefunction setMinimumCurvePoolEma(uint256 _minimumPrice)
setMinimumCurvePoolVirtualPrice
nonpayablefunction setMinimumCurvePoolVirtualPrice(uint256 _newMinimum)
setTwapDuration
nonpayablefunction setTwapDuration(uint32 _newTwapDuration)
transferTimelock
nonpayablefunction transferTimelock(address _newTimelock)
events
SetMaximumCurvePoolEma
event SetMaximumCurvePoolEma(uint256 oldMaximum, uint256 newMaximum)
SetMaximumCurvePoolVirtualPrice
event SetMaximumCurvePoolVirtualPrice(uint256 oldMaximum, uint256 newMaximum)
SetMaximumEthUsdOracleDelay
event SetMaximumEthUsdOracleDelay(uint256 oldMaxOracleDelay, uint256 newMaxOracleDelay)
SetMaximumOracleDelay
event SetMaximumOracleDelay(address oracle, uint256 oldMaxOracleDelay, uint256 newMaxOracleDelay)
SetMaximumOracleDelay
event SetMaximumOracleDelay(uint256 oldMaxOracleDelay, uint256 newMaxOracleDelay)
SetMinimumCurvePoolEma
event SetMinimumCurvePoolEma(uint256 oldMinimum, uint256 newMinimum)
SetMinimumCurvePoolVirtualPrice
event SetMinimumCurvePoolVirtualPrice(uint256 oldMinimum, uint256 newMinimum)
SetTwapDuration
event SetTwapDuration(uint256 oldTwapDuration, uint256 newTwapDuration)
TimelockTransferred
event TimelockTransferred(address indexed previousTimelock, address indexed newTimelock)
TimelockTransferStarted
event TimelockTransferStarted(address indexed previousTimelock, address indexed newTimelock)
errors
OnlyPendingTimelock
error OnlyPendingTimelock()
OnlyTimelock
error OnlyTimelock()
creation bytecode
0x6103606040523480156200001257600080fd5b50604051620026173803806200261783398101604081905262000035916200065f565b8060c0015181604001518260a00151836080015184606001516040518061010001604052806103486001600160a01b03168152602001601260ff16815260200187602001516001600160a01b03168152602001601260ff1681526020016103486001600160a01b03168152602001601260ff16815260200187602001516001600160a01b03168152602001601260ff1681525080604001516001600160a01b03166080816001600160a01b031681525050806060015160ff1660a081815250508060c001516001600160a01b031660c0816001600160a01b0316815250508060e0015160ff1660e0818152505080600001516001600160a01b0316610100816001600160a01b031681525050806020015160ff16610120818152505080608001516001600160a01b0316610140816001600160a01b0316815250508060a0015160ff1661016081815250506101205160a05162000193919062000787565b610180526101605160e051620001aa919062000787565b6101a05250600180546001600160a01b03191633179055620001d36323e2f2e160e11b62000420565b80516001600160a01b03166101c08190526040805163313ce56760e01b8152905163313ce567916004808201926020929091908290030181865afa15801562000220573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002469190620007b1565b60ff166101e08190526200025c90600a620008dc565b6102005260200151600355620002796379e7dc3b60e11b62000420565b80516001600160a01b031661022052602081015160045560400151600555620002a963692faef760e11b62000420565b80516001600160a01b031661024052602081015160065560400151600755620002d96303b9884f60e21b62000420565b80516001600160a01b039081166102605260208201516008805463ffffffff191663ffffffff9092169190911790556040820151811661028052606090910151166102a0526200033063034a813d60e01b62000420565b80516001600160a01b03166102c08190526040805163313ce56760e01b8152905163313ce567916004808201926020929091908290030181865afa1580156200037d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a39190620007b1565b60ff166102e0819052620003b990600a620008dc565b61030052602001516009558051620003d190620004a4565b620003e363415f130360e01b62000420565b620003f5632fa3fc3160e21b62000420565b60409081018051909101516001600160a01b03908116610320529051606001511661034052620008ea565b6001600160e01b031980821690036200047f5760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015260640160405180910390fd5b6001600160e01b0319166000908152600260205260409020805460ff19166001179055565b6001546040516001600160a01b038084169216907f31b6c5a04b069b6ec1b3cef44c4e7c1eadd721349cda9823d0b1877b3551cdc690600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b60405160e081016001600160401b03811182821017156200053157634e487b7160e01b600052604160045260246000fd5b60405290565b604051608081016001600160401b03811182821017156200053157634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200058057600080fd5b919050565b6000604082840312156200059857600080fd5b604080519081016001600160401b0381118282101715620005c957634e487b7160e01b600052604160045260246000fd5b604052905080620005da8362000568565b8152602083015160208201525092915050565b6000606082840312156200060057600080fd5b604051606081016001600160401b03811182821017156200063157634e487b7160e01b600052604160045260246000fd5b604052905080620006428362000568565b815260208301516020820152604083015160408201525092915050565b60008183036102008112156200067457600080fd5b6200067e62000500565b620006898462000568565b8152620006996020850162000568565b60208201526080603f1983011215620006b157600080fd5b620006bb62000537565b9150620006cb6040850162000568565b8252606084015163ffffffff81168114620006e557600080fd5b6020830152620006f86080850162000568565b60408301526200070b60a0850162000568565b6060830152816040820152620007258560c0860162000585565b60608201526200073a856101008601620005ed565b60808201526200074f856101608601620005ed565b60a082015262000764856101c0860162000585565b60c0820152949350505050565b634e487b7160e01b600052601160045260246000fd5b8181036000831280158383131683831282161715620007aa57620007aa62000771565b5092915050565b600060208284031215620007c457600080fd5b815160ff81168114620007d657600080fd5b9392505050565b600181815b808511156200081e57816000190482111562000802576200080262000771565b808516156200081057918102915b93841c9390800290620007e2565b509250929050565b6000826200083757506001620008d6565b816200084657506000620008d6565b81600181146200085f57600281146200086a576200088a565b6001915050620008d6565b60ff8411156200087e576200087e62000771565b50506001821b620008d6565b5060208310610133831016604e8410600b8410161715620008af575081810a620008d6565b620008bb8383620007dd565b8060001904821115620008d257620008d262000771565b0290505b92915050565b6000620007d6838362000826565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c0516102e051610300516103205161034051611bb962000a5e60003960006107bc015260006104a90152600081816107950152610e10015260006107650152600081816104f70152610f4001526000818161084d01526114740152600081816107ec015261145201526000818161060901526113a601526000818161088f01526114ea01526000818161052d0152610e7b01526000818161070e0152610dbb015260006105da015260008181610826015261100a0152600081816103c301528181610ba301528181610bcc0152610c0f0152600081816108e401528181610b0101528181610b2a0152610b6d0152600061058e015260006104d0015260006109980152600061048201526000610735015260006106ae015260006109710152600061094a0152611bb96000f3fe608060405234801561001057600080fd5b50600436106103b95760003560e01c8063781097d0116101f4578063b10543501161011a578063d7360946116100ad578063e5a66dfa1161007c578063e5a66dfa1461096c578063f097486c14610993578063f6ccaad4146109ba578063f97697ff146109c257600080fd5b8063d736094614610922578063dd139f5114610935578063dd1c32ec1461093d578063e0d2e7801461094557600080fd5b8063c82f2b12116100e9578063c82f2b12146108df578063cede91a414610906578063cf964ed614610475578063d2333be71461090f57600080fd5b8063b10543501461088a578063bd9a548b146108b1578063c433c80a146108b9578063c809d4ed146108cc57600080fd5b8063952dca48116101925780639c0d313f116101615780639c0d313f14610519578063a2cc770314610848578063a885c8651461086f578063afecfe221461087757600080fd5b8063952dca48146107de578063993e3d54146107e7578063996b8fb71461080e57806399a64f281461082157600080fd5b80638c1e2f92116101ce5780638c1e2f92146105195780638db9cd1f146107875780638e7dc4c01461079057806390e67fe8146107b757600080fd5b8063781097d0146107305780637c99a499146107575780638b8b2c911461076057600080fd5b80633b17136a116102e457806351f43f551161027757806359f768b21161024657806359f768b2146106ef57806365c781b6146106f85780636ff4847214610701578063726de1a51461070957600080fd5b806351f43f551461068357806356ee4c081461069657806359c909e1146106a957806359d3f8d1146106d057600080fd5b80634bc66f32116102b35780634bc66f32146106405780634d3375e8146106605780634f8b4ae714610668578063515efa8f1461067057600080fd5b80633b17136a146105d55780633cb6f5fa146105fc578063417d25a914610604578063450140951461062b57600080fd5b8063208880041161035c57806326d895451161032b57806326d895451461054f578063313ce5671461057457806337f85f66146105895780633aeef3d3146105b057600080fd5b806320888004146104cb57806320bf30fc146104f2578063230b5fa814610519578063269392051461052857600080fd5b8063090f3f5011610398578063090f3f50146104305780630b7f3ffe14610475578063116d79761461047d5780631588b0e0146104a457600080fd5b806232e91a146103be57806301ffc9a7146103f857806306fdde031461041b575b600080fd5b6103e57f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b61040b610406366004611710565b6109f2565b60405190151581526020016103ef565b610423610a7b565b6040516103ef9190611752565b6000546104509073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103ef565b6103e5610a9b565b6104507f000000000000000000000000000000000000000000000000000000000000000081565b6104507f000000000000000000000000000000000000000000000000000000000000000081565b6104507f000000000000000000000000000000000000000000000000000000000000000081565b6104507f000000000000000000000000000000000000000000000000000000000000000081565b6103e5670de0b6b3a764000081565b6104507f000000000000000000000000000000000000000000000000000000000000000081565b60085461055f9063ffffffff1681565b60405163ffffffff90911681526020016103ef565b60125b60405160ff90911681526020016103ef565b6103e57f000000000000000000000000000000000000000000000000000000000000000081565b6105b8610aaa565b6040805193151584526020840192909252908201526060016103ef565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b6105b8610ac2565b6104507f000000000000000000000000000000000000000000000000000000000000000081565b61063e6106393660046117be565b610acf565b005b6001546104509073ffffffffffffffffffffffffffffffffffffffff1681565b6105b8610ae3565b61063e610c49565b61063e61067e3660046117f4565b610c6f565b61063e6106913660046117f4565b610c80565b61063e6106a43660046117f4565b610c91565b6104507f000000000000000000000000000000000000000000000000000000000000000081565b6106d8610ca2565b6040805192151583526020830191909152016103ef565b6103e560045481565b6103e560075481565b6103e5610cb8565b6103e57f000000000000000000000000000000000000000000000000000000000000000081565b6103e57f000000000000000000000000000000000000000000000000000000000000000081565b6103e560035481565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b6103e560065481565b6103e57f000000000000000000000000000000000000000000000000000000000000000081565b6104507f000000000000000000000000000000000000000000000000000000000000000081565b6103e560055481565b6104507f000000000000000000000000000000000000000000000000000000000000000081565b6106d861081c3660046117f4565b610cc2565b6104507f000000000000000000000000000000000000000000000000000000000000000081565b6104507f000000000000000000000000000000000000000000000000000000000000000081565b6103e5610cf9565b6103e56108853660046117f4565b610d03565b6104507f000000000000000000000000000000000000000000000000000000000000000081565b6105b8610d34565b61063e6108c736600461180d565b610d41565b61063e6108da3660046117f4565b610d52565b6103e57f000000000000000000000000000000000000000000000000000000000000000081565b6103e560095481565b61063e61091d3660046117f4565b610d63565b61063e6109303660046117f4565b610d74565b6106d8610d85565b6103e5610dfc565b6104507f000000000000000000000000000000000000000000000000000000000000000081565b6103e57f000000000000000000000000000000000000000000000000000000000000000081565b6103e57f000000000000000000000000000000000000000000000000000000000000000081565b61063e610e66565b6109d1670de0b6b3a764000081565b6040516fffffffffffffffffffffffffffffffff90911681526020016103ef565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161480610a7557507fffffffff00000000000000000000000000000000000000000000000000000000821660009081526002602052604090205460ff165b92915050565b6060604051806060016040528060318152602001611b7c60319139905090565b6000610aa5610e76565b905090565b6000806000610ab7610f38565b925092509250909192565b6000806000610ab7611002565b610ad76110b7565b610ae081611108565b50565b600080600080600080610af461117d565b92509250925082955060007f000000000000000000000000000000000000000000000000000000000000000013610b6857610b4e7f0000000000000000000000000000000000000000000000000000000000000000611862565b610b5990600a6119ba565b610b6390836119c6565b610b9d565b610b937f0000000000000000000000000000000000000000000000000000000000000000600a6119ba565b610b9d9083611a01565b945060007f000000000000000000000000000000000000000000000000000000000000000013610c0a57610bf07f0000000000000000000000000000000000000000000000000000000000000000611862565b610bfb90600a6119ba565b610c0590826119c6565b610c3f565b610c357f0000000000000000000000000000000000000000000000000000000000000000600a6119ba565b610c3f9082611a01565b9350505050909192565b610c516110b7565b610c596111dd565b610c636000611108565b610c6d600061122e565b565b610c776110b7565b610ae0816112bc565b610c886110b7565b610ae0816112fd565b610c996110b7565b610ae08161133e565b600080610cad611002565b919491935090915050565b6000610aa561137f565b6000806000610ccf610d85565b909350905083610ce7670de0b6b3a764000083611a01565b610cf191906119c6565b915050915091565b6000610aa56114e6565b600080610d0e610dfc565b905082610d23670de0b6b3a764000083611a01565b610d2d91906119c6565b9392505050565b6000806000610ab761117d565b610d496110b7565b610ae0816115a1565b610d5a6110b7565b610ae08161161c565b610d6b6110b7565b610ae08161165d565b610d7c6110b7565b610ae08161169e565b6000806000610d92610ca2565b90935090506000610da1610a9b565b9050610dad8183611a01565b670de0b6b3a7640000610de07f000000000000000000000000000000000000000000000000000000000000000082611a01565b610dea9190611a01565b610df491906119c6565b925050509091565b6000806000610e09610f38565b92505091507f000000000000000000000000000000000000000000000000000000000000000081670de0b6b3a7640000610e439190611a01565b610e4d91906119c6565b610e5561137f565b610e5f9190611a01565b9250505090565b610e6e6111dd565b610c6d6116df565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166386fc88d36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ee4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f089190611a18565b90506005548111610f195780610f1d565b6005545b90506004548110610f2e5780610f32565b6004545b91505090565b6000806000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610fa9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fcd9190611a50565b5095509092505050600081131580610fef5750600954610fed8442611aa0565b115b15610ff957600193505b80915050909192565b6000806000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015611073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110979190611a50565b5095509092505050600081131580610fef5750600354610fed8442611aa0565b60015473ffffffffffffffffffffffffffffffffffffffff163314610c6d576040517f1c0be90a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff838116918217835560015460405192939116917f162998b90abc2507f3953aa797827b03a14c42dbd9a35f09feaf02e0d592773a9190a350565b60008060008061118b610cf9565b9050600061119882610cc2565b909550905060006111a883610d03565b905085156111bb578094508093506111d5565b818110156111ce578094508193506111d5565b8194508093505b505050909192565b60005473ffffffffffffffffffffffffffffffffffffffff163314610c6d576040517ff5c49e6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f31b6c5a04b069b6ec1b3cef44c4e7c1eadd721349cda9823d0b1877b3551cdc690600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60075460408051918252602082018390527fd9091eaf8ffa90874fbbfbf50958c6c6a5d100127e4c7deef1d60d4867d5b34b910160405180910390a1600755565b60065460408051918252602082018390527f9fcdd2fe48cfa74742b6d5df5ad1e1ac33489df503c6d8ccd07dee23649d42d0910160405180910390a1600655565b60055460408051918252602082018390527fcfde23b8b5cb70458592a0920d25ba0c811d04a57f0737cc8a379cbbf0dbbbb4910160405180910390a1600555565b604080516001808252818301909252600091829190602080830190803683370190505090507f0000000000000000000000000000000000000000000000000000000000000000816000815181106113d8576113d8611ab3565b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101909101526008546040517f07f7ca9f00000000000000000000000000000000000000000000000000000000815273b210ce856631eeeb767efa666ec7c1c57738d438916307f7ca9f916114a591670de0b6b3a7640000917f0000000000000000000000000000000000000000000000000000000000000000917f000000000000000000000000000000000000000000000000000000000000000091889163ffffffff1690600401611ae2565b602060405180830381865afa1580156114c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f329190611a18565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663bb7b8b806040518163ffffffff1660e01b8152600401602060405180830381865afa158015611553573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115779190611a18565b90506007548111611588578061158c565b6007545b9050600654811061159a5790565b5060065490565b6008546040805163ffffffff928316815291831660208301527fa5868b8f066a74ed982ad7843f1f76a16fc96b95c00596d6249b5fe5dee54413910160405180910390a1600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff92909216919091179055565b60045460408051918252602082018390527f2d76fda59e51b6069c5600ca7d7f2cb8449933f16ba284b7a22f410d487ac904910160405180910390a1600455565b60095460408051918252602082018390527fd72ef688fa430b6a285b84371ba35e8a8e0762b32c1deb7be9d9c111ca79f5ea910160405180910390a1600955565b60035460408051918252602082018390527f1b427db70b2e813aae1e9f4dc54fcd2ae904b1350f60b84a7bab7d379aa2b02e910160405180910390a1600355565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055610c6d3361122e565b60006020828403121561172257600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d2d57600080fd5b600060208083528351808285015260005b8181101561177f57858101830151858201604001528201611763565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b6000602082840312156117d057600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610d2d57600080fd5b60006020828403121561180657600080fd5b5035919050565b60006020828403121561181f57600080fd5b813563ffffffff81168114610d2d57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007f8000000000000000000000000000000000000000000000000000000000000000820361189357611893611833565b5060000390565b600181815b808511156118f357817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156118d9576118d9611833565b808516156118e657918102915b93841c939080029061189f565b509250929050565b60008261190a57506001610a75565b8161191757506000610a75565b816001811461192d576002811461193757611953565b6001915050610a75565b60ff84111561194857611948611833565b50506001821b610a75565b5060208310610133831016604e8410600b8410161715611976575081810a610a75565b611980838361189a565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156119b2576119b2611833565b029392505050565b6000610d2d83836118fb565b6000826119fc577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8082028115828204841417610a7557610a75611833565b600060208284031215611a2a57600080fd5b5051919050565b805169ffffffffffffffffffff81168114611a4b57600080fd5b919050565b600080600080600060a08688031215611a6857600080fd5b611a7186611a31565b9450602086015193506040860151925060608601519150611a9460808701611a31565b90509295509295909350565b81810381811115610a7557610a75611833565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060a082016fffffffffffffffffffffffffffffffff88168352602073ffffffffffffffffffffffffffffffffffffffff80891682860152808816604086015260a0606086015282875180855260c087019150838901945060005b81811015611b5c578551841683529484019491840191600101611b3e565b50508094505050505063ffffffff83166080830152969550505050505056fe4672784554482f455448204375727665204c50204475616c204f7261636c6520772f204d696e204d617820426f756e6473a164736f6c6343000813000a0000000000000000000000008412ebf45bac1b340bbe8f318b928c466c4e39ca000000000000000000000000f43211935c781d5ca1a41d2041f397b8a7366c7a00000000000000000000000036c060cc4b088c830a561e959a679a58205d3f560000000000000000000000000000000000000000000000000000000000000708000000000000000000000000853d955acef822db058eb8505911ed77f175b99e0000000000000000000000005e8422345238f34275888049021821e8e08caa1f0000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b84190000000000000000000000000000000000000000000000000000000000000f3c000000000000000000000000a1f8a6807c402e4a15ef4eba36528a3fed24e57700000000000000000000000000000000000000000000000009b6e64a8ec600000000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000a1f8a6807c402e4a15ef4eba36528a3fed24e5770000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000000000000000000000000000010a741a462780000000000000000000000000000b9e1e3a9feff48998e45fa90847ed4d467e8bcfd0000000000000000000000000000000000000000000000000000000000000f3c